はじめに
AIエージェントを効率的に動かす仕組みとして、「スキル(Agent Skills)」と「サブエージェント(Sub Agents)」の2つの代表的な手段があります。
この2つを理解して使いこなすことで、AIを使った作業の効率が上がり、AIのアウトプットの品質も向上します。
本記事では、スキルとサブエージェントの概念をそれぞれ解説し、「どちらを使うべきか」の判断基準を示します。この記事を読み終えれば、両方の仕組みを理解し、場面に応じた使い分けができるようになります。
スキルとは ─ AIに渡す「業務マニュアル」
一言でいうと
スキルは、AIエージェントに渡す「業務マニュアル」です。
会社で新人にPDF作成を依頼するとき、毎回やり方を口頭で説明するのは大変です。そこで「PDFの作り方マニュアル」を渡しますよね。スキルはこれと同じ発想で、AIに渡すマニュアルをSKILL.mdというMarkdownファイルとして用意しておく仕組みです。
たとえば以下のようなスキルを作成できます。
- PDF作成スキル
- Excel作成スキル
- テスト実行スキル
- コミットメッセージ生成スキル
なぜスキルが必要なのか
スキルを使うメリットは、大きく2つあります。
- 繰り返し行うタスクをコマンド一発で呼び出せる:一度スキルを作っておけば、
/pdfのようにスラッシュコマンドを打つだけで、いつでも同じ作業を実行できます - 繰り返し行う作業の品質が安定する:手順とコードをあらかじめプログラム化しておけるため、毎回同じ手順で実行され、結果がブレません
では、スキルがない場合はどうなるのでしょうか。実はスキルがなくても、AIはPDF作成のようなタスクをこなせます。AIに「PDFを作って」と依頼すると、裏側ではこんなことが起きています。
- AIがPDFを作成するためのPythonコードをその場で生成する
- そのPythonコードをバックグラウンドで実行する
- 実行結果としてPDFファイルが出力される
つまり、AIは「PDFの作り方を知っている」のではなく、「PDFを作るためのプログラムを毎回その場で書いている」のです。一見うまくいきそうですが、このやり方には2つの問題があります。
- 毎回コードを書き直す無駄:同じ「PDF作成」でも、依頼のたびにPythonコードを一から生成するため、時間がかかります
- 出力が安定しない:AIは同じ指示でも毎回異なるコードを生成します。そのため、昨日はうまくいった操作が今日は微妙に違う結果になる、ということが起こり得ます
スキルを使えば、あらかじめ用意された手順とコードを毎回同じように実行するため、結果が安定し、処理も速くなります。
スキルの実体
スキルは1つのフォルダとして管理されます。フォルダの中に、指示書であるSKILL.mdと、必要なスクリプトが入っています。
pdf/ ← スキル名のフォルダ
├── SKILL.md ← 指示書(これがスキルの本体)
└── scripts/
└── create_pdf.py ← 実際に使うPythonコード SKILL.mdは、設定ヘッダーと本文の2つのパートで構成されています。
---
name: pdf
description: PDFファイルを作成・編集する。PDF作成、PDF変換、ドキュメント出力を依頼されたときに使う。
allowed-tools: Read, Write, Bash(python scripts/create_pdf.py *)
---
PDFを作成するときは、以下の手順で進めてください。
1. ユーザーの指示から、出力するPDFの内容・レイアウトを整理する
2. scripts/create_pdf.py を使ってPDFを生成する
3. 生成したPDFのファイルパスをユーザーに伝える AIは「PDFを作って」と依頼されると、このSKILL.mdを読み、書かれた手順に従って作業を進めます。
動き方のポイント:メインコンテキストに「溶け込む」
スキルの重要な特徴は、読み込まれた時点でメインコンテキストの一部になることです。
会社で例えるなら、マニュアルを読んだ担当者が、そのまま同じデスクで作業を続けるイメージです。マニュアルの内容は担当者の知識に溶け込み、そのまま作業に活かされます。スキルも同じで、SKILL.mdの内容はメインのAIの知識として取り込まれ、メインのAIが直接手順を実行します。
スキルの書き方や設計のベストプラクティスについては、以下の記事で詳しく解説しています。
Agent Skillsとは?Claude CodeなどAIのスキル機能を完全解説
サブエージェントとは ─ 専門の「担当者」に仕事を任せる
一言でいうと
サブエージェントは、特定の役割を持った「専門の担当者」です。
メインのAI(マネージャー)が「この仕事を頼む」とタスクを委譲すると、担当者は自分専用のコンテキストウィンドウで独立して作業を進めます。作業が終わったら、結果だけをマネージャーに報告します。
たとえば以下のようなサブエージェントを定義できます。
- コードレビューエージェント
- 要件定義エージェント
- テスト設計エージェント
- リサーチエージェント
なぜサブエージェントが必要なのか
サブエージェントを使うメリットは、大きく2つあります。
1. AIのアウトプットの品質が上がる
AIには「コンテキストウィンドウ」という作業領域のサイズ上限があります。すべての作業をメインのコンテキストで行うと、大量のファイル探索や複雑な分析でコンテキストウィンドウがすぐに埋まってしまいます。すると、会話の初期に伝えた重要な指示を忘れたり、判断の質が落ちたりします。
サブエージェントは、自分専用のコンテキストウィンドウを持っています。メインのコンテキストウィンドウを消費せずに作業を進められるため、メイン側の品質を保ったまま、大規模な作業を委譲できます。
2. 並列処理でAIの作業時間が短くなる
サブエージェントは、複数を同時に起動して並列で作業させられます。たとえば、リサーチと画像生成を同時に走らせれば、順番に処理するよりも大幅に時間を短縮できます。メインのAIがすべてを直列でこなす場合と比べて、作業効率が段違いです。
サブエージェントの定義ファイル
Claude Codeの場合、サブエージェントは.claude/agents/フォルダにMarkdownファイルとして定義します。
.claude/agents/
├── code-reviewer.md ← コードレビューエージェント
├── requirements-analyst.md ← 要件定義エージェント
└── test-designer.md ← テスト設計エージェント 定義ファイルの中身は、スキルと同じく「設定ヘッダー + 本文」の構造です。
---
name: code-reviewer
description: コードの品質をレビューする専門エージェント。レビュー依頼やPRチェックを頼まれたときに使う。
---
あなたはシニアエンジニアとしてコードレビューを行います。
## レビューの観点
1. 設計の妥当性:責務の分離、依存関係の方向は適切か
2. 可読性:命名、関数の粒度、コメントの過不足
3. バグリスク:エッジケース、エラーハンドリングの漏れ
4. パフォーマンス:不要なループ、N+1クエリの有無
## 出力フォーマット
- 指摘事項ごとに「重要度(高/中/低)」「該当箇所」「改善案」を示す
- 最後に総合評価を1段落で述べる スキルのSKILL.mdと見た目は似ていますが、決定的な違いがあります。スキルは「手順書」としてメインコンテキストに溶け込むのに対し、サブエージェントの定義ファイルは「専門家の人格・役割」を定義するものです。中身を見てみるとわかりますが、スキルには「○○してください」という手順が書かれるのに対し、サブエージェントには「あなたは○○です」という役割が書かれます。
呼び出し方
サブエージェントの起動方法は、スキルとは異なります。
スキルは/スキル名のスラッシュコマンドで呼び出せますが、サブエージェントにはスラッシュコマンドがありません。代わりに、以下の方法で起動します。
- 自然言語で依頼する:「コードレビューエージェントを使ってレビューして」と伝える
- AIが自動で判断する:タスクの内容に応じて、AIが適切なサブエージェントを自動で選んで委譲する
なお、/agentsコマンドはサブエージェントの作成・編集・削除を行う管理コマンドであり、起動コマンドではありません。
動き方のポイント:独立したコンテキストで作業する
サブエージェントの最大の特徴は、メインのAIとは独立した環境で動くことです。
- 独自のコンテキストウィンドウを持ち、メイン側を消費しない
- 独自のシステムプロンプトを持ち、専門家としての役割に集中できる
- 並列実行が可能で、複数のサブエージェントを同時に起動できる
- 作業が終わったら結果だけを返すため、メインコンテキストには要約のみが残る
この独立性こそが、スキルとの最も大きな違いです。
スキルとサブエージェントの違い一覧
ここまでの内容を表にまとめます。
| 項目 | スキル | サブエージェント |
|---|---|---|
| たとえ | 業務マニュアル | 専門の担当者 |
| 実体 | SKILL.md(手順書) | .claude/agents/*.md(役割定義) |
| コンテキスト | メインに溶け込む | 独立したコンテキストで動く |
| 呼び出し方 | /スキル名 or AIが自動判断 | 自然言語で依頼 or AIが自動委譲 |
| 定義の書き方 | 「○○してください」(手順) | 「あなたは○○です」(役割) |
| メインへの影響 | コンテキストを消費する | コンテキストを消費しない |
| 得意なこと | 決まった手順の安定実行 | 専門的な判断・大規模な調査 |
| 複数人での共有 | 誰からでも呼び出せる | メインAIから委譲される |
どちらを使うべき? ─ 「手順か、役割か」で決まる
「結局どっちを使えばいいの?」という疑問に対する答えはシンプルです。
- 手順書どおりにやれば誰でも同じ結果を出せる → スキル
- 専門家としての判断が求められる → サブエージェント
たとえば「請求書PDFの作成」は、フォーマットも手順も決まっています。誰がやっても同じ結果になります。だからスキルが適切です。
一方「コードレビュー」は、チェックリストのような手順はありますが、本質は「シニアエンジニアの視点で設計の良し悪しを判断する」ことです。手順書だけでは再現できない、専門家としての判断が求められます。だからサブエージェントが適切です。
もう少し例を見てみましょう。
| 作業 | どちらか | 理由 |
|---|---|---|
| 請求書PDFの作成 | スキル | フォーマットも手順も決まっている。誰がやっても同じ結果になる |
| コードレビュー | サブエージェント | 設計の良し悪しを判断する専門家の視点が必要 |
| テストの実行 | スキル | コマンドと手順が決まっている。手順書どおりに実行すれば同じ結果になる |
| 要件定義 | サブエージェント | ユーザーの要望を整理し、実現可能性を判断する専門家の視点が必要 |
| 画像のリサイズ・圧縮 | スキル | サイズや形式のルールが決まっている。手順書どおりに処理すれば同じ結果になる |
| 競合調査・リサーチ | サブエージェント | 何を調べ、どの情報が重要かを判断する専門家の視点が必要 |
迷ったときのフローチャート
その作業を手順書に書き起こせる?
├─ はい → 手順書どおりにやれば、誰でも同じ結果を出せる?
│ ├─ はい → スキル
│ └─ いいえ → サブエージェント(専門家の判断が必要)
└─ いいえ → サブエージェント(専門家の判断が必要) 実践例:スキルとサブエージェントを組み合わせる
スキルとサブエージェントは、どちらか一方だけを使うものではありません。組み合わせることで、より高度なワークフローを構築できます。
シナリオ:ブログ記事を作成する
たとえば、ブログ記事の作成を自動化するケースを考えてみましょう。
登場する仕組み:
| 仕組み | 種類 | 役割 |
|---|---|---|
| リサーチエージェント | サブエージェント | 競合記事の調査や検索キーワードの分析を行う調査の専門家 |
| SEOライターエージェント | サブエージェント | SEO対策を意識した構成・見出し・文章を書ける執筆のプロ。記事フォーマットスキルと画像生成スキルを持つ |
| Webデザイナーエージェント | サブエージェント | アイキャッチ画像を作成するデザインの専門家。画像生成スキルを持つ |
| 記事フォーマットスキル | スキル | 記事のHTML変換やフォーマット統一の手順書 |
| 画像生成スキル | スキル | 画像の生成・リサイズ・圧縮の手順書 |
ここがスキルとサブエージェントの使い分けのポイントです。「SEOを意識した記事を書く」「デザインの観点でアイキャッチを作る」といった専門家の判断が必要な仕事はサブエージェントとして定義します。一方、「記事をHTMLに変換する」「画像を生成・リサイズ・圧縮する」といった手順どおりにやれば同じ結果が出る作業はスキルとして定義します。
注目してほしいのが、画像生成スキルを2つのエージェントが共有している点です。SEOライターエージェントは記事中の図解・説明画像を作るために画像生成スキルを使い、Webデザイナーエージェントはアイキャッチ画像を作るために同じ画像生成スキルを使います。画像を生成するスクリプトの実行手順(業務マニュアル)は同じですが、「どんな画像を作るか」の判断はそれぞれの専門家が行います。ライターは「この概念をどう図で説明すればわかりやすいか」を考え、デザイナーは「記事の内容に合った視覚的にインパクトのあるビジュアル」を考えます。
これが、スキルとサブエージェントの関係性を端的に表しています。同じ業務マニュアル(スキル)を、異なる専門家(サブエージェント)がそれぞれの判断で活用するわけです。
処理の流れ:
- メインAIが「リサーチエージェント」に競合調査・キーワード分析を委譲する
- リサーチエージェントが独立したコンテキストで調査を行い、結果をメインに返す
- メインAIが「SEOライターエージェント」にリサーチ結果を渡し、記事の執筆を委譲する。SEOライターエージェントは、検索意図を踏まえた構成を組み立て、記事フォーマットスキルに従ってHTMLを出力する。記事中に図解が必要な箇所では、画像生成スキルを使って説明画像を作成する
- メインAIが「Webデザイナーエージェント」に記事の内容を渡し、アイキャッチ画像の作成を委譲する。Webデザイナーエージェントは、記事の内容に合ったビジュアルを考え、画像生成スキルに従って画像を出力する
- メインAIがすべての成果物を統合して、ユーザーに報告する
このワークフローのポイントは、メインAIがオーケストレーター(指揮者)に徹していることです。調査、執筆、デザインのすべてを専門のサブエージェントに委譲しているため、メインのコンテキストウィンドウには各工程の結果サマリーだけが残ります。メインの品質を保ったまま、大規模な作業をこなせるわけです。
メインで直接スキルを使うケースもある
一方で、すべてをサブエージェントに委譲すればよいわけではありません。
たとえば記事の推敲では、ユーザーと対話しながら仕上げたい場面があります。「ここをもう少し詳しく」「トーンを変えて」といったやりとりです。サブエージェントは「投げて、結果を受け取る」の一方向の仕組みなので、こうした対話的な作業には向きません。
ユーザーと対話しながら進めたい作業は、メインのコンテキストでスキルを使う方が実用的です。
| 作業の性質 | 適した方法 |
|---|---|
| 一発で完成させたい定型作業 | サブエージェント + スキル |
| ユーザーと対話しながら仕上げたい作業 | メインで直接スキルを使う |
スキルからサブエージェントを呼ぶこともできる
スキルはメインコンテキストに溶け込むため、スキルの手順の中でサブエージェントの起動を指示することも可能です。
たとえば「フルレビュースキル」の中で「コードレビューエージェントとセキュリティスキャンエージェントを並列で起動する」と書けば、スキルがオーケストレーターの役割を果たします。
---
name: full-review
description: コードの品質チェックを一括で行う。レビュー依頼されたときに使う。
---
# フルレビュー手順
1. 以下のサブエージェントを並列で起動する
- code-reviewer エージェント:コード品質のレビュー
- security-scanner エージェント:セキュリティチェック
2. 両方の結果を統合して、ユーザーにレポートする ただし、サブエージェントから別のサブエージェントを起動することはできません(ネスト禁止)。呼び出し関係の詳細なルールやネスト制約の回避策については、以下の記事で詳しく解説しています。
Claude Codeにおけるスキルとサブエージェントの依存関係|オーケストレーターに必須の設計知識
まとめ
AIエージェントを効率的に動かす2つの仕組みを解説しました。
- スキル = 業務マニュアル。手順書を渡して、同じ作業を安定して再現させる
- サブエージェント = 専門の担当者。独立したコンテキストで、専門的な判断や重い作業を委譲する
さらに詳しく学びたい方は、以下の記事もあわせてお読みください。
- Agent Skillsとは?Claude CodeなどAIのスキル機能を完全解説 ─ スキルの書き方・設計のベストプラクティスを詳しく解説
- Claude Codeにおけるスキルとサブエージェントの依存関係 ─ 呼び出し関係のルールやネスト制約の回避策を詳しく解説
