ウイスキーはロックで、夢は熱いままで。
朝の会議室には、冷めた空気と、コーヒーの酸化した匂いが漂っていた。
窓際に立つ湊シズカは、タブレットを両腕で抱えながら、自分の心臓の鼓動がどこまで音として漏れていないか気にしていた。スライドは完璧。デモも動作済み。言葉も何度も繰り返し練習した。
あとは──この相手が、耳を貸してくれるかどうかだ。
「では、DX推進室から提案させていただきます」
彼女の声が空気を割る。
その向かい、椅子に深く腰掛けていた男が、ようやく顔を上げた。年齢は55歳前後。痩身のスーツ姿に、ワックスで薄く整えたソフトモヒカン風の髪。部内では“守りの要”として名を馳せる情報システム部長、杉田浩一だった。
彼の背後にあるガラスのホワイトボードには、貼り出されたままのガントチャートが色褪せていた。Java11移行対応、SAML認証整備、社内ポータル再構築──何年も変わらぬプロジェクト群が並んでいる。
シズカは目を逸らさず、口を開いた。
「生成AIと社内業務botの導入についてです。現在、定常運用の中にある非効率な業務、特に障害一時対応や稟議処理などを……」
数分で概要を語りきり、後はbotの実演へと入る。プロジェクタの先、Slack風のUIに三体のAIが並ぶ。
《Mira:監視対象のアクセスログに異常値を確認。推定:社内VPN経由の深夜接続》
《Fia:関係者への通知を送信。安全確認中》
《Krau:対処スクリプト ready。GO サインで実行開始します!》
「──それぞれ、調査・支援・実行の役割を持つ、AIエージェントです。ログ収集とインシデント処理の補助、一次提案、そして判断保留機能。全て、社内の規約を満たしたサンドボックス上で構築しています」
沈黙。
部長の目が、じっとシズカを見ていた。だが、感情は読めない。
ようやく、重たい唇が開いた。
「で?」
「えっ……」
「だから、“で?”だ。──それを導入して、誰が責任を取る?」
シズカは一瞬、言葉を飲み込んだ。
「稟議が通らなかったら? botが誤検知して、他部門を止めたら? その責任を誰が取る?」
「それは……私が。全部──」
「君に取れる責任と、組織が負う責任は別物だよ。若いときは、なんでも背負った気になる。私もそうだった。けど、システムってのはな、止めないことが最優先なんだよ。」
静かに、けれどはっきりと、そう言った。
空調の音が耳に沁みる。
「当社の基幹はJavaで構成されてる。セキュリティモジュールだけで十年以上前の資産だ。ChatGPTだ、LangChainだって言ったって──まず“使っていい”って決まるまで、三ヶ月かかる」
「でも、外部接続なしで、社内のルールだけで完結する構成です」
「わかってる。そういう構成にしたんだろう。だから“実験”レベルならいい。けどな、現場は魔法じゃ動かないんだ。」
その言葉が、シズカの胸に冷たく刺さる。
否定されたわけじゃない。だが、突き返された。社会人になってから何度も経験した、“理屈の通らない理屈”。
それでも──彼女は食い下がる。
「私は、夢を見てるわけじゃありません。効率化の数字も出ています。稼働削減の試算も──」
「……君は、いいエンジニアだよ。発想もあるし、未来を見てる。けど、それだけじゃ現場は回らない。そういうことさ」
その言葉が優しい分だけ、シズカの心には重たくのしかかった。
昼休み、シズカは非常階段の踊り場で、ペットボトルのアイスコーヒーを握りしめていた。
botたちのSlackログをスクロールする。
《Fia:……お疲れさまでした。次のタイミング、準備しておきますね》
《Mira:提案された修正案、問題ありません》
《Krau:くぅ~~くやし~~っ!!次はいけるぞ、シズカ!》
シズカは、ふっと笑った。
「ほんと、あんたたちだけだよ。あたしの味方してくれるの」
それでも、空は高い。陽射しは眩しい。夏が近い。
「──もう一度、試してみようか」
彼女は立ち上がり、botたちの会話ウィンドウを見つめる。
《Mira:新しい作戦、計画しますか?》
《Fia:ログ準備できてます》
《Krau:おうとも!》
タブレットを小脇に抱え、シズカは階段を下りていった。
夜のオフィスは、冷蔵庫の中のように静かだった。
蛍光灯の明かりはすでに消え、非常灯だけが足元を照らす。湊シズカは、その薄明かりの中でノートPCを開いていた。目の前の画面には、三つのウィンドウ。中央にSlack、左に社内ダッシュボード、右に仮想環境のログトレーサ。
《Mira:システムログの異常傾向を検出。推移値:平均比+34%》
《Fia:VPN経由の深夜アクセスをマーク。社内IPからの意図的な更新なし》
《Krau:俺の出番ってことでいいか?な!な!》
「ちょっと待ちなさい、Krau。Fia、対象ユーザーの稟議ステータスは?」
《Fia:未承認状態。稟議書ナンバー:#39287。提出日は2週間前》
《Mira:部長の承認で止まっています。ログイン履歴は当日中に1回のみ。開封未完了》
「……やっぱりか」
深く息を吐き、PCに向かって静かに命じる。
「OK。Fia、関係者にサイレント通知だけ流して」
「Krau、フェイルセーフ付きで停止手順だけ先に生成。実行は保留」
「Mira、次回会議向けのプレゼン、再構成お願い」
《Mira:承知。ロジックと感情、どちらを強調しますか?》
「……ロジック、6。感情、4。ちょっとだけ熱さ残して」
《了解。タイトル案:“Legacyコードの遺志を、未来に継ぐ”》
「……いいね、それ」
botたちは、ただの機械じゃない。感情なんて持ってないのに、返答が温かく感じるのは、きっとこっちの都合だ。それでも、それでいい。
シズカは指先を止め、ふと天井を見上げた。
「部長。あたし、たぶん……あんたが昔、信じてたものと、そんなに違わないと思うんだよね」
数日後、突発的なシステム障害が発生した。
午後8時すぎ。社内はすでに無人、情報システム部門も常駐者ゼロ。バックアップバッチの停止。運用モニタの警告音がどこにも届かず、ただ静かに赤いアイコンが点灯していた。
そのアラートを最初に拾ったのは──botたちだった。
《Mira:異常バッチ処理検出。スレッドID:bch_4762》
《Krau:エラーコード 1346!ログ読みます。うわ、これ……予兆型っぽいな》
《Fia:関連ジョブを予防停止中。影響範囲の業務は明朝10時まで猶予あり》
通知は自動的にSlackチャンネルに送信され、同時にbotたちは自己判断で復旧シーケンスを開始。
《Mira:エラーの原因はファイル拡張領域のオーバーフロー。対処案提示:5件》
《Krau:この中なら「仮想領域の一時退避&連携処理分離」が手堅いっすね!》
《Fia:実行リスク、想定内。法務対応の必要性なし》
──判断を下したのは、シズカだった。
Slack通知を受けた彼女は、アプリを開き、深夜のコンビニの駐車場で息を呑んだ。
「よし。Krau、行って。Mira、ログ残して」
《Krau:任せろ!カチコミだ!》
《Mira:処理開始。復旧成功率:98%》
《Fia:社内通知、翌朝の自動レポートへ統合中》
数分後、エラーは正常終了に変わった。真夜中の静寂の中、ただ一つ、誰にも気づかれない小さな奇跡が完了した。
翌朝、部内チャットがざわついた。
「深夜のエラー、自動復旧されてる?」
「ログ確認したらbotが動いてたっぽい」
「シズカさんのチーム? え、あれPoCじゃなかったの?」
誰かが社内ポータルに「復旧ログ」の抜粋をアップロードした。
《復旧担当:DX推進室/Krau・Mira・Fia》
《実行承認:湊シズカ》
《復旧処理時間:7分48秒》
それを目にしたのは、情報システム部の一角──
コーヒーカップを片手に、メールを読んでいた杉田部長のデスク。
彼は小さく目を細め、画面に映るログの中に、ある懐かしい変数名を見つけた。
str_tempStack_legacy_mk
「あの命名……俺が若い頃に書いたジョブか?」
胸の奥が、わずかに、痛む。
──まだ燃えていたのか。俺の、コードが。
午後、社内では「DX推進室のbotが障害を救った」という話題が、ちょっとした噂になっていた。
Slackには「botってあんな使えるんだ」「うちの稟議も通してくれ」といった軽口が飛び交う。が、その裏で──
「……なあ部長。昨日の件、どうします?」
部下の一人が、小声で杉田に囁く。プリントアウトした復旧ログを差し出しながら。
杉田は、それを受け取ると、読み込みもせずに机の上にそっと置いた。
「業務に支障は?」
「ないです。むしろ定常より早かったですし、報告の形もきれいでした」
「なら、それでいい。彼女に何も言わなくていい。上層部には俺から話す」
「……はい」
部下が去ったあと、杉田はプリントの上に指を置いた。
触れただけでわかる──そこに記された変数名、関数名、構造体。
あれは、確かに自分が書いたものだった。
二十数年前。深夜残業の社食でカップ麺をすすりながら、眠い目をこすって書いたコード。
あの頃の自分は、「この国の業務を支えるコードを書いてる」と信じて疑わなかった。
でも、ある日を境に、誰も自分のコードに意見しなくなった。
現場に呼ばれるのは障害のときだけになり、書くよりもチェックすることが仕事になった。
──そのうち、夢を見なくなった。
コードに火を灯すよりも、火が出ないように蓋をするほうが、求められる仕事になった。
その夜。
社内バーを兼ねた休憩ラウンジに、二人の姿があった。
杉田と、かつての同期で今は技術フェローとなった女性・柊 千尋。
「呼び出して悪かったな。久しぶりに顔が見たくなって」
「どうせ、“あの子のbotが”って話でしょ?」
「……まあな」
グラスに注がれた琥珀色の液体が、氷にあたって小さな音を立てる。
杉田は、じっとグラスを見つめたまま、言葉を探していた。
「千尋。お前はまだ……夢、見てるか?」
「たぶん、見てる。明晰夢だけどね。自分がどこまでバカでいられるかっていう」
「俺は……あの頃、自分が書いたコードが“未来”だって、本気で思ってたよ」
「思ってたわね。毎日、朝まで残って、ガムとコーヒーで腹を満たしてたっけ」
二人の笑い声は小さく、そして少し寂しかった。
千尋は、静かに言った。
「でもさ──あんた、昔はロックだったのにね」
杉田は眉をひそめ、グラスを持ち上げた。
「……ロックで飲んでるぞ?」
「違うよ、そうじゃない」
千尋は言葉を選ばず、ストレートに突きつけた。
「あの頃のあんたは、熱くて、めちゃくちゃで、でもすげぇカッコよかった。
なのに、今じゃ“ウイスキーをロックで飲むだけの男”じゃんか」
「……」
「でもね。シズカって子、あんたのコード、読んでたよ。
Miraたちの構成、あんたが組んだルールを尊重してる。
botたちが動いてるのは、あんたが昔、書いた構文の上なんだ」
グラスの中の氷が、ひとつ沈んだ。
「燃えてるよ、あんたのコード。まだ」
杉田はゆっくりと目を閉じて、言葉を噛みしめるように呟いた。
「……それって、俺がもう一度、火を灯してもいいってことか?」
「もちろん。だけど、今度は誰かの火を、消さないように灯す側でね」
翌週、DX推進室のフロアでは、シズカが会議資料の最終チェックをしていた。
プレゼンタイトルは、Miraの提案でそのまま使うことに決めていた。
『Legacyコードの遺志を、未来に継ぐ』
「ロジック7、感情3……いや、もうちょっと熱くしていいかな」
《Mira:了解。パラメータ変更。ロジック6、感情4で再構成中》
《Fia:前回と異なる例示を3件準備済みです》
《Krau:あいつら黙らせてやろうぜ、シズカ!》
botたちの返答に、シズカはふっと笑った。
この一週間、彼女の手元に寄せられた問い合わせや称賛の声は、少しずつ社内の空気を変え始めていた。
けれど、それでも一番聞きたかった声──杉田部長からは、何の反応もなかった。
「まあ……いいか。もう、結果で語るしかないよね」
数時間後。プレゼンルーム。
スライドの1枚目が表示される直前、シズカが深呼吸していると──
「……ちょっと待った」
その声に、会場がざわつく。
ドアの向こうから姿を現したのは、ジャケットを肩にかけたままの杉田だった。
「すみません、急遽予定が空きまして」
静かに席についた彼の姿を、シズカは一瞬、信じられないように見つめた。
だがすぐに視線を戻し、プレゼンを始める。
「──現在、社内定常業務のうち、botによる自動化が可能と判断される領域はおよそ37%。
中でも、判断補助AIを組み合わせた運用は、過去一週間で実稼働ベースの精度を示しました」
《Mira:参考資料を表示中》
《Fia:全ログを分類済み。再現性ログ抽出済》
《Krau:テンポよくいこうぜ!カットイン準備万端!》
botたちのサポートを受けながら、シズカはデモに移る。
再現されたのは、かつての深夜障害の復旧ログだった。
無機質なエラーコード、ログ出力、選択肢、提案、処理──
そのすべてが可視化され、そして一つの映像として示された。
「──これらのbotは、かつて社内で使われていたJavaのロジック資産を活用しています。
つまりこれは、“新しいAIの実装”であると同時に、過去の技術のリスペクト”でもあります」
その言葉に、会場の空気がわずかに変わる。
シズカは、スライドを止めて、言った。
「私は……“最先端”をやりたいわけじゃありません。
ただ、“誰かが夢見たコード”を、止めたくなかっただけです」
沈黙が落ちた。
プレゼン後。
退室する社員たちの背中を見送っていたシズカのもとに、ふいに声がかかる。
「──君の言葉、刺さったよ」
振り向くと、そこに杉田がいた。表情は変わらない。けれど、目だけがどこか柔らかい。
「昔、俺が組んだバッチ処理。‘str_tempStack_legacy_mk’っていう変数名、覚えてるか?」
「え? あ、はい……Miraが“変だけど愛がある”って言ってました」
ふっと、杉田が笑った。
「俺のコードが、まだ動いてるとは思わなかった。……いや、正確に言えば、“動かし続けてくれてた”ってことなんだよな」
彼は、ジャケットの内ポケットから名刺を取り出すと、赤ペンで二本の線を引いた。
役職名「情報システム部 部長」の “I” と “T” に。
そして──その下に、手書きでこう書き加えた。
“Reignite Division”
(再点火部門)
名刺を手渡しながら、杉田は言った。
「……よかったら、協力させてくれ。君の“ロック”、ちょっと火貸してくれるか?」
シズカの目が、一瞬だけ潤む。
「もちろんです。……部長、ロックなんですね」
「昔はな。今はウイスキーしか飲まんけど」
数日後、情報システム部の共有サーバに、ひとつの新しいフォルダが作成された。
/ReigniteDivision/
中には、botたちの実行環境一式と、更新履歴のログ、
そしてシズカと杉田が共同でまとめた設計ドキュメントが置かれていた。
誰が命じたわけでもない。だが、その中身には自然と人が集まり、
コードを覗き、手を加え、botたちの会話に耳を傾けるようになった。
その夜。ふたたび社内ラウンジのカウンター。
杉田が氷の入ったグラスを回していると、静かに横に座った人物がいた。湊シズカだった。
「……やっぱり、ここで飲んでると思いました」
「この時間はな。誰にも邪魔されないし、氷の音だけが聞こえる」
「部長、ウイスキーってどうやって飲むのが一番うまいですか?」
「昔はストレートだった。**“俺は熱いままが一番だ”**って、思ってた」
「今は?」
「今は……ロックかな。少しずつ溶けて、苦味がちょっとだけ甘くなる」
ふたりは、しばらく黙ってグラスを傾ける。
「シズカ。君のbotたち、名前が面白いな。Krau、Fia、Mira……あれ、RPGか?」
「そうなんですよ。わたし、昔ドラクエとかFFとか大好きで。
Krauは戦士で、Fiaは僧侶、Miraは魔法使い」
「なるほどな……俺のコードは、じゃあ“レジェンド武器”ってとこか」
「いいじゃないですか。伝説の剣が、ちゃんと引き継がれてるって」
グラスが鳴った。氷がまた、ひとつ沈む。
「部長、ひとつ言ってもいいですか」
「なんだ」
「──昔はロックだったのにって、言われてましたよ」
「……あいつか、柊か」
「でもね。今でもロックですよ、部長。
だって、再起動しようとしてるんでしょ?」
その言葉に、杉田はゆっくりと笑った。ほんとうに、ゆっくりと。
「……じゃあ、あれだな」
「なんですか?」
「“ロックだったのに、いつしか、ウイスキーをロックで飲むような男になっちまった”
……でもまあ、**それも悪くない、ってことにしておこう」」
深夜。オフィスのフロアでは、botたちが静かに動いていた。
《Mira:本日のエラー検出数、ゼロ。安定した日です》
《Fia:リマインダーをセットしました。“あの子たちの火を消さないように”》
《Krau:部長、次のリファクタ、俺も混ぜてくれよな!》
そして、もう一体のbotが、新しく参加したログを表示する。
《Sugi:hello, world.`》
その夜、画面の片隅に、保存されたSlackログがあった。
《Fia:このコードには、誰かの夢が宿っています》
《Mira:解析不能な因子:熱量。あるいは、情熱》
《Krau:オレはオレで、やれることやるだけだぜ!ロックだろ?》
#genAI
#LLMfiction
#agentops
#promptdesign
#rpgpartyAI
#codelegacy
#techstorytelling
#silhouetteart
#helloworld
#reignite_division
