
The Merge: Why Building AI Chat Is Harder Than It Looksの意訳です。
CodeRabbitの最新のThe Mergeで、オープンソースのAIチャット/エージェント向けインターフェースライブラリAssistant UIの創業者兼CTO、Simon Farshidと対談しました。インターフェースの裏側にある見えない仕事、プロダクト判断の重要性が高まっている理由、そしてSimonがCodeRabbitとともに動かしているコーディングエージェントのループについて話しました。
Assistant UIは、React開発者にカスタマイズ可能なAIチャットコンポーネントを提供し、レスポンスのストリーミング、会話の状態、添付ファイル、メッセージ編集、音声、エージェントバックエンドとの接続など、基盤となる処理を担います。
このライブラリは、Simonのハッカソンプロジェクトから生まれました。実験やスタートアップのアイデアに取り組むたびに同じチャットインターフェースが必要になったため、自分で作ることにしました。「スタートアップにするつもりはありませんでした」と彼は言います。「自分自身が必要としていたものでした」
実は、同じ問題を抱えていた開発者は大勢いました。Assistant UIは今では2,000を大きく超えるオープンソースGitHubリポジトリで使われ、npmパッケージはアップデートを含めて月間140万ダウンロードに達しています。
難しいのは状態管理
「チャットインターフェースを作るのはとても簡単に見えます」とSimonは言います。「難しいのは状態管理です」
チャットボックスは、レスポンスが始まるまでは単純に見えます。Markdownの描画が続く中でテキストがストリーミングされます。ユーザーはファイルを添付し、以前のメッセージを編集し、実行を停止し、音声へ切り替えることがあります。どの操作も、画面に表示される内容と、その下にある会話の状態を変えます。
ユーザーは、ChatGPTやClaudeをはじめとする洗練されたAIプロダクトで身につけた習慣を持ち込んできます。組み込まれたエージェントにも、会話を失うことなく中断や修正ができ、滑らかに応答することを期待します。
Assistant UIがランタイムの状態と一般的なチャットの挙動を管理することで、チームは自社プロダクトが本当に必要とするインタラクションに集中できます。

残りの20%で審美眼が問われる
対談がコーディングエージェントの話題に移ると、Simonは、明確な仕様がコードになった後に残る仕事へ焦点を当てました。
「10%の労力で仕事の80%を終えられる」とSimonは言います。「すべてのアルファは、残りの20%にあるんです」
Simonにとって、審美眼は実践的なものです。すっきりしたAPI、役に立つインタラクション、すべてのチームに同じ設計を押しつけずに繰り返し起きる問題を解く機能に表れます。Simonは新しいパターンを顧客のコードベースで試し、うまく機能したものをメインライブラリへ取り込みます。
Simonのマシンで動くレビューループ
エピソードの終盤で、Simonは自身のコーディングエージェントとCodeRabbitを組み合わせたレビューループについて説明しました。
「とても良いループの一つは、エージェントにCodeRabbitのエラーを確認させ、修正して更新をプッシュさせることです」とSimonは言います。
Simonが「エラー」と呼んでいたのは、CodeRabbitがレビュー中に示す指摘のことです。Simonが説明したループでは、コーディングエージェントが明快な指摘を修正して更新をプッシュします。確信が持てない指摘はエージェントがSimon向けに要約し、Simonが次のレビューまでに何を変更すべきかを判断します。
Simonは、ワークフローのほかの場所でも同様のループを試しています。その多くは夜間に動きます。たとえば、Assistant UIのドキュメントをファイルごとに確認し、古くなった内容を更新するループです。

Simonはこの働き方を「lean forward」と呼んでいます。AIはわずかな労力でプロジェクトを完成に近いところまで進められます。それでもエンジニアは残りの作業に関わり続けなければならないと、Simonは言います。そこでのプロダクト判断、慎重なレビュー、細部への注意が、最終的なプロダクトに大きな違いをもたらすからです。
Assistant UIのオープンソースとしての始まり、生成型インターフェースの未来、Simonがすでに実践している開発ループについては、本編のThe Mergeをご覧ください。



