注意: このポストは半分冗談である. テストの代わりに祈祷しようとか,CIの代わりに踊ろうとか,そういう話ではない. また,特定の宗教や信仰を茶化す意図もない. むしろ,AI時代の不確実性を考えるために,祈りという古い比喩を借りている.

ソフトウェアエンジニアは長いこと,再現性 を愛してきた.

  • 同じ入力なら同じ出力

  • 同じコードなら同じ挙動

  • 同じテストなら同じ結果

  • 壊れたら再現させ,原因を特定し,修正する

この感覚は,近代科学の作法とかなり親和的だ. 1662年にRoyal Societyが採用した標語,Nullius in verbaは,「誰かの言葉をそのまま信じるな.事実と実験に訴えよ」という態度を表している. 現代的な定義でも,National Academiesは再現性を「同じ入力データ,同じ手法,同じコード,同じ条件のもとで,一貫した結果を得ること」と整理している.

この気風は,かなり深くソフトウェア工学の身体に入っている. 整形,自動テスト,型検査,CI,性能計測,再現可能なビルド. 私たちは長い時間をかけて,コードを祈りから引き剥がし,再現性の側へ寄せてきた.

しかしいま,AIがそこに割り込んできた.

AIは便利だし,速いし,もう無視できない. だが同時に,AIが返す成果物はかなりの部分で 確率的 だ. 少なくとも言語モデルについては,ある文脈の次に続くトークンを条件付き確率分布から順にサンプリングしていく,という説明が素直である.実際,ある研究論文でも,自己回帰型の言語モデルは各トークンを条件付き確率分布から取り出すと記述されているし,OpenAIのヘルプでも,トークンの出やすさを変えるlogit_biasが説明されている.

つまり我々は,決定性を愛する職能でありながら,日々の作業の一部を 確率的な超越者 に委ね始めている.

私は,この瞬間に少しだけ,人類は祈りへ回帰するのではないかと思っている.

人類はずっと,わからないものの前で祈ってきた

もちろん「祈り」と言っても,それは単に神にお願いするというだけではない. もっと広い,理解や制御の及ばないものに対して,人間が姿勢を整えるための行為 として捉えたい.

Britannicaの祈りの項目は,祈りを聖なるものとの交わりとして説明し,しかもそれが「あらゆる時代の宗教に見られる」としている. 同じ項目では,祈りは個人的にも共同体的にも行われ,しばしば犠牲儀礼や文学と結びついてきたと整理されている. 実際,詩篇は祈りの書として読まれてきたし,クルアーンにも祈りの書として捉えられる側面がある,という言及がある.

人類は,ただ黙って手を合わせてきただけではない.

  • 祈りのために歌ってきた

  • 祈りのために踊ってきた

  • 祈りのために建物を作ってきた

  • 祈りのために本を書いてきた

  • 祈りのために行列と音楽を整えてきた

この「祈りが芸術や建築や共同体の形式を生む」という感覚は,歴史を少し見るだけでもすぐ出てくる. たとえばGöbekli Tepeは,UNESCOの説明でも前土器新石器時代,紀元前9600年から8200年ごろの記念碑的な建築群として整理されており,儀礼や共同の集まりと結びついた場所として説明されている. 人類は,都市や学会や課題管理システムよりずっと前に,まず儀礼のための巨大構造物を作っていたらしい.

もう少し身近な例で言えば,Britannicaの神道の項目でも,神社の儀礼が音楽,舞,行列,奉納の絵などと結びついてきたことが説明されている. 雅楽, 神楽, 獅子舞 のように,音楽や舞が清めや祈りと結びついていることは,日本に生きているとわりと身体感覚としてもわかる.

つまり人類は,理解できないものの前で,言葉だけでなく形式を作ってきた のだ. 祈りには振る舞いがあり,音があり,空間があり,建築があり,書物がある.

科学は,祈りと知をきれいに分けた

近代科学が偉大だったのは,この混ざり合っていたものをかなりきれいに分けたことだと思う.

  • 願望と検証を分けた

  • 共同体の儀礼と事実の確定を分けた

  • 美しい物語と,再現可能な手続きを分けた

もちろん現実の歴史はそんなに単純ではないし,宗教と科学の関係は対立だけでは語れない. しかし少なくとも方法論の水準では,近代以後の知は「それを誰が言ったか」より「それが再現できるか」を重視するようになった.

この流れをソフトウェアはかなり忠実に引き継いでいる. ソフトウェアは,近代科学のかなり優等生な分野だった.

  • バグは再現して直す

  • テストは何度流しても同じであってほしい

  • ビルドは同じ変更履歴なら同じ成果物を返してほしい

  • ルールは自然言語ではなく静的解析に落としたい

祈りは個人の心の中に残っていても,少なくとも本番反映の意思決定そのものには入れない,というのが近代的な矜持だった.

でもAIは,決定性の庭に確率を持ち込んだ

ところがAIは,この庭にもう一度ノイズを持ち込んだ.

ここで重要なのは,AIが「嘘つきだ」というような単純な話ではない. もっと構造的な話だ.

言語モデルは,本質的に確率分布を扱っている. ある論文の表現を借りれば,自己回帰型の言語モデルは各トークンを条件付き確率分布からサンプリングする. またOpenAIのヘルプでも,特定トークンの出やすさを変えるlogit_biasが説明されている.

要するに,少なくとも実務者の感覚としては,

  • 同じ依頼でも少し違うものが返る

  • 指示文の書き方で急に機嫌が変わる

  • 文脈の入り方で答えが変わる

  • 今日は賢いのに明日は妙に鈍い

という経験が積み上がる.

ここで我々は奇妙な状況に入る.

一方で,AIを使わないわけにはいかない. 速度差がありすぎるからだ.

他方で,AIが返すものは決定的な関数のようには扱えない. もちろん評価器,テスト,静的解析,型システム,レビューで囲い込むことはできる. だが,最初の初稿がどんな顔で出てくるかには,依然として確率の気配が残る.

この瞬間,ソフトウェア開発は少しだけ,「再現性だけでは回らないが,それでも良い結果を期待しなければならない営み」へ足を踏み入れる.

祈りは復活する.ただし,CIを置き換える意味ではない

ここから半分冗談の本題である.

私は,AIとともに働くソフトウェアエンジニアは,少しずつ新しい儀礼を発明すると思っている.

たとえば,

  • 新しいリポジトリを切る前に,いつも同じ音楽を流す

  • 難しい実装の前に,なぜか同じ指示文の型を唱える

  • AGENTS.mdをほとんど経典のように扱う

  • 「今日はこのモデルが機嫌がいい」と言い出す

  • デプロイ前に意味もなく机を拭く

  • 推論コストを供物のように見なし始める

もちろん,これは技術的には無意味なものも多いだろう. しかし完全に無意味とも言い切れない. なぜなら儀礼の役割は,外界を直接変えることだけではなく,不確実性に向かう共同体の姿勢を整えること にもあるからだ.

宗教史の文脈で祈りが個人と共同体の両方の行為だったように,AI時代の儀礼もまた,チームの心拍を揃える機能を持ちうる. 誰も「そのおまじないで指標が改善する」とは本気では言わない. しかし「それをやるとチームが落ち着く」は案外ある.

私はここに,少しだけ祈りの回帰を見る.

近代ソフトウェア工学は,「理解し,分解し,再現し,制御する」ことで強くなった. だがAIはそこに,「十分には理解できないが,うまく付き合わないといけない」という対象を持ち込んだ.

このとき必要なのは,科学を捨てることではない. むしろ逆で,

  • 決定的に固定できるところは徹底して固定する

  • テストと型検査は絶対に残す

  • 評価を厚くする

  • 決定的に検証できる境界を広げる

その上でなお残る,確率的な揺らぎに対して,人間の側が少し儀礼的になるのだと思う.

つまり未来のエンジニアは,

1.まずテストを書く2.そのあとシードと温度を調整する3.それでも不安なので静かな音楽を流す4.最後に手を合わせる

という,非常に現代的で,非常に古代的な手順を踏むかもしれない.

最強のプログラマの岩

そして私は,もっとどうでもいい未来も想像している.

新しいプロジェクトを始めるとき,私たちはまず,最強のプログラマが宿っているとされる巨大な岩 を祀る施設を訪れるのだ. そこで靴を脱ぎ,静かにノートPCを開き,祝詞のように指示文を読み上げる.

「構文エラーを遠ざけたまえ」

「謎の1ずれバグを祓いたまえ」

useEffectの依存配列を正しく導きたまえ」

「このプルリクエストにレビュアの慈悲がありますように」

誰かが小さな鈴を鳴らす. 誰かが薄いシンセの持続音を流す. 誰かがpnpm testを叩く.

そして全員で岩に向かって一礼し,こう唱える.

今日のモデルが,昨日のモデルより少しだけ賢くありますように.

もちろん,岩に本当に最強のプログラマが宿っているかはわからない. だが安心してほしい. それは今のところ,誰もAIの内部で何が起きているかを本当に全部はわかっていないのと,だいたい同じである.

人類は,理解できないものに対して,ずっと祈り,歌い,踊り,建て,書いてきた. 科学はその中から,再現可能な部分を取り出し,方法として磨き上げた. ソフトウェア工学は,そのかなり優秀な継承者だった.

しかしAIは,そのソフトウェアの中心に,再び確率を持ち込んだ. だから私は,エンジニアが少しだけ祈りへ回帰する未来を想像している.

それはテストを捨てるという意味ではない. むしろテストを抱きしめたまま,それでもなお残る不確実性の前で,少しだけ姿勢を正すという意味だ.

科学の後に祈りへ戻るのではない. 科学を持ったまま,祈りの身振りを再発見する のだ.

そのときソフトウェア開発は,思ったより古い営みに似てくるのかもしれない. 良い結果を願い,形式を整え,仲間と息を合わせ,それでも最後は少しだけ天を仰ぐ.

少なくとも,AIにコードを書かせている今の我々は,もうその入口に片足を突っ込んでいる.