# 文字起こし

**アーナンド**: [00:00] ありがとうございます。皆さん、おはようございます。まず初めに、本日は少し遅れてしまい申し訳ありませんでした。ただ、終了予定時間を延長する必要はありません。予定していた時間内に無理なく収まるはずです。

**アーナンド**: [00:17] さて、皆さんの多くが作成したアプリケーションのリンクを共有してくれましたね。とても良いスタートです。また、他の人にテストしてもらい、そのフィードバックも共有してくれました。これもまた素晴らしく、重要なステップです。そこで現在の状況を整理すると、**「アプリケーションを作ること自体は簡単で、AIがプロダクト開発を手伝ってくれますが、より難しいのはそれが本当に役に立ち、実際に使いやすいものになっているかを確認すること」**だと言えます。

**アーナンド**: [00:59] アプリをテストしてみて、いくつかのバグや問題点が見つかったかと思います。そこでChatGPTやClaude Codeに修正を指示すると、いくつか変更を加えてくれます。しかししばらくすると、元々動いていたはずの機能が動かなくなっていることに気づくでしょう。つまり、修正を進めるにつれて新しい不具合が紛れ込んでしまうわけです。これは避けたいところです。

**アーナンド**: [01:31] また、人間が行うように、定期的にここをクリックしたり、あそこを押したりして、システムが意図通りに動作し続けているかをテストさせたいと思うはずです。これがアプリケーションのテストで行うことの一部です。**では、ChatGPTやClaudeが自律的にそうしたテストを行うことは可能なのでしょうか？** きちんと検証できるでしょうか？ しかも、毎回結果が変わってしまったり、トークンを余計に消費したりしない方法で検証できるのでしょうか？ それが、このセッションで見ていくテーマの一つです。

**アーナンド**: [02:18] それでは、実際にやってみましょう。画面を共有しますね。はい、おそらく見えているかと思います。あ、少し手違いがありました。別のブラウザから参加してしまっていましたね。こちらのブラウザから入り直します。

**アーナンド**: [03:29] 確認ですが、私の声は聞こえていますか？ 大丈夫ですね。では画面共有を始めます。よし、いいですね。皆さんが共有してくれたページを一つ見てみましょう。ランダムに選びますね……よし、ここにRenataさん（レナータさん）が作ったChatGPTサイトのリンクがあります。もう一つ見てみましょう。こちらはMayuさん（マユさん）のものですね。ランダムに選んでいますが、本来はすべてのサイトで絶対にこれを行うべきですし、行うことができます。

**アーナンド**: [05:14] では、これに対して自動テストを作成したい場合、どう進めればよいでしょうか？ ChatGPTに実際にやってもらおうと思います。具体的には、ここではChatGPTデスクトップ版を使います。なぜデスクトップ版かというと、自分のコンピューターを操作できればブラウザも操作できる可能性があり、ログインが必要なサイトにも対応でき、よりコントロールしやすいからです。そのため、私はこうしたツールのデスクトップ版を使うのを好んでいます。

**アーナンド**: [06:04] 次に、ChatGPT側であればChatGPTかCodexのどちらかを使えます。Claudeを使っている場合、これに相当するのはChatやCo-workを使うか、あるいはCode（Claude Code）を使うかになります。大きな違いはありませんが、どちらのツールも「Code」版の方がコードの記述や実行を少しうまくこなす傾向があります。ですので、私はそちらを使います。

**アーナンド**: [06:36] 次に行うのはモデルの選択……いや、モデルの選択はそのままでいいでしょう。現在は「Luna」で思考レベル（effort）は中間に設定されているので、コストはごくわずかです。あ、いや、やはり「Soul」にアップグレードしておきましょうか。思考レベルは中間のままで大丈夫です。

**アーナンド**: [06:58] （プロンプトの指示内容）「本物のユーザーのようにこのサイトを操作し、何ができるのかを把握した上でテストしてください。そして、AIアプリケーションを介さなくても、いつでも再実行できる自動テストケースの一式を作成してください。これで全体をテストできるようにしてください。私のブラウザや必要なものは何でも自由に使って構いません。また、今後何かを変更する必要が生じたときに把握できるよう、具体的に何をテストしているのかを説明した簡単なドキュメントも作成してください。**将来、あなたに指示を出すだけで簡単に新しいテストを追加できるようにしておいてください。**」

**アーナンド**: [07:49] これで必要な内容はだいたい網羅できています。では、先ほどのサイトを一つ選んで、これを貼り付けます。よし、試してみましょう。うまくいくか見てみます。同じことはClaudeでも可能です。単に私のChatGPT側の利用枠（予算）に少し余裕があるので、今回はこちらを使っています。

**アーナンド**: [08:15] ここで期待しているのは、AIがブラウザを開き、自律的に操作を始めることです。なぜそんなことができるかというと、Claude用の拡張機能をインストールしてあり、確かChatGPT用の拡張機能も入れてあるからです（うろ覚えですが、いずれにせよ自律的にサイトを閲覧できる拡張機能が入っています）。皆さんも試してみると良いでしょう。もしツールが「ブラウザにアクセスできません」とか「ログインできません」などと言ってきた場合は、これらの操作を実行できるようアクセス権限を与えてあげてください。

**アーナンド**: [08:58] 先に進む前に、一度要点をまとめてから皆さんの質問を受け付けたいと思います。質問はチャットに書き込んでも、ミュートを解除して声を出して聞いても構いません。英語でも日本語でも、どの言語で書いていただいても全く問題ありません。要約すると、**「AIを使ってアプリケーションのテストを自動化できれば、アプリが期待通りに動作していることを確認でき、安全に変更を加えられるようになる」**ということです。そして、安全に変更するのが容易になればなるほど、素早い開発が可能になります。これは、このコースの後半で行うことの重要な柱になります。何か質問はありますか？

**ヨハン**: [10:06] アーティファクト（成果物/アプリ）の中にAIそのものを組み込もうとしているのですが、そうするとアーティファクトを他の人と共有できなくなってしまいます。何か回避策はあるでしょうか？ あるいは、作っているプロダクト内にAIを組み込むには、他にどのような方法をとるべきでしょうか？

**アーナンド**: [10:28] 調べてみましょう。Johanさんのサイトは……ええと、どこかにメールがあったはずですが、その問題のせいで共有できなくなってしまったのですね。でも確か、どんなアプリかは教えてくれていましたよね。スクリーンショットもあります……あ、そうそう、株価ティッカー（Stock Ticker）のアプリでしたね。よし、いいでしょう。一般的な質問として聞いてみますね。デプロイ先はVercelでしたっけ……違いました、Cloudflareでしたよね？

**ヨハン**: [11:05] あ、Cloudflareです、はい。

**アーナンド**: [11:07] わかりました。では、こう質問してみましょう。「ユーザーが入力したデータに基づいて質問に回答するなど、機能の一部としてLLMを使用する必要があるアプリケーションがあります。これをChatGPTサイトとして作成すると正常に動作しますが、他の人が利用できるようにデプロイすることができません。CloudflareやGitHubなどに公開する場合、AI機能をどのように利用すればよいのかわかりません。少なくとも数人、あるいは一般に公開できるシンプルなサイトにして、コストをあまりかけずにAI機能を組み込むための、最も簡単で適切な解決策を、できる限り簡潔に、極めてわかりやすく説明してもらえますか？」

**アーナンド**: [12:35] これを試して、結果を見てみましょう。私がすぐに答えを教えずにこうしている理由は、まず第一に、私が必ずしも最善の答えを知っているとは限らないからです。そして第二に、仮に私が知っていたとしても、答えを教えること自体は重要ではないからです。私が伝えたいのは、皆さん自身がAIへの聞き方を色々工夫して学ぶことができる、ということです。**そうした「学び方のアプローチ」こそが、皆さんにとって本当に役立つものなのです。**

**アーナンド**: [13:00] さて、回答が出ました。最もシンプルな解決策は「Cloudflare PagesまたはWorkersにデプロイし、Cloudflare Workers AIを利用すること」だと言っています。JohanさんのアプリはすでにCloudflare上にあるので、LLMを呼び出すリンクを作成できるとのことです。重要な点は、フロントエンドからAPIを直接呼び出すべきではなく、サーバー側を介す必要があるということですが、Cloudflareならそれが簡単にできます。ここにコードも提示されていて、「これが最も簡単な方法だ」と説明されていますね。

**アーナンド**: [13:48] この内容を完全に理解できる人もいれば、何のことかさっぱりわからない人もいるでしょう。でも、分からなくても構いません。なぜなら、この内容を丸ごと元のチャットに持っていき、「ChatGPTがこう言っているから、この通りにやってくれ」と指示すればいいからです。動けば万々歳ですし、動かなくても少し時間を無駄にした程度のことです。大した問題ではありません。

**アーナンド**: [14:12] ただ個人的には、これは私が考えていた解決策とは少し違いました。これは優れた解決策ですし、CloudflareにはWorkers AIの機能があるのでコストも安く済むはずです。私が思い浮かべていたのは、自前のAPIキーを用意してCloudflare Workerを書くという方法でした……まあ、結果的に似たようなことですが、Cloudflareを使うならこちらの方がより良いですね。参考までにチャットに共有しておきます。あ、今の共有リンクじゃなかったですね。コピーがうまくできないな……よし、できました。こちらが必要なリンクです。

**アーナンド**: [15:27] さて、右側の画面をご覧ください。拡大しますね。AIはまだサイト（「1ページの都市パーソナリティ診断」）の検証を続けています。ユーザーが想定通りに正しい操作を行う「ハッピーパス」と、操作を誤ったり変な操作を試したりする「エラー系」の両方をカバーしています。8段階のユーザージャーニーを作成してくれたようですね。よし、そのままバックグラウンドで実行させておきましょう。少し時間がかかるかもしれません。他に質問はありますか？

**KK**: [16:36] いつも質問ばかりですみません。ただ、試行錯誤を進める中で一つ感じていることがあって……「これは本当に正しいアプローチなのだろうか？」と疑問に思うんです。自分が何をしているのかもよく分かっていないまま、AIの提案をCodexや何かにそのまま放り込んで、AIの提案任せで作ってもらっている状態ですよね。でも裏で一体何が起きているのか、自分たちには全く理解できていません。**つまり完全なブラックボックスです。本当にこれでいいのでしょうか？ むしろ危うい考え方に陥っているのではないでしょうか？**

**アーナンド**: [17:21] その可能性はありますね。とてももっともな疑問です。内部で何が起きているかを知る必要がある場合もあれば、知る必要がない場合もあります。私は車を運転しますが、エンジンの仕組みなんてさっぱり分かりません。故障しても、タイヤの交換すらできません。それは悪いことでしょうか？ まあ、悪いことではありますね。過去に何度か立ち往生して、せめてタイヤ交換くらいはできればよかったとか、エンジンのオーバーヒートに気づければよかった、と思ったことがありましたから。

**アーナンド**: [18:13] でも、そうした状況に陥ったとしても、致命的な問題にはなりませんでした。誰かに電話をかければ1時間ほどで来てくれて、問題を解決してくれたからです。何が言いたいかというと、もし私がエンジンの構造や仕組みを学ぶのに膨大な時間を費やしていたら、過去30年間に実際にトラブルで困った時間よりも、学習にかけた時間の方がはるかに長くなっていただろう、ということです。車に関して機械的なサポートが必要になったトラブルはこれまでに3回ほどで、対処にかかった時間は合計でも半日程度です。一方、エンジンやスペアタイヤの交換などを学ぶのに要する時間は、おそらく丸2、3日にはなったでしょう。

**KK**: [19:03] たまにしか使わない車の修理のようなニッチなスキルの話なら、その考え方も分かります。でも、僕たちは大学生であり学生です。将来的に上司などに成果物を提出する立場になることを考えると、技術的な中身を知っておくことの方が重要ではないでしょうか？ 例えば、僕がデータ分析を専攻していて、サッカーのデータ分析アプリを作って納品するとします。その過程で多くのバグや問題に直面するはずですし、それらについては車の修理と違って、自分自身が理解していなければならない極めて重要なことだと思うのですが、どう考えればよいでしょうか？

**アーナンド**: [19:54] 私がStraiveに入社するインターンたちによくするアドバイスの一つに、こんなものがあります。CEOとのミーティングに参加して指示を受ける際、「通話を録音し、文字起こしをして、それをChatGPTやClaudeに入力し、その出力をそのままCEOに返しなさい」と伝えています。**「CEOが何を言っているのかを理解しようとするな。どうせ理解できないから」**と。出力を自分なりに解釈しようとする必要もありません。自分には意味が分からなくても、CEOにそのまま返して判断させればいいのです。

**アーナンド**: [20:39] そう聞くと、「それならインターンは何の価値を提供しているのか？」と思うかもしれません。ですが、そのプロセスにはバグが出るかもしれず、インターンはそれを修正して4時間かけて形にします。指示を出して結果を受け取るだけで済むので、CEOにとっては大いに助かります。では、インターンは何も学んでいないのかというと、そうです、学んでいません。何かを学ぶべきだったのでしょうか？ おそらくそうかもしれません。

**アーナンド**: [21:05] ですが、こういうことです。もしStraiveのCEOであるAnkur（アンクール）が出力を見て、「ああ、まさにこれが欲しかったんだ。素晴らしい」と言ったとすれば、インターンが学ぶべきことは何もありませんでした。いずれはCEO自身がエージェントに直接指示を出し、エージェントが結果を返すようになる類のことです。わざわざ人間が学ぶ価値のあるものはそこにはありませんでした。しかし、もしCEOが「おいPavan（パヴァン）、このインターフェースはちょっとイメージと違うな。私が本当に求めているのはステージの上でプレゼンできるものだから、フォントをもっと大きくして、スライド資料に近い見た目にしてほしいんだ」と言ったとします。この時、Pavanは何かを掴み取ったことになります。「指示されていなくても、事前にエージェントに伝えておくべきコンテキスト（文脈）がある」ということを学んだのです。

**アーナンド**: [22:02] 次回Ankurから指示があった時、Pavanはそれを覚えているので、自主的にその文脈をプロンプトに追加できるでしょう。できなければ何度も同じ指摘を受け、最後には怒られるだけです。別の言い方をすれば、**「需要があり、かつ供給のギャップ（不足）が存在することこそ、学ぶ価値がある」**ということです。エージェントがすでにできることを学んでも意味がありません。人間が求めてもいないことを学んでも意味がありません。できる限り多くの作業を委託することで、初めて「何が足りないのか」というギャップが見えてきて、その学習に集中できるようになります。もししばらく学べることがないと感じるなら、もっと高い目標（野心）を持つべきです。より難易度の高いことに挑戦して、どの段階で「これは違う、正しくない」と言われるかを確かめてみるのです。

**アーナンド**: [22:56] そして実際、皆さんはすでにその壁にぶつかっていますよね。皆さんのアプリはまだ完璧には動いていませんから。機能的には問題なくても、ユーザーが本当に望むものを提供できていなかったりします。それを見た人は「ふーん、それで？」となってしまうわけです。もし今の成果に完全に満足しているとしたら、それはまだ十分に野心的ではないということです。そして、皆さんがいま身につけつつあるスキルとはまさにこれです。**「私たちが教わってきたことの多く——すべてとは言いませんが、その大半は——エージェントができてしまうことである」**という現実です。私たちは「それらを学ぶべきではないのか？」と考えがちですが、私は「そうではないかもしれない」と言いたいのです。エージェントにできることなら、学ぶ必要はないかもしれない。エージェントに『できないこと』こそが、皆さんが学ぶべきことなのです。

**アーナンド**: [23:48] これは常に正しいでしょうか？ いいえ、そうとは限りません。ですが、私は何十人もいる講師のうちの1人に過ぎません。他の講師たちは「何を学ぶべきか」を教えてくれるでしょうから、私はあえて「何を学ばなくていいのか」をお伝えしているのです。さて、ありがとう。質問はいつでも歓迎ですので、続けてどうぞ。

**アーナンド**: [24:13] 一方で、先ほどのAIの進捗を見てみましょう。このサイトは年齢とお気に入りの雰囲気を尋ね、8つの選択肢を提示して、それらを組み合わせて都市のアーキタイプのイラストや特徴などを表示するようですね。とても面白いです。ステート（状態）はページのメモリにしか保持されず、バックエンドはなく、結果も保存されない……なるほど、問題ありません。そしてテスト項目がずらりと提示されました。いいですね。私が本当に知りたいのは「何をテストしているのか」です。AIがテストしている内容は……トップページのテキストが適切かどうか、それから……

**アーナンド**: [25:00] ……プロフィールの入力フィールドに不足がないか、質問項目がすべて存在するか、前後の移動ができるか、タイトルが表示されているか、診断結果が適切に説明されているか、などです。ただ、この表現だと私には少々分かりにくいですね。そこで、もっと分かりやすくしてもらいましょう。**「『トップページの文言は適切か？』といったように、何をテストしたのかを平易な質問文の形式でテスト範囲を書き直してくれますか？」**と指示します。こうすれば理解しやすくなります。

**アーナンド**: [25:48] ここにも、私が重視しているもう一つの重要な原則があります。**「作業を行うのはエージェントだが、検証を行うのは人間である」**ということです。通常、これは人間が膨大な検証作業を背負い込むことになり、非常に骨が折れます。だからこそ、**「自分にとって検証が楽になるようにする」**のです。エージェントに対して「私が理解できる形で出してくれ。私の作業を楽にしてくれ」と指示するわけです。

**アーナンド**: [26:21] 今回の場合を見てみると、テスト項目が質問形式になりました。「年齢と雰囲気の項目に明確なラベルが付いているか？」「利用者は5つの雰囲気すべてから選択できるか？」「18歳未満と120歳超の年齢は弾かれるか？」などですね。はい、これならずっと分かりやすいです。これが手に入れば、いつでも非常に簡単にテストを再実行できます。再実行するためのコマンド群も提示してくれていますね。ただ、私自身は自分でコマンドを叩いて実行することすらしたくありません。ChatGPTやClaudeに「テストを実行して」と指示するだけです。サイトを変更した後に、「サイトを変更したから、テストを再実行して動くか確認し、何が変わったか教えて」と頼めばいいのです。

**アーナンド**: [27:22] ここまでの25分間で扱ったのは、自動テストスイートを作成する方法についてでした。これは非常に役立つスキルです。しかし、行うべき検証はこれだけではありません。色々な人にアプリを試してもらうと、人間がどのように反応し、どう感じるかというユーザーの反応が得られます。これは言わば「市場調査（マーケットリサーチ）」のようなものです。本日は、皆さんのサイトを一覧にまとめ、受講生同士で簡単な市場調査を行ってもらう予定ですが、**そうした市場調査自体をエージェントに実行させることも可能です**。そのやり方をお見せしましょう。

**アーナンド**: [28:12] まずCodexの利用状況を確認します。利用上限の38%を消費していますね。Haikuをメインに使えば十分足りるでしょう。では、別のサイトを取り上げてみます。ランダムにもう一つ選びましょう。これはYuriさん（ユリさん）のものですね。サイトを開いてみます。「スタディウォーカー（Study Walker）」ですね。素晴らしい。

**アーナンド**: [29:02] さて、このサイトには想定される特定のターゲット層があるはずです。そこで、再びChatGPTに……いや、気分を変えてClaudeに頼んでみましょうか。Claudeの利用可能枠を確認して……うん、十分な残量がありますね。Claudeに次のように指示してみます。さまざまな人物になりきってサイトを訪問し、実際に使ってみてフィードバックを出すように指示します。では始めましょう。前回のセッションでお話ししたように、私はChatGPTに音声入力（ディクテーション）してからClaudeに貼り付けるやり方を好んでいます。

**アーナンド**: [29:41] （プロンプトの指示内容）**「このサイトに対して、市場調査に相当する作業を実行してください。サイトを一通り見て、このプロダクトの対象となり得る主要なペルソナ（ユーザー像）を上位3つ特定してください。そして、Haikuのような軽量モデルを使ったサブエージェントを生成し、それぞれのペルソナを割り当ててください。彼らにそのペルソナになりきってアプリを閲覧・テストさせ、実際の市場調査のようにフィードバックを出させてください。各自が何をして、どう感じて、どこが改善されるべきかなどを具体例を交えて説明したMarkdownファイルとして結果を保存させてください。率直に言って、私は市場調査についてあまり詳しくありませんが、あなたは専門家です。優れたプロダクトの市場調査がどのように行われるべきかを提示した上で、実際にその通りに調査を実施してください。3つのサブエージェントの作業が終わったらフィードバックを集約し、最初に着手しやすく最も重要な機能から順に、2番目、3番目と並べたシンプルなレポートとして報告してください。」**

**アーナンド**: [31:21] 私の狙いがお分かりいただけるかと思います。**市場調査そのものだけでなく、「市場調査の設計（構造化）」までもAIに委任しているのです。** では、サイトのURLと一緒にこれを貼り付けます。設定を確認して……よし、実行しましょう。あ、フォルダが存在しない……新しいフォルダを作成します。「Market Survey」と名付けましょう。そのフォルダを選択して実行します。走らせておきましょう。

**アーナンド**: [32:42] 要点を振り返ると、検証における第2のテーマは、**「エージェントを活用してユーザーリサーチを補強（オーグメント）すること」**です。AIにユーザーのふりをさせ、ユーザーの目線でサイトを見てもらうわけです。これは必ずしも生身の人間の反応を完全に代替するものではありません（将来的には代替するかもしれませんが、人間のリサーチを完全に置き換えられると確信できるほど私自身が検証しきれていません）。ですが、極めて低いコストで非常に有益なフィードバックを追加で得られることは間違いありません。ですので、テストしてくれる人が足りない場合や、身近にいない属性の人に聞きたい場合——例えば、このクラスでスポーツの指導者やサッカーのコーチの声を聞きたいのに周りにいない場合などに——そのサイトを渡して「サッカーのコーチになったつもりでこのサイトを使い、自分にとって役に立つか、使いやすいかを検証してレポートを出してくれ」と指示できるのです。これは非常に助けになります。

**アーナンド**: [33:53] 質問があれば、ミュートを解除するかチャットに書き込んでくださいね。処理が進む間に……まだ動いていますね、完了するまで待ちましょう。おや、PCがスリープしたか何かでしょうか……電源は大丈夫、問題なさそう……あ、ここで動いていましたね。失礼、一度止めて削除すべきでした。よし、大丈夫です。スクリプトを実行し、ページとやり取りしながら、色々な操作をしてくれています。そのままにしておきましょう。

**アーナンド**: [35:33] さて、今週末までにどのようなプロダクトを作りたいかを大まかに確定させる段階に入ってきました。それはもちろんAIによって構築されるプロダクトであり、機能の一部としてAIを活用するプロダクトであっても構いません。そこは完全に皆さん次第です。最終的には1つ以上のサイト（今週の成果物として複数公開しても構いません）を公開し、実施したテスト内容も共有してもらいます。つまり、どんな自動テストを実行したか、エージェントを使ってどんな市場調査を行ったか、そして**「生身のユーザーからどのようなフィードバックを得たか」です。このユーザーフィードバックの第2ラウンドを実施します。**

**アーナンド**: [36:32] 現時点で皆さんにやっていただきたいこととして、Googleスプレッドシートを作成して全員に共有します。このクラスのメンバー同士でお互いのアプリケーションについて市場調査を行い、それを動画形式で録画してもらいます。どうやってやるかをお見せしますね。スプレッドシートには、ここに「名前」、ここに「アプリのリンク」、そして「フィードバック1の名前」……そうですね、1つ目のフィードバックを担当する人がリンクを共有し、2つ目のフィードバックを担当する人がもう一つのリンクを共有する形にします。

**アーナンド**: [37:51] どのように進めるか説明します。「スタディウォーカー」を例に取りますね。Yuriさん、代わりに私が記入しますね。名前を「Yuri」、そしてアプリのリンクを入れます。そして1人目のフィードバックを私が担当するとして、自分の名前を入れます。そして、このサイトに対するフィードバックの様子を動画に録画します。では、動画はどうやって録画すればいいでしょうか？ 実はあまり詳しくないのですが、YouTubeなどにサイト上でボタンを押すだけで画面とカメラとマイクを同時に録画してくれる機能はありましたっけ？ 他にそうしたことができるサイトはあるでしょうか？ 何が一番手軽ですかね？

**アーナンド**: [38:52] YouTubeにはそういう機能はないですね。検索すると`recordscreen.io`が一番シンプルだと出てきました。よし、アクセスして試してみましょう。せっかくなので画面とカメラの両方を録画します。これでマイク、カメラ、そして画面全体が録画されています。いいですね。ではサイトに行ってテストしてみます。少し喋りながらクリックしてみて、ここに戻って録画を停止します。よし、ちゃんと録画できました。完璧です、とてもスムーズですね。素晴らしい。私は`recordscreen.io`を使いましたが、皆さんは好きなツールを使っていただいて構いません。

**アーナンド**: [39:56] 私たち全員にやってほしいのは、お互いのアプリを実際に使ってみて、そのフィードバック動画のリンクを共有することです。では、私からのフィードバックをお見せします。画面全体を録画しますね。よし、「スタディウォーカー」にアクセスしました。日本語で書かれているので、英語に翻訳します。どんなものか見てみましょう。「**今日やりたいことを始めるための第一歩**」……ふむ、どういう意味でしょうか。「**なりたい自分になるには？**」なるほど、自己啓発や学習系のアプリですね。そこで、「Rustプログラミング言語を学びたい、まずはスタートを切りたい」と設定してみます。

**アーナンド**: [40:59] よし、「**今日やるべき最初の一歩を見つける**」。「今、何がハードルになっていますか？」一度やってみたけれど難しかった。「今、どれくらい時間がありますか？」開いて1つ確認するくらい。そうですね、授業中なのでそれくらいしか時間はありません。「何を使えますか？」PCが使えます。「では、ページを開いて、最初に触る場所を確認してください」。うーん、ここは翻訳の精度のせいか、あまり意図が掴めませんでしたが、「ページやツールを開いて、最初に触る場所を1箇所確認する」と言っています。それくらいならできそうです。完全には意図を汲み取れず何をしていいか少し迷いますが、やってみましょう。

**アーナンド**: [41:58] 「**今すぐ始める**」。はい。「**1分で学ぶRust**」。「X分で学ぶRust」というコンテンツがありますね。ちょっと見てみましょう。「変数の代入には`let`を使い、`fn`で関数を定義し、見たところすべてに型がある。ポインタもあるようだ」。うーん、求めていたより複雑ですね。これだと3分以上かかりそうです。でも別のサイトならもっと早く学べたかも……30分……いや、1分で学べるものなんてないですね。でも、おや、これは便利です。AIの要約によると`println!`が使えるとあります。オンラインでRustを実行できる環境はあるかな？ あ、Rust Playgroundがありますね。実行してみると、「Hello World」と出力されました。悪くないですね。ではここを`1 + 2`に変えると……数値型だから動かないかも、文字列に変換して……こんな風に入力して……だめか。あ、ヒント（ヘルプ）を出してくれました。このヒントは良いですね。何を使うべきか教えてくれます。ここからコピー＆ペーストすると……動きました！「3」と表示されました。素晴らしい。

**アーナンド**: [43:54] というわけで、1分ほどで「Hello World」という最初の一歩を実際に踏み出すことができました。「最初の一歩を試す」、確かに試せました。**使ってみて気づいたのは、エラーメッセージが思った以上に親切で役に立ったということです。**「うまく始められない」という選択肢があるのもいいですね。諦めそうになったらこれをクリックすればいいわけですから。これは便利です。最初のアクションを完結させることができました。面白いのは、最初の選択肢を見つけた瞬間「はい」を押してしまったので、他の選択肢を全部読みすらしなかった点です。項目の並び順が重要かもしれませんね。そして実際にスタートを切るところまで到達できました。ここからは自力で進めそうです。ありがとう。本当に役に立ちました。やりたかったことへの一歩を踏み出させてくれました。はい、これが私からのフィードバックです。

**アーナンド**: [44:57] これは素晴らしいですね。新しいタブで開いても状態が残っています……別のブラウザで開いたら消えるかもしれませんが、まだ残っているので中断したところから再開できそうです。ですので、**全体として「有用なプロダクトの出発点」になっていると思います。** お金を払うかと言われれば払わないかもしれませんが、役に立つアプリかと言われれば、間違いなく役に立つと思います。用途によっては役に立たない部分もあるかもしれませんが、それはそれです。では録画を停止します。

**アーナンド**: [45:34] 5分ほどで終わりましたね。これで1つのアプリに対するフィードバック動画ができました。手探りで操作し、場合によっては失敗したり理解できなかったりする様子が収められています。この動画をダウンロードして、ドラッグ＆ドロップするだけで誰にでも動画を共有できるサービスを探してみましょう。ログイン不要で制限がなく、シンプルで手軽なものが理想です。`streamable.com`というのがありますね。よし。おや、Claudeが何かの許可を求めていますか？ まだ処理中ですね。

**アーナンド**: [46:35] では、動画をアップロードしてみます。動画はどこだっけ……これですね。「スタディウォーカーにアクセスしました」という動画です。フォーマットが違うのか、うまく配置できませんね。これはパスしましょう。WeTransferはどうかな？ メール送信ではなく、リンクだけが欲しいんですが。Streamableに戻って……ファイルをアップロードしてみます。ん……あ、操作手順を間違えていただけでした。はい、できました。Streamableでもちゃんとアップロードできましたね。失礼、サイト側は何の問題もなく動いていました。このリンクをコピーします（数分でアップロードが完了します）。これがフィードバック動画のリンクになります。

**アーナンド**: [48:28] これで1つのアプリのレビューが終わりました。もう1人、どなたかこのアプリをレビューしてください。そして全員、ここに自分のアプリの名前を記入してください。シートの名前は「FT AI Products peer-to-peer feedback（受講生同士のフィードバック）」としておきます。これを共有しますね……あ、全員が編集できるように権限を変更しておきます。「リンクを知っている全員が編集可能」に変更しました。リンクをコピーしてチャットに貼ります。質問が届いているようですが、後ほど取り上げますね。

**アーナンド**: [49:20] それでは皆さん、お名前の入力をお願いします。Yuriさん、スペルを直したりフルネームにしたい場合は自由に修正してくださいね。そして自分の名前だけでなく、フィードバック担当者の欄にも名前を入れてください。つまり、自分がフィードバックを提供するサイトを2つ選ぶということです。このセッション中に、A列、C列、E列を皆さんに完全に埋めてもらいたいと思います。さあ、どうぞ入力してください。空いている行を見つけて入力していきましょう。他の人と同じ行に被らないように、誰かの入力を上書きしないように気をつけてください。誰がどの行に入力しているかは見えますよね。行がいくつか空いてしまっても後で整理できますので大丈夫です。まずは自分の名前を入力してください。

**アーナンド**: [50:32] Doraさん（ドラさん）、入力が進んできたらご質問にお答えしますね。私も30秒ほど水を飲みに席を外します。

[一時中断 / 休憩]

**アーナンド**: [51:58] さて、現在1、2、3、4、5、6、7、8名が入力してくれましたね。前回のカウントでは15名ほどいたはずです。少し確認してみましょう。ええ、14名か15名はいるはずですね。

**アーナンド**: [52:44] 入力を待つ間に、Doraさんからの質問を見てみましょう。「**背景として、ユーザーが旅程をカスタマイズするためのルートマッピングツールを構築しています。実験を簡素化してWebサイトをデプロイしようとすると、エージェントが余計な手順を追加してしまい、デプロイが余計に複雑になってしまいます。そして私が『プロセスを簡素化して』と指示するものの、うまくいったりいかなかったりの繰り返しで、悪循環に陥っています。この堂々巡りのループから抜け出すにはどうすればよいでしょうか？**」

**アーナンド**: [53:26] 私ならどうするか、いくつかお話ししますね。ですがその前に、十分に賢いモデルにこの質問を投げてみましょう。回答役にClaudeを選びます。具体的にはFable（Claude 3.5 Sonnet）を使いましょう。思考レベルは「中」で大丈夫です。

**アーナンド**: [54:06] まず私自身の回答をお伝えします。AIとのやり取りが無限ループに陥ったときに私がやる対処法です。**ステップ1：より賢い上位モデルに修正を依頼する。** どうやるかというと、例えば普段Sonnetで作業しているなら、途中でOpusやFableに切り替えるのです。少なくともワンランク上で、より高度な思考力を持つモデルに切り替えます。

**アーナンド**: [54:41] 2つ目の方法（うまくいく時もあればいかない時もありますが）は、**完全に新しいチャットを立ち上げること**です。「このアプリケーションを見てほしい。複雑になりすぎているので、全体を書き直して極限までシンプルにしてほしい」と指示するのです。

**アーナンド**: [54:59] これでうまくいくこともあります。それでも駄目な場合、私は新しいチャットにコードすら見せません。アプリを実行した画面を見せて、**「コードは見なくていいから、ブラウザの画面だけを見てくれ。このアプリが何をしているか確認してほしい」**と伝えるのです。アプリのスクリーンショットを貼り付けて、「大体こういうものが作りたい。余計な手順は追加せず、テストもデプロイも簡単にできるようにして、ゼロから作り直してくれ」と指示することさえあります。

**アーナンド**: [55:32] **ここで重要な教訓は、「AIが作業したものなら、自分は大して時間も労力もかけていないのだから、あっさり捨てて作り直すのは簡単だ」ということです。**「1つのバージョンだけでなく、テストもデプロイも極めて簡単な3つの異なるバージョンを作ってくれ」と頼んでもいいくらいです。

**アーナンド**: [55:51] あるいは、これまでの会話履歴を丸ごとコピーして渡すこともできます。「これが私が指示した全内容で、これがAIの回答、そして試行錯誤の経緯と現在のコードだ。**私がやりたかったことを実現しつつ、テストとデプロイがはるかにシンプルになるような『新しいプロンプト』を作成してくれ**」と指示するのです。私ならこうしたアプローチを取ります。

**アーナンド**: [56:16] Fableの回答を見てみましょう。「**『簡素化して』という指示は曖昧であり、エージェントは何が『シンプル』なのか分からず推測で動いてしまう**」と指摘していますね。実に的確な指摘です。**単に「簡素化して」と頼むのをやめ、最終状態が具体的にどうあるべきかを明確に指定すること。** 例えば「コマンド1つで完結、HTMLファイル1つ、JavaScriptファイル1つ、ビルド手順なし」といった具合です。ごもっともですね。ここまで具体的に指定できる知識があれば、どのように簡素化し、どのようにデプロイすべきかを正確に伝えるこの方法は極めて有効です。

**アーナンド**: [57:00] 「新しいセッションを開始する」というのも、先ほど私が言った通り書かれていますね。不要な部分を削除させる……ええ、「この機能を削除して、あの機能も削って書き直して」と指示する。これも良いアプローチです。ぜひ試してみてください。ゼロから作り直すことを恐れる必要はありません。全く問題ないですからね。

**アーナンド**: [57:28] リストを見てみましょう。3、4、5……7、8、9、10、11、12名ですね。あと数名は名前を追加できるはずですので、準備ができ次第入力してください。

**アーナンド**: [57:51] では、「フィードバック1の名前」と「フィードバック2の名前」の入力も始めてください。どれでもいいので行を選んで自分の名前を入れてください。つまり、**皆さんの名前は少なくとも2箇所に入ることになります。** 私の名前は外しておきますね（もし3人目のフィードバックをしたい人がいれば、それは任意です）。「フィードバック1」で1つ、「フィードバック2」で1つ、有志として名前を記入してください。被りがないように、各自の名前がC列とE列にそれぞれ1箇所ずつ入るようにしてください。

**アーナンド**: [59:31] そしてフィードバックの動画を撮る際は、一番話しやすい言語で自由に話してください。最近の翻訳ツールは極めて優秀なので、言語は何でも構いません。つまり、**自分が一番表現しやすい言葉で率直な感想を話せば話すほど、相手にとっても理解しやすいフィードバックになる**ということです。気負わず、やりやすい方法でフィードバックしてください。

**アーナンド**: [60:16] それから、**上手く撮ろうとして何度も録り直すのはやめてください。フィードバック中のミスや戸惑いこそが、おそらく最も有益なフィードバックなのです。**「あれ、どこを押せばいいんだろう」と迷ったり、操作を間違えたり、「あ、ここにあった」と気づいたりする生の反応です。一発撮りで録画してください。それが最高のフィードバックになります。

**アーナンド**: [60:48] よし、3、4、5……8、9、10……ほぼ埋まってきましたね。素晴らしい。あと数名名前が入れば……ちなみにこれは任意ですので。ええと、現在何人いるか確認すると……少なくとも12名の名前がありますね。

**アーナンド**: [61:33] 皆さんが入力している間に……ここはしっかり埋めておいてくださいね。というわけで、**今日の課題の一つは、自分が担当すると手を挙げたアプリに対するフィードバック動画のリンクを記入すること**です。もちろん、自分のアプリのリンクを貼ることも課題です。Johanさん、Noa（ノア）さんがレビューできるように、できるだけ早くリンクを貼ってくださいね。他の皆さんは相手のリンクが見えているはずですので、確認してレビューを進めてください。KKさん、了解です。

**アーナンド**: [62:12] さて、Claudeから返ってきたレポートを見てみましょう。まず、何を行ったかを確認します。Claudeは3つのエージェントを立ち上げました。利用量（リソース消費）を見てみると、現在29%です。セッション開始時が約12%でしたので、5時間の上限枠のうち約17%しか消費していません。実質的に微々たる消費量です。

**アーナンド**: [62:56] つまり、**Haikuのようなモデルを使えば（安価なモデルなので意図的にHaikuを選びました）、市場調査を非常に効率よく行える**ということです。もしHaikuを選ばなかった場合、もう少しコスト（枠）を消費してしまい、5時間の上限がリセットされるまであまり変更作業ができなくなる可能性があります。まあ、たかだか5時間の制限ですので、大きな問題にはなりませんが。

**アーナンド**: [63:31] AIは様々な操作を行い、3つのペルソナを特定しました。**「選択肢が多すぎて行動できない初心者（Choice-Paralyzed Beginner）」「習慣化に挫折しがちな人（Serial Habit Quitter）」「試験対策を重視する現実主義者（Exam-Driven Pragmatist）」**です。まさにターゲットとして適切な3タイプの学習者ですね。そして実際の公開サイトでテストを行い、「あれこれ学習するのではなく、今日できる小さな一歩を踏み出す」というコアコンセプトは、3人全員に非常に好評だったと評価しています。しかし、**「最大の課題（ギャップ）は、セッション間で訪問の記憶（履歴）が保持されないこと」**だと指摘しています。したがって、これが最優先で改修すべき機能と言えます。

**アーナンド**: [64:19] さらに一連の改善機能を提案してくれています。これらも見ていきますが、調査がどのように行われたかを説明する詳細なレポートも作成してくれています。まず指摘されているのはテキストの不一致・問題点ですが、これは簡単に修正できるはずです。

**アーナンド**: [64:38] なるほど、これは非常に有益な提案です。**「常にユーザーの目標を画面上に表示しておくこと」**。私がRustを試していた時も、画面から離れて戻ってきた際に「自分はRustを学習中である」という表示が残っていれば助かったはずです。それから「どうでしたか？」という進捗確認など。ええ、非常に妥当で納得のいく提案だと思います。

**アーナンド**: [64:58] もちろん、これらすべてを修正する必要はありません。皆さんは3つのソースからフィードバックを受け取ることになります。1つ目はAIによるこのような市場調査、2つ目は人間2名からのフィードバック動画（フィードバック1と2）です。**これらすべてを受け取った上で、何を改善するかを自分で決めてください。すべてのフィードバックを受け入れる必要はありません。** どこを改良するかを自分で取捨選択し、サイトのアップデート版を作成してください。

**アーナンド**: [65:40] 皆さんには、エージェントによるリサーチログも共有してもらいます。私の場合を例にすると、共有するリンクは……どうやって共有すればいいか見てみましょう。チャット全体を共有できるはずです。「クラウドで継続」を押すと……ああ、コミットとプッシュが必要になりますね。これだと複雑すぎます。

**アーナンド**: [66:26] よし、少なくともこのレポートファイルを取り出してどこかに公開することにしましょう。どこに公開すればいいか？ どこでも構いません。Claudeに貼り付けて「どこかに公開して」と指示し、そのリンクをシートに貼るだけです。**この列も各自が記入すべき項目になります。**

**アーナンド**: [66:51] これで……この列をG列に移動しておきますね。各自が記入するのはこの3つの列になります。最初の2つはほぼ完了していますね。この列を埋めて、他の人からフィードバックをもらってください。そしてそれを参考にアプリケーションをアップデートしてください。

**アーナンド**: [67:21] 明日、セッションログをどのように共有すべきかの手順をお伝えします。ChatGPT、Codex、Claude、Claude Codeなど、何を使っているにせよ、自分が何を入力しエージェントが何を実行したかはどこかに記録されています。**それらのログの提出をお願いすることになりますので、明日のセッションでその共有方法を案内します。** これも課題の一部です。

**アーナンド**: [67:48] 明後日までには、他者からのフィードバックを取り入れ、変更後も正しく動くことを検証するテストを備えた、最初よりも確実にブラッシュアップされたアプリケーションが出来上がっているはずです。自動テストの提出はまだ現時点では求めません。提出は明後日になりますが、試してみたい人は明日に向けてテストを作成してみて構いません。

**アーナンド**: [68:23] まとめると、提出物は以下の通りです：
1. **エージェントによるリサーチ結果**
2. **2つのフィードバック動画リンク**
3. **アプリケーションの改善（推奨/理想）**
4. **自動テスト（任意）**

**アーナンド**: [68:37] 何か質問がある方はいますか？

**タカユキ**: [68:47] あの、私もフィードバックに参加した方がいいでしょうか？

**アーナンド**: [68:50] それは……完全にShukuさん（シュクさん）次第です。自由にしていただいて大丈夫ですよ。

**タカユキ**: [68:54] はい、わかりました。ありがとうございます。

**ヨハン**: [68:57] フィードバックの提出期限は金曜のセッションまででしょうか、それとも明日のセッションまででしょうか？

**アーナンド**: [69:08] **フィードバックは絶対に明日のセッション前、できれば今日中にお願いします。相手がアプリを改善・修正するための時間を確保できるからです。** まさにそれが理由です。

**ヨハン**: [69:18] わかりました。クレジットが回復したらすぐに公開状態にします、すみません。ありがとうございます。

**アーナンド**: [69:24] いいえ、大丈夫ですよ。明日は任意の参加セッションです。もし何か質問があれば、いつでも `askai@s-anand.net` 宛てにメールを送ってください。手が空いたときに私か、あるいは私のエージェントが返信します。もちろん、明日のセッションに直接参加して聞いていただいても構いません。

**アーナンド**: [69:50] 明日は今回の作業内容をいくつかレビューしていきます。また、明後日までに何をプレゼン（提出）する必要があるかについて、明日メールで詳細な指示を送ります。明後日の対面セッションでは口頭でのライブ発表は行わず、各自が作成した動画を共有する形式にします。これも言語は何語でも構いません。アプリの概要と自分が何をしたかを説明する、ほんの3分、あるいは2分程度の短い動画です。これは皆さん自身のポートフォリオの一部にもなります。

**アーナンド**: [70:34] それでは、これにて3日目のセッションを終了します。皆さん、ご参加ありがとうございました。退出していただいて構いません。明日、もしくは金曜日の対面セッションでお会いしましょう。さようなら。

**タカユキ**: [70:47] はい、ありがとうございました。
