リレーコラムについて

コードエディタ型AIにSF小説を書いてもらったらどうなるか。

小堀友樹

確定

大宮駅西口の朝は、いつも少しだけ眠そうだ。

西口のロータリーには、川越方面へ向かうバスがゆっくり腹を震わせている。そごうの壁面に午前の光が貼りつき、アルシェの大型ビジョンはまだ眠そうな広告を流していた。ニューシャトルの高架の下を、スーツの人たちが駅へ吸い込まれていく。どこかのビルの空調室外機が低く唸っていて、僕のデスクの上では、キーボードの白いキーキャップが午前の光を受けていた。

事務椅子の背もたれに体を預ける。少しへたったクッションが、腰のあたりでゆっくり沈む。右手の親指でスペースバーを撫でると、乾いた静かな反発が返ってきた。

ディスプレイの左上に、牧歌的な文字が浮かんでいる。薄緑色の角丸パネルは、天気予報アプリの晴れマークみたいに、必要以上に人を安心させる色をしていた。

前線予報システム《みはるくん v12.8.4》
未来予測演算:安定
介入候補:3,412
脅威分類:危険予兆

中央のウィンドウには、砂漠が映っていた。

もちろん本物の映像ではない。公開衛星の熱画像、民間通信の混雑、現地SNSの投稿時刻、盗聴できた短い電波、途切れた監視カメラの前後、補給車両の移動履歴。取れる情報と、取れなかった空白を丸め込み、48分後にもっとも起こりそうな場面としてCG化したものだ。

砂の上を、軍用ジープが一台走っている。

正確には、「まだ走っていない」ジープだ。

最初のころ、この技術は数コンマ先のコックピット映像を補うだけのものだった。刻々と変わる戦況に対して、人間の反応は遅い。網膜が光を受け、視神経を通り、脳の奥で意味らしいものに組み替えられ、指の筋肉へ命令が届く。その短いリレーだけで、数百ミリ秒が失われる。

だから生成AIが、戦場の少しだけ先の風景を描くようになった。やがて予測できる範囲は一秒になり、十秒になり、分単位になった。もちろん、全部が起こるわけではない。起こる前の未来を、画面に置いているだけだ。

それでも最後の「確定」だけは、人間の仕事として残された。僕の仕事は、生成AIが映した未来に対して、兵器システムを現実側へ「接続していい」と承認することだった。

四十八分後、このジープは補給拠点への攻撃を始める可能性が高い。まだ現実ではない。ただ、確率だけが、少しずつその未来に寄り添っている。画面内では、車体の輪郭が半透明のオレンジで縁取られている。隣には確率が表示されていた。

74.231%

74.232、74.229、74.236。
数字は息をするように揺れている。

「今日さ、昼どうします?」

隣の席から佐藤が言った。

片手でマグカップを持ち、もう片方の手で社内チャットに返事を打っている。画面には総務からの「冷蔵庫内の私物について」という通知が開かれていた。誰かのプリンがなくなったらしい。

「まだ決めてない」

「高崎線、また遅れてるっぽいですよ」

「逆に遅れてないと不安になるよな」

僕は少し笑って、視線を自分のディスプレイへ戻した。

《みはるくん》が、薄緑色の吹き出しを出す。

この危険予兆は、現時点では確定していません。落ち着いて観察してください。

UIの色も、選ばれている言葉も、驚くほど優しい。
この技術が生まれた理由も、もとは優しさだった。

昔の遠隔兵士たちは、もっと直接的だったらしい。粗い映像越しに対象の輪郭を見て、照準を合わせ、ボタンを押した。爆発の後に熱源が小さくなるところまで見届けた。日付と時刻と座標が勤務記録に残り、眠れなくなり、食べられなくなった。

彼らは戦場にいなかった。空調の効いた部屋にいた。コーヒーの匂いがする場所で、人間の輪郭を消していた。

それが、心を壊した。

だから次の世代のシステムは、まずオペレーターの罪悪感を減らすことを目標にした。殺傷ではなく、介入。標的ではなく、危険予兆。引き金ではなく、Run。

判断は承認、補正、観測、同期、実行に細かく割られ、それぞれが別の部署、別の国、別の時差の人間に渡されていく。一人では決めない。だから誰も、自分が決めたとは思わない。

本番環境とステージング環境の境界は、意図的に曖昧にされた。どの入力が非現実で、どの入力が現実に接続されているのか。僕たちには分からない。分からないように設計されている。

Global Input Threads: 28,904

僕の Cmd + R は、その一つにすぎない。

僕だけが何かを確定するわけではない。世界中のオペレーターの入力、通信衛星のわずかな遅延の揺らぎ、現地部隊の補正、法務承認済みの介入テンプレート。それらが混ざり合い、誰の意思でもないものとして実行される。

僕はただ、キーを押す。

そのために雇われている。

僕たちが相手にしているのは、まだ起きていない何かだ。

砂漠のジープは、まだ存在しない轍を刻み続ける。早すぎる入力は相手に見つかり、ルートを書き換えられる。遅すぎる入力は、もう現実に追いつけない。

だから狙うのは、分岐がほとんど閉じる直前だけだ。99.9%が100%に貼りつく、ほんの少し前。

僕は左手をホームポジションに置いた。キーの表面はわずかに温かい。親指の腹がコマンドキーに触れる。人差し指がRの上で待つ。

《みはるくん》の隣で、タイミング補正のパネルが立ち上がった。

認知遅延補正:286ms
衛星中継遅延:41ms
UI描画遅延:12ms
操作者入力予測:安定

「入力の準備をしてください」と表示された。

小学校の給食だよりみたいに丸いフォントだった。誰かの輪郭を消す操作を、システムは丁寧に包装してくれている。

佐藤が椅子を少し回して、こちらを見た。

「すずらん通りのラーメン屋、まだ行ってないですよね」

「行ってないね」

「じゃあ今日そこにしましょう。味噌が評判らしいです」

「混んでそう」

「混んでたら、隣のカレーで」

佐藤の画面にも、別の戦場の風景が小さく開いている。彼はそれを最小化しないまま、近所の店の星の数を見ていた。

佐藤の声の後ろで、砂漠の確率が跳ねた。

82.004%
86.771%
91.330%

僕は短く息を吸った。

画面上のジープは、地平線に向かって走っている。タイヤが砂を巻き上げる。だがそれは本物の砂ではなく、砂である可能性のレンダリングだ。車内の人数や顔は表示されない。観測の外にある情報で、表示しないことが仕様だった。

代わりに、熱源の数、質量、速度、進路の分岐、危険係数だけがある。

《みはるくん》が偽データの候補を並べる。向こうの予測AIの視野に、小さな蜃気楼を差し込むためのパケット群。現地のセンサーに混じっても不自然ではない熱ノイズ。衛星画像の圧縮誤差に似せた影。相手のモデルが自分で補完したくなる、わずかな欠損。

僕はそれらを選ぶ。

選んでいる、という感覚は、少し違うかもしれない。候補はすでに、僕が選びそうな順番で並んでいる。僕の視線の揺れ、まばたき、昨日の睡眠時間まで、入力の一部として扱われている。

「Run準備」と表示された。

確率は上がる。

96.112%
97.803%
98.640%

社内チャットが右端で光った。

#oomiya-floor
総務:冷蔵庫のプリン、名前を書いてください。
営業3課:すみません、たぶん僕です。
佐藤:たぶん、じゃなくて確定してください。

僕は笑いそうになった。けれど指先は動かなかった。

笑うという反応にも遅延がある。面白いと思ってから表情筋が動くまでに、世界は何度も分岐する。

タイミング補正のパネルが入力ウィンドウを狭めていく。

推奨介入域:0.620s
補正後実入力域:0.281s

佐藤が立ち上がった。椅子のキャスターが床を小さく鳴らす。

「先にお店見ときますね。混んでたら送ります」

「了解」

僕の声は、自分でもびっくりするくらい平坦だった。

Global Input Threads: 31,887

世界中で、同じような人間がキーに指を置いている。昼休み前の人、夜勤明けの人、子どもの写真をデスクに置いている人。彼らの Cmd + R が、薄く重なって一つの厚みになる。

99.102%
99.441%
99.703%
99.881%
99.923%
99.951%

《みはるくん》が表示する。

分岐はまだ確定していません

タイミング補正が続ける。

入力してください

僕は、未来へ向かって指を置いている。まだ押していない。でも、みはるくんは、僕が押すまでにかかるであろう時間を何度も計算しているだろう。

> keybinding.run
> waiting for Cmd + R

Cmd + R

僕はボタンを押した。キースイッチが沈む。底打ちの音は、静音リングで丸められている。指先にだけ、確かなクリックの影が残る。

Run.

スレッドが跳ねる。31,887が32,104になり、32,509になり、33,000を超える。僕の入力はその中で砕け、他の入力と混ざり、どこにも僕の形を残さない。

99.982%

向こうの予測AIが反応する。ルート候補が細かく震える。ジープの進路が右へ逃げようとして、差し込まれた熱ノイズを避け、左へ戻る。戻った先で通信遅延に足を取られる。

Cmd + R

100.000%

収束しかけていた分岐の輪郭が、ポップなアニメーションで弾けた。

破片も、煙も、熱も表示されない。ただ、オレンジの点が小さく縮み、白い丸になり、チェックマークへ変わる。まるでタスク管理アプリで今日の予定を一つ消したみたいに。

ログが流れた。

[Success]
prediction branch closed
operator attribution: distributed
mental load index: low
session continuity: maintained

《みはるくん》が最後に言った。

おつかれさまでした。休憩をおすすめします

僕は手をキーボードから離した。指先に、まだキーの感触が残っている。
でも、何かを終わらせた感覚はない。

佐藤からメッセージが届いた。

佐藤:ラーメン、いけそうです。今なら並んでません。

僕はディスプレイを最小化した。砂漠は消え、大宮の天気と午後の会議予定だけが残る。椅子から立ち上がると、腰が少し鳴った。人間の肉体は遅く、重い。

オフィスを出る前、社内チャットにまた通知が来た。

営業3課の鈴木です:プリン弁償します。

エレベーターで一階へ降りる。ビルの自動ドアが開くと、五月のぬるい風が入ってきた。西口の歩道には、昼休みの会社員たちが普通の速度で流れている。誰も急いでいないように見える。

誰も、何かが終わったことを知らない。
はじまったことも、知らないから。

ビルの前で佐藤と合流し、すずらん通りのラーメン屋へ向かった。

佐藤が隣で言う。

「煮卵、つけます?」

僕は少し考えた。

考えるのに、たぶん三百ミリ秒くらいかかった。

「つける」

そう答えて、僕は券売機の画面を押した。

味噌ラーメン。煮卵。半チャーハン。

右下に、緑色のボタンが光っている。

確定。


突然よくわからない文章をすみません。
コードエディタ型AIは、
キャッチコピーみたいな短いテキストではなくて、
長文の方が得意なので、
SF小説を書いてもらいました。

自作の小説なんて
こんなところで公開したら
顔がぱんぱんになって
爆散して消えてしまう気がするのですが、
生成AIをかましているので、

全然大丈夫…!
全然大丈夫……?

全然大丈夫……なのでしょうか?

大丈夫?ほんとに?

やっぱり
爆散する気もしてきました。

おもしろかったら
小堀の手柄に、
おもしろくなかったら、
生成AIのせいにしてもいいでしょうか。

よろしくお願いいたします。

(3日も生成AIの話ばっかり、
そろそろ書くことなくなって
きたんじゃないのって思われてますか?)

明日も!
生成AIの話を!
させて!
もらいますし!
明日が!いちばん!
文字数が!
多い!よ!

うわ〜

NO
年月日
名前
6153 2026.08.07 関裕敏 別れても~好きな人~
6152 2026.08.06 関裕敏 もうこれ以上はダメよって君は急に~
6151 2026.08.05 関裕敏 死にたいくらいに憧れた~
6150 2026.08.04 関裕敏 そんなヒロシに騙され~
6149 2026.08.03 関裕敏 出会いは~スローモーション~
  • 年  月から   年  月まで