プログラミング
システムの形 - 認知の限界に対応するエンジニアリング
The Shape of the System - Engineering for Bounded Cognition (shapeofthesystem.com)
要約
人間の認知能力は限られており、同時に扱える情報はごく少数です。この認知の限界は、私たちが構築するソフトウェアシステムの複雑さとの間に大きなギャップを生み出します。この記事では、このギャップを認識し、人間の「エラー」と見なされがちな問題の根本原因が、存在しない完璧なオペレーターのために設計されたシステムにあることを指摘しています。AIも同様の限界を抱えており、優れたエンジニアリングとは、この認知の限界を前提として、小さな心でも大規模なシステムを安全に扱えるようにシステムを設計することであると論じています。
全文翻訳
認知の限界に対応するエンジニアリング
ソフトウェアを構築する心は、それが構築するソフトウェアよりもはるかに小さく、エンジニアリングにおけるほとんどすべての良いことは、そのギャップとともに生きる方法です。
2026年2月3日 横断的
おそらく、心は一度に7つのことを保持できると聞いたことがあるでしょう。これは大衆心理学で最も繰り返される数字ですが、それを考案した本人は実際には信じていませんでした。ジョージ・ミラーは、1956年の論文「魔法の数字7±2」を半分冗談で書きました。彼は、互いに関係のない実験でこの数字が繰り返し現れるのはおそらく単なる偶然だと書き、ある時点では整数によって迫害されていると感じていると述べました。彼は疑うのが正しかったのです。後の研究者は、私たちがごまかすために使う小さなトリック(心の中で繰り返す、数字をチャンクにまとめるなど)を取り除くと、その数字は減少しました。それらをすべて取り除くと、人が何の助けもなしに一度に心に保持できる独立したものの正直な数字は、約4つです。
4つ。さて、これを、あなたが読んでいるデバイス(数千万行のコードを実行している)と比べてみてください。ソフトウェアの全体の問題は、その比率にあります。私たちが構築するシステムは、これまで作られた最も複雑なオブジェクトの一部であり、それらは、一度に約4つのことを正確に保つことができる心によって構築され、変更され、プレッシャーの中で危機から引き戻されています。
そして、小さいだけでなく、狭いのです。あなたがその4つのスロットに向ける注意は、部屋全体を照らす投光照明ではなく、暗い倉庫の中の懐中電灯の光であり、ほとんどすべてはその外側にあります。有名な実験があります。人々はビデオを見て、あるチームがバスケットボールを何回パスしたかを数えるように求められました。途中で、ゴリラの着ぐるみを着た人が画面の真ん中に歩いて入り、カメラに向かって向きを変え、胸を叩き、再び歩き去ります。9秒間、はっきりと見えています。視聴者の約半分はそれを見ません。彼らはそれを見つめているのです。彼らは盲目ではありません。光はただボールに向けられていただけなのです。そして、それはさらに奇妙になります。別の研究では、人々が路上で呼び止められ、道順を尋ねられました。彼らが答えている途中で、2人の作業員がドアを運び、そのドアの後ろで質問した人が別の人と入れ替わりました。身長もシャツも声も異なります。約半数の人は、目の前の人間が入れ替わったことに気づかずに、見知らぬ人に道順を教え続けます。そして、あなたがわずかに保持するものでさえ、わずか数秒しか持ちません。ランダムな3つの文字を誰かに見せ、復唱を止めさせると、20秒以内にほとんどが消えてしまいます。つまり、4つのスロット、狭い光、そして漏れがあるのです。それが私たちがソフトウェアを構築する道具です。
心がどれほど小さいかを一度感じてしまえば、ソフトウェアが壊れることが驚きではなくなります。驚きなのは、それがそもそも機能することです。私たちは、どんな人にとっても頭の中に収めるにはあまりにも大きすぎる論理の聖堂を建ててきましたが、生まれたときに与えられたのと同じ4つのスロット、ゴリラを見落とす心で、どうにかそれを維持しています。稼働時間が奇跡なのです。
これにより、業界が好むフレーズがより厳しい光を浴びることになります。「ヒューマンエラー」です。ほとんどすべてのインシデントレポートを読めば、最後には間違ったコマンドを入力したり、間違ったボタンをクリックしたり、警告を見落としたりした人がいて、私たちはすべてを彼らの不注意として処理し、次回はもっと頑張ると約束します。しかし、注意深い人の半分が見つめても見ない警告は、実際には警告ではありません。それは飾りです。疲れたクリック一つで大惨事になるボタンは、たまたまそれをクリックした人ではなく、デザイナーによってそこに置かれたものです。航空、医療、発電所の制御室など、「もっと注意しなさい」というアドバイスが人々を死に至らしめるような分野でこれを研究している人々は、ずっと前にこのことを理解していました。有能な人が同じ間違いを繰り返し犯すとき、その原因はほとんど人にはありません。それは、存在しないオペレーターのために構築されたシステムにあります。疲れることもなく、目を離すこともなく、マシン全体を一度に頭の中に保持できるオペレーターです。そのようなオペレーターは決して生まれませんでした。彼らのために構築されたすべてのシステムは、すでに壊れているのです。まだ最悪の日が来ていないだけです。
しばらくの間、私たちは機械がこれらすべてから私たちを救ってくれるだろう、少なくともコンピューターには4つのスロットの心はないだろうという考えで慰めることができました。それから、私たちは言語を読み書きする機械を構築し、私たちのコードを渡し、彼らが不快なほど familiar な方法で失敗するのを見ました。大規模言語モデルには、一度に考慮できる情報のハードリミットであるコンテキストウィンドウと呼ばれるものがあります。それは長期記憶というよりは、今この瞬間に心に保持しているもののように振る舞い、何かがウィンドウから落ちると、ぼんやりと記憶されるのではなく、単に消えてしまいます。ウィンドウ内でも、モデルは均等に注意を払うわけではありません。「Lost in the Middle」という非常に素っ気ないタイトルの研究があり、研究者たちは、これらのシステムは、必要な事実が長い入力の最初または最後に近いときにはうまく答え、中央に埋もれているときには著しく悪いことを発見しました。これは、疲れた人が文書をざっと読み、冒頭と結論を捉え、その間は少しぼんやりしているのと全く同じ形です。モデルにもっと読ませると、より良くなるどころか、実際には悪くなることがあります。いくつかのテストでは、より多くの取得文書を渡すと、その精度は何も渡さない場合よりも低下しました。モデルの注意は固定された量であり、合計して1にならなければならないため、見させるものが増えれば増えるほど、以前の個々のものに割り当てられる注意は減ります。十分に薄く広げると、セッションの最初に与えた指示は静かになり、アシスタントはすでに書いた関数の2番目のコピーを書いたり、30分前に2人が下した決定を破ったりします。それは筋道を見失ったのです。同じ境界性ですが、今度はシリコンで実行され、最悪の午後のあなたと同じように間違いを犯します。
これは、初心者にも専門家にも、十分に休んだ人にも疲れ切った人にも、人間にも機械にも当てはまります。システムを変更する心は、常にシステム自体よりもはるかに小さいのです。賢くなることによって、あるいは賢い人材を雇うことによって、あるいはより大きなモデルを購入することによって、これを乗り越えられるようなバージョンはありません。なぜなら、そのギャップはいつか埋められるかもしれない数桁の違いではなく、仕事の恒久的な条件だからです。したがって、エンジニアリングの中心的な問いは「これらすべてを保持できるほど大きな心を見つけるにはどうすればよいか」ではありません。なぜなら、そんなものはないからです。問いは「小さな心でもすべてを崩壊させることなく扱えるように、どのように形を整えるか」です。私たちが優れたエンジニアリングと呼ぶもののほとんどすべては、その問いへの答えなのです。何かに正確な名前を与えれば、それはもう頭の中に保持する必要のない事実が一つ減ります。境界線を描けば、もう再確認する必要のない約束ができます。テストを書けば、決定をどこか消え去らない場所に保存できます。そして、元に戻せるものであれば、間違えてもよいという許可になります。これらの一つ一つが、壊れやすい4つのスロットの心の中に存在しなければならなかったものを、まばたきしている間にもそこにとどまる構造の中へと移動させるのです。
この方法で構築することには静かなおまけがあり、その最も明確な証拠はキッチンの引き出しの中にあります。1990年、サム・ファーバーという男性が、妻のベッツィーが普通の野菜の皮むき器(細い金属のハンドルが、関節炎で硬くなった指に食い込む)に苦戦しているのを見ました。彼は彼女のためにもっと良いものを作ることにしました。彼らがたどり着いたデザインは、痛む手でも強く握る必要のない、柔らかく、しなるグリップでした。そしてそれは、関節炎を患っていない何百万人もの人々が購入する、世界で最も売れているキッチンツールの一つになりました。なぜなら