powered by TechFeed
表示モード
Deep Dive

AIエージェントに「毎朝記憶がリセットされる同僚」として働かせる — TypeScript教育者Matt Pocockが語る、古典的ソフトウェア設計書がエージェント命令語集になる時代

9月17日、Gergely OroszのニュースレターThe Pragmatic Engineerが「AI Skills with Matt Pocock」と題した記事を公開した。TypeScript教育で知られるMatt PocockがAIエージェントを使った実践的なコーディング手法とエンジニアのスキルの在り方について語ったインタビューで、「エージェントのためにコードベースを最適化することは、ソフトウェアエンジニアリングの基礎原則が目指してきたことと完全に一致する」という逆説的な論点が中心に据えられている。

9月17日、Gergely OroszのニュースレターThe Pragmatic Engineerが「AI Skills with Matt Pocock」と題した記事を公開した。TypeScript教育で知られるMatt PocockがAIエージェントを使った実践的なコーディング手法とエンジニアのスキルの在り方について語ったインタビューで、「エージェントのためにコードベースを最適化することは、ソフトウェアエンジニアリングの基礎原則が目指してきたことと完全に一致する」という逆説的な論点が中心に据えられている。


「Memento駆動開発」という発想

インタビューの核心となるのが、Mattが提唱する「Memento駆動開発」の概念だ。

「毎朝起きると自分が誰かを忘れてしまう人間がいると想像してほしい。映画『メメント』の主人公のような人物だ。私たちはコードベースを新しく参加したメンバー向けに最適化しようとしている。人間は悪いコードベースでも回避策を見つけ、記憶を蓄積していけるが、エージェントにはそれができない。毎セッション、まっさらな状態から始まる。だからエージェントのためにコードベースを最適化しなければならない。そしてそれは、ソフトウェアの基礎原則がずっとやろうとしてきたこと——初めて見る人にも読みやすいコードを書くこと——と完全に一致している。」

エージェントはコンテキストウィンドウの外にある情報を「覚えていない」。つまり、可読性・構造・命名規則といったソフトウェアエンジニアリングの基本が、AIエージェント時代に改めて重要性を増している、という論点だ。「AIが来たから基礎は不要」という風潮への明確な反論でもある。

この問題意識を起点として、Mattはエージェントをより効率よく動かすための実践的な手法を複数開発している。次に紹介する「leading words」はその代表例だ。


「leading words(先導語)」でエージェントの出力が変わる

Mattが発見したもう一つの実践的な知見が、「leading words」の活用だ。

AIエージェントはソフトウェアをレイヤーごとに積み上げようとする傾向があり、それがレイヤー間のバグを生む。MattはJohn Ousterhoutの書籍『A Philosophy of Software Design』The Pragmatic Programmerを読み直す中で「tracer bullet(トレーサー弾)」という概念を発見した。これはアプリのゴールデンパス(主要な動作経路)をまず一本通す開発手法だ。

エージェントに「tracer bulletsを使って実装せよ」と指示したところ、出力の質が明らかに改善されたという。以来、Mattはクラシックなソフトウェアエンジニアリング書籍を読んで「エージェントを効率よく導く先導語」を探す作業を続けている。古典的な書籍が、エージェントへの命令語集として機能し始めているという逆説的な状況だ。

leading wordsがエージェントの出力品質に影響を与えるとすれば、次の問題は「そもそも何を作るのか」を事前に明確化することだ。それを担うのが、Mattが独自に開発した「grill-me」スキルである。


「grill-me」スキルとは何か

Mattが作成したgrill-meスキルは、エージェントがユーザーを執拗にインタビューし続けるという、シンプルながら広く使われているスキルだ。Anthropicのエンジニア、Thariq Shihiparが提唱したアプローチをベースにMattが実装した。

具体的には、ユーザーが「ログイン機能を作りたい」といった曖昧な指示を出した際に、エージェントがすぐにコードを生成せず、「どんな認証方式を想定しているか」「セッション管理はどう扱うか」「エラー時の挙動は」といった問いを繰り返すことで、要件の抜け漏れを実装前に洗い出す仕組みだ。コードを書き始める前に「何を作るのか」を徹底的に問い直すことで、手戻りを減らし、エージェントへ渡すコンテキストの質を高める効果がある。曖昧なまま作業を進めてしまいがちなユーザーの思考を強制的に整理させる点が、このスキルの肝だ。


「戦略的プログラミング」とエンジニアの役割変化

MattはJohn Ousterhoutが提唱した「tactical programming(戦術的プログラミング)」対「strategic programming(戦略的プログラミング)」の区分を援用し、エージェントが担うのは戦術的プログラミング、エンジニアが担うべきは戦略的プログラミングだと主張する。

具体的には、エージェントの「スマートゾーン(得意な範囲)」を把握し、コンテキストを適切に分割してエージェントを正しく動かし続けるのがエンジニアの仕事になりつつある、という見立てだ。

この役割分担を実践的に支援するのが、Mattが開発した「wayfinder」スキルだ。wayfinderは、エージェントに長期的なタスクを委譲する際に、計画の立案・作業の分割・進捗確認・軌道修正をエージェントと協調して行うための仕組みとして設計されている。grill-meが「何を作るか」を明確にするフェーズに機能するのに対し、wayfinderは「どう進めるか」を継続的にガイドするフェーズで機能する。両スキルは戦略的プログラミングをエンジニアが担い続けるための補助装置として位置づけられている。詳細はMattのskillsリポジトリで確認できる。


ローカルよりクラウドエージェントへ

Mattはローカル開発環境からクラウドベースのエージェント環境への移行を進めている。理由は2つ:

  • ラップトップを閉じてもエージェントが動き続ける
  • クラウドエージェントは「マルチプレイヤー(複数人協調)」が可能で、ローカルでは実現できない

MattがXに投稿した「ローカル開発環境から離れる」という内容のポストは951万ビューを獲得しており、同様の関心を持つエンジニアが多いことがうかがえる。


TDDとエージェントの関係

テスト駆動開発(TDD)についてはMattも一枚岩ではない。TDDは人間のワーキングメモリの短さを補うために有効だが、エージェントはより長いコンテキストウィンドウを持つため、TDDが必須とは限らないという見解だ。現在は「コードが動作することを証明する何らかのアウトプットを出せ」とエージェントに指示する方向で試行しているという。TDDとエージェントについてはKent Beckとのエピソードでも別の視点から議論されている。


Mattのキャリアについて

余談として、Mattのキャリアは非常に異色だ。もともと声楽教師として演劇学校でシェイクスピアや発音を教えていた人物が、学生向けのWebオーディオ・スペクトログラム分析ツールを自作したことをきっかけにエンジニアリングへ転向した。

その後、Total TypeScriptという教育コースを立ち上げ、累計250万ドル以上の売上を達成。Vercelへの入社オファーを受けた際は、コース開発に充てる時間を確保するため週3日のコントラクト勤務を交渉で勝ち取った、という経緯も披露されている。


詳細はAI Skills with Matt Pocockを参照していただきたい。