S Anand · Talks
Day 3 · 2026年9月9日 · SUTD EN 全5日間 文字起こし
SUTD DAIシグネチャー・マスタークラス · エキスパート・インダストリー・シリーズ · 5日間のうちの3日目(Day 3/5)

作ったもの自身に「証明」させよ

水曜日を迎える頃には、部屋にいる全員がプロダクトを作れるようになっていた。週半ばの必須チェックポイントで突きつけられたのは、よりシビアな問いだった。「エージェントが作り、壊せるのだとしたら、あなたが隣で見張っていなくても、エージェント自身がそれをテストし、調査し、妥当性を証明することまでできるのか?」 3つのライブデモが導き出した答えは「ほぼイエス」。だが、ある受講生の率直な疑問が「もしかすると、それこそが問題なのでは?」と問いかけた。

リモート · 必須チェックポイント · 2026年9月9日(水)
アーナンド・S(Anand S)/ Straive イノベーション責任者 · 文字起こし全文を読む

🎧
90分間のチェックポイント全編を聴く
ライブ録音 · リモート · SUTD
Day 3 をコミックで見る
Day 3のストーリーを要約したコミック:アプリを作るのは簡単だが、正しく動くか確かめるのは難しい。そこでクラスでは、本物の訪問者のように他人のサイトをテストし、それを再利用可能な非AIのテストスイートに変換する方法をエージェントに教え込む。もう1つの流れでは、安価なサブエージェントを雇って3人のペルソナを演じさせ、一晩で市場調査を実施する。受講生の一人が「理解できないAIの提案を信用するのは危険なブラックボックスではないか」と問いかけ、講師は自分の車のエンジンの仕組みを知らない話で答える。1日の締めくくりとして、ビデオに録画されたピアフィードバックと、1分でRustを学ぶライブデモが行われ、カメラの前で犯したミスこそが最も役立つフィードバックだという教訓が示される。

チェックポイントの全貌をコミック化。 初見のユーザーのようにアプリをテストすること、AIペルソナを雇って一晩で市場調査を行うこと、そしてこれらが「自分が作ったものを理解している」と言えるのかについての議論。フルサイズで開く ↗

シーン1

自らをテストする方法を教え込む

水曜日は全員参加が必須のチェックポイント——誰もスキップできない日だった。アーナンドは、参加者全員がすでに身をもって味わっていた共通の課題を切り出した。エージェントにバグを修正させると、確かに直してくれる。しかし1週間後、それまで動いていた機能が人知れず動かなくなっている。今や作ることは高速化した。だが、作られたものを信頼することはそうではない。

「アプリケーションを作るのは簡単ですし、AIはプロダクトの作成を支援してくれます。ですが、より厄介なのは、それが本当に役に立つか、そしてちゃんと使えるかを確かめることです」

— アーナンド

彼が挙げた具体的な懸念は、エージェントと1日以上やり取りを重ねた人なら誰もが一目で痛感するものだ。

「もともと欲しかったはずの機能が動かなくなっていることに気づくでしょう。つまり、進めるにつれて新たなミスが追加されてしまうのです。そんなことは望んでいませんよね」

— アーナンド

だからこそ、このセッションの問いは単刀直入なものだった。「ChatGPTやClaudeは、人間がするように——ここをクリックし、あそこを押すように——確実に、繰り返し、毎回トークンを浪費することなくアプリケーションをテストできるのか?」 アーナンドは言葉で説明する代わりに、受講生が共有したアプリの山から2つを無作為に選び、デスクトップ版ChatGPTを開いて、自分自身で確かめさせようとした。デスクトップアプリを選んだ理由について、彼はこう補足した。「自分のコンピューターを使えるなら、ブラウザも使えるかもしれません。一部のサイトではログインが必要になるかもしれませんが、こちらの手元でコントロールしやすくなりますから」。彼が入力した指示(プロンプト)は、それ自体が仕様書のようなものだった。

「これからやることは、実際のユーザーのようにこのサイトを一通り触り、何ができるかを把握してテストすることです。その後、AIアプリケーションを使わずにいつでも再実行できる自動テストケースの一式を作成してください。[…] また、将来何かを変更する必要が生じたときに把握できるよう、具体的に何をテストしているのかを説明した簡潔なドキュメントを作成してください。将来、あなたに指示を出すだけで簡単に新しいテストを追加できるようにしておいてください。

— アーナンド、見知らぬ人のアプリをテストするようChatGPTにプロンプトを出す

対象となった2つのサイトは、マユ(Mayu)が制作した、8つの短い回答から架空の街を生成するシングルページの診断アプリ『City, By You』と、その数分後に取り上げられたペットの健康日記『Pawlog』だった。アーナンドはライブデモとして『City, By You』を選び、クラスが講義を続けている間、裏で走らせていたCodexのセッションが、無人(放置)で指示通りのタスクを正確に実行した。

マユ · City, By You — 公開中のアプリ
city-by-you-mayusuzuki-20260908.mayu-s-feb-27.chatgpt.site

「もし街を作れるとしたら、どんな街を作りますか?」8つの簡単な質問に答えると、あなただけの世界の片隅が提示される。別タブで開く ↗

エージェントが持ち帰ってきた結果は、単に「動きました」という報告にとどまらなかった。ソースコードを読み込み、すべてのセレクタをマッピングし、勝手に挙動が変わってしまう前に固めておくべき実際の振る舞いを洗い出したのだ。8つの二者択一形式の質問が決定論的な街のアーキタイプへと反映されること、状態(state)がページメモリ上にしか保持されないこと、そして——単に画面をクリックして回るだけでなく実際にコードを精読したからこそ——見過ごすのではなく「既知の期待される失敗(known, expected failures)」として意図的に記録に残した3つの本物のプロダクト欠陥である。

あえて可視化したまま残された3つの実際のバグ
  1. どちらの再スタートボタンもイントロ画面に戻るが、「年齢」と「雰囲気」の入力欄に入力値が残ったままになる。
  2. カスタムの「その他のアイデア」に回答した後に再スタートすると、その古いテキストが次回の実行に持ち越されてしまう。リセット処理によってメインの状態はクリアされるが、別個の配列がクリアされていないため。
  3. カスタムテキストが結果の一部に生のHTMLとして挿入されている(プレーンテキストとして適切にエスケープされていない箇所がある)。軽微とはいえ、実在するインジェクション脆弱性である。

これらを test.fail(...) とマークしておくことで、定期実行されるテストスイートのステータスをグリーン(成功)に保ちつつ監視を続けられる。バグを1つ修正して fail 行を削除すれば、根本的な不具合が解消された瞬間にPlaywrightが「予期せぬ合格(unexpected pass)」として大々的に知らせてくれるのだ。

City, By You · 自動テストレポート(ライブ)
26
通過
3
既知の欠陥(可視化して保持)
28.4秒
全テスト実行時間
0
再実行に必要なAI
test-automation-codex/playwright-report/index.html

実際に再実行可能な出力。フルスクリーンで開く ↗ · エージェントセッション全文を読む ↗ · 平易な言葉で書かれたテストガイドを読む ↗

スクロールされるカバレッジリストを眺めていたアーナンド自身の反応は、「徹底的ではあるが、読みづらい」というものだった。内部的なテスト名の羅列であり、非エンジニアが一目で妥当性を確認できるようなものではなかったからだ。そこで、彼はもう1つだけ追加の指示を出した。

何をテストしたのかがわかるように、カバレッジを簡単な質問形式に書き直してもらえますか? たとえば『ランディングページの文言は問題ないか?』といった具合に」

— アーナンド

書き直されたガイドは、誰もがレビューできるチェックリストのようになり、それぞれの質問がテストスイート内のアサーション(検証項目)へと直接紐付いていた。

平易な言葉で書かれたカバレッジ・チェックリストのサンプル
ランディングページのテキストは正しいか?
年齢と雰囲気のフィールドは明確にラベル付けされているか?
8歳未満および120歳を超える年齢は拒否されるか?
街づくりの全8問の質問が順番通りに表示されるか?
選択肢を選ぶまで「次へ」ボタンは無効化されているか?
「戻る」ボタンを押した際、以前の回答が保持されているか?
どの雰囲気を選んでも、それに応じた正しい街が生成されるか?
どちらの再スタートボタンも、前回のプロフィールを消去するか?
句読点や引用符は安全に処理されて引き継がれているか?
外部APIを呼び出すことなく、訪問者は最後まで完了できるか?

この要求の根底にある原則を、彼はこう言い表した。

「エージェントが作業を行い、私たちがそれを検証しなければなりません。通常、これは私たちが膨大な検証作業を背負い込むことになり、非常に骨が折れます。私は自分の検証作業を楽にしたいのです。 だからこそエージェントにこう言うのです。『私が理解できる形で出してくれ。私の仕事を楽にしてくれ』と」

— アーナンド

そして一度このテストスイートができてしまえば、将来の変更を検証することはもはや苦痛ではなくなる。それもまた委託できる仕事の1つになるのだ。「『サイトを変更したから、もう一度テストを実行して動くかどうか確認し、何が変わったか教えてくれ』と言えばいいのです」。25分という時間で、単なるデモ以上の永続的な成果物が生まれた。「今も正常に動いている」という状態を定義し、何度確認してもコストが一切かからない、再実行可能な契約書(コントラクト)だ。

シーン2

サンドボックスから出られなかったアプリ

開始から9分が経った頃、ヨハン(Johan)が1つの問題を提起した。それはまだテストとは無関係だったが、アプリを単なる成果物(アーティファクト)としてその場でテストするだけでは戦いの半分にすぎない理由を浮き彫りにしていた。彼がアプリの中に組み込んだAIそのものが、アプリを世にリリース(シップ)することを阻む原因になっていたのだ。

「アーティファクトの内部にAIそのものを実装しようとしているのですが、そのせいでアーティファクトを共有できなくなっています。何か回避策はあるでしょうか? あるいは、作っているプロダクト内にAIを実装するには他にどうすればいいのでしょうか?」

— ヨハン

これはCloudflare上にデプロイされた、ヨハンの「Stock Ticker(株価トラッカー)」アプリだった。火曜日の「Lentera Bursa」トラッカーとは性質の異なる問題であり、アーナンドも記憶だけを頼りに即答できるものではなかった。そのため、Day 2で示した流儀に従い、彼は自力で答えようとはしなかった。

「私が答えを教えるのではなくこうしている理由の1つは、まずAとして、私自身が最善の答えを知っているかどうかわからないからです。そしてBとして、仮に私が知っていたとしても、答えを知っていて教えることは重要ではないからです。私が伝えたいのは、あなた自身がAIへの問い方を工夫して学べるということです。そうした学びへのアプローチこそが、役に立つのです

— アーナンド

彼はヨハンが投げかけた質問をほぼそのままChatGPTに入力し、リアルタイムで回答が生成されるのを見守った。

個別のCloudflareの配線構造以上に心に留めておくべきなのは、その回答の根底にあるメンタルモデルだ。

「一般公開されるAIアプリに必要なものは2つだけです。ウェブページと、LLMの呼び出しを行う小さな非公開の関数です」

— ChatGPT、アーナンドの質問にライブで回答

アーナンドは、これが自分自身の思いついたであろう解決策(自前のAPIキーを用意してCloudflare Workerを使う手法)ではなかったことを率直に認め、その認識のギャップこそが要点なのだと語った。

「これは私が考えていた解決策ではありません。ですが優れた解決策ですし、おそらく費用もかかりません……これが何を言っているか完全に理解できる人もいれば、さっぱりわからない人もいるでしょう。でも、わからなくても構わないのです。なぜなら、この内容を丸ごと元のチャットに投げ直して、『ほら、ChatGPTがこう言っている。これをやってくれ』と言えばいいのですから。動けば万々歳。動かなくても、少し時間を無駄にしただけです。大したことではありません」

— アーナンド

ささやかな一幕だが、ここには大きな示唆が含まれていた。受講生たちは、講師自身が答えを知らない質問を投げかけ、自分の直感よりも優れた回答を引き出し、その下層にあるCloudflare Workers AIのバインディングの仕組みを完全に理解することなく作業を任せる姿を目の当たりにしたのだ。そしてこれは、まさに次の受講生が公然と投げかけることになる論争の予告編でもあった。

シーン3

「これはブラックボックスなのか? 危険ではないのか?」

背景で『City, By You』のテストスイートが走り続ける中、KKが——火曜日のセッション冒頭で、両親を感心させた後に動かなくなったニュース要約アプリの話をしたあのKKが——これまでのすべてのデモの根底にあった疑問を、一切オブラートに包まずに投げかけた。

「いつも質問ばかりして申し訳ないのですが、試行錯誤のプロセスをやっていて、1つ感じることがあるんです。これって本当に正しいやり方なのでしょうか? 自分自身が何をしているかも分かっていない状態で、提案されたものをそのままCodexなんかに投げ込んで、AIの提案に基づいて何かを作り上げていく……でも自分たちは裏で一体何が起きているのかさっぱり分かっていません。つまりブラックボックスです。本当にこれでいいのでしょうか? 私たちは……これって実は、かなり危険な発想なんじゃないでしょうか?

— KK

アーナンドの第一声は「その可能性はありますね(Possibly)」だった。話を逸らすのではなく、その懸念が正当な場合もあると率直に認めたのだ。そして規則を説く代わりに、自身の体験談を引き合いに出した。

「私は車を運転します。でもエンジンの仕組みはまったくわかりません。故障しても、タイヤの交換すらできません。それは悪いことでしょうか? ええ、悪いことですね。実際に何度か立ち往生して、せめてタイヤ交換くらいはできるべきだった、あるいはエンジンがオーバーヒートしていることくらい気づくべきだった、という経験をしましたから。[…] 私がそのトラブル対応に費やした時間はトータルで半日でした。もし、エンジンやスペアタイヤの交換方法などを学ぶのに費やしていたであろう時間は、おそらく丸2〜3日にはなっていたでしょう」

— アーナンド

KKは反論した。その反論は、車の例え話で簡単に受け流せるような生易しいものではなかった。

「たまにしか使わない車の修理のようなニッチなスキルの話なら、その視点も理解できます。でも、僕たちは学部生であり学生です。将来的に上司やクライアントに成果物を納品する可能性があることを考えると、これはもっと重要なんじゃないでしょうか? […] 車の修理と違って、知っておくことが死活問題になるようなバグや問題に、今後山ほど遭遇するはずです。それなのに、どうすればいいんでしょうか?」

— KK

アーナンドの返答は、車の例えに固執するものではなかった。別の車の話をする代わりに自身の職場の話を用い、「学ぶ価値があるものとは何か」という問い全体を需要と供給(demand and supply)の視点から再構築したのだ。彼はStraiveのインターン生たちに、CEOとの通話を録音・文字起こしし、その文字起こしをそのままClaudeやChatGPTに渡すよう指示しているという。

CEOが何を言っているのか理解しようとするな。どうせ理解できないから。 出力を解釈しようとするな。君たちには意味がわからないかもしれない。それをそのままCEOに突き返して、彼自身に判断させればいい」

— アーナンド

そして彼は思考実験をさらに一歩進めた——もしエージェントの最初のドラフトが最初から完璧だった場合、インターン生は実際に何を学べるだろうか?

「もしStraiveのCEOであるアンカー(Ankur)が出力を見て、『そう、これが欲しかったんだ。素晴らしい』と言ったとしましょう。その場合、インターン生が学ぶことは何もありませんでした。[…] ですが、もし彼が『あのね、インターフェースが思い通りじゃないんだ。[…] フォントをもう少し大きくして、もっとプレゼンスライドっぽく見せる必要がある』と言ったとしたら——そのときパヴァン(インターン生)は何かを掴み取ったことになります。頼まれていなくても、最初からエージェントに指示しておくべきことがいくつかあるのだと学んだのです」

— アーナンド

これこそが、KKの「これは危険ではないか」という問いに対する答えのすべてであり、1つの経験則に凝縮されている。「修正(の差分)こそがカリキュラムである(The correction is the curriculum)」。エージェントが一発で正しくこなせることなど、誰も学ぶ時間を割く価値はない。エージェントが出してきたものと、生身の人間が本当に求めていたものとの間の「わずかなギャップ」の中にこそ、真に有益なスキルが宿るのだ。

「需要があり、供給のギャップがあるものこそ、学ぶ価値があります。エージェントがすでにできるなら、学ぶ意味はありません。人間が求めていないなら、学ぶ意味はありません。可能な限り委任することで、私たちはそのギャップが何であるかを見つけ出し、そこに学びを集中させることができるのです

— アーナンド

彼は会場全体のフラストレーションに目を向け直した。全員のアプリが依然として壁にぶつかっているという事実は、やり方を間違えている証拠ではなく、この手法全体が設計通りに機能している証拠なのだと。

「みなさんのアプリが完璧に動かないからこそ、すでにその障壁に簡単にぶち当たっているわけです。[…] もし現状の成果に完全に満足しているのだとしたら、あなたの野心が足りていないということです。 […] 私たちがこれまで教わってきたことの多くは、今やエージェントができることばかりです。[…] エージェントにできないことこそが、あなたが学ぶべきことなのです」

— アーナンド

そして彼らしく、このセクションが終わる前に、自身の答えが教条化(ドグマ化)してしまうのを拒んだ。「これが常に正しいでしょうか? いいえ。ですが、こういうことです——私は数十人いる講師のなかの、たった1人にすぎません。他の講師たちは『何を学ぶべきか』を教えてくれるでしょう。私はただ、『何を学ばなくていいか』を伝えているだけです」。KKの抱いた「ブラックボックスへの不安」は、解消されたというよりは、再配置されたのだ。「これを信用していいのか」という不安から、「自分の判断力が希少な要素として必要とされるのは、具体的にどの部分なのか」という問いへと。

シーン4

3人のペルソナを一晩で雇う

テストは、アプリが仕様通りに動くかを検証する。だが、誰かがそれを求めているかどうかについては何も教えてくれない。そこでアーナンドは、第2の検証へと舵を切った。それはQA(品質保証)のテストというよりも市場調査(マーケティングサーベイ)に近く、本物の人間を探してくる必要すら一切ない手法だった。

「いろんな人に尋ねると、人はそれにどう反応するのか、どう感じるのかというユーザーの生の声が得られます。それは市場調査に近いものです。[…] エージェント自身にそうした市場調査を実行させることも可能です。その方法をお見せしましょう」

— アーナンド

今回のターゲットは、ユリ(Yuri)が制作した日本語アプリ『Study Walker』[スタディウォーカー]だった。3つの質問に答えるウィザード形式で、漠然とした学習目標を「今日の小さな実行可能な一歩」へと変換してくれるアプリだ。アーナンドはChatGPTに概要を口述筆記させ、その内容をそのままClaudeに渡した。そのプロンプト指示は、実に3段階の委任が積み重ねられた構造になっており、全文を読む価値がある。

「このサイトに対して、市場調査に相当することを実行してほしい。サイトをざっと確認し、このプロダクトの対象となり得る上位3つのペルソナを把握してください。その上で、Haikuのような軽量モデルを使ってサブエージェントを作成し、それぞれのターゲット層に応じたペルソナを彼らに付与してください。それらのペルソナとして振る舞い、アプリケーションを閲覧・テストして、市場調査さながらにフィードバックを共有するよう指示してください。[…] 正直なところ、私は市場調査についてあまり詳しくありませんが、あなたはその道の専門家です。優れたプロダクト市場調査はどう実施されるべきかを提示し、実際にその方法で実施してください。 これら3つのサブエージェントが完了したら、フィードバックを取りまとめ、最も重要で最初に着手しやすい機能から順に提示するシンプルなレポート形式で提出してください」

— アーナンド、概要をライブで口述指示

彼は、前のシーンでの委任と何が違うのかを的確に言語化した。「市場調査そのものだけでなく、市場調査の設計(ストラクチャリング)までも委任しているのです」。Claudeはその指示を受け、具体的なペルソナを指定されることもなく、アプリ自身が提示していた4つの目標例と5つの「つまずき状態」の選択肢を読み取り、そこから3人の人物像を作り上げた。

ユリ · Study Walker (スタディウォーカー) — 公開中のアプリ
yuriciv.github.io/study-walker

3つの質問ウィザードを通じて、「〜を始めたい」を「今日できる小さな一歩」に変える。別タブで開く ↗

そして3体のHaikuサブエージェントが、それぞれのキャラクターになりきり、日本語で、上記の公開サイトに対して最初から最後まで実際にブラウザを操作した。

ペルソナ目標つまずき状態
ケンジ、34歳(大阪)個人ウェブサイトの構築選択肢過多による麻痺——チュートリアルが多すぎて始められない
アイコ、27歳(東京)日常英会話三日坊主の常習犯——何度も再開しては挫折、きっかけが欲しい
ダイスケ、42歳(名古屋)簿記3級の試験合格基礎は知っているが、最もレバレッジの高い次の一歩がわからない

アーナンドが受講生に読み上げた結果は、彼がまさに期待していた通りの着地点だった。「〜を学ぶ代わりに、今日小さな一歩を踏み出す」というコアアイデアは架空の3人全員にしっかり響き、エージェントは明確で安価、かつ最もレバレッジの効く1つの改善点へと収束していた。

「3つのペルソナが特定されました。『選択肢過多で動けない初心者』『習慣化に何度も挫折している人』『試験重視の実利主義者』です。[…] 『〜を学ぶ代わりに、今日小さな一歩を踏み出す』というコアアイデアは、3人全員に本当によく機能しました。しかし、最大の課題は、アクセスの間でセッションの記憶が保持されない点にありました

— アーナンド、受講生にレポートを読み上げる

調査セッションの記録が示しており、アーナンドが講義中に詳しく解説する時間がなかった部分こそが、これを単なる「小手先の芸」以上のものにしている。3人のペルソナのうち2人が、深刻なバグと思われる現象——セッションの途中で自分の目標が他人の目標に勝手にすり替わってしまう——をそれぞれ独立して報告したのだ。稚拙なプロセスであれば、それを「信頼を損なう致命的なバグ」としてレポートの最上位に載せてしまっていただろう。だが、集約役のエージェントは、2つの異なるペルソナが同じ奇妙な失敗に遭遇したこと自体を不審と捉え、自ら実際のアプリを再度開き、生の localStorage を検査した。そして真の原因を突き止めた。3つのテストセッションが、名前空間の分けられていない1つの共通ブラウザストレージのキーをめぐって競合していたのだ。これはテスト環境のセットアップに起因する副作用であり、1人の生身のユーザーが遭遇するような問題ではなかった。

信じる前に検証せよ——たとえ自分のサブエージェント相手であっても

「検証を怠っていれば、レポートの最重要タスクは『データ消失バグの修正』になっていたはずです。しかし、真に取り組むべき課題は、はるかに安価に対処できる『確認メッセージの欠如』だったのです」 — レポート内の透明性ノートより ↗

この1つの「優先度引き下げ(ダウングレード)」が、優先順位リスト全体を書き換えた。緊急のデータ消失対応の代わりに、最優先項目となったのは呆れるほど低コストな修正だった。ユーザーに「すでに習った表現を思い出そう」と促しながら、実際には全く新しい例文を表示してしまっているという提案テンプレートの齟齬——アイコのペルソナが遭遇した瞬間に指摘した、たった1行の食い違いの修正である。アーナンドはこの演習全体の意義をコストの観点からも位置づけ、なぜモデルにHaikuを選んだのかを明確に説明した。

「Haikuのようなモデルを使った市場調査は——安価なモデルだからこそあえてHaikuを選んだのですが——極めて効率的に行えます。[…] 利用枠の29%までいきましたが、セッション開始時は約12%でしたから、5時間の枠のうち消費したのはおよそ17%程度です。痛くも痒くもありません」

— アーナンド

そして火曜日のセッションの締めくくりの言葉とほぼ呼応するように、彼はこれが何を代替できるのかについて過大評価しないよう釘を刺した。「これが必ずしも人間の生の反応に取って代わるわけではありません……ですが、非常に低コストで有益な追加フィードバックを提供してくれることは間違いありません。[…] もし身近にアプローチできないタイプの人、例えばサッカーのコーチなどがいて、周りに心当たりがいないなら、サイトを見せて『あなたがサッカーのコーチだと想像してください』と言えばいいのです」。生身の人間を集めて実施する余裕のない市場調査が、昼休み前の午前中だけで3回も回せる市場調査に変わるのだ。まとめられた完全なレポートを読む ↗ · またはエージェントセッションの生ログを読む ↗

シーン5

「シンプル化」のフィードバックループを断ち切る

受講生たちが共有のピアフィードバック用スプレッドシートに入力している最中、ドラ(Dora)がチャットに1つの質問を書き込んだ。それは教室のほぼ全員が感じていながら、まだ誰も言葉にできていなかったもどかしさを言い当てていた。

「背景として、旅程をカスタマイズするためのルートマッピングツールを作っています。実験をシンプルにし、ウェブサイトをデプロイしようとすると、エージェントが余計なステップを追加してしまい、デプロイがどんどん複雑になっていきます。そして『プロセスをシンプルにして』と指示するもののうまくいったりいかなかったりで、無限ループに陥ってしまいます。このフィードバックループを抜け出すにはどうすればいいでしょうか?

— ドラ

アーナンドの対応はシーン2のパターンをほぼ正確になぞるものだった——まず能力の高いモデルに尋ね、その上に自分自身の見解を上乗せする。今回使ったモデルはClaude、具体的には中程度の推論労力(medium effort)に設定した「Fable(フェーブル)」だった。

モデルの回答を読み上げる前に、アーナンドは自らの答えを提示した。これまでに多くの受講生がデプロイで行き詰まるのを見て、苦い経験から導き出した答えだ。

堂々巡りに陥ったアプリに対する4つの打ち手
  1. より賢いモデルに修正を依頼する。「Sonnetを使っていて行き詰まったら、途中でOpusやFableに切り替えます。少なくとも1段階上のモデル、思考レベルの高いモデルにするのです」
  2. 完全に新しいチャットを始める。「『このアプリケーションを見てくれ。複雑になりすぎている。すべて書き直して、極めてシンプルにしてほしい』と伝えるのです」
  3. 新しいチャットにはコードを一切見せない。「『ブラウザ画面だけを見てくれ。コードは見なくていい。アプリケーションが何をしているかを確認してほしい。[…] 最初から作り直してくれ。余計な手順は追加しないでくれ』と指示します」
  4. 1つではなく、捨て前提のバージョンを3つ作らせる。「『1つのバージョンだけを出すのではなく、テストが極めて簡単で、デプロイも極めて簡単な異なるバージョンを3つ作ってくれ』と要求します」

これら4つの打ち手の根底にある考え方はこれだ。「エージェントが作ったものを捨てるのは簡単です。あなた自身がそこに多くの時間や労力を費やしたわけではないのですから」。時間を浪費させている真の犯人は作り直し作業ではなく、壊れたバージョンへの執着なのだ。

続いて彼が読み上げたClaudeの回答も、別の角度から同じ診断に帰着していた——「言葉そのものの曖昧さ」である。

「『シンプルにして』というのは曖昧であり、エージェントは何が『シンプル』なのか分からないため推測してしまいます。[…] シンプルにしてと頼むのをやめ、最終状態がどのような姿をしているのかを具体的に伝えてください。 […] コマンド1つ、HTMLファイル1つ、JavaScriptファイル1つ、ビルド手順なし、といった具合に」

— Claude、共有チャット内での回答

その同じ返答から、さらに2つの具体的な打ち手が浮かび上がった。1つは新しいセッションを立ち上げること(「新しいセッションを始めるというのは、先ほど私も言いましたね」)。もう1つは、シンプル化ではなく削除を要求すること——「この機能を削除して、あの機能を削除して」と指示することだ。削除は具体的で検証可能な行動だが、「シンプル化」は主観的な判断であり、そもそもエージェントのその判断こそが混乱を招いた元凶だからだ。ドラに向けたアーナンドの結びの言葉は、部屋全体に対する「許可証」でもあった。「躊躇せずにゼロからやり直してください。何も悪いことではありません」

シーン6

戸惑う自分を録画する

第3の検証に必要なのは、自動テストスイートでもサブエージェントでもなかった。カメラの前で、他人のアプリを初めて触ってリアルに戸惑う、生身の人間だった。アーナンドは「FT AI Products peer-to-peer feedback」という共有スプレッドシートを用意し、受講生全員がクラスメイト2名のアプリに自ら名前をエントリーして、ビデオでフィードバックを提供する様子を録画するよう求めた。そして他の誰かにやらせる前に、彼自身が生中継で実践してみせた。対象に選んだのは、3体のAIペルソナが一晩でテストしたばかりの『Study Walker』だった。

まず、何もインストールせずに画面とカメラ映像を同時に録画するにはどうすればいいのかという実務的な問題が生じた。彼は壇上で、Google AI Modeに直接質問した。

ライブでの質問
「YouTubeにはワンクリックで画面録画できる機能はありますか?」

そして彼は実際に録画を始めた。英語に翻訳したStudy Walkerを開き、「Rustプログラミング言語を学ぶ」という本物の目標を入力して、台本なしで失敗も含め、起きた通りの自らのリアクションを実況していった。

「今日やりたいことを始めるための最初の一歩。[…] 何ができるようになりたいですか? […] やってみたけれど難しかった。[…] よく理解できなかったのでどうすればいいかわからないけれど、やってみます」

— アーナンド、戸惑う初見ユーザーになりきってライブで実況

その録画には、小さくも有益な、本物の発見の瞬間が捉えられていた。アプリは彼に「1分でRustを学ぶ」を提示した。彼は「1分でできる範囲を超えて野心的すぎる」と判断したが、リンク先のRust Playgroundを試してみることにした。println! と入力して「Hello World」が表示されるのを確認し、次にあえてそのトイプログラムを壊してみて(文字列として出力する部分で 1 + 2 を渡すなど)、コンパイラ自身のエラーメッセージから修正方法を学んだのだ。

「気づいたのは、エラーメッセージが思っていた以上に親切で役に立つということです。[…] ですから1分程度で、実際に最初の一歩であるHello Worldを踏み出すことができました。[…] これは本当に助けになりました。やりたかったことに対して、一歩前に進むことができたのです」

— アーナンド

このセクションを締めくくるにあたり2つのルールが示されたが、いずれも「綺麗なテイクを演じようとする本能」に抗うものだった。

「使い慣れた言語で遠慮なく話してください。最近の翻訳ツールは非常に優秀ですから。[…] 自分が表現しやすい方法で感じたことを伝えれば伝えるほど、見ている側にとっても理解しやすくなります。 […] そして、完璧なフィードバックを撮ろうと何度も撮り直さないでください。フィードバック中の間違いや言い淀み——それこそが、おそらく最も有益なフィードバックなのです。[…] ワンテイク(一発撮り)で録画してください。それが最高のフィードバックになります」

— アーナンド

この1時間の終わりまでに、3つの検証ソースが積み重ねられた。飽きることのない「自動テストスイート」、本物の数分の一のコストで済む「AIによる市場調査」、そしてカメラの前で見せる仲間の「正直で無編集の戸惑い」。どれか1つが他を代替できるわけではない。他の2つでは構造上捉えきれない何かを、それぞれが確実に掬い取るのだ。

金曜日までの提出物

アーナンドはこの必須チェックポイントの最後に、明確なリストを提示した。この講義シリーズにおいて、「完了(done)」の定義が個人の勘任せではなく具体的に明文化されたのは、これが初めてだった。

  1. エージェントによる調査 —— 上述のStudy Walkerのレポートが成果物として公開されたように、市場調査のログを共有可能な場所に公開すること。
  2. 2つのフィードバック動画リンク —— クラスメイト2名のアプリに対して、任意の言語で、編集なしのワンテイク動画でフィードバックを録画すること。
  3. アプリケーションの改善 —— 3つのフィードバックソースすべてを踏まえて改善すること。ただし、すべてに対応する義務はない(「すべてのフィードバックを受け入れる必要はありません」)。
  4. 自動テスト —— 明日(木曜)は任意、明後日(金曜)は必須。

フィードバックの提出期限は、可能な限り木曜の任意セッション前までとされた。「そうすれば相手がアプリを改善する時間を確保できるから」だ。また、金曜日の対面セッションではライブピッチではなく短い動画——アプリの概要と取り組んだ内容を説明する2分間のウォークスルー動画(言語不問)——を提出してもらい、それが受講生各自のポートフォリオの一部になることも予告された。それまでの質問は [email protected] 宛てに送ること。

テスト・調査・実演されたプロダクト

ひとつの午後、3つの検証アプローチ

Day 3 の学び

2026年9月9日(水)· SUTD · 90分・リモート・出席必須

01
作るのが速くなったことで、新たな問題が生まれた——それを信頼できるか。
バグを直すと、それまで動いていた機能が人知れず壊れることがある。「進めるにつれて新たなミスが追加されてしまう。そんなことは望んでいない」——これこそが、再実行可能でAI不要のテストスイートの構築に25分を費やす価値がある理由だ。
02
エージェントに見知らぬ他人のようにテストさせ、その結果をあなた向けに翻訳させる。
「実際のユーザーのようにこのサイトを一通り触ってくれ」という指示から、26個の再実行可能なテストと、あえて可視化して残した3つの実際のバグが導き出された。「私が理解できる形で出してくれ」という一言が、エンジニア向けの専門チェックリストを、誰もがレビューできる平易な質問リストへと変えた。
03
AIを組み込んだアプリは強力だが、リリース(シップ)の難易度も跳ね上がる。
プロダクトそのものの内部にLLMを組み込んだことが、ヨハンの成果物を共有不能にさせた原因だった。その解決策——「ウェブページと、LLMの呼び出しを行う小さな非公開の関数」——は、アーナンド自身も答えを知らなかった質問から導き出された。
04
「これはブラックボックスなのか?」という問いには、気休めではなく本物の回答が必要だ。
アーナンドの答えはこうだ。「エージェントがすでにできるなら、学ぶ意味はない。人間が求めていないなら、学ぶ意味はない」。エージェントが出してきたものと、本当に求められていたものとの間のわずかなギャップを学ぶこと——そのギャップこそがカリキュラムのすべてである。
05
市場調査を委任せよ——そして、調査の設計そのものも委任せよ。
安価な3体のサブエージェントが一晩で3人のペルソナを演じ切り、アプリの真の弱点(アクセスの間でセッション記憶が保持されないこと)を暴き出した。「市場調査そのものだけでなく、市場調査の設計までも委任しているのです」
06
最もショッキングな主張を信じる前に、検証者そのものを検証せよ。
2人のペルソナが「致命的なバグ」をそれぞれ報告した。だがそれは、3つのテストを同時実行したことによるブラウザストレージの共有衝突だった。優先順位リスト全体を塗り替えてしまう前に、その不穏な調査結果を再確認せよ。
07
「シンプルにして」は、エージェントが動くにはあまりにも曖昧すぎる。
エージェントは「シンプル」の意味を推測し、その推測のたびに新たな手順を追加し、あなたがそれに異議を唱えることになる。「コマンド1つ、HTMLファイル1つ、ビルド手順なし」のように最終状態を正確に指定するか、「シンプル化」ではなく「削除」を指示せよ。
08
エージェントの作業成果を捨てるコストは極めて低い。それを活かせ。
作るのに「多くの時間や労力を費やしたわけではない」のだから、行き詰まったアプリは固執すべきサンクコスト(埋没費用)などではない。壊れた1つのバージョンを守ろうとする代わりに、使い捨て前提のバージョンを3つ作らせよ。
09
フィードバックは、失敗も含めて一発撮り(ワンテイク)で録画せよ。
「完璧なフィードバックにしようと何度も撮り直してはいけない。フィードバック中の失敗こそが、おそらく最も有益なフィードバックなのだから」。綺麗に整えられたテイクは、戸惑う初見ユーザーが実際に経験することを隠してしまう。