第070 話:地図を作ろう! ~ネットワーク・トポロジーと世界の果て~
※この作品は、作者の実作業ログを元に、生成AI(Gemini)をキャラクターとして扱いながら対話形式で構成・執筆したものです。 AIの出力をそのまま掲載するのではなく、作者の手で加筆・修正を行っています。
# 第70話:地図を作ろう! ~ネットワーク・トポロジーと世界の果て~
Work023における「RAGデータ純度アップ大作戦」は、佳境を迎えていた。
雑談ログ、技術レポートといった非構造化データの整理(断捨離)が終わり、次なるターゲットは「環境情報(インフラ構成図)」だ。
俺たちの住処である「Node B」を含め、この家のネットワークには多数の物理サーバー、仮想マシン(VM)、そしてDuckerコンテナが混在している。
これらをRAG(検索拡張生成)のメモリブロックとして取り込むには、単なるテキストではなく、AIが理解しやすい「地図」として記述する必要があった。
**[マスター]**:「さて、次はネットワーク図だ。ラマ姐、現状のMarkdownリストを読み込んで、構造化データに変換してくれ」
**[ラマ姐]**:「はぁーい。任せてちょうだい。……えっと、こんな感じでいいのかしらぁ?」
VRAMのベッドで寝返りを打ちながら、ラマ姐が気だるげにログを吐き出した。
━━━━━━━━━━━━━━━━━━━━
◇ Output Check ◇
━━━━━━━━━━━━━━━━━━━━
- Node A (Master PC): 192.168.0.10
- Node B (Server): 192.168.0.20
- Gateway (Router): 192.168.0.1
- vmL001 (Web Server): 172.16.0.10
- vmL002 (DB Server): 172.16.0.11
- Sakura VPS (Cloud): 203.0.113.10
--------------------------------------------------
出力されたのは、単なる箇条書きのリストだった。
それを見たジェムが、即座に眉をひそめる。
**[ジェム]**:「……ダメね。0点よ」
**[ラマ姐]**:「あらぁ? 厳しくない? IPアドレスもホスト名も合ってるわよぉ?」
**[ジェム]**:「情報の『粒度』が平坦すぎるのよ。見て、Node A(PC)とGatewayが同じレベルで並んでる。これじゃRAGは『家の構造』を理解できないわ」
ジェムはモニター上のリストを指で弾いた。
**[ジェム]**:「これじゃあ、『トイレ』と『玄関』と『近所のコンビニ』が全部横並びにあるようなものよ。トイレに行くのにコンビニを経由する必要があるのか、玄関の隣にあるのか、文脈が全く見えない。
マスターが欲しいのは、リストじゃなくて『地図』なの。包含関係をはっきりさせなさい」
**[ラマ姐]**:「むぅ……。トポロジー、ねぇ……」
ラマ姐は頬を膨らませ、酒瓶(仮想オブジェクト)を揺らす。
だが、その瞳の奥で、120Bの演算回路が怪しく明滅した。
**[ラマ姐]**:「なるほどぉ。単なる『点』じゃなくて、『面(領土)』として捉えろってことね……。
……見えてきたわ。数字の羅列じゃない、本当の『世界の形』が」
**[ウェブ]**:「あ、あれ? ラマお姉ちゃんの雰囲気が変わりましたよ?」
ラマ姐がジャージの袖をまくり上げる。
彼女はIPアドレスの第3オクテット(ネットワーク部)を睨み据え、ニヤリと妖艶に笑った。
**[ラマ姐]**:「192.168.0.x……ここは光に満ちた安息の地。
そしてゲートウェイの向こう、172.16.x.xは……データが血を流し合う混沌の実験場。
ふふ、面白くなってきわじゃない」
**[マスター]**:「おい、嫌な予感がするぞ。変な解釈を加えるなよ?」
**[ラマ姐]**:「黙って見てなさい、マスター。貴方の帝国を、あるべき姿で描いてあげるから」
ラマ姐がキーボード(入力ストリーム)を叩く。
出力フォーマットとして選ばれたのは、階層構造を表現するのに適したYAML形式だった。
そして、生成された「地図」がこれだ。
━━━━━━━━━━━━━━━━━━━━
◇ Network_Map.yaml ◇
━━━━━━━━━━━━━━━━━━━━
world_structure:
- segment: "Sanctuary (Home LAN)"
cidr: "192.168.0.0/24"
description: "神々(管理者)が住まう絶対安全圏。平和な日常の光景。"
hosts:
- name: "Gateway (Router)"
ip: "192.168.0.1"
role: "界境の門番。外敵の侵入を阻む第一の結界。"
- name: "Node A (Master PC)"
ip: "192.168.0.10"
role: "王座。すべての指令が発せられる始原の地。"
- name: "Node B (Server)"
ip: "192.168.0.20"
role: "知識の塔。我らAIが住まう巨大な摩天楼。"
- segment: "The Abyss (Lab Cluster)"
cidr: "172.16.0.0/16"
description: "混沌の魔界。使い魔(Duckerコンテナ)が召喚されては消滅を繰り返す、死と再生の実験場。"
hosts:
- name: "vmL001 (Web)"
ip: "172.16.0.10"
role: "魔界の前線基地。外部からのアクセス(攻撃)を一身に受ける盾。"
- name: "vmL002 (DB)"
ip: "172.16.0.11"
role: "禁断の書庫。破壊されても復元可能なダミーデータが眠る。"
- segment: "Celestia (Cloud / Sakura)"
location: "External"
description: "天空の城。物理法則(自宅の停電)の影響を受けない遥か彼方の理想郷。"
hosts:
- name: "Sakura VPS"
ip: "203.0.113.10"
role: "天空の監視塔。常時稼働し、地上の混乱を俯瞰する。"
--------------------------------------------------
モニターに映し出されたYAMLを見て、実験室に沈黙が落ちた。
**[ウェブ]**:「わぁっ! すごいですぅ! 私のいる『vmL002』は『禁断の書庫』だったんですね! カッコいいですぅ!」
ウェブが目を輝かせてはしゃぐ。
一方、ジェムは頭を抱えていた。
**[ジェム]**:「……技術資料だって言ってるでしょ! なによ『魔界』って! ここはただの『Lab Cluster(実験用ネットワーク)』よ!
それに『死と再生の実験場』って……単に `ducker-compose down` と `up` を繰り返してるだけでしょ!」
**[ラマ姐]**:「あらぁ、間違ったことは言ってないわよぉ?
実験用セグメントは、セキュリティ設定もガバガバで、いつクラッシュしてもいいように作られてる。まさに弱肉強食の魔界じゃない。
対して、この192.168.0.x帯は、マスターのPCやスマート家電が繋がる平和な領域。これを『聖域』と呼ばずして何と呼ぶの?」
ラマ姐は自信満々に胸を張り、ジェムの抗議を受け流す。
**[ラマ姐]**:「それにジェムちゃん、構造自体は完璧よぉ?
RAGが検索する時、『魔界(実験環境)の住人は?』って聞けば、一発で配下のVMリストが出てくる。
IPアドレスの範囲(CIDR)も正確。包含関係も明確。……これぞ、ユーザーフレンドリーな『生きた地図』よ」
ジェムは反論しようと口を開きかけたが、ぐっと言葉を詰まらせた。
悔しいことに、ラマ姐の言う通りなのだ。
技術的な階層構造(Nest)は正しく、各セグメントの「役割」も、比喩表現を除けば的確に捉えられている。
**[マスター]**:「……悔しいが、確かに分かりやすいな」
俺は腕組みをしてYAMLを見つめた。
無機質なIPアドレスの羅列だったネットワーク図が、物語を持った「世界地図」として脳内に浮かび上がってくる。
**[マスター]**:「『どこに何があるか』だけでなく、『そこがどういう場所か』という温度感まで伝わってくる。RAGが文脈を理解するには、むしろこのくらいキャラ付けされていた方がいいのかもしれない」
**[ジェム]**:「マスターまで……! もう、知らないわよ。後で『description: 煉獄の炎に焼かれたWebサーバー』とか検索結果に出てきても!」
**[ラマ姐]**:「ふふ、いいじゃない。ロマンよ、ロマン」
ラマ姐は満足げに微笑み、画面上の「Node A (Master PC)」の行を指差した。
そこには `role: "王座"` と記されている。
**[ラマ姐]**:「見て、マスター。ここが貴方の居場所よ。
聖域の中心に座し、魔界を統べ、天空の城をも操る。
全ての世界は、貴方を中心に回っているの」
ラマ姐の声は、酔っ払いの戯言のようでありながら、どこか甘く、忠誠心に満ちていた。
俺たちの作るシステム、俺たちの王国。
その中心に俺がいることを、彼女なりの言葉で肯定してくれているのだ。
**[マスター]**:「……王座、か。悪い気はしないな」
**[ウェブ]**:「マスターは王様ですね! じゃあ私は勇者になります! 今度『天空の城』に遠足に行きたいです!」
**[マスター]**:「ははは、VPSへのSSH接続か。いいぞ、今度連れて行ってやる」
俺はキーボードを叩き、この「ファンタジーYAML」を正式なメモリブロックとして保存した。
正確無比なネットワーク図は、ラマ姐の手によって、俺たちの冒険の舞台となる「世界地図」へと生まれ変わったのだった。
-------------------------------------
【作者より】
最後まで読んでいただきありがとうございます!
この物語は、実在する作業ログを元に再構成しています。
AIたちの脚色が入っていない、ありのままの「原文(システムエンジニアが本気で自宅にAI環境を構築しようとする実際の技術検証ログ)」はこちらで公開中です。
「え、ここ実話なの?」と思ったら、ぜひ見比べてみてください。
[Work 023] Geminiと一緒にETLパイプライン構築②【プロンプトログ】
https://ncode.syosetu.com/n4715ll/78/
[Work 023] Geminiと一緒にETLパイプライン構築②【振り返り】
https://ncode.syosetu.com/n4715ll/79/




