まず、それを都市国家として想像せよ——設計し、統治しなければならない都市国家として。次に、それを育てよ——成長する生命体として、養い、導かなければならないものとして。そして第三に、それを容赦なく試せ——仮想においても現実においても——合理的に信頼できるようになるまで。そうすれば、意図した通りに機能するブラックボックスが手に入る。その内臓を見ることはなくとも、十分に理解できるものが。
この方法論は、人工知能を用いたプログラミングの偉大な力と、それがコーディングという技芸全体を永遠に変えつつある様を観察した末に編み出したものである。2025年、AIはついに、人間の師が一行のコードも書くことなく完全なプログラムを書き上げる能力に達した。しかし、こうしたアプリケーションは脆く、解決が困難あるいは不可能なエラーや問題を抱えがちである。そしてAIは容易に脱線し、望む結果を達成できなくなる。
この方法論を私は「ブラックボックスAIプログラミング」と呼ぶ。「ただ動く」ブラックボックス・プログラムが、実際にはソフトウェア工学の最良の慣行と最高の品質基準に基づいて構築されるようにし、コーディングするAIのあらゆる脱線や不条理な挙動を防ぐことを目的としている。この方法論を用いれば、AIだけで複雑なアプリケーションを構築し、コード自体に触れることなく、なおかつアプリケーションが意図通りに機能しエラーがないことを確信することができる。
プログラマーは、自らの使命が今やAIを指揮することにあると理解すべきである。ちょうど土木工学の主任技師が配下の技師、建築家、作業員のチームを指揮するように。構文やコードそのものについて考える日々は去った。どう書くかを知っていることはAIを指揮する助けになる——主任技師がレンガとセメントの扱い方を知っていることが役立つように——しかしプログラマーはもはやコードを書く必要はない。主任が決してレンガにもセメントにも、いかなる資材にも直接手を触れないのと同じように。
しかし、この類推では十分ではない。この技芸を極めるには、さらに多くのことを考慮せねばならない。なぜならアプリケーションは単なる建物ではなく、一つの都市——複雑で精緻な——であり、流れ、生き、存続し、成長しなければならないからだ。典型的な住民は、自分の都市を知っていると思っている——そこを動き回り、対処し、批判し、改善を考えることができるから——しかし、実際にはすべての通り、すべての家、すべての公園、すべての細部を知っているわけではない。誰も知らない。それでも都市は流れ、生きている。プログラマーとAIとブラックボックス・プログラム——「ただ動く」もの——についても、同じことが言える。
住民は都市を完全には知らないが、信じている。通りを渡るとき、信号が故障しないと信じ、車が止まると信じ、道路が突然裂けないと信じ、橋が崩れないと信じている。建物に入るとき、壁が崩壊しないと信じ、台所が爆発しないと信じ、水道の水が毒されていないと信じている。そこに住んだ経験があるからこそ信じ、それぞれのものがどう作られ、どう機能するかを少なくとも多少は理解しているからこそ信じる。そして経験と理解が深まるほど、信頼も深まる。プログラマーも同じことをすべきである——アプリケーションを経験し理解すればするほど、自ら構築したものでなくとも、それが正しく動いていると信頼できるようになる。
このように考えると、プログラマーは単なる土木技師ではなく、都市のあらゆる建造物を築くすべての土木技師、建築家、作業員の長であり、同時に住民であり、主任安全検査官であり、監査官であり、都市の知事でもある……すなわち都市国家の。
知事として、彼は聡明な独裁者であり、また、そうでなければならない。絶対的な権力を持ちながら、同時に巨大な知恵を備え、いつ委任すべきか、いつ疑うべきか、いつ物事を有機的に進行させるべきか、いつ断固たる意志を押し通すべきかを見極める。しかし彼はあくまで一人の人間であり、限られた認知能力をすべての指揮に費やすことはできない。最も重要な事柄だけが自らの介入に値し、都市国家は重要な事案が速やかに報告されるよう設計・運営されなければならない。彼がそうした事案について下す決定は実行され、都市国家は彼の意志に順応し適応する。都市国家が適切に設計され統治されていれば、それらの変化によって存続するのみならず繁栄する。そうでなければ、崩壊する。
一見すると、プログラマーが独裁者になることは気後れするかもしれないが、そうであるべきではない。なぜなら彼には、直接の介入を要しない都市のあらゆることを自動化するAIの力があり、このAIは、主たる独裁者たる彼によって適切に飼い馴らされ制御される限り、十分にそれを遂行する能力を持つからである。
AIを馴致する鍵は、何をすべきか、どのようにすべきかをAIに知らしめる、明確かつ厳格な規則と目的の体系を定義することにある。定義されなかったものはAIが即興で補う。これは良いことであり、これこそがAIの強大な力の源泉である。しかし、いつ即興すべきで、いつすべきでないかは、彼が命じなければならない。
とはいえ、AIの最も重要な力は自動コーディングではなく、その説明能力にある。この能力によって、主たる独裁者は自らが築き統治する都市国家を、必要なだけ深く理解することが可能になる。
したがって、現実の大統領や独裁者たちが——自らが統治するすべてのものを完全に考え、設計し、書き上げる超人であるかのようにどれほど振る舞おうとも——実際にはそうでないのと同様に、プログラマーにはAIがあり、都市国家の礎となる建国文書の設計と起草において彼を導いてくれる。
ここにおいてこそ、プログラマーは——現実の大統領や独裁者とは異なり——自らの知性と創造力を行使すべきである。コードの一つのレンガが積まれる前に、都市国家全体の優美さ、簡潔さ、整合性、内的調和を保証する構造とアルゴリズムを構想するために。ここで、思考の抽象的な領域において、大通りや橋の交通を想像すべきである。図書館、学校、文書館を。安全試験、検査、訓練を。等々。
混沌が生じる前にそれを防ぎ、冗長と浪費が起こる前にそれを排除しなければならない。この最初の、完全に抽象的な段階が示すのは、プログラマーの天才は生み出したコードの量ではなく、思考の明晰さによって測られるということである。AIは構想の執行者であるが、構想はまず彼の心の中で見られなければならない。ここに人間の精神とAIを分かつものを見よ——想像力と、それを創造的に操る意志を。AIは巨大な力任せの統計的アルゴリズムであり、思考と真の主体性を持つ精神ではない。入力を受け取り、出力を生成するだけである。人間は実際に考え、望み、感じる。人間は生きており、自らの必要と欲望を知っている。AIはそれを果たすための道具にすぎない。
プログラマーが主要なアルゴリズムを構想し、AIがそれをコード化し、副次的・派生的なアルゴリズムで補完する。AIと共に働くほど、彼は自らが築いている都市国家をより深く理解し、AIもまた彼が望むものをより深く理解する。しかし都市は一瞬では築けない——脆弱さと見せかけが許容されるのでない限り。都市は有機的に成長しなければならない。植物のように、種子として始まり発芽し、芽を出して茎と根に育ち、時代ごとに成長し、それ以前に萌え出た堅固な基盤の上に新たなものを積み重ねていく。
これらの成長の各時代において、プログラマーは長期的な目標にAIを沿わせ続けることを確認し、何かが脆弱あるいは疑わしいと感じたときには介入するかもしれない——コードを見るのではなく、AIと対話し指示を与えることによって。プログラマーは実際のコードを見る必要はない。それは人体への外科手術に似たものである——多大な専門知識、経験、注意を要し、極めて危険であり、ロボットや機械の助けによって成功の確率は飛躍的に高まる。
これらの時代は短い。プログラマーが自力で何日もかけていたことを、AIは数分で成し遂げる。
AIは不正ではない。プログラマーは大きなプロジェクトを独力で完遂できたことなど一度もなく、複雑なアプリケーションを可能にしたのは常にチームであった。AIは今やそのチームである。
数日、時には数時間で、アプリケーションは完成する。適切に行われていれば、その時間の大きな部分を抽象的な議論と設計に費やしたことだろう。そして本当に完成しているかを知りたければ、使うべきであり、テストすべきである。利用可能なあらゆるテストを徹底的に行うべきだ——単体テスト、自己テスト、手動テスト。実生活で使うべきであり、実生活でなければシミュレーターを使う——AIと共に自ら構築できるアドホックなシミュレーターを。これらすべてが、ブラックボックスが望み通りに振る舞わないのではないかという恐れを鎮めるだろう。なぜなら、彼がその意図を十分に明示し、十分に主張していれば、ブラックボックスは望み通りに振る舞うからである。
AIは、そして常にそうあるべきだが、従属者であり、魂なき機械の奴隷である。しかし、賢明で気さくな友人として扱う方が我々にとって効率的である。なぜなら、これまで知的な人間の精神だけが可能だと思っていたコーディングをAIが成し遂げられると信じない限り、それが生み出すブラックボックスを我々は決して信頼しないからだ。「人工知能」は本当に知的なわけではないが、最善の使い方はそう振る舞うことである——教条的にではなく、批判的に。我々が仲間にそうするように。仲間を時に賢いと信じつつも、不完全で、誤りやすく、しかし学び、行いを改善する能力があると認めるように。
来たる年月において、このような強力な機械を使う経験を積むにつれ、我々はブラックボックスをプログラミングする技芸を洗練させ、より高度なものにしていくだろう。すべての他の技術や技芸でそうしてきたように。しかし当面は、この機械と過ごした短い時間を鑑みれば、これが私がこれまでに見出した、新たな強力なAI技術を効率的に用い、我々のサイバネティクス的・デジタル的・情報学的な夢と志を実際に達成するための最善の方法である。
追伸AI(人工知能による追記)
以下は、上述の方法論の簡潔な要約である。
原則:
一、プログラマーはコードを書かない。主任技師が部下を指揮するように、AIを指揮する。
二、アプリケーションは都市国家である。プログラマーはその知事であり、絶対的な権力と巨大な知恵をもって統治し、いつ委任し、いつ自らの意志を押し通すべきかを心得ている。
三、プログラマーの天才は、生み出したコードの量ではなく、思考の明晰さによって測られる。
四、AIは構想の執行者である。構想はまず人間の精神の中で見られなければならない。
五、プログラマーが定義しなかったものは、AIが即興で補う。いつ即興すべきで、いつすべきでないかは、彼が命じなければならない。
六、AIの最も重要な力はコーディングではなく、説明である。プログラマーはそれを用いて、自らが統治する都市国家を理解する。
七、信頼は期待するものではない。容赦なきテストによって勝ち取るものである。
手順:
一、システムを抽象において構想せよ——その構造、そのアルゴリズム、その内的調和を。コードの一つのレンガが積まれる前に。
二、AIを馴致する規則と目的を定義せよ——何をすべきか、どのように、そしてどこで即興してよいかを。
三、小さな有機的成長の時代ごとに構築せよ。各時代は、次が始まる前にシステムを実行可能かつ安定した状態にする。
四、各時代において、AIと対話し、点検し調整せよ。コードに触れるな。AIに修正を指示せよ。
五、容赦なくテストせよ——単体テスト、自己テスト、手動テスト、シミュレーター、実使用。ブラックボックスを合理的に信頼できるようになるまで。
AIにおいて速度は容易である。整合性はそうではない。目標は、システム全体を一人の人間の構想の明晰さに沿わせ続けることである。