コーディングエージェントの進化を点ではなく線で捉えてみよう!
「この番組は「エンジニアの成長は楽しい学びから」をモットーに、昨日より少し成長できる学びをワイワイお届けする、エンタメ系テックラジオですということで」
「さあ、やっていきましょう」
「AIに、存分に馬車馬のように働いてもらいたいなと」
「うん」
「まあ願っている日々ではございますが」
「はいはい」
「でですね、馬車馬と言いましたけど、今ハーネスエンジニアリングという言葉が非常に流行りつつあるなと思ってます」
「流行ってますね、確かに」

「はい。ハーネスって多分馬の、馬につける紐ですよね。違うわ」
「え?」
「紐に限んないのか。バグ」
「え、わかんないけど俺あの、あのイメージだったよ、なんか。手足とかがさ、不自由になっちゃったときのサポーターみたいなイメージ」
「え?マジで?」
「え?」
「それ何、逆に?」
「いや、なんだ、あの、あれだよ。肘パットとかそういうレベルのやつじゃないよ」

「あれですよね、あの」
「ま、それこそ義手みたいな。義足とか」
「いや、さすがにバグじゃない?バグっていうのは、あの」
「え?」
「馬、馬の道具」
「あ、そっちの、そっちのね。ちょっとごめん、エンジニアすぎたわ」
「ですよね。僕も今エンジニアだったなと思って」
「いやいや、ハーネス言いますけど。めっちゃいろいろあるな」

「なんかいろいろありますね、Wiki調べると。ま、まず第一に馬ですと」
「うん」
「で、あとは犬につける、あの、紐?」
「はいはいはい」
「をドッグハーネスって言いますよと」
「おお」
「で、あとはクライミングでつける安全ベルトもハーネス」
「はいはいはい」

「とかとか」
「あれだね。義足みたいなやつねえな」
「ないっすね。良かった」
「ねえな。なんか大体あれだね、あの、ベルト系だね、なんか」
「ベルト系」
「うん」
「はい。で、えー、戻りまして」
「はい」

「で、まあハーネスエンジニアリングっつうのがあるんすけど」
「うん」
「で、まあ結構多分世の中情報出てますと、いろいろ。こういうのがあるよ、やれといいよみたいな」
「確かに。最近ね」
「はい」
「Anthropicからもなんかアーキテクチャの話出てましたね」
「そうっすね」
「うん」

「ちょっと触れるかも、触れないかな、触れないかもですけど」
「はい」
「で、今日はそのハーネスエンジニアリングってこういうことだよねみたいなものを掴むためにですね」
「うん」
「ひまプロのなんかいいところとして僕思ってるのは」
「うん」
「なんか最新情報を点で捉えることもあるんですけど、どっちかっていうとなんか線で捉えようとするというか」
「はいはい」

「なんか基礎的なところ、基礎力」
「うんうんうん」
「みたいなものを大事にするのがなんか我々のいいところかなと思ってて」
「おお、長所ね。長所、歴史を重んじるところ」
「そう」
「うん」
「なので今回はあえてですね、Anthropicって結構テックブログでAIの使い方を発信してるんですけど」
「うんうんうん」

「Anthropicが、え、今に至る、2026年4月ぐらい」
「はい」
「ま、正確に言うと多分2026年初めぐらいまで」
「うん」
「に、えー、至るまでに、まあAIをどううまく働かせるような、働かせると良いよ、こうやるとうまく動いてくれるよみたいな話をしていたか」
「うん」
「で、それがどう移り変わっていて、今どうなっているのか」
「うん」

「みたいな話をすることによって、まあ今どうしたらいいっていうのもそうだし、あとは今後どうなっていくだろうかみたいなところの、その延長線を、延長線上にあるものみたいなもの」
「うんうん」
「までをなんかすごく軽く見通して」
「うん」
「で、じゃあ今度は自分たちにどう適用させていくのがいいだろうねみたいな話ができると良いなと思ってお話をさせていただきます」
「なるほどね。ハーネス単体というよりは、もうその登場までに至った背景みたいなのを追ってこう的な感じっすね」
「Yesですね」
「うん」

「はい」
「うん」
「で、まあハーネスエンジニアリングっていうワードだけちょっと出してたんで、1回概要だけ言うんですけど」
「はい」
「ざっくり言うと」
「うん」
「AIエージェントが状態とか情報、状況を理解して、えー、段階的に進められるようにするための」
「うん」

「まあ周辺のプロンプトとか」
「うんうんうん」
「えー、Gitのリポジトリとか」
「うん」
「えー、進捗のファイルとか」
「うん」
「機能リストとか、とかとかとか」
「うん」

「のことをハーネスと言ってて」
「はい」
「で、まあそれをうまいことエンジニアリングして、えー、うまいこと作り込んで」
「うんうんうん」
「で、うまくAIに動いてもらおうみたいな考え方がハーネスエンジニアリング」
「はい」
「になります」
「うんうん」

「はい」
「AIが動く環境を整えよう的な感じだよね、多分」
「そうっすね」
「うん」
「本当にそうです。で、このAIが整う環境を、うん?」
「ん?」
「AIが快適に動く環境を整えようみたいな話って」
「うん」

「別にね、それだけだったらなんかずっと言ってるじゃないですか」
「うん」
「懐かしいですよね、プロンプトエンジニアリングという単語ですら」
「え、嘘。俺いまだに使うよ」
「あ、マジっすか」
「うん」
「まあ仕事までは言わないですけど」
「うん」

「最近あんまり、まあ言われなくなってきたというか」
「ああ、まあ」
「ちょっと古いワードになりつつある」
「あれだと思うよ、あのエンジニア界隈ではそうだけど」
「はい」
「そうじゃない界隈では結構普通に使うイメージあるよね」
「そうじゃない界隈なんだ」
「うん」

「まあそれはもちろんそうですね。まあ実際にまだある概念でありますしね」
「うん。というか多分、なんて言うんだろう。エンジニア以外は、あのー、ハーネスまで踏み込まないというか」
「ああ、そうっすね」
「うん」
「そうっすね、どうなんでしょうね。時間の問題じゃないですか」
「時間の問題かな」
「うん、だと思いますよ。まあでもそれもちょっと今日の話終わった上で」
「うんうん」

「強い話もできるといいですね」
「うん」
「はい。というので、一旦ね、ちょっと歴史を軽く全体さらっといくんですけど、なんちゃらエンジニアリング系のワードだけちょっとおさらいします」
「へー」
「で、さっき言ったプロンプトエンジニアリング」
「うん」
「これ2024年ぐらいに言われてた、言われ始めてたやつなんですけど」
「おお、随分最近だな」

「2年前っすよ」
「いやー、でも歴史たどるで、2年前からでたどるのなんか結構斬新な体験だけどね」
「まあそうっすね」
「うん」
「今がだから1番振り返りやすいですよ」
「ええ、確かに」
「てか早いんだよな、だから動きが」
「いやそう、早すぎるよね。だってなんか他の技術ってさ、こう遡るにしてもさ、まあ大体2010年とかじゃない?なんか」

「だと思いますよ」
「新しいものですら」
「はい」
「ね」
「で、まあプロンプトエンジニアリングって言われるのは、まあプロンプトの書き方なんですけど」
「うん」
「えー、こうやって書くといいよ的な話で」
「うん」

「まあなので、あくまでAIに渡す文章」
「うん」
「を工夫しましょうねみたいな」
「はい」
「ところについて、えー、まあいろんなところでプラクティスが溜まって」
「うん」
「で、知見が溜まってこうやるといいよみたいなのがあったのが、まあプロンプトエンジニアリングですね」
「はい」

「で、そのあとに言われ始めてきたのが多分コンテキストエンジニアリングっていうワードなのかなと思ってて」
「おお、なるほどね」
「で、プロンプトに加えて」
「はい」
「えー、周辺ツールの定義とか」
「うんうんうん」
「会話履歴の扱いとか」
「うん」

「メモリどう使うとか、メモリっていうのは多分AIのメモリですね、CPU、CPUじゃない、コンピューターのメモリというよりは」
「コンテキストウィンドウ的なほうの?」
「ああ、そう。そうそうそう」
「うん」
「で、まああんまり渡しすぎると、えー、性能が落ちちゃうから」
「うん」
「じゃあまあプロンプト最小限にしつつ、ただインデックス的にこういうときはこのツール使ってねみたいなのを定義して」
「うん」

「うまいことやろうぜみたいなのが、まあコンテキストエンジニアリングっていう考え方かなと思ってます」
「はい」
「で、そのあとにハーネスエンジニアリングが出てきたみたいな」
「ああ。なんか僕この流れだと、あのエンジニアリングって名前はついてないんですけど」
「うん」
「RAGとかもなんか流れの一部なのかなっていう気はしてるんですけど、そんなことないのかな」
「うん。プロンプトエンジニアリングぐらいの時期ですよね、もう。RAG、結構、結構初期でしたよね」
「なんか、うん、そんなイメージだね。なんか、なんだ、プロンプトだけだと結局あれだから、そこでなんか外の、そのー、なんだ、エコシステム組み込み始めたのがRAGみたいなイメージがあるね」

「ああ、そうっすね」
「うん」
「そうだそうだ。その、そっか、一般的な情報以外をどう渡して」
「うん」
「で、実業務に生かすかみたいなところの課題解決のソリューションがRAGか」
「そうそうそうそうそう」
「はい。ありがとうございます。まあ、で、なんでちょっと戻ると」
「はい」

「多分、ご察しのとおりかもしれないんですけど」
「え、はい」
「まあプロンプトが1番ちっちゃい枠であって、それを包み込むようにコンテキストエンジニアリングっていうのがあって」
「うん」
「そのコンテキストエンジニアリングを包み込むようにハーネスエンジニアリングみたいな感じで」
「うんうん」
「なんかどんどん扱うものが広がってるようなイメージなのかなと」
「ああ」

「流れとしては捉えてます」
「なるほど。なんか絶妙にコンテキストエンジニアリングとハーネスエンジニアリングの合間、微妙、なんか認識微妙かも」
「えっと、合間っていうのは、その違いがなんなのかみたいな話ですか」
「うん、境界線が、なんとなくぼやけてる感じするというか」
「あ、はいはいはい。まあそれもちょっと今言うかあとで言うか」
「はい」
「迷いながらなんですけど」
「うん」

「まああとで言いますね。はい」
「はい、わかりました」
「はい。で、まあじゃあちょっと本格的に歴史をたどっていくんですけど、ここから」
「はい。うんうん」
「えー、2024年の11月25あたりに、まあMCPが出てきたりとか」
「そんな前だったっけ、あれ。あ、そっか」
「そうですね」
「で、そっからなんか盛り上がるまでなんか謎のあれか、エンジン温め期間があったのか」

「3か月か4か月ぐらいありましたかね」
「うん」
「で、それこそ前出ていただいた大坪さんが本、本出したのが2025の4月とか5月だったと思うんで」
「うんうん」
「まあにしてもちょっとスピード感すごいっすけどね」
「うん」
「まあなんで2024年の年末というか11月下旬ぐらいにMCPが出て」
「うん」

「で、12月ぐらいに、まあエージェントの使い方として、まあプロンプトはなんかシンプルにしたほうがいい、ほうがいいよみたいな」
「うん」
「ことがまあ言われるような、まあそのなんでしょうね、なんでプロンプトエンジニアリングが多分LLMが出てきた瞬間から多分あったワードなんですけど」
「うん」
「そこから、えー、コンテキストエンジニアリングっていう、例えば周辺ツールを使うみたいな文脈でMCPが出てきたりとか」
「はい」
「で、そういうLLM自身が扱う情報がどんどん増えてきたからこそ、まあ効果的にAIを動かすためには、複雑なことをやらせんじゃなくて、複雑なことをやらせるじゃないな、複雑な指示とか情報を与えるんじゃなくて」
「うん」

「えー、AI自身が触れる情報はシンプルにしておこうぜみたいな」
「うん」
「まあそんな感じで、えー、扱われてたっていうのが、まあ2024年末ぐらい」
「あ、そんな前からそうシンプル化しようぜって言われてたんだ」
「そうっすね」
「へー」
「MCP出てきてからとかなんじゃないかな。まあRAGも、RAGがあったときもまあもちろんそうだったと思いますけどね」
「うーん」

「RAGもでも結局そのままAIに情報を渡してないからこそ、コンテキストがあふれずに済むようなものですしね」
「うんうんうん」
「で、まあその後、2025年の9月にですね」
「うんうん」
「えー、Anthropicからコンテキストエンジニアリングという記事が出ます」
「2025年の10月?ん?」
「9月の末」
「9月」

「はい。で、この9月の末のコンテキストエンジニアリングに至るまでに、えー、Anthropicでは、えー、例えば、えー、Anthropicの社内ベストプラクティスっつって、えー、エクスプローラー、情報の探索、プラン、計画を立てて、実際にコーディングさせてコミットするっていう、こういうループを組もうぜみたいな話を出したりだとか」
「うんうん」
「あとはUltraSyncって言われる、あのー、クラウドで、今はあんのかな。えーっと、前UltraSyncっていうワードを渡すと」
「うん」
「AIが一生懸命考えてくれるっていう」
「ふーん」
「これはコマンドじゃなくてプロンプト」
「ああ」

「なんですけど」
「はい」
「あ、そういうふうになんでしょうね」
「スキルでもなく」
「スキルでもないです」
「シンプルにそのワードがトリガーになるみたいなこと?」
「あ、そうですそうですそうです」
「へー」

「なんかSyncだとそこそこ考えてくれて」
「うん」
「SyncHardだと」
「うん」
「Syncよりも考えてくれて」
「うん」
「SyncHarderだとそれによりも考えてくれて」
「うん」

「UltraSyncだと1番考えてくれるみたいなのがあったんですよ」
「いや、作りすぎだろ。そんななんか細かく分けられてもよくわからないな、それ」
「まあ実際はUltraSyncって使ってるぐらいだと思いますけどね」
「うん」
「見たことあんのはUltraSyncって言ってるのぐらいですけど」
「まあだってね、大体超考えるかそうでもないからどっちかでニーズ満たせそうだもんな」
「ああ、そうそうそうそうそう。まあそれがあの4月ぐらいに、4、5月ぐらいにそういう話が出てきて」
「うん」

「で、そのあと2025年6月にサブエージェントの話が出てきます」
「おお、はいはいはい」
「懐かしい。で、サブエージェントを使って」
「うん」
「えー、並列でタスクを実行すると」
「うん」
「そのサブエージェントはメインエージェントと。コンテキストが分かれてるから」
「うん」

「なんか余計な情報入ってなくて」
「うんうん」
「何かを検証するとか、なんかそういうタスクとかやりやすいし、情報収集とかもやりやすいし」
「うん」
「でもっと言うと、扱えるトークン量がそのサブエージェント分、モデルが分かれてるから」
「はいはい」
「増えるからまず精度上がるよねみたいな」
「うん」

「ところがまあ出てきて、で、えー、9月ぐらいに、さっきお伝えしましたけどコンテキストエンジニアリングっていうのがまあ出てきますと」
「ふーん」
「なので結局、あの思うに」
「うん」
「なんでしょうね、そのAIの、まあモデルもそうなんですけど、モデルというよりはやっぱり今の話ってAnthropicが社内でAI使い倒して」
「うん」
「で、いろいろやった結果こうやってるのがなんか精度出そうだぜっていうプラクティスをまあ公開して」
「うんうん」

「で、それでサブエージェントみたいな周辺機能ができて。で、そのあとに言葉が生まれるみたいな」
「うん」
「なんかそういう流れをたどってるなあと。なんかちょろっと調べて思ってたりしてました」
「うんうんうん」
「でもうすでに歴史を振り返るって言って2025年の9月末に到達してるわけなんですけど」
「いやもうね、だいぶ歴史というにはだいぶ直近なんだよな」
「もう半年っすよね、あと。ほぼね」
「うん」

「で、しかも9月にコンテキストエンジニアリングって言って、11月26にはハーネスっていうワードが生まれてます」
「あ、そこで生まれてるんだ」
「はい」
「へー」
「えー、EffectiveHarnessforLongRunningAgentsっていう」
「はいはい」
「記事がまあ出てて」
「うん」

「まあなんで2か月かコンテキストエンジニアリングの寿命というか」
「うんうん」
「まあ今も死んではないんですけど」
「まあね」
「で、このハーネス」
「うん」
「というワードのとおり、まあ結局なんかAIにロングランさせる、長いタスクをやらせたり、まあ複雑なことをやらせるうえで、まあどういう制限を設けたらうまいことやってくれるかみたいな」
「うん」

「話なんですね」
「うんうん」
「で、Anthropicが」
「はい」
「こういうふうにエージェント使うといい感じに動いてくれるぜっていうデザインパターンなのかな」
「うんうん」
「プロンプトのデザインパターンみたいのがあって」
「うんうんうん」

「で、そのデザインパターンがですね、なんか以前紹介したCCSDDの中でも使われてたり」
「うん」
「まあなんで要するにすげー人がこれめっちゃいいぞって作ってくれたクラウドのプロンプトの中にもそういうエージェントのデザインパターンみたいなのが存分に入ってて」
「はい」
「なんでちょっとここでこのデザインパターンに少し触れることで」
「うん」
「まあいいAIの使い方を少し感じてもらえればなという話に入ってきます」
「ほお。ちょっと待ってね」

「はい」
「順平が入ってこようとしているな」
「えっと、ちょっと今編集で多分ブチギってると思うんですけど」
「はい」
「急にハトが鳴ったと思うんですけど。カナダから順平が急に参戦してきて」
「お、突如として」
「てっきり。てっきり今日は来ねんかと思ってたけど」
「いや、すいません。お騒がせしました。カナダ早朝ですからね、今」

「5時半ですね」
「うん。いやー、おはようございます」
「おはようございます」
「はい」
「じゃあ、順平は気合いで話についてきてもらいつつ」
「はい」
「えー、クラウドコードの、えー、デザインパターンですね」
「うわー、なんだ」

「ちょっと紹介していく話をしようと思ったんですけど」
「なるほど」
「うんうん。えー、1つ目がプロンプトチェイニングって言われる使い方になります」
「プロンプトチェイニング」
「はい。で、これはまあ何かやります。で、品質ゲートを設けます」
「うん」
「その品質ゲートを設けたら次の指示をやります。で、その次の指示に対する品質ゲートで、まあだからHumanintheLoop、普通に」
「えっと、ごめんなさい、品質ゲートっていうのはあれですか、門番は自分ですか」

「はい」
「うん。え、つまりレビューのタイミングってことですか」
「あ、そうそうそうそうそう。で、まあもちろんそのLLMのタスクの中に、えー、AIが見るものは、見るというかAIがバリデーションするというか検証するステップは入れるべきだと思うんですけど。まあAIの使い方としては、このプロンプトチェイニングの意味としては人間が、いや人間に限んないのか」
「うん」
「すいません、人間に限んないかも」
「なるほどね。AIでチェックできるやつにそれで」
「コマンドでチェックしてもいいし」
「ん?」

「はい。コマンドというかスキル、そういうスキルを作って」
「うん」
「スキルに渡してもいいし」
「うんうんうん。今流行りのあのクラウドで開発をして、Codexでレビューさせるっていうのも1つですか」
「そんな流行ってんすか」
「いや、なんか」
「そんな流行ってんすか」
「なんか知らないけどみんな、こう、こう、なんかレビューはCodexみたいなイメージあるんだけど」

「うんうんうん。ちょっとよくわかんないな、なんでなんだろうな」
「なんでだろうね」
「そうなんだ」
「うん」
「謎。いや、それはどうなんでしょうね、さすがに商売すぎない?違うかね」
「え、そうなの?商売なのかな、これ」
「うーん。まあいいや、ちょっと専門外すぎて」
「はい」

「それは。はい、次」
「うん」
「2個目はルーティングになります」
「ルーティング」
「はい」
「はい」
「で、ルーティングは、えー、タスクを専門のサブエージェントに振り分けるってやつなんですけど」
「うん」

「うん。で、なので、なんだろうな、その何かのタスクを手分けしてやるっていうやり方もまあできるんですけど、どちらかというと、えー、TDDめっちゃ得意なサブエージェント」
「うんうん」
「えー、何?案件の知識めっちゃ持ってるサブエージェントみたいな」
「うんうんうんうん」
「そういう専門の下流のエージェントに、まあやることを振り分けて。で、まあ必要に応じて並列でやったり」
「うんうん」
「まあ1個で済むんだったら1個のエージェントに振り分けてやってもらったりみたいな」
「はい。うん」

「なんかそういうやることを振り分けてやってもらうみたいなのが、まあルーティングというパターンになります」
「うんうんうんうん」
「まあこれも使い込んでる人はまあよくやるやつかなと思いますね」
「各タスクの専門家作っとくみたいな感じですかね」
「そうですね、はい。で、3つ目。えー、3つ目がまあパラレリゼーション」
「パラレリゼーション」
「パラレリゼーション。で、これちょっとさっきのと分かれてんだって感じですけど、まあ並列でサブタスクをさせるっていう」
「うんうん」

「ものですね、とにかく」
「はい」
「あとはなんかおもしろいのが、複数のサブタスクに同じことをやらせて、で、多数決取らせるみたいなのもできるみたいです」
「うわー、それトークン金持ちやん」
「トークン金持ちですね。まあでもトークンやっぱ使えば使うほど精度は上がるよというのはまあAnthropicも去年の9月のブログで書いてたみたいなんで」
「ああ」
「9月だっけな。トークン金持ち」
「ああ、そんな無制限に使えないっすわ。それ全然ちょっとわかってなくてあれなんですけど、並列になるタイミングって、そのプロンプトで指示したタイミングで勝手に並列になるってことなんですか」

「なる」
「うーん」
「なる」
「指示内容を判断して、これはこのエージェントだ、これはこのエージェントだってなっていく」
「あ、えっと、ちょっと語弊があったわ。えーっと、そういうプロンプトを書けばやってくれる」
「うん」
「やってくれるはず。で、まあよくあるのは、うーんと、スキルで定義してるんじゃないかな。スキルでこういうことをやるときは、こういうやつとこういうやつとこういうやつがサブエージェントでいて、それを並列で動かしてねみたいなことがまあ書いてある」
「うん」

「で、それを使うことがまあよくあるかな」
「なるほど」
「プロンプトで投げても多分やってくれるけど」
「うんうん」
「って感じ」
「ああ、理解です」
「うん」
「ます」

「はい。で、4つ目がオーケストレーターワーカーズっていうので。えー、これはあのオーケストレーターっていうPMみたいなやつがいて」
「うん」
「ワーカーに何かを振って。で、えー、みんなで進めていくみたいな」
「え、ルーティングと何が違うんだ?」
「で、ルーティングと違うのが」
「そのPMみたいなやつがいることじゃないんですか」
「そう。で、なおかつサブタスクのワーカーは動的に作られる」
「へえ」

「うーん」
「そういうこと?」
「うん。こともあるらしい」
「メタモンみたいなこと?」
「メタモンというよりは、なんか例えば何々の機能を開発、あ、実装するっていうタスクがあったときに」
「うん」
「設計する場合、コードの調査するやつと、えー、なんだろうな、なんかできたものをレビューするやつと。あとどんな人がいる?」
「うん。えー」

「あー、インフラ、AWSめっちゃ詳しいからAWSのチェックしてくれるやつと」
「はい」
「えー、ドメイン駆動設計めっちゃ詳しいやつと」
「あとテストモンスター」
「みたいなのがわか、あ、そっかとか」
「はい」
「まあ設計だったらテストいらないかな、多分」
「ああ」

「あ、テ、テスト戦略の定義するやつはいるかもしんないですけど」
「うんうん」
「まあそういうのを動的に分けて」
「へえー」
「やってく」
「うーん。動的に作られたあとは削除するんすかね、そのままいるんですかね」
「えっと、まあ基本的に動き終わったらいなくなるね」
「うん」

「うーん」
「うん。その場で採用から作業までやっちゃうみたいなイメージなんですね」
「あ、うん、採用?あ、人の?」
「あの人だったら」
「余計に今回のチームはこういう人が必要だよねって言って、ババババって採用して、作業終わったら解散って言って」
「タイミーで来るんじゃないですか」
「すげえな」
「タイミー?」

「タイミーで、はい」
「タイミーで」
「タイミーだ完全に」
「日雇い」
「すごい世界観だよね、それ」
「すげえな」
「キャッチアップがもうない世界はそうかもしれない」
「うん、確かに」

「AIが発達しすぎて」
「うん」
「人が責任しか取らなくて良くなった世界はそうなってるかもしれない」
「ほんとだね、すごいな」
「ピピー集合って言って、わー。解散」
「解散、こういう世界だ」
「1週間で終わるみたいな」
「すごいな」

「すげえ。えー、で、最後がエバリュエーターオプティマイザーっていうので。えーっと、生成、評価、フィードバック、再生成っていうのをぐるぐるぐるぐる回して」
「うん」
「えー、精度のいいものを生成するっていうパターン」
「ああ、GANみたいだね、なんか」
「ああ、そう。同じことを思った」
「GAN?」
「GANとは」
「GANとは?」

「GenerativeAdversary」
「え、えーとりしょ?」
「敵対、敵対生成ネットワークみたいなやつよね」
「そう、敵対的生成ネットワークかな。まあ、AIが作ったものを作るAIと、ん?画像を作るAIと、その作った画像がAIのものかAIじゃないものかを判定するAIを2つ並べて作って、両方競わせて競わせて競わせて、どっちも強くなってって、最終的に生成するAIだけ使って画像生成するみたいな」
「ふーん」
「まあそんなやつがあるんですけど、まあこれも同じっすね。評価するやつと最適化するやつを分けて、あ、違うわ、生成するやつと評価するやつを分けて、で、最終的成果物をいいものにするっていうやつですね」
「うんうんうん」
「で、これはあの注意してほしいのは、評価基準がなんか明確なときのほうが有効らしいですね」

「うーん」
「なんで多分アートとかだとあんま意味ないというか」
「うんうん」
「まあみたいです」
「うんうん」
「で、まあこれパターン紹介したんですけど、まあそういうのあるんだなとか思いながら、えー、実際にさっき言ったようなCCSDDとかにも使われてるものはあって。えー、オーケストラワーカーズみたいなのは多分CCSDDではサブエージェントで開発するコマンドがあるんですけど」
「うん」
「なんかそういうので使われてたりとか。えー、チェイニングっていう最初のなんか何かやってチェックしてみたいな流れも」

「うん」
「割とCCSDDのそのフローにのっとってる。要件定義して設計して、人間がチェックして開発して人間がチェックしてみたいなループに、えー、ループと一緒だなっていうところがあったり」
「うんうん」
「と、まあこういうパターンってやっぱり世の中のそのプラ、プラグイン」
「うん」
「に、まあやっぱり入ってたりするんで」
「うん」
「まあもちろん自分で学ぶことは非常に重要だし、えー、自分で何かLLMの使ったアプリを作る上では、この辺のパターン意識していく必要があるんだなっていうのも思いつつ」

「うん」
「まあ使うだけだったら多分プラグインを素直に使ってしまって。で、Anthropicがこうするといいよみたいなものをプラクティスをプラグインから摂取していくみたいな」
「うんうん」
「うん。ことがまあ1番燃費いいかなと個人的には思ってたりします」
「なるほどねー。いや、なんかこういうパターンを見てるとさ」
「はい」
「なんかレイヤーは変わったもののやっぱやること同じなんだなってすごい思ってて」
「はいはいはい」

「結局1個1個の役割を小さく保つみたいな、なんかすごい関数みたいだなと思ったね」
「うん。そうなんすよね」
「うん」
「なんか、あと多分疎結合にしとくべきとか」
「うん」
「結局、結局変わんないっすよね」
「うん」
「情報を整理するっていうことじゃないですか、結局あのリーダブルコードって」

「うんうんうん」
「だから、なんて言えばいいんだろう、そのコードを、見やすいコードを書くっていう観点で言うと多分いらなくなったのかもしんないですけど」
「うん」
「見やすく情報を整理し続けるっていう点では、なんかずっと本質変わんないのかもしれないですね、ひょっとしたらね」
「うん」
「コンテキストがびっくりするぐらい増えて、どんだけぐちゃぐちゃでも正しく解釈できるみたいなやつが出てくるんだったら」
「うん」
「まあいいのかもしんないですけど」

「うん」
「でもどんだけ性能上がったってね、整理されてたほうが性能出るはずだからな」
「うん」
「うん。はい。まあみたいな感じでちょっとこうやって使うといいよみたいなAIを、AIのそのデザインパターンみたいなのもちょっと覗いたんですけど」
「うん」
「で、時間がそこそこいったんで、だんだん締めていこうかなと思っていて」
「だんだんね、はい」
「はい、だんだんね。で、ハーネスエンジニアリングですよ」

「はい。ハーネスエンジニアリング」
「最初プロンプトエンジニアリングから始まって、前提は知らないよね。準備は途中から入ってから知らないんだけど」
「聞き直しますね、アップロードされたら、はい」
「えー、プロンプトエンジニアリングから始まってコンテキストエンジニアリングになってハーネスエンジニアリングという概念にどんどん移ってきましたと」
「うん」
「で、最初のりさんがコンテキストエンジニアリングとハーネスエンジニアリングのなんか違いの部分ってどういうニュアンスなんだろうみたいな話されてましたけど」
「うん」
「えー、これはちょっと僕の解釈なんですけど」

「はい」
「なんかどんどんAIを使っていく上で新しい概念出てくるじゃないですか」
「うん」
「なんかサブエージェントもそれこそ途中から出てきたし」
「うんうん」
「FXとかスキルズとか」
「うん」
「も途中から出てきたし。で、今までのその当時言われてたコンテキストエンジニアリングの概念だとさらえなかった、例えばスキルズみたいなところ」

「うんうんうん」
「をひっくるめるたびになんか新しいワードができて。で、なおかつそのコンテキストエンジニアリングとかプロンプトエンジニアリングって結局、なんて言えばいいんだろうな、なんかよく動いてもらうための考え方だったと思うんすけど」
「うんうん」
「ハーネスエンジニアリングで重視されてるのって制限を設けることだと思ってて」
「ほう」
「動きに。えー、成果物がよくわからないものにならないようにするためにちゃんと、えっ、テストを絶対にやれよっていう」
「うんうん」
「ことを強制させるとか」

「うん」
「で、あとはその進捗管理をさせるために、プロンプトとかとはまた別で、進捗管理ファイルなのか外部システムとつなげてタスク管理させるのか」
「うんうん」
「なんかそのへんのデザインというか」
「はい」
「までひっくるめるみたいな」
「うんうんうん」
「コンテキストウィンドウの外側をどう扱っていくかみたいな」

「はいはいはい」
「多分そこなのか」
「あれか、そうだね」
「コンテキストウィンドウの外側、外側をどうにかしていくっていう考え方がまあハーネスエンジニアリングなのかなっていう」
「うんうんうん」
「うーん。イメージだと思ってます」
「確かに」
「で、こうなってくるとなんかもうこれ以上登場しようがないんじゃないかって思ってたりするんですけど」

「ああ」
「実はなんかあんのかもしんないですね」
「いや、きっとあるよ」
「絶対あるんだろうね」
「そう、なんか出てくるんだよ」
「うん」
「はい」
「なので、ぜひちょっと皆さんもね、コンテキストエンジニアリングから飛び出して、えー、コンテキストウィンドウ以外のところの情報を、まあどう扱っていくかっていうのをぜひチームで整理したりとか」

「うんうん」
「あ、ちょっと最近気になってるのが、あのー、クラウ、Claudeで、えー、オンボーディング用の資料を作るっていうコマンドが生えたみたいで」
「うーん」
「へー」
「そう、今までの自分が、今まで自分が使ってたClaudeのチャットのやり取りとか、うん、チャットのやり取りだったかな。ちょっと調べます」
「ハーネスってあれですよね、馬に、馬につけるやつ」
「そう」
「そう。紐とかアンマとかあのへん」

「うん」
「あ、そこらへんも含むんだ」
「そうだ」
「プロジェクト構造とセッションの履歴、履歴からオンボーディング用のドキュメントを作って、で、それをチームメンバーに渡してClaudeコードに読み込ませると、なんかいい感じに情報共有できたりとか、スキルズとかMCPとか共有できるよみたいな」
「うんうんうん」
「なんかそんなんができてるみたいなんすけど、そのなんか結局情報を整理して、で、いかに共有するかみたいなところがチームでLLM使っていく上ですごい重要になるのかなと思ってるんで」
「うんうん」
「なんかそのへんのデザインとかを勉強して実践できるといいなと思いながらちょっとまたこれからも勉強していきます」

「ありがとうございます」
「はい」
「お願いします」
「まあなんで、はい。まあふわっとしたエピソードだったのかな。まあちょっと線で捉えられたかなと思ってます」
「うんうん」
「最初はコンテキストじゃないや、プロンプトエンジニアリングっていう、まあAIに渡すところを、まあどうやっていくかみたいなところから始まって、えー、コンテキストエンジニアリング、え、プロンプト以外のAIに渡せる情報をどうするんだろうっていうところ。で、今はハーネスエンジニアリング。えー、コンテキストウィンドウ以外のところで情報をどう渡すとか管理するとか」
「うんうん」
「まあそういう概念になってきま、きてるんでっていう話でした。はい、では締めます」

「はい」
「ハッシュタグ。ひまじんプログラマーでSNSのXでフィードバック募集してますので、本日のエピソードの感想とか、えー、チームでどう運用してるとこかが僕は非常に今気になってるので」
「うん」
「え、そういうのあったらぜひコメントお願いします」
「確かにこれ、複数の人がAIに指示出したいときどうすんだろうね」
「え、どういうこと?」
「あ、いや、なんか1個のものを作るっつってさ、エージェントのチーム作ってさ、これは指示出すぞーって。複数人が同時にやれないじゃないですか、なんか」
「うん」

「あーと、お、同じことを?」
「うん」
「はい。やりたいことあるかな。え、ど、どういうケースですか、それ」
「ないか。いや、なんかその」
「複数」
「はい」
「ロングランになった場合っすね。今ってさ、要はタスク1個が割り振られ、それぞれのメンバーに割り振られて開発するわけじゃないですか」
「はい」

「もう今ってやろうとしてることってこうロングランというか、長時間稼働するものを作ろうとしてて」
「はい」
「それってなんか1タスク終わらすにはなんかあんまり意味ない動きじゃないですか」
「あー、そういうこと?」
「ってなったらもしかしてタスクの単位が1個プロダクト作るぐらいの感じになるのかなっていう」
「いやー、なんないんじゃないですか」
「なんないかな」
「多分、えっと、なんのかな。これちょっとアジャイル、アジャイルマンからすると」

「うん」
「まあ、いやさすがに数時間でできるならいいと思うんすけど」
「うんうん」
「プロンプ、えっとプロダクトが。1日とかだとフィードバックループとしてはしんどくないですか、多分」
「あー、1日でAIがかけちゃう行動の量が多すぎてってこと?」
「そうそうそうそうそう。結局多分ヒューマンインザループは崩さない、崩してはならないとは思うので」
「うんうん」
「多分1日やってだめだったら直すの1日かかりそうじゃないですか、まあ物によるけど。うわー、ちょっと来年何言ってんだってなりそうですけど」

「そういうこと往々にあるからね」
「往々にある、はい。うん、まあなんかよく聞くのはやっぱり2時間とかで1時間とか2時間とかで終わるタスク」
「うん」
「であることが多いとは思うんすよね、実装は。設計はもっとかかりますけど。うーん。まあでもそれはあくまで僕が見てる世界なんで。世の中は変わる、もっと違うかもっすね、確かにのりさんの言うとおり。うん」
「で、あとは、えー、ポッドキャストのエピソード説明欄からGoogleフォームで番組の要望、感想、質問お待ちしてます。で、エピソード説明欄ではなくチャンネルの説明欄からSlackオンラインコミュニティひまプロ談話室の参加申し込みフォームございますので、えー、そちらクリックしてぜひ、えー、コミュニティ参加お願いします」
「はい、一応あのフォームに回答したら、えっと、完了ページに参加用のURL出るようにしてますんで」
「おお」
「そっから入れます」

「便利」
「はい」
「ます」
「やばいやつがめっちゃ入ってきたら、また人間の承認に変えなきゃいけないので」
「うん」
「いやいやいや」
「ぜひマナーを守ってご利用お願いします」
「まあね、まあでも元々ノーチェックであの招待出してたんで」

「うん」
「あのメアドからね、やばいやつ来るかわかんないんすよね」
「うん」
「なんかじゅんぺい絶対殺す@gmail.comとかだったらリジェクトするかもしんないんですけど」
「ちょっと入れてみたいんですけどね」
「入れてみたいね」
「入れてみたいか」
「そういうなら入れてあげるよ、じゃあ」

「しろ」
「はい」
「で、最後に、えー、各種ポッドキャストプラットフォームのフォロー、高評価もお願いします」
「お願いします」
「お願いします」
「それではまた次回」
「ばいばい」
「ばいばい」

「そう」
「こんばんは、6時のニュースです。まずはこちらのニュース。上野公園でパンダの赤ちゃんが生まれました。名前はペイペイになったようです。あ、おっと、ここで速報がありました。現場ののりさん」
「あー、こちら現場ののりさんです。なんと、駆け出しエンジニアを成長させるポッドキャスト番組、ひまじんプログラマーの週末エンジニアリングレッスンの最新話が配信されたようです」
「いやー、今回はどんなエピソードなんですかね」
「いやー、ちょっとわからないんですけど、私もちょっと家に帰ったら早速聞いてみたいと思います」
「あー、気になりますね」
「のりさん、中継ありがとうございました」
「はーい」

「続いては、秋の訪れを感じるこんなニュースが届きました」