投稿日:

市販のカルピスソーダより圧倒的にカロリーオフなカルピスソーダの作り方。ダイエットしたいけどカルピスソーダが飲みたいときにいい。

材料

材料にあるスターセレクトスパークリングウォーターはライフに売ってる炭酸水だ。もし手に入らない場合は無味無臭の普通の炭酸水で代用可能だと思う。

飲む一日前にキャップを開けて閉め、冷蔵庫に入れておくと個人的には刺激がいい塩梅になる。

材料 分量
カルピス糖質60%オフ原液 20ml
スターセレクトスパークリングウォーター 280ml

調理方法

  1. グラスにカルピス糖質60%オフ原液を20mlほど入れる
  2. 炭酸水を280ml入れる

普通のカルピスソーダとの比較

100ml当たりの栄養価。通常のカルピスソーダの3割程度しか糖質とカロリーがないことから、糖質とカロリーが70%程度削減されていることがわかる。

栄養価 カルピスソーダ 今回のやつ
エネルギー 52kcal 16kcal
たんぱく質 0.2g 0.4g
脂質 0g 0g
炭水化物 13g 3.8g
食塩相当量 0.04g 0.07g

備考

製品のレシピでは5倍希釈のところ、このレシピは15倍希釈なので、一見すると味がなさそうだが、炭酸の刺激で割と行ける感じだ。ただ甘さというよりは酸っぱさを楽しむ飲料になるので、好みは分かれるだろう。

私は梅干しや酢昆布、ザワークラウト、酸っぱめのキウイが好きなので丁度よく感じる。

原液を10ml、炭酸水を290mlにすると、やや薄めになるが、それでも、それなりに飲めるので更なるカロリーオフも望める。参考までに記事の写真は10mlと290mlの配合で作っている。

本来のレシピより薄める分、節約になるのもポイントだ。

更新日:
投稿日:

一昔前、物理本を電子書籍に変換する行為としての自炊が流行ったと思っているが、最近ではあまり聞かない気もするので個人的なやり方を紹介する。

内容としては一般的な漫画同人誌を自炊代行を利用し、安く楽に24時間365日、高品質にいつでも電子化するための方法について書いていく。

概要としては自炊代行業者にネットから申請を出し、コンビニにあるメルカリ用の箱に同人誌を詰めてクリックポストをネットで注文してポストに投函するだけだ。

私は基本的に一冊500円のプランでやっており、直送管理手数料が200円、送料が185円、箱代が70円程度でやっているが、オプションを削れば一冊200円も可能だ。

前提条件

  • 自炊代行にはジェットスキャンを利用する
  • 送る同人誌のサイズはB5サイズ(257×182mm)の一般的なものを扱う
  • 総重量は1kg以下とする
  • 発送方法にはクリックポストを用いる
  • Yahoo!ウォレットかAmazonPayのアカウントがある
    • Amazonやヤフオクを使っていれば普通はある

やり方

1. 自炊代行業者に依頼する

まずはジェットスキャンにアクセスし、利用申し込みを行う。

基本情報を入力した後の内容としては私は次のようにしている。以下の条件での費用は1冊辺り500円だが、ギリギリスキャンを抜けば200円に抑えられる。

項目 内容 備考
データカラー フルカラー 紙そのものの色合いなどもあるため、モノクロ誌でもフルカラーにしている
解像度 300dpi 最安のプランだが必要十分だと思う
圧縮率 標準圧縮 特に画質が悪いということはない
通常OCR加工 希望しない 基本的に漫画しか頼んでいないため
特殊OCR加工 希望しない 同上
ハードカバー部分のデータ化 希望しない ハードカバーの同人誌を頼まないため
本の帯部分のデータ化 希望しない 帯がないため
折込ページのスキャニング 同じ箇所にデータ化を希望する 存在しなければ0円
ギリギリスキャン 希望する 希望するとノリ閉じの部分まで開いてスキャンしてもらえる
特別加工のご依頼 なし 過去に頼んだことがあるが、個人的にはていねい加工の有無の違いは判らなかった。プレミアム加工は依頼経験がない。
納品方法 クラウドストレージより納品(Dropbox) 他のオプションが有料であるため
お支払方法 クレジットカード払い 弥生会計の決済プラットフォームでの支払いとなる
書籍/冊子/書類の処理 弊社にて雑紙として処分(無料) 著作権の絡みで本が戻ってくることはない

参考までに上記条件でB5サイズの漫画同人誌を電子化してもらった結果、以下のフォーマットのJPEGが入ったPDFを受領できた。サブサンプリングやビット数は依頼時期によって変動があるのを確認しているので、あくまで一例。

項目 内容
形式 JPEG TrueColor (v1.0)
2126
高さ 3024
寸法 6.4 Mpixels
ビット数 24
カラーモデル RGB
DPI 300 x 300
印刷サイズ 18.00x25.60 cm, 7.09x10.08 インチ
データ圧縮 JPEG
プログレッシブモード いいえ
サブサンプリング 2x2,1x1,1x1
画像/フレームの数 1
起源 左上
埋め込みコメント ScandAll PRO

2. 自炊代行業者へ同人誌を送付する

  1. ファミリーマートなどでネコポス用の段ボールを買ってくる。寸法は310x225x30mmなので、B5サイズ以下の同人誌なら収まるし、厚みのある同人誌でも1kgを下回っていればクリックポスト的には問題ない
  2. ネコポスの箱に同人誌を入れる
    • 参考までに以下は薄い本5冊に、メロンブックスの店頭受け取り用の段ボール板が2枚入っている状態だが、それでもまだ隙間がある。重量はこれで500gだったため、重量を勘案すると20ページ程度の薄い本なら恐らく8-9冊は入るだろう
  3. クリックポストのサイトを開き、YahooかAmazonのアカウントでログインする
  4. 住所を入力し、送料を支払い、PDFをコンビニで印刷して箱に貼り付けてポストに投函する

あとがき

自分で本をばらしてスキャンするとか、非破壊スキャンはスキャナが必要だったり、手間が掛かったりするので自炊代行は非常にありがたい。

また通信フリマの発展により、梱包資材が手軽に入手でき、ECの発達によりクリックポストという定形外より安い送付手段が生まれたのもうれしいところだ。

結果として、近所のコンビニで資材を入手し、クリックポストに金を払い、梱包してポストに投函する程度の手間で電子化できるというのは非常に便利な世の中である。

ジェットスキャンは一度申請すれば二回目以降はそのまま送り付けると同条件でやってくれることもあるので、とても楽ちんである。支払いも昔はPaypalだったが、弥生の決済Misocaに変わったおかげで、これも随分楽になった。

個人の申し込みを調整なしで普通に受け付けてくれるところは意外と多くないので、ジェットスキャンは非常に便利な存在だ。

そういえばジェットスキャンの利用時に直送管理手数料というのがいつの間にか増えていた気がするが、梱包資材の廃棄手数料とかだろうか?潰れてもらっても困るので、事業の継続のためなら、この程度は特に問題ないが、地味に増えていて、サイトにも記載がないので気になった。

最後に、本記事はジェットスキャンによる広告記事ではなく、単なる個人の感想であることを付記しておく。

Logicool GHUBはアップデートのごとに何かが壊れてゆき、日に日に使い物にならなくなるというのは、もはやネット上では定説だと思うが、そろそろめんどくさくなってきたのでどうにかした話。

起きていた問題

  • GHUBがしょっちゅう落ちる
    • GHUBが落ちているとDPIが狂ってマウス速度が落ちる
  • GHUBのオンボードメモリモードが機能しない
  • サイドボタンやDPI変更ボタンを無効化できない。例えば下の画像では、普通のボタンは無効化できるのにサイドボタンが無効化できないのがわかる

問題が起きていたデバイス

Logicool Pro Gaming Mouse

対処した方法

バージョン2025.8.789376から2023.10.493246へダウングレードして設定をやり直した。

やった手順

この工程ではサードパーティのアーカイブサイトからインストーラーを落とすため、それを理解したうえで実施すること。まず公式のサポートは受けられないと思う。

これをやった結果、GHUBを落としても、OSを再起動してもGHUBが起動せず、設定が保持されていることが確認できたので、当面は安泰だ。

  1. UptownからLogitech G HUB 2023.9.473951を入手する。
  2. そのまま上書きインストールすると2023.10.493246が入る
  3. GHUBを起動しオンボードメモリモードを解除した状態にし、デバイス設定を開く
  4. サイドボタンとDPI変更ボタンを無効化する
  5. DPIを好きな値に設定する
  6. 最初の画面に戻り、右上のプロファイルメニューを開き、プロファイルを管理を開く
  7. 画面下部のプロファイルにあるデフォルトの「詳細」をクリックする。当たり判定が微妙なので文字の真上をクリックしたほうが良い。少しでもズレると違うところに行ってしまう
  8. デフォルトプロファイルの設定が開くので「固定に設定」をクリック
  9. 「プロファイルごとの設定とプロファイルの切り替えを無効化し、このプロファイルを持続にしますか?」と聞かれるので「はい」
  10. 最初の画面に戻り左上の「三」みたいなやつをクリックし、設定をクリックする
  11. 設定画面が出てくるので全てのチェックを外す。これはオンボードメモリモードで動かすのが目的で、勝手にアップデートされたり、無駄に起動してリソースを食ったりしないようにする。

あとがき

Logicoolはハードはよいと思うのだが、ソフトがまるでだめだと思う。特にマウスやキーボードの耐久性については個人的には高く評価してる。

エレコムのマウスなら一ヶ月でチャタリングが起きる使い方でも、Logicoolなら一年は持つというのが個人の肌感としてある。

他にも私は過去にエレコムのゲームパッドのボタンを数日でチャタリングさせてしまったことがあり、その都度保障修理に出していたらエレコムから意見をいただいたことがあるくらいだが、ロジクールのゲームパッドは一度も壊れたことがないため、耐久性の面で非常に信頼を置いている。

ただメーカーサポートは微妙で、Logicool G913-TKL-LNBKのキートップは酷使すると剥げやすく、正規品が存在しないので、アリエクとかで類似品を買うしかない。それもキーによっては単品売りがないので、とても困る。

他にもキーアサインを入れ替えてキートップも変えたいみたいな時にも困る。参考までに私はDELとALTを追加しているのだが、DELはあまり売っておらず、入手に苦労した。

とはいえ、このキーボードはキー配列が良く、打鍵感や清掃性にも優れるため、個人的にはかなり気に入っている。消耗しやすいCtrl, Shift, WASD辺りのキートップなら入手性も悪くない。

まぁなんというかASUSやGIGABYTEのユーティリティも作りが良くないと感じているので、ハードメーカーが作るソフトは色々微妙なのかもしれない。ASRockは結構いいけどね。

更新日:
投稿日:

さて、世の中ではAI開発全盛期という感じで、とにもかくにも全盛期という感じになってきているので、今回は私自身の活用状況について書いていく。

あらかじめ断りを書いておくと、世の中の人ほど活用できてはいない。

今のところは簡単なツール作りや、実装の部品作りといった、小規模用途に利用していて、開発工数の圧縮には便利だと感じている。

開発でLLMを使ってみた事例

仕事ではなく趣味の開発の話。

事例1:MarkdownをYAMLに変換するスクリプトの作成

私は職務経歴書をWordで作っているのだが、WordそのままだとLLMに読ませるのはしんどい。

そこでLLMに読ませる形にしたいが、Markdownはそこまで構造的ではない。なのでYAMLにすることにした。

単刀直入にやるならWordファイルの中身をLLMに渡し、「これをYAMLにしてください」というのが恐らく一般的で、最も手っ取り早いだろう。

しかし私はそれを避けた。私の経歴書はかなり長く、LLMがどこかでミスをしていた場合、それをレビューするのは至難の業だからだ。例えば経歴の一部がLLMによって書き換えられていたりするリスクは拭えない。

なので私はLLMにWordファイルから切り出したプレーンテキストをYAMLに変換するスクリプトを書くことを依頼した。これであればレビューするのはコードそのもので良いし、静的コードは基本的に文脈を見て判断して勝手に書き換えることはしないし、仮にそんな処理があったとしてもそんなものはコードを見ればわかるからだ。

作らせたのはSESや受託系の経歴書にありがちな、死ぬほど繰り返される案件ごとの経験セクションだ。職務経歴書の中でも職務要約だとか、活かせる経験みたいな単純な文章セクションは手作業でどうにもなるので、そこは手で移植すればいいが、繰り返しはしんどい。

というわけで次のようなものを書いてもらった。これで9割はうまく変換してくれたし、後はざっと目検して行って変換にしくじっている部分を直して対応した。

要はLLMに変換させるのではなく、LLMに変換ツールを作らせると間違いが少ないという話だ。

#!/usr/bin/env perl
use strict;
use warnings;
use utf8;
binmode(STDIN, ':utf8');
binmode(STDOUT, ':utf8');

my $input = do { local $/; <STDIN> };

# 複数のプロジェクトを分割(日付パターンで分割)
my @projects = split(/(?=\d{4}\/\d{2}\s*-\s*\d{4}\/\d{2})/, $input);

print "projects:\n";

for my $project (@projects) {
    next if $project =~ /^\s*$/;

    parse_project($project);
}

sub parse_project {
    my ($text) = @_;

    # 時期を抽出
    my ($period) = $text =~ /^(\d{4}\/\d{2}\s*-\s*\d{4}\/\d{2})/m;
    return unless $period;

    # タイトル(時期の後の行)
    my ($title) = $text =~ /^\d{4}\/\d{2}\s*-\s*\d{4}\/\d{2}\s*\n(.+?)(?:\t|規模|$)/m;
    $title //= '';
    $title =~ s/^\s+|\s+$//g;

    # 要員数
    my ($members) = $text =~ /要員数\s*\t?\s*(\d+名)/;
    $members //= '';

    # 役割
    my ($role) = $text =~ /役割\s*\t?\s*([^\t\n]+)/;
    $role //= '';
    $role =~ s/^\s+|\s+$//g;

    # プロジェクト概要
    my ($overview) = $text =~ /【プロジェクト概要】\s*\n(.*?)(?=\n\s*\n|\n【|$)/s;
    $overview //= '';
    $overview =~ s/^\s+|\s+$//g;
    $overview =~ s/\n\s*/\n/g;

    # 主な業務
    my ($tasks) = $text =~ /【主な業務】\s*\n(.*?)(?=\n\s*\n|\n【|$)/s;
    $tasks //= '';
    $tasks =~ s/^\s+|\s+$//g;

    # 実績・取り組み
    my ($achievements_text) = $text =~ /【実績・取り組み】\s*\n(.*?)(?=\t要員数|\n開発環境|$)/s;
    $achievements_text //= '';

    # 開発環境セクションを抽出
    my ($dev_env_text) = $text =~ /開発環境\s*\n(.*?)$/s;
    $dev_env_text //= '';

    # 出力
    print "      - 時期: $period\n";
    print "        内容: $title\n";
    print "        要員数: $members\n";
    print "        役割: $role\n";

    # プロジェクト概要
    print "        プロジェクト概要: |-\n";
    for my $line (split /\n/, $overview) {
        print "          $line\n" if $line =~ /\S/;
    }

    # 主な業務
    print "        主な業務:\n";
    print "          - $tasks\n";

    # 実績・取り組み
    print "        実績・取り組み:\n";
    parse_achievements($achievements_text);

    # 開発環境
    print "        開発環境:\n";
    parse_dev_env($dev_env_text);
}

sub parse_achievements {
    my ($text) = @_;

    # 実績項目をパース(タイトル + 説明の形式)
    my @items;
    my $current_title = '';
    my $current_desc = '';

    for my $line (split /\n/, $text) {
        $line =~ s/^\s+|\s+$//g;
        next if $line eq '';

        # 新しい項目タイトル(短い行で次の行に説明がある)
        if ($line =~ /^(.+?)$/ && length($line) < 30 && $line !~ /。$/) {
            if ($current_title) {
                push @items, { title => $current_title, desc => $current_desc };
            }
            $current_title = $line;
            $current_desc = '';
        } else {
            $current_desc .= ($current_desc ? "\n" : '') . $line;
        }
    }

    if ($current_title) {
        push @items, { title => $current_title, desc => $current_desc };
    }

    for my $item (@items) {
        print "          - $item->{title}: |-\n";
        for my $desc_line (split /\n/, $item->{desc}) {
            print "              $desc_line\n" if $desc_line =~ /\S/;
        }
    }
}

sub parse_dev_env {
    my ($text) = @_;

    my %sections;
    my $current_section = '';

    for my $line (split /\n/, $text) {
        $line =~ s/^\s+|\s+$//g;
        next if $line eq '';

        if ($line =~ /^【(.+?)】$/) {
            $current_section = $1;
            $sections{$current_section} = [];
        } elsif ($current_section) {
            # カンマやスペースで分割し、バージョン番号を除去
            my @items = split /,\s*/, $line;
            for my $item (@items) {
                $item =~ s/^\s+|\s+$//g;
                # バージョン番号を除去(数字とドットのパターン)
                $item =~ s/\s*[\d.]+\s*$//;
                $item =~ s/\s+\d+(\.\d+)*$//;
                push @{$sections{$current_section}}, $item if $item =~ /\S/;
            }
        }
    }

    # 順序を維持して出力
    my @section_order = ('言語・FW', 'インフラ', 'ドキュメント', 'CI/CD', 'VCS');

    for my $section (@section_order) {
        next unless exists $sections{$section};
        print "          $section:\n";
        for my $item (@{$sections{$section}}) {
            print "            - $item\n";
        }
    }

    # 定義順以外のセクションも出力
    for my $section (keys %sections) {
        next if grep { $_ eq $section } @section_order;
        print "          $section:\n";
        for my $item (@{$sections{$section}}) {
            print "            - $item\n";
        }
    }
}

入力に使ったワードファイルのフォーマットは以下のような内容だ。

[企業情報A]
[案件情報1]
[案件情報2]
...
[企業情報B]
[案件情報1]
[案件情報2]
...

ツールの想定漏れにより一部手修正しているが、低いレビューコストと最低限の手作業で完遂でき、LLMに読ませて分析させられる経歴書を作れたので、結果としてこれはよかった。

事例2:adiaryのMarkdownパーサーへの脚注記法の追加

これは重い腰を上げてadiaryのMarkdownパーサーを脚注記法に対応させたでも書いた内容だ。

端的に言うと既存コードを読ませて部品程度の機能を書いてもらった。

そのまま愚直に書いてもうまく動かなったので、結合する部位などは適当に手直ししているが、これもLLMを使ったコーディングが役に立った一例だ。

ローカルLLMの利用状況

現状ではベンチマークを取るくらいしか出来ていないが、試したことを書き留めておく。

Ollamaからllama.cppに乗り換えようとして失敗した話

Ollamaよりllama.cppの方がCPUオフロードなどのチューニングができるので20〜100%程度のパフォーマンス向上が望めるみたいな情報も見かけたが、GitHubのCUDA対応バイナリを単に叩くだけではパフォーマンスが著しく劣化し、Reasoningの影響で、ただでさえ遅いのが余計に遅くなるなど、全く使い物にならなかった。

調べたところ-nglオプションでGPUオフロードを指定したり、--reasoning-budget 0を付加することでReasoningを防げるらしいがReasoningを防げるかどうかはモデルに依存するらしく上手く行かなかったし、-nglオプションも適切な値が謎だったので諦めた(コンテキストトークン長で変わるらしいが計算ツールがWindowsだとハングしたので調べられなかった)

llama.cppは元々mac用に開発されていてCPUオフロードが標準らしいのでWindowsで使うのは結構大変なのかもしれない。

Ollamaの動きを観察していた感じ、なんかいい感じにCPUオフロードとGPUオフロードを按分してくれてるように見えたので、Ollamaでも別に構わない気はした。

それとCPUに全部オフロードしても実用性は薄いが、それなりの速度で生成してくれるのが分かったのは収穫だった。

もし過去にこれを知っていればメモリ高騰前に128GBにしておきたかったと後悔した。何せ去年の8月に5万だったDDR5の32GBメモリ二枚組が、今や22万と、四倍以上も値上がりしていて、もはや手の出しようがない。

ああ、去年DDR4からDDR5に上げるときに64GBを維持せず、いつものように意味もなくメモリを盛っていれば…。

ローカルLLMの活用方法が見えない

たぶんLLMをチューニングする知識がないとどうにもならなさそう。RAGとかMCPとかLoraを自作できれば夢があるのかも?

30b程度のモテルだとClaude Opus 4.5の足元にも及ばないので、多分何かに特化させないと使いみちはないと思う。

PoeでGLM-7を試した感じ体感そこそこ使える気がしたので120b辺りなら実用性が期待できそうだが、これをまともに動かすにはNVIDIA RTX PRO 6000 Blackwellが必要らしく、こいつは140万円もするし、GMKtec EVO-X2 GMKtec EVO-X2でも実用速度で動くらしいが、LLM以外に使いみちのない端末のために貴重な電源と部屋のスペースを取られるのも困りものなので乗り気にはなれない。

まとめ

現状そこまでバチバチに使えているかといわれると、そこまで使えていないのが正直なところだとは思う。

例えばサブエージェントやスキルといったものや、MCP、RAG、ファインチューニング、Loraといったものは活用できていない。

まぁ徐々に使えるようになっていければいいのかなぁというところで、程々にやっていきたい。

ローカルLLMはまたなんかいい感じの情報が出たら試したい。Poeの利用料金もタダではないので…。

投稿日:

Xubuntu環境のノートPCからSSH経由でネットワークストレージを繋ぐときに調べたログ。

確認環境

Env Ver
OS Ubuntu 24.04.3. LTS
Thunar 4.18.8
gvfs 1.54.4
sshfs 3.7.3

前提条件

  • パスフレーズ付き公開鍵認証を使ったSSH接続を行う
  • ~/.ssh/configssh ホストで接続可能な設定があり、実際に接続できる
    • 設定ファイルの一例
      Host hoge
          HostName hoge.example.com
          User piyo
          IdentityFile hoge.example.sec
          Port 12345
      

やり方

  1. gvfs[1]とsshfs[2]を入れる
    sudo apt install -y gvfs sshfs
    
  2. Thurarのアドレスバーにsftp://<ここにsshホスト>を入れると繋がる
    • 例:ホスト名がhogeであれば:sftp://hoge
  3. パスフレーズを聞かれるので入力する
  4. 今後もアクセスする予定があるならブックマークに入れておくと便利

  1. URIスキーマを扱えるようにするためのやつらしい
  2. SSHをファイルシステムとしてマウントできるようにできるやつ。Windowsでやるときにも同じやつ使うと思う