ブログに戻る

AI入門ガイド

ACP (Agent Client Protocol) とは? 自分のエージェントを持ち込む

ACP はコードエディタとコーディングエージェントの間のソケットです。MCP との違い、モデルと API キーがどこに収まるかを説明します。

投稿者: CheapTokens Team公開日 読了時間 8 分

カバー: エディタ → ACP → エージェントの流れ、コードエディタとコーディングエージェントの間のプロトコル
このページの内容
  1. なぜソケットが必要なのか?
  2. ACP の仕組みを平易な言葉で
  3. ACP と MCP: それぞれ何を接続するか
  4. Android Studio で自分のエージェントを持ち込む
  5. モデルと API キーはどこにあるか
  6. 次にやるべきこと

Android Studio は現在、40 以上のコーディングエージェントをメニューから選べるようになり、そのニュースでは 3 文字が繰り返し登場します: ACP です。手短に言うとこうです。Agent Client Protocol (ACP) はコードエディタとコーディングエージェントの間の共通ソケットで、コンピュータとそこに接続するものの間の USB に少し似ています。ACP を話すエディタならどれでも、ACP を話すエージェントをホストできます。MCP は別のケーブルです: エージェントをツールやデータに接続するもので、エディタに接続するものではありません。

ニュースのきっかけは Android Studio です。Android Developers ブログ (2026 年 10 月 28 日) によると、安定版となった Android Studio Rabbit 2 は「Bring Your Own Agent」を搭載し、Claude Agent、OpenAI の Codex、Junie、Google Antigravity を含む 40 以上のコーディングエージェントから選べます。この投稿では「ACP」とは明記されていません。名称と仕組みは ACP の紹介 から来ています (2026 年 11 月 1 日確認)。

なぜソケットが必要なのか?#

エディタが 5 つ、コーディングエージェントが 8 つあるとします。すべてのペアに専用の接続が必要なら、5 × 8 = 40 の統合が必要になり、新しいエージェントが増えるたびに 5 つのエディタチームに 5 つの仕事が増えます。全員が 1 つのソケットに合意すれば、各エディタは一度作るだけで、各エージェントも一度作るだけです: 5 + 8 = 13 の作業で済みます。これがアイデアのすべてです。

ACP のサイトでは、1 つの言語サーバーを多くのエディタで使えるようにする LSP (Language Server Protocol) との同じ比較をしています。同じトリックをコーディングエージェントに適用したもので、ACP エージェントはどの ACP エディタでも動作し、ペアごとのカスタム統合は不要です。

フラッシュカード

ACP 周辺で出会う言葉

ACP の仕組みを平易な言葉で#

2 人の同僚が郵便スロットを通じてメモをやり取りする様子を想像してください。エディタがリクエストを書き、エージェントが表示したい内容を書き戻します。ローカルエージェントの場合、その郵便スロットは文字通りです: エディタはあなたのマシン上でエージェントをサブプロセスとして起動し、両者は stdio を介して JSON-RPC メッセージを交換します。すべてのメッセージは同じ一般的な形をしています:

json
{ "jsonrpc": "2.0", "id": 1, "method": "…", "params": { … } }

メソッド名は ACP 自体が定義しているので、これらを手書きすることはありません。エディタとエージェントが行います。

エージェントは必ずしもあなたのラップトップ上に存在する必要はありません。リモートエージェントは HTTP または WebSocket を使用しますが、ACP のサイトによると完全なリモートサポートはまだ進行中です。また、プロトコルはコーディング向けに作られているため、可能な限り MCP の JSON 表現を再利用し、エディタが描画する必要があるもの (差分など) の型を追加します。そのため、提案された変更はテキストの壁ではなく差分としてエディタに表示されます。

エディタ、ACP、エージェント、モデル API が並ぶ
ACP はエディタとエージェントの間のリンクです。モデルはエージェントの背後に、別の接続で存在します。

ACP と MCP: それぞれ何を接続するか#

エージェントを中央に置きます。片側はあなたのエディタで、そのリンクが ACP です。もう片側はエージェントが扱うもの: ファイル、データベース、サービスです。そのリンクが MCP です。これらはエージェントの異なる側にあるため、競合しません。MCP が初めてなら、平易な英語の MCP ガイド から始めてください。

ACP はエディタとエージェントをリンクし、MCP はエージェントとツールをリンクする
2 つのプロトコルを並べて。ACP はエディタに面し、MCP はツールに面します。

両者は近い親戚でもあります: 上記のように、ACP は可能な限り MCP の JSON 表現を借用しています。自分で照合してみてください:

ペアを合わせる

各名前を接続先と照合する

  • ACPエディタ ⇄ コーディングエージェント
  • MCPエージェント ⇄ ツールとデータ
  • stdio 上の JSON-RPCローカル ACP エージェントがエディタと通信する方法
  • モデル API (ベース URL + キー)エージェント ⇄ 言語モデル

Android Studio で自分のエージェントを持ち込む#

共通プロトコルがなければ、エディタにエージェントを追加するのはエディタベンダーの仕事です。Android Studio Rabbit 2 では、エージェントを自分で選びます。Android Developers の投稿によると、エージェントウィンドウを開いてエージェントを選択するか、Settings > Tools > AI > Agents で選択します。次に認証し、最初のプロンプトを送信します。投稿には「認証」としか書かれていません。何を求められるかは選んだエージェントによって異なるので、エージェント自身のドキュメントを参照してください。

自分で確認したい場合の順序は次のとおりです:

順番に並べる

Android Studio の手順を順番に並べる

  1. Android Studio Rabbit 2 を開く
  2. エージェントを選択する (エージェントウィンドウまたは Settings > Tools > AI > Agents)
  3. 認証する
  4. 最初のプロンプトを送信する

モデルと API キーはどこにあるか#

ここがほとんどの初心者が混乱する部分です。ACP リンクはエディタとエージェントの間の会話を運びます。エージェントは考えるために言語モデルを依然として必要とし、それは別の接続で、通常は独自のログインまたは API キーを持ちます。エディタを切り替えてもモデルは変わりませんし、モデルを切り替えてもエディタは変わりません。Android Studio の投稿にはカスタムキーやモデルについて何も書かれていないので、何を変更できるかは選んだエージェント次第です。

一部のエージェントでは、OpenAI 互換のエンドポイント (ベース URL、キー、モデル ID) を指定できます。あなたのエージェントが対応している場合、これがモデル側の接続のすべてであり、設定に触れる前にターミナルでテストできます (キーは環境変数のプレースホルダーです):

bash
curl https://api.cheaptokens.dev/v1/chat/completions \
  -H "Authorization: Bearer $CHEAPTOKENS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "deepseek-ai/DeepSeek-V4-Flash-0731",
    "messages": [{"role": "user", "content": "Explain ACP in one sentence."}]
  }'

テキストが choices[0].message.content に、トークン数が usage に入った JSON の回答が返ってきます。コーディングエージェントは各ステップで大量のコンテキストを再送するため、長いコンテキストのモデルが適しています。CheapTokens ではそれが DeepSeek-V4-Flash です: 380K のコンテキストウィンドウ、回答あたり最大 32,768 出力トークン、1 日中のどの時間でも同じ価格、すべてのモデルで 1 つの残高。API は OpenAI および Anthropic 互換です。正確なモデル ID は CheapTokens のドキュメント から取得してください。ID はプロバイダー間で異なります。詳細は DeepSeek モデルページ にあります。

どのツールがカスタムキーを受け付けるかわからない場合は、自分の API キーをどこに挿入するか のガイドでチャット、エディタ、ターミナル、コードを順に説明しています。「ベース URL」が新しい用語なら、base_url とは何か、切り替え方法 をお読みください。

自分で試す試してみましょう: ACP エージェントをインストールしました。使用するモデルを切り替えるにはどの接続を変更しますか?答えを表示

ACP の接続ではありません。エディタからエージェントへのソケットはそのままです。モデルはエージェント自身の設定です: エージェントが公開していれば、エージェントの設定にあるベース URL、キー、モデル ID です。

次にやるべきこと#

使いたいエージェントのドキュメントを開き、モデルを設定する場所を探してください。エージェントの内部動作に興味があれば、AI エージェントの仕組み: ループ で段階的に説明しています。ACP は 1 つの問い、つまりエディタとエージェントがどう話すかだけに答えます。それ以外はすべてエージェントとそのツール、モデルの間に留まります。