HN 日本語サマリー

← 一覧へ戻る
AI・機械学習

理解が新たなボトルネックになる

Understanding is the new bottleneck (geoffreylitt.com)

381 pointsby sebg206 コメント

要約

AIエージェントがコードを生成するようになるにつれて、そのコードを人間が理解することが、単なる検証のためだけでなく、開発プロセスへの創造的な参加のために不可欠になっていると論じています。効率的な理解を深めるために、詳細な説明、インタラクティブなクイズ、「マイクロワールド」といった教育から着想を得たテクニックを提案しています。

全文翻訳

2026年7月 理解が新たなボトルネックになる これは2026年7月に開催されたAIエンジニアカンファレンスで発表した講演の文字起こしであり、ツイッターのスレッドとしても共有されました。 ホットな意見ですが、私たちのエージェントが書くコードを理解することは、依然として重要だと私は考えています!この講演では、その理由と、効率的にコードを理解するためのアイデアをいくつか紹介します。 さて、始めましょう。 エージェントは私たちのためにより多くのコードを書くようになっており、それに追いつくのが難しくなっていることは皆さんもご存知の通りです。しかし、良いニュースは、コードを理解する方法はたくさんあるということです!差分を一行ずつ読むことだけが唯一の方法ではありません。この講演の大部分は、エージェントが構築しているシステムを理解するために役立つと感じたテクニックについてです。 コード説明ドキュメント 理解度を確認するためのクイズ システムを理解するために操作できるマイクロワールド しかし、まず、より基本的な質問をしなければなりません… なぜ理解するのか? なぜ? なぜ理解するのか? 私たちは今、ループから自分自身を外し、エージェントにループを自己完結させるべきなのではないでしょうか? エージェントが賢くなるにつれて、私たちが詳細を把握することは重要でなくなるのでしょうか? 理解を支持する多くの人々でさえ、この質問に対する答えが少し間違っていると私は思います! 一つの可能な答え:私たちは検証するために理解します。エージェントの作業をチェックし、それが正しいかどうかを確認します。正しいとは多くの意味を持ち得ます:仕様に合っているか、アーキテクチャが優れているか… しかし、それは基本的に親指を上げるか下げるかの質問です。 しかし、エージェントは自身の作業を検証する能力をますます向上させています。そして、これは良いことです!エージェントが間違いをしないのは嬉しいことです。 しかし、うーん。それでは私たち人間はどうなるのでしょうか? そこで、別の答えが出てきます:私たちは参加するために理解することができます。エージェントが何をしているのかを学ぶことで、創造的なプロセスに積極的に参加できるようになります。 これがなぜ重要なのか… それは決して一度きりのループではありません!プロジェクトとは、エージェントとの多くの、多くのループのことです。そして、システムに対するあなたの理解は、それを進化させるための次のアイデアを思いつく能力の一部となります。何かを進歩させる方法について、創造的かつ流暢に考えるためには、あなたの心の中に豊かな概念セットが必要です。その流暢さが欠けていると、プロジェクトに参加する能力は著しく制限されます。 ちなみに、これはマーガレット・ストーリとサイモン・ウィリソンが広めたコグニティブ・デット(認知的負債)の考え方に密接に関連しています。それは技術的負債のようなものです:短期的には何が起こっているかを理解しなくても済むかもしれませんが、最終的にはあなたを苦しめることになります。 さて、分かりました、理解は重要です。しかし、これは次の疑問を提起します:どうやって? AIと連携し、スピードを上げていく中で、どのようにしてこの人間の理解を構築するのでしょうか? さて、理解を伝える方法について考えたのは、これが初めてではないようです。教育からインスピレーションを得ることができると思います。教育のために発明された最高のアイデアを盗んで、この問題に適用できるでしょうか? テクニック1:説明 今日は、これを試すことができる3つのテクニックを紹介したいと思います。まず:説明です。良い説明とは何でしょうか? エージェントが作業を終えるたびに、それは説明、つまり成果物の機会となります。最も単純な方法では、コードの差分、つまり変更された生の素材を読むことができます。しかし、もし私たちが「最良の説明は何だろうか?」と尋ねたらどうなるでしょうか? もし、あなたに何かをうまく説明することの詳細に汗を流すチーム(人間またはAI)がいたら、それはどんな感じでしょうか? ここに一つの答えがあります。私は/explain-diffというスキルを作成しました。これは毎日使用しており、多くの同僚が価値があると感じています。これは、HTML、Markdown、またはNotionドキュメントとして、思慮深く構造化されたコード説明を出力します。Notionは、これらの説明をチームとして共同作業し、議論するのに適した場所です。(免責事項:私はNotionで働いているので、偏りがあります。) ビデオゲームの視点を編集する例を使って、これらの説明のいくつかに何が含まれているか見てみましょう。 第一原則:背景情報を教えてください!変更された内容に入る前に、すでに存在していたものを理解するのを助けてください。この場合、ゲームエンジンについて教えてください。 第二原則:詳細の前に直感。コードの前に、目標を述べます。「2D描画トリックで庭に立体感を与える」そして、等尺性投影とは何かといった関連概念を説明します。これらすべてが、変更の本質に対する私の直感を構築します。これは人間である私を追いつかせ、理解への平等な参加者になれるようにしています。 インタラクティブな図でも直感を構築できます。ここでは、庭の周りに岩をドラッグして座標が移動するのを見て、等尺性投影を理解しています。(これはNotionが最近リリースした新機能を使用しています。ページ内にインタラクティブなHTMLを埋め込めるようになりました。) ついにコードにたどり着きました。しかし、典型的な差分は、アルファベット順に編集されたファイルの山であり、説明はありません。私が「文学的な差分」と呼ぶものは、プロセとして構造化されています。合理的な順序で変更をたどり、周囲の説明と埋め込まれたコードスニペットが含まれています。生の差分よりもレビューが速いです。 これらすべてから得られる最終結果は、素敵な説明パッケージです。私はまだコードの差分を読みますが、いつもまずこれを読みます。時々、これらを印刷してカフェに持っていくことがあります。より気が散りにくいです。 皮肉なことに、AIはインタラクティブなアクティビティを、私が深く集中できる静的な紙のレポートに変えるのです。 ただ一つの問題があります:読むことは大変な仕事です😅 アンディ・マツチャックが言うように、「本は機能しない」!読んだと思い込ませるのは簡単ですが、実際には記憶したり理解したりしていないことが多いのです。これをどう修正すればよいでしょうか? 私はアンディとマイケル・ニールセンの研究から、エッセイに間隔反復クイズを埋め込むというアイデアを得ました。私は今、コード説明でも同様のことを行っています。説明の最後にインタラクティブなクイズがあります。変更に関する5つの質問があり、私はそれらに答えようとします。私のルール:クイズに合格するまでコードを他人に送りませんし、他人のコードをレビューするときも同じことをします。 クイズは速度調整弁です。AIと連携していると、ループが人間の理解の速度よりも速く回ってしまうのは簡単です。クイズはカウンターバランスの力となります。私は「本当に理解しているか?」と機械的に問いかけることで、完全な創造的参加者であり続けることができます。 さて、これがexplain-diffです。スキルが必要な場合はこちらです。HTMLまたはNotionページを出力する2つのバリアントがあります。 テクニック2:マイクロワールド 次のアイデア:マイクロワールドです。これは、先見の明のある教育者であるシーモア・パパートに触発されたものです。パパートは「Mathlandに住む」という美しい考えを持っていました。数学を学びたいなら、Mathlandに住む。フランス語を学びたいなら、フランスに行くのと同じように。 子供たちが好奇心の結果として、自然に数学を学べる環境を構築できるでしょうか? では、これをコードにどう応用できるでしょうか? システムがどのように機能し、どのように変化しているかを自然に直感できる、あなたが住む世界を作れるでしょうか? 昨年、私はPrologインタープリターをコーディングしており、内部で何が起こっているのかを直感するのに苦労していました。私はエージェントと協力してこのデバッガーを作成しました。これにより、論理言語の実行をステップ実行し、時間をスクラブし、スタックに何があるか、各ステップでどのルールが評価されたかを確認できました。自分用のコメントを残すことさえできました(「良い、ルールを正しく適用した」)。 私がデバッグするためのツールを作成することと、エージェントにデバッグさせることの間には大きな違いがあります。自分でデバッグすることによって、その過程で理解を深めることができます。 別の例です。私は個人のウェブサイトをあるフレームワークから別のフレームワークに移行していました。Claudeがそれを実行するスクリプトを作成しましたが、レビューするのが非常に困難でした。私は新しいフレームワークに慣れておらず、「まあ、大丈夫そうだ」としか言えませんでした。 そこで、Claudeにビデオゲームを作るように頼みました。私がステップバイステップでポートを実行し、視覚的な効果とファイルツリーの進化を観察できるコマンドセンターです。それは、私がステップバイステップでポートを実行するボタンをクリックするUIを生成しました。古いサイトと新しいサイトが並べて実行されていました。このコマンドセンターで、新しいサイトが段階的に生き返るのを見ました。それは、手作業で行うのと同様の理解をもたらしましたが、はるかに速かったです。なぜなら、すべての体験が整理されていたからです。