AI コーディングについて知っていたことは全て間違いだった

AAI LABS
Computing/SoftwareInternet Technology

Transcript

00:00:00BeemadやSpeckitなどのAIコーディングフレームワークについてはすでにご存知だと思いますが、
00:00:04これらだけではありません。
00:00:06何百人もの人々が独自のワークフローを実験し、
00:00:08リリースしていますが、
00:00:09実際に試してみると、
00:00:10約束を果たせないことが多いことに気づくでしょう。
00:00:13これは手法が悪いからではなく、あなたの特定のユースケースに適合していないからです。
00:00:18アプリを構築する際、ほとんどの場合、既製のワークフローに頼るのではなく、独自のワークフローを作成します。
00:00:23これは、
00:00:24ワークフローは特定のユースケースに合わせて構築されるべきであり、
00:00:27構築しようとしているプロジェクトと整合している場合にのみ機能するためです。
00:00:30では、独自のプロセスに合わせたワークフローをどのように構築すればよいのでしょうか?
00:00:32そのためには、特定の原則を知る必要があります。
00:00:34これらは、すべてのフレームワークが何らかの形で使用している原則です。
00:00:38主要な原則について説明する前に、これらのAIツールのコンテキストウィンドウの中身を知ることが不可欠です。
00:00:44これは非常に重要です。なぜなら、コンテキストの管理こそが、これらのフレームワークが行っていることの基本だからです。
00:00:48コンテキストウィンドウとは、基本的にモデルが一度に記憶できる情報量のことです。
00:00:53モデルのコンテキストウィンドウから外れたものは、作業メモリから外れ、それを思い出す方法はありません。
00:00:59モデルには限られたコンテキストウィンドウがあります。
00:01:00例えば、
00:01:01Anthropicのモデルは20万トークンのコンテキストウィンドウを持ち、
00:01:04Geminiのモデルは100万トークンを持っています。
00:01:06送信するメッセージの観点からは非常に大きな数字に見えるかもしれませんが、
00:01:10実際にはそれほど巨大ではありません。なぜなら、
00:01:12これらのAIツールでは、
00:01:13コンテキストウィンドウはシステムプロンプトとユーザーメッセージだけでなく、
00:01:17過去のメッセージ、
00:01:18メモリファイル、
00:01:19ツール、
00:01:20MCP呼び出しなど、
00:01:21他の多くのものも含まれているからです。
00:01:23この限られた作業スペースを最大限に活用する方法を学ぶ必要があります。そうすれば、
00:01:27ワークフローを構築する際に、
00:01:28モデルが望み通りの動作をするようになります。
00:01:30このビデオ全体を通して、
00:01:31主要なコーディングツールとしてClaude Codeを使用しますが、
00:01:34すべてのプラットフォームにこれらの原則に必要なツールがあるため、
00:01:37どのプラットフォームでもワークフローを構築できます。
00:01:39最も重要な原則であり、あらゆるワークフロー設計の鍵となるのは、プログレッシブ・ディスクロージャー(段階的開示)です。
00:01:44つまり、
00:01:44LLMに重要なものだけを明らかにし、
00:01:46将来必要になるかもしれないすべてのものでコンテキストウィンドウを満たすのではなく、
00:01:51今実際に必要なものにモデルの注意を集中させるということです。
00:01:54現在、
00:01:55Sonnet 4.5のようなより高度なモデルには、
00:01:58コンテキスト編集機能が組み込まれており、
00:02:00何がノイズかを理解し、
00:02:01自動的にフィルタリングしようとします。また、
00:02:04grepコマンドを使用して、
00:02:05必要なものを絞り込みます。
00:02:07しかし、それだけでは十分ではありません。
00:02:08曖昧な指示を与えると、これらの新しいモデルでさえ、必要のない多くのものを読み込み、ウィンドウを汚染してしまいます。
00:02:14バックエンドのエラーを修正するようClaudeに依頼する代わりに、
00:02:17すべてを一度に修正するように依頼するのではなく、
00:02:20エンドポイントを1つずつチェックするように依頼する方が良いでしょう。
00:02:23Claudeのスキル機能は現在オープンソースになっており、すべてのツールで使用できます。
00:02:27スキルは、プログレッシブ・ディスクロージャーの具現化とも言えます。
00:02:29その説明は、
00:02:30すべてをコンテキストに読み込むことなく、
00:02:32各スキルをいつ使用すべきかをAIコーディングプラットフォームが知るのに十分な情報を提供します。
00:02:38人々が犯す大きな間違いは、すべてにMCPを使用することです。
00:02:41MCPは外部データが必要な場合にのみ使用し、それ以外はすべてスキルを使用する必要があります。
00:02:462番目に重要な原則は、今すぐ必要でない情報はコンテキストウィンドウに含めるべきではないということです。
00:02:52これを実現するために、ツールは構造化されたノート取りを使用します。
00:02:55これを活用して、AIツールに決定事項、問題、技術的負債を文書化するために使用できる外部ファイルを提供することができます。
00:03:03このアプローチにより、
00:03:04エージェントは、
00:03:05本当に複雑なものを構築する際に失われる可能性のある重要なコンテキストを維持できます。
00:03:09これらのツールには、コンテキストウィンドウを管理するための圧縮機能もあります。
00:03:13コンテキストがリセットされた場合、圧縮サマリーだけに頼る必要はありません。
00:03:17例えば、
00:03:18エージェントはこれらのノートを使用して、
00:03:20すでに完了したことと、
00:03:21まだ行う必要があることのコンテキストを得ることができます。
00:03:23このアプローチは、本質的に複雑な長期タスクに特に役立ちます。
00:03:28agent.mdについてはご存知かもしれません。
00:03:30これは、すべてのエージェントがセッションを開始する前に読み取る標準的なコンテキストファイルです。
00:03:34一部のエージェントはこれに従わず、
00:03:36claud.mdなど独自のものを持っており、
00:03:38私はこれらを使用して、
00:03:39外部ファイルがどのように構造化されているか、
00:03:41それぞれに何を書くべきかをエージェントに指示しています。
00:03:44時々、これらのエージェントは長時間実行されるタスクの途中でランダムに一時停止します。
00:03:47これが起こる多くの場合、コンテキストが制限の70%を超えているためです。
00:03:52ここで、アテンション・バジェット(注意予算)の概念が登場します。
00:03:55コンテキストウィンドウとは、出力を生成する際にモデルが注意を払うものです。
00:03:5970%を超えると、モデルはより集中しなければならず、ハルシネーション(幻覚)の可能性が高くなります。
00:04:04AIエージェントの観点では、ツールを効果的に使用できなくなり、多くの場合、単にそれらを無視することを選択します。
00:04:10これを解決するために、使用できるいくつかの組み込みツールがあります。
00:04:14すでにご存知のように、
00:04:15圧縮により、
00:04:15モデルは起動プロンプトとして何が起こったかの適切なサマリーと、
00:04:18縮小されたコンテキストウィンドウで新たに開始できます。
00:04:21したがって、
00:04:2290%まで埋めて自動圧縮機能をトリガーするのではなく、
00:04:25コンテキストウィンドウに注意を払い、
00:04:26自分で行うようにしてください。
00:04:28実験している場合は、
00:04:29Claudeの組み込みの巻き戻し機能を使用して、
00:04:31不要な部分を継続してClaudeに変更を依頼するのではなく、
00:04:34削除できるようにしてください。
00:04:36また、
00:04:36新しいタスクごとにクリアするか、
00:04:38新しいコンテキストウィンドウを開始して、
00:04:39以前のコンテキストがモデルを遅くしないようにする必要があります。
00:04:42プログレッシブ・ディスクロージャーの原則から派生するもう1つのことは、
00:04:45メインのコンテキストウィンドウを汚染することなく、
00:04:48これらのエージェントがバックグラウンドでタスクを実行できることです。
00:04:51サブエージェントは独自の分離されたコンテキストウィンドウで動作し、出力のみをメインエージェントに報告します。
00:04:57これは、
00:04:57互いに分離されたタスクに取り組む場合に特に役立ちます。なぜなら、
00:05:01メインのコンテキストウィンドウは、
00:05:03サブエージェントが行うツール呼び出しや検索で肥大化することから保護され、
00:05:07情報が専用の作業ゾーンに留まることが保証されるからです。
00:05:10これらのエージェントはバックグラウンドで実行されるため、
00:05:13メインエージェントとのやり取りを続け、
00:05:15実際に注意が必要な何かに取り組ませることができます。
00:05:17作業している新しいフレームワークのルールなど、何かを調査してほしい場合は、これらのサブエージェントを使用します。
00:05:23この方法で、ツール呼び出しや検索が分離され、メインエージェントに答えを返すだけです。
00:05:29ノート取りの原則を理解している場合は、どのタスクにどのファイル形式を使用すべきかも知っておく必要があります。
00:05:34これらのファイルは異なる形式を持っているため、トークン数、ひいてはワークフローの効率に影響を与えます。
00:05:40YAMLは最もトークン効率が高いため、主にデータベーススキーマ、セキュリティ設定、API詳細に使用しています。
00:05:46そのインデントは、モデルが情報を適切に構造化するのに役立ちます。
00:05:49Markdownは、
00:05:50claud.mdのようなドキュメントに適しています。見出しレベルにより、
00:05:54モデルがセクション間を移動しやすくなるためです。
00:05:56XMLは、特にClaudeモデル向けに最適化されています。
00:05:59Anthropicは、
00:06:00彼らのモデルがこれらのタグをコンテナや区切り文字として認識するようにファインチューニングされていると述べており、
00:06:06制約、
00:06:06サマリー、
00:06:07視覚的詳細などの明確なセクションがある場合に便利です。
00:06:10他のモデルは一般的に、XMLよりもMarkdownとYAMLを好みます。
00:06:13最後にJSONです。
00:06:14すべての余分な中括弧と引用符のため、
00:06:16最もトークン効率が悪いため、
00:06:18タスク状態のような小さなものにのみ使用し、
00:06:21ほとんどの場合、
00:06:22使用を推奨しません。
00:06:23Gitは、プログラミングを始める際に教えられる最も基本的なものの1つです。
00:06:26これらのコンテキストワークフローには、
00:06:29プロジェクト全体でも単一のタスクでも、
00:06:31進行状況のリマインダーとして実際にgitのコミット履歴を使用するという別のトレンドが見られます。
00:06:37進行状況の保存に使用したくない場合でも、
00:06:39一般的に、
00:06:40これらのコンテキストエンジニアリングワークフローは、
00:06:42git初期化されたリポジトリで使用する必要があります。
00:06:44コンテキストエンジニアリングワークフローを持つということは、
00:06:47モデルにすべてを一度に実行させるのではなく、
00:06:49計画されたステップを一つずつ実行させることを意味します。
00:06:51どの段階で問題に遭遇しても、
00:06:53gitを使えばどのバージョンに戻すかを制御でき、
00:06:56どの変更が問題を引き起こしているかを評価するのに役立ちます。
00:06:59また、gitのワークツリーを使って並列処理を実装している人もいます。
00:07:02私も、サブエージェントが専用のワークツリーで並列作業を行う多くのワークフローを紹介してきました。
00:07:07どんなワークフローを作成したとしても、一般的な手順のために指示を繰り返すケースは必ず発生します。
00:07:13良い例としては、AIツールにgitコミットやドキュメントの更新を依頼する方法があります。
00:07:18ほぼすべてのAIツールには、最も繰り返し使用するプロンプトを再利用する方法があります。
00:07:22私は自分のプロジェクトでカスタムコマンドをよく使用しています。なぜなら、
00:07:25それらは基本的にClaudeに再利用可能なガイドを提供するからです。
00:07:28私はよくcatchupコマンドを使用していますが、
00:07:30これにはコンテキストウィンドウの外でメモリをどのように構造化するかの指示が含まれているため、
00:07:34Claudeはすべてのファイルを読むのではなく、
00:07:36プロジェクトの状況を把握する方法を理解できます。
00:07:38これらは構造を強制するのにも優れています。
00:07:40コミットとドキュメントが定義された形式に従うように、
00:07:43私はcommitコマンドを使用しており、
00:07:45これはコミットメッセージの書き方とコミット前に実行すべきプリコミットチェックについて特定の構造に従います。
00:07:51このようにして、
00:07:52/commandsはすべてを標準化し、
00:07:54私が好む方法でタスクを実行するようClaudeに何度も指示する必要がなくなります。
00:07:58ご存知の通り、MCPは外部データが必要な場合に使用すべきです。
00:08:01Jiraは最も広く使用されているチーム管理ソフトウェアです。
00:08:04チケットから情報を取得したい場合は、
00:08:06Jira MCPを使用することで、
00:08:08チケットに直接アクセスして変更の実装を開始できます。
00:08:11同様に、
00:08:11私はFigma MCPを使用してClaudeにアプリのスタイルガイドを提供し、
00:08:16それをデザインの構築に使用させています。
00:08:18モデルの組み込み機能が不十分なタスクでは、外部ソースと効率的に対話するためにMCPが不可欠です。
00:08:25これらのMCPを/commandsに直接含めることで、ワークフロー全体の一部にすることができます。
00:08:31これでこの動画は終わりです。
00:08:32チャンネルをサポートして、
00:08:34このような動画を作り続けられるよう応援していただける方は、
00:08:37下のスーパーサンクスボタンをご利用ください。
00:08:39いつもご視聴ありがとうございます。次の動画でお会いしましょう。

Key Takeaway

AIコーディングツールを効果的に使うには、既製フレームワークに頼らず、プログレッシブ・ディスクロージャーやコンテキスト管理などの原則を理解して自分のユースケースに合わせたワークフローを構築することが不可欠である。

Highlights

既製のAIコーディングフレームワークは自分のユースケースに適合しないことが多く、独自のワークフローを構築する必要がある

プログレッシブ・ディスクロージャー(段階的開示)が最も重要な原則で、LLMに今必要な情報だけを提供することでコンテキストウィンドウを効率的に管理する

構造化されたノート取りと外部ファイルを活用して、重要な情報をコンテキストウィンドウの外に保存し、長期タスクでのコンテキスト維持を実現する

コンテキストウィンドウが70%を超えるとモデルの性能が低下するため、圧縮や巻き戻し機能を使って注意予算を管理する必要がある

サブエージェントを使うことで、メインのコンテキストウィンドウを汚染せずにバックグラウンドでタスクを並列実行できる

ファイル形式(YAML、Markdown、XML、JSON)のトークン効率を理解し、用途に応じて使い分けることが重要

MCPは外部データが必要な場合のみ使用し、それ以外はスキルを使うことでワークフローを最適化する

Timeline

イントロダクション:既製フレームワークの限界と独自ワークフローの必要性

BeemadやSpeckitなどのAIコーディングフレームワークが多数存在するが、実際に試すと約束を果たせないことが多い。これは手法が悪いのではなく、特定のユースケースに適合していないことが原因である。アプリ構築では既製のワークフローに頼るのではなく、独自のワークフローを作成する必要がある。独自のプロセスに合わせたワークフローを構築するには、すべてのフレームワークが使用している特定の原則を知ることが重要である。

コンテキストウィンドウの基本概念と管理の重要性

AIツールの原則を理解する前に、コンテキストウィンドウの中身を知ることが不可欠である。コンテキストウィンドウとは、モデルが一度に記憶できる情報量のことで、ウィンドウから外れた情報は作業メモリから消える。Anthropicのモデルは20万トークン、Geminiは100万トークンのコンテキストウィンドウを持つが、実際にはシステムプロンプト、過去のメッセージ、メモリファイル、ツール、MCP呼び出しなど多くのものが含まれるため、思ったほど大きくない。この限られた作業スペースを最大限に活用する方法を学ぶことで、モデルが望み通りの動作をするようになる。

プログレッシブ・ディスクロージャー:最重要原則とその実践

プログレッシブ・ディスクロージャー(段階的開示)は最も重要な原則であり、LLMに重要なものだけを明らかにし、今実際に必要なものにモデルの注意を集中させることである。Sonnet 4.5のような高度なモデルには組み込みのコンテキスト編集機能があるが、曖昧な指示を与えると不要なものを読み込んでしまう。バックエンドのエラーを全て一度に修正させるのではなく、エンドポイントを1つずつチェックさせる方が効果的である。Claudeのスキル機能はプログレッシブ・ディスクロージャーの具現化で、すべてをコンテキストに読み込むことなく各スキルをいつ使用すべきかをAIが知るのに十分な情報を提供する。MCPは外部データが必要な場合のみ使用し、それ以外はスキルを使うべきである。

構造化されたノート取りと外部ファイルの活用

今すぐ必要でない情報はコンテキストウィンドウに含めるべきではなく、これを実現するために構造化されたノート取りを使用する。AIツールに決定事項、問題、技術的負債を文書化する外部ファイルを提供することで、エージェントは複雑なものを構築する際に失われる可能性のある重要なコンテキストを維持できる。コンテキストがリセットされた場合も、圧縮サマリーだけでなくこれらのノートを使って完了したことと未完了のことのコンテキストを得られる。agent.mdは全エージェントがセッション開始前に読み取る標準的なコンテキストファイルで、これを使って外部ファイルの構造化方法や記述内容をエージェントに指示できる。

アテンション・バジェット(注意予算)とコンテキスト管理テクニック

エージェントが長時間実行タスクの途中でランダムに一時停止するのは、コンテキストが制限の70%を超えているためである。コンテキストウィンドウが70%を超えると、モデルはより集中しなければならず、ハルシネーション(幻覚)の可能性が高まり、ツールを効果的に使用できなくなる。これを解決するために、圧縮機能を使ってモデルに適切なサマリーと縮小されたコンテキストウィンドウで新たに開始させることができる。90%まで埋めて自動圧縮をトリガーするのではなく、自分でコンテキストウィンドウに注意を払うべきである。Claudeの巻き戻し機能を使って不要な部分を削除したり、新しいタスクごとにコンテキストをクリアすることも重要である。

サブエージェントによる並列処理とコンテキスト分離

プログレッシブ・ディスクロージャーから派生するもう1つの概念は、サブエージェントがバックグラウンドでタスクを実行し、メインのコンテキストウィンドウを汚染しないことである。サブエージェントは独自の分離されたコンテキストウィンドウで動作し、出力のみをメインエージェントに報告する。これは互いに分離されたタスクに取り組む場合に特に役立ち、メインのコンテキストウィンドウはサブエージェントのツール呼び出しや検索で肥大化することから保護される。エージェントはバックグラウンドで実行されるため、メインエージェントとのやり取りを続けることができる。新しいフレームワークのルールなどを調査してほしい場合、サブエージェントを使うことでツール呼び出しや検索が分離され、答えだけが返される。

ファイル形式の選択とトークン効率の最適化

異なるファイル形式はトークン数に影響を与えるため、ワークフローの効率に関わる。YAMLは最もトークン効率が高く、データベーススキーマ、セキュリティ設定、API詳細に使用され、そのインデントはモデルが情報を適切に構造化するのに役立つ。Markdownはclaud.mdのようなドキュメントに適しており、見出しレベルによりモデルがセクション間を移動しやすい。XMLはClaudeモデル向けに最適化されており、Anthropicはモデルがこれらのタグをコンテナとして認識するようファインチューニングされていると述べている。JSONは中括弧と引用符により最もトークン効率が悪いため、タスク状態のような小さなものにのみ使用し、ほとんどの場合推奨されない。

Gitを活用したワークフロー管理とバージョン制御

Gitはプログラミングの基本的なツールであり、コンテキストワークフローにおいてもプロジェクト全体や単一タスクの進行状況のリマインダーとしてコミット履歴を使用するトレンドがある。進行状況の保存に使用しない場合でも、コンテキストエンジニアリングワークフローはgit初期化されたリポジトリで使用すべきである。コンテキストエンジニアリングワークフローでは、モデルにすべてを一度に実行させるのではなく、計画されたステップを一つずつ実行させる。どの段階で問題に遭遇しても、gitを使えばどのバージョンに戻すかを制御でき、どの変更が問題を引き起こしているかを評価できる。また、gitのワークツリーを使って並列処理を実装し、サブエージェントが専用のワークツリーで並列作業を行うワークフローも存在する。

カスタムコマンドによるプロンプトの再利用と構造の強制

どんなワークフローでも一般的な手順のために指示を繰り返すケースが発生するが、ほぼすべてのAIツールには最も繰り返し使用するプロンプトを再利用する方法がある。カスタムコマンドはClaudeに再利用可能なガイドを提供し、catchupコマンドにはコンテキストウィンドウの外でメモリをどのように構造化するかの指示が含まれているため、Claudeはすべてのファイルを読むのではなくプロジェクトの状況を把握できる。これらは構造を強制するのにも優れており、commitコマンドを使うことでコミットとドキュメントが定義された形式に従うようになる。このようにして、/commandsはすべてを標準化し、好む方法でタスクを実行するようClaudeに何度も指示する必要がなくなる。

MCPの適切な使用とワークフローへの統合

MCPは外部データが必要な場合に使用すべきである。Jiraは最も広く使用されているチーム管理ソフトウェアで、チケットから情報を取得したい場合はJira MCPを使用することでチケットに直接アクセスして変更の実装を開始できる。同様に、Figma MCPを使用してClaudeにアプリのスタイルガイドを提供し、それをデザインの構築に使用させることができる。モデルの組み込み機能が不十分なタスクでは、外部ソースと効率的に対話するためにMCPが不可欠である。これらのMCPを/commandsに直接含めることで、ワークフロー全体の一部にすることができる。

クロージング

動画の終わりに、チャンネルをサポートして動画を作り続けられるよう応援してほしい方には、下のスーパーサンクスボタンの利用を呼びかけている。いつも視聴してくれることへの感謝を述べ、次の動画での再会を約束している。視聴者とのつながりを大切にし、継続的なコンテンツ制作への支援を求める標準的なクロージングである。

Community Posts

View all posts