DEV Community

Cover image for アピドッグCLIをクロードコードで使う方法
Akira
Akira

Posted on • Originally published at apidog.com

アピドッグCLIをクロードコードで使う方法

Claude Codeは、ファイルを編集し、ターミナルでコマンドを実行し、出力を読み取り、次のアクションを決定するループで動作します。APIテストもこのループに組み込めば、GUIで手動実行するだけのテストから、コード変更を検証する自動ゲートへ変えられます。

今すぐApidogを試す

Apidog CLIはnpmパッケージapidog-cliとして提供されており、Apidogで作成したテストシナリオをターミナルから直接実行できます。Claude CodeがCLIの実行方法を知っていれば、ユニットテストと同じようにapidog runを実行し、終了コードとレポートをもとに修正の要否を判断できます。

この記事では、Claude Codeの編集・テスト・修正ループへApidog CLIを組み込む方法を説明します。具体的には、CLAUDE.mdに追加する設定、apidog runの実行権限、実行結果の確認方法を扱います。

まだCLIをインストールしていない場合は、先にセットアップしてください。AIコーディングエージェントによるApidog CLIのインストール方法では、npmでのインストールから初回実行までを説明しています。この記事では、以下を満たしていることを前提にします。

  • apidog --versionがバージョン番号を出力する
  • apidog loginによる認証が完了している

どのClaude Codeについてか

対象はAnthropicのコーディングエージェントであるClaude Code CLIです。リポジトリを読み込み、ファイルを編集し、シェルコマンドを実行し、権限設定に応じて承認を求めます。

リポジトリ内で次のコマンドを実行し、編集やコマンド実行を提案する対話型エージェントを使っている場合は、この手順の対象です。

claude
Enter fullscreen mode Exit fullscreen mode

Claude Codeでは、プロジェクト固有のルールをCLAUDE.mdに記述します。Claude Codeスラッシュコマンドと同様に、CLIの実行ルールもこのファイルで管理できます。

重要なのは、チャットで一度だけ「APIテストを実行して」と依頼するのではなく、CLAUDE.mdに恒久的なルールとして書くことです。これにより、Claude Codeは各セッションでAPIテストの存在と実行方法を認識できます。

ステップ1: ApidogブロックをCLAUDE.mdに追加する

Claude Codeはセッション開始時にCLAUDE.mdを読み取ります。これはCodexのAGENTS.mdに相当するファイルです。Claude Codeのドキュメントでも、Claude CodeはAGENTS.mdではなくCLAUDE.mdを読み取ることが説明されています。

すでに他のエージェント向けにAGENTS.mdを使っている場合は、CLAUDE.mdから@AGENTS.mdとして読み込む構成も可能です。CodexでApidog CLIをセットアップしている場合も、考え方は同じです。

CLAUDE.mdは通常、リポジトリルートに配置します。Claude Codeは以下の場所も読み込めます。

  • ./CLAUDE.md
  • ./.claude/CLAUDE.md
  • ~/.claude/CLAUDE.md

リポジトリ全体に適用するには、ルートのCLAUDE.mdに次のブロックを追加してください。<scenario_id><env_id>は実際の値に置き換えます。

## Apidog CLIによるAPIテスト

このプロジェクトにはApidogテストシナリオがあります。APIをチェックするには、以下を実行します。

`apidog run -t <scenario_id> -e <env_id> -r cli`

- 終了コード0はすべてのアサーションが成功したことを意味します。0以外は何らかの失敗を意味します。レポートを確認し、先に進む前に修正してください。
- マシンは`apidog login`を介してすでに認証されています。`--access-token`フラグを追加したり、このファイルにトークンを置いたりしないでください。
- フラグが不明な場合は、`apidog run --help`を実行し、表示された正確なフラグを使用してください。
Enter fullscreen mode Exit fullscreen mode

このルールは、以後のClaude Codeセッションでも利用されます。CLAUDE.mdは起動時に読み込まれ、/compact後も指示が維持されます。

ステップ2: Apidogから実行コマンドを取得する

<scenario_id><env_id>を推測で入力しないでください。

  1. Apidogで対象のテストシナリオを開きます。
  2. CI/CDタブへ移動します。
  3. 生成されたapidog run ...コマンドをコピーします。
  4. コピーしたコマンドをCLAUDE.mdのApidogブロックへ貼り付けます。

生成されたコマンドには、実際のシナリオID、環境ID、レポーター設定が含まれています。

apidog run -t <scenario_id> -e <env_id> -r cli
Enter fullscreen mode Exit fullscreen mode

-r cliは、各リクエスト、アサーション結果、実行サマリーをターミナルに出力します。この出力をClaude Codeが読み取り、次に修正すべき内容を判断します。

フラグの詳細は、Apidog CLI完全ガイドおよびapidog runコマンドリファレンスを参照してください。

ステップ3: Claude Codeにテストを実行させる

リポジトリのルートでClaude Codeを起動します。

claude
Enter fullscreen mode Exit fullscreen mode

Claude Codeは起動時にCLAUDE.mdを読み込みます。APIに影響する変更を加えた後、または明示的に確認したいときに、次のように依頼します。

チェックアウトAPIを変更しました。CLAUDE.mdのApidogテストを実行し、失敗した場合はレポートを確認して修正してください。
Enter fullscreen mode Exit fullscreen mode

Claude CodeはCLAUDE.mdに記載したコマンドを使って、次のような実行を行います。

apidog run -t <scenario_id> -e <env_id> -r cli
Enter fullscreen mode Exit fullscreen mode

apidog runの実行権限を設定する

デフォルトのClaude Codeでは、未承認のシェルコマンドを実行する前に確認が表示されます。最初は表示された承認プロンプトでapidog runを許可してください。

信頼できるコマンドとして毎回の確認を省略したい場合は、セッション内で/permissionsを実行するか、.claude/settings.jsonに許可ルールを追加します。

{
  "permissions": {
    "allow": [
      "Bash(apidog run *)"
    ]
  }
}
Enter fullscreen mode Exit fullscreen mode

ステージング環境に対して読み取り専用でテストするシナリオなら、許可リストに追加しやすい構成です。

無人実行では--dangerously-skip-permissionsも利用できますが、日常のローカル作業ではなくCI用途として扱ってください。

ステップ4: Claude Code内でレポートを読み取る

テストが失敗した場合は、-r cliの出力を確認します。Claude Codeはターミナル上で以下を確認できます。

  • 実行されたリクエスト
  • 実行されたアサーション
  • 期待値と実際値の差分
  • 失敗したフィールド名
  • 失敗したステータスコード
  • コマンドの終了コード

失敗したアサーションに表示される情報は、修正箇所を絞り込むための入力になります。

ブラウザで共有・確認できるレポートも必要なら、HTMLレポーターを追加します。

apidog run -t <scenario_id> -e <env_id> -r cli,html
Enter fullscreen mode Exit fullscreen mode

htmlレポーターは自己完結型のファイルを./apidog-reportsに出力します。Claude Codeが判断に使うターミナル出力を残すため、cliは削除しないでください。

JUnit形式など、CIで解析するレポーターについてはApidog CLIテストレポートを参照してください。

Claude Code自身のループ内でテストする

設定後のClaude Codeは、コード編集のたびに次のループを実行できます。

  1. ハンドラーやサービスのコードを編集する
  2. apidog runでステージング環境のシナリオを実行する
  3. 終了コードとCLIレポートを確認する
  4. 成功なら次の作業へ進む
  5. 失敗なら、ステータスコード・不足フィールド・不正な値を確認する
  6. コードを修正し、再実行する

たとえば、チェックアウトレスポンスを返すハンドラーを変更した場合、Claude Codeは変更後にApidogシナリオを実行できます。失敗時はレポートからアサーションの失敗内容を確認し、修正して再実行します。

これは、APIテストをユニットテストと同じ編集・テスト・修正ループへ組み込む方法です。

より広い運用パターンについては、AIエージェントをAPIテストに利用する方法Apidog AIテストハーネスを参照してください。

Claude Codeが実際にCLIを実行したか検証する

エージェントの「テストは成功しました」という要約だけで判断しないでください。以下の3点を確認します。

1. apidog runが実行されたか

Claude Codeは実行したコマンドと出力をインラインで表示します。以下のようなコマンド行と、その直後の結果があることを確認してください。

apidog run -t <scenario_id> -e <env_id> -r cli
Enter fullscreen mode Exit fullscreen mode

Claude Codeが「テストを実行した」と報告していても、このコマンドや生の出力が表示されていない場合、実行せずに要約しただけの可能性があります。その場合は、次のように依頼してください。

Apidogテストをもう一度実行し、コマンド、CLI出力、終了コードをそのまま表示してください。
Enter fullscreen mode Exit fullscreen mode

2. 終了コードが0

apidog runは、すべてのアサーションが成功した場合に終了コード0を返します。アサーションが1つでも失敗すると、終了コードは0以外になります。

Claude Codeには次のように確認できます。

そのapidog runコマンドの終了コードは何でしたか?
Enter fullscreen mode Exit fullscreen mode

要約が成功となっていても終了コードが0以外なら、失敗として扱ってください。終了コードをゲートの判定基準にします。

3. 正しいシナリオと環境を使用したか

「シナリオが見つかりません」といったエラーが出た場合は、シナリオIDまたは環境IDが誤っている可能性があります。

次の値を照合してください。

  • CLAUDE.md-t <scenario_id>
  • CLAUDE.md-e <env_id>
  • ApidogのCI/CDタブで生成されたコマンド

IDは、Apidogが生成したコマンドを正として管理してください。

オプション: Apidog MCPサーバーに接続する

CLAUDE.mdからapidog runを実行するだけでも、APIテストの自動実行には十分です。さらに、MCPサーバーを接続すると、Claude Codeはコーディング中にAPI仕様を参照できます。

Claude CodeはModel Context Protocol(MCP)をサポートしています。claude mcp add ...でサーバーを追加するか、プロジェクトルートの.mcp.jsonをコミットして--scope projectでチーム共有できます。

Apidog MCPサーバーは、MCP経由でAPI仕様を公開します。

役割は次のように分けられます。

  • Apidog CLI: テストシナリオを実行する
  • Apidog MCPサーバー: Claude CodeにAPI仕様を提供する

Claude Codeが誤った場合の対処

CLAUDE.mdブロックが無視される

Claude Codeが一般的なコマンドを実行したり、コマンド自体を実行しなかったりする場合、CLAUDE.mdが読み込まれていない可能性があります。

以下を確認してください。

  • ファイル名が正確にCLAUDE.mdである
  • ファイルがリポジトリルート、または現在のディレクトリの親にある
  • セッション内で/memoryを実行し、読み込まれたファイル一覧に対象ファイルがある

ファイルを追加・変更した直後は、Claude Codeセッションを再起動して再読み込みしてください。

--access-tokenを追加しようとする

Claude Codeが--access-tokenを追加しようとする場合は、公開されている例をもとに推測している可能性があります。

すでにapidog loginで認証済みであれば、CLAUDE.mdにトークンを保存する必要はありません。トークンは絶対にCLAUDE.mdへ書き込まないでください。

認証手順はApidog CLI認証を参照してください。

存在しないフラグを使う

unknown optionエラーは、インストール済みのCLIバージョンに存在しないフラグを使用していることを示します。

以下を実行し、表示されたフラグだけを使ってください。

apidog run --help
Enter fullscreen mode Exit fullscreen mode

失敗した実行を成功と報告する

もっとも重要なのは、終了コードを確認することです。

  • 終了コード0: 成功
  • 終了コード0以外: 失敗

サマリーの文章と終了コードが一致しない場合は、終了コードを優先してください。

日常のエージェントからテスト済みのループへ

セットアップはシンプルです。

  1. インストールガイドに従ってapidog-cliをインストールする
  2. Apidogでテストシナリオを作成する
  3. CI/CDタブからapidog runコマンドをコピーする
  4. リポジトリのCLAUDE.mdにコマンドと終了コードのルールを記述する
  5. Claude CodeにAPI変更後のテスト実行を依頼する

GUIの背後にあるテストは人がクリックしたときだけ実行されます。一方、CLAUDE.mdに記述した1行のコマンドは、Claude Codeがコード変更を検証するタイミングで実行できます。

Apidogでシナリオを作成し、そのapidog runコマンドをCLAUDE.mdに追加してください。Apidogをダウンロードして最初のシナリオを作成したら、次のコード変更時にClaude Codeのループへ組み込めます。

Claude CodeなしのCIパイプラインでも同じコマンドを実行したい場合は、GitHub ActionsにおけるApidog CLIを参照してください。

Top comments (0)