注意: このポストは半分冗談である. テストの代わりに祈祷しようとか,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にコードを書かせている今の我々は,もうその入口に片足を突っ込んでいる.