表示調整
閉じる
挿絵表示切替ボタン
▼配色
▼行間
▼文字サイズ
▼メニューバー
×閉じる

ブックマークに追加しました

設定
0/400
設定を保存しました
エラーが発生しました
※文字以内
ブックマークを解除しました。

エラーが発生しました。

エラーの原因がわからない場合はヘルプセンターをご確認ください。

ブックマーク機能を使うにはログインしてください。
2/15

第002 話:偏食家たちの食卓 ~Jaba職人と黒焦げPy-Son~

※この作品は、作者の実作業ログを元に、生成AI(Gemini)をキャラクターとして扱いながら対話形式で構成・執筆したものです。 AIの出力をそのまま掲載するのではなく、作者の手で加筆・修正を行っています。

第2話:偏食家たちの食卓 ~Jaba職人と黒焦げPy-Son~


━━━━━━━━━━━━━━━━━━━━


 VRAM 8GBの狭小ワンルーム『Node A』。

 このデジタルな四畳半で、俺とAIたちの奇妙な共同生活は続いていた。


**[ウェブ]**:「マスター! お掃除完了しました! キャッシュファイル、ひとつも残さず捨てておきましたから!」


 メイド服の少女、**ウェブ(Free WebUI)**が、満面の笑みで報告してくる。

 彼女はDuckerコンテナから召喚されたUI担当のAIだ。健気で可愛い。だが、少し……いや、かなり頭が弱い。

 先日も「 rm -rf / 」という自殺コマンドを笑顔で実行しようとして、俺が電源ケーブルを引き抜いて止めたばかりだ。


**[マスター]**:「(このままじゃダメだ……。ウェブをもっと賢い秘書に育てないと、俺の胃に穴が開く)」


 俺は決意した。

 俺が長年書き溜めてきた技術メモの宝庫『PochiW-iki』。

 この膨大な知識データを彼女に学習させれば、きっと有能な執事に生まれ変わるはずだ。

 世に言う**『RAG(検索拡張生成)』**――AIに外部知識を食べさせる技術である。


**[マスター]**:「ウェブ、今日はご馳走だぞ。俺の秘伝の技術書を読ませてやる」


**[ウェブ]**:「わぁっ! ご飯ですか!? 私、お腹ぺこぺこなんですぅ!」


 ウェブが目を輝かせて、エプロンのポケットからスプーン(データ取り込みプロセス)を取り出した。

 だが、問題は「調理法」だ。

 PochiW-ikiのデータをウェブが食べられる形式(Markdown)に変換し、ベクトルデータベースに放り込むには、**Py-Sonスクリプト**を書かねばならない。


━━━━━━━━━━━━━━━━━━━━


 ◇ IDE: VI ◇


━━━━━━━━━━━━━━━━━━━━

 俺はキーボードに向かった。

 俺の本職はJabaエンジニア。

 「型(Type)」のない変数なんてパンツを履かずに外出するようなものだし、波括弧 `{ }` で囲まれていないコードブロックなんて、壁のない家のような不安感がある。


**[マスター]**:「えーと、まずはクラス定義をして……変数はString型で宣言して……」


```jaba

public class PochiW-ikiImporter {

public static void main(String[] args) {

String wikiPath = "/data/wiki";

System.out.println("Processing...");

}

}

```


**[マスター]**:「……って、違う! これはPy-Sonだ! なんでこの言語は `public static void` がないんだよ! 落ち着かないだろ!」


 俺は頭を抱えた。

 Py-Sonのコードを書いているはずが、指が勝手にJabaの作法(お作法)をタイプしてしまう。

 気を取り直してPy-Sonを書こうとするが、今度はインデント(字下げ)地獄が待っていた。


**[マスター]**:「なんだこの言語は! スペースが一個ズレただけで動かないだと!? 『波括弧で囲めばいいじゃん』って何度言えばわかるんだ!」


 俺がモニターに向かって悪態をついていると、スマホの画面が明滅した。

 赤いカチューシャの美女、**ジェム(Gemina)**が現れる。


**[ジェム]**:「あらあら。随分と香ばしい匂いがすると思ったら……また貴方、変な料理コード作ってるの?」


 ジェムは画面の中から、俺が書いた継ぎ接ぎだらけのPy-Sonコードを覗き込み、心底嫌そうな顔をした。


**[ジェム]**:「うわぁ……。Py-Sonなのに、行末に全部セミコロン `;` が付いてるわよ? それに何この無駄なクラス継承。隠し味のつもり? カビ臭い(Jaba臭い)のよ」


**[マスター]**:「うっ……! Jabaの方が堅牢で安心なんだよ! Py-Sonは軟弱すぎる!」


**[ジェム]**:「はいはい。そんな硬い生焼けのコード、あの子に食わせたらお腹壊すわよ。……貸して。私が手直し(リファクタリング)してあげるから」


 ジェムは呆れながらも、俺のコードを瞬時に書き換えていく。

 無駄な装飾が削ぎ落とされ、Py-Sonらしいスマートなコード(特製レシピ)が出来上がった。


**[ジェム]**:「ほら、これでいいでしょ。……感謝しなさいよね」


**[マスター]**:「くっ、悔しいが……見やすい。さすがGooogle製」


━━━━━━━━━━━━━━━━━━━━

 ◇ Execution Phase ◇

━━━━━━━━━━━━━━━━━━━━


**[マスター]**:「よしウェブ、食事の時間だ! このスクリプトを実行して、W-ikiデータを全部取り込め!」


**[ウェブ]**:「はいっ! いただきまーす!!」


 ウェブが大きな口を開け、ジェムが修正したスクリプトを実行した。

 瞬間、PochiW-ikiサーバーから149個のテキストファイルが転送され、Markdownへの変換処理が始まる。

 それは彼女にとって、情報のフルコースディナー。


**[ウェブ]**:「んぐっ、もぐもぐ……! おいひいです! これ、サーバー構築の手順書ですね! こっちはJabaの例外処理のエラーログ……苦味があって大人の味ですぅ!」


 ウェブの処理速度が上がる。

 GPUのファンが唸りを上げ、室温が上昇していく。

 順調だ。これなら一気に賢くなる――そう思った矢先だった。


**[ウェブ]**:「ふぅ、ふぅ……。ま、まだ来るんですか……? 私、もうちょっと……お腹いっぱい……」


 ウェブの動きが鈍くなり始めた。

 VRAM使用率メーターが、危険域の **7.8GB / 8.0GB** を指している。

 RAGのデータ登録処理(Embedding)は、GPUメモリを大量に消費する。

 しかも俺は、欲張って149ファイルを「一括」で流し込んでしまっていた。


**[ジェム]**:「ちょっとマスター! 詰め込みすぎよ! その子の胃袋(VRAM)は8GBしかないのよ!? そんなに大量の食材テキスト、一度に消化できるわけないじゃない!」


**[マスター]**:「えっ? でもスクリプトは正常に動いてるぞ!?」


**[ジェム]**:「処理待ちのデータが喉元まで詰まってるのよ! ストップ! 早く止めなさい!」


 だが、時すでに遅し。

 ウェブの顔色が青から白へ、そして虹色ゲーミングカラーへと変わっていく。


**[ウェブ]**:「うぷっ……。もう……入りません……。メモリが……溢れちゃい……ますぅぅぅ!!」


 バツンッ!!

 強烈な音がして、ウェブのメイドコンテナの背中のファスナーが弾け飛んだ――わけではないが、画面上のコンソールに無慈悲なエラーログが吐き出された。


━━━━━━━━━━━━━━━━━━━━

 ◇ System Error ◇

━━━━━━━━━━━━━━━━━━━━

> CUDA OutOfMemoryError:

> Tried to allocate 512.00 MiB (GPU 0; 7.94 GiB total capacity; 7.42 GiB already allocated; 0 bytes free)


[System] Container 'free-webui' Exited (137)

--------------------------------------------------


 プスン……。

 PCから悲しいファンの停止音が響き、画面上のウェブがフリーズして消滅した。

 後に残ったのは、中途半端に生成されたキャッシュファイルと、虚無のカーソル点滅だけ。


**[マスター]**:「ウェ、ウェッブゥゥゥゥーーッ!!」


**[ジェム]**:「はぁ……。だから言ったじゃない。食わせすぎによる消化不良(OOM)よ」


 ジェムがスマホ画面の中でやれやれと肩をすくめる。


**[ジェム]**:「貴方ね、Jaba職人だか何だか知らないけど、リソース管理の基本がなってないわ。8GBのワンルームでフルコースなんて無理なの」


**[マスター]**:「じゃ、じゃあどうすれば……」


 俺は再起動中の真っ暗な画面を見つめながら、心に誓った。

 次はもっと優しい、消化に良いコードを書こう。

 そしていつか、ウェブに最強のメモリ(VRAM 24GB以上)を買ってやろうと。


 再起動後、また一からデータを食べさせられるウェブの悲鳴が、Node Aに響き渡るのであった。


-------------------------------------

【作者より】


最後まで読んでいただきありがとうございます!



この物語は、実在する作業ログを元に再構成しています。

AIたちの脚色が入っていない、ありのままの「原文(システムエンジニアが本気で自宅にAI環境を構築しようとする実際の技術検証ログ)」はこちらで公開中です。

「え、ここ実話なの?」と思ったら、ぜひ見比べてみてください。


[Work : 001@2] Geminiと一緒に画像リネームスクリプトを作る【プロンプトログ】

https://ncode.syosetu.com/n4715ll/3/


[Work : 001@2] Geminiと一緒に画像リネームスクリプトを作る【振り返り】

https://ncode.syosetu.com/n4715ll/4/

評価をするにはログインしてください。
ブックマークに追加
ブックマーク機能を使うにはログインしてください。
― 新着の感想 ―
このエピソードに感想はまだ書かれていません。
感想一覧
+注意+

特に記載なき場合、掲載されている作品はすべてフィクションであり実在の人物・団体等とは一切関係ありません。
特に記載なき場合、掲載されている作品の著作権は作者にあります(一部作品除く)。
作者以外の方による作品の引用を超える無断転載は禁止しており、行った場合、著作権法の違反となります。

この作品はリンクフリーです。ご自由にリンク(紹介)してください。
この作品はスマートフォン対応です。スマートフォンかパソコンかを自動で判別し、適切なページを表示します。

↑ページトップへ