こんにちは!API開発、楽しんでいますか?
「ポチポチとInsomniaのGUIでリクエストを送って動作確認するの、そろそろ卒業したいな……」
「プルリクエストを出した瞬間に、自動でAPIのテストが走ってくれたら最高なのに……」
そんな風に思ったことはありませんか?
手動でのAPIテストは、開発初期こそ手軽ですが、エンドポイントが増えてくると「あ、こっちの変更で別の場所が壊れた!」というデグレ(退行バグ)の温床になります。
今回は、Insomniaの公式CLIツールである「inso CLI」を使い、CI/CDパイプライン(今回はGitHub Actionsを例にします)にAPIの自動テストを組み込む方法を、基礎から徹底的に解説します。
これをマスターすれば、あなたのチームの開発スピードとコードの信頼性は劇的に向上しますよ。さあ、一緒にモダンな自動テストの世界へ飛び込みましょう!
—
1. なぜ「inso CLI」なのか?:ツールがもたらす開発体験の飛躍
Insomniaといえば、美しいUIでAPIリクエストをテストできる超有名ツールですね。しかし、InsomniaにはGUIの裏側に「inso」という強力なコマンドラインツールが用意されています。
GUIとCLIの役割分担
- Insomnia (GUI): APIの設計、アドホックなリクエスト送信、デバッグ、テストシナリオの視覚的な作成。
- inso CLI: 作成したテストスイートをコードとして扱い、ターミナルやCI/CD環境で高速に実行する。
「APIのテストコードを書く」というと、JestやSupertestなどを使ってゼロからテストスクリプトを書く苦行を想像しがちです。しかし、Insomniaで普段通りに作成したリクエストやユニットテストをそのままCLIで実行できるのが、insoの最大の強みです。
—
2. 準備:inso CLIのインストールとプロジェクトの書き出し
まずは、手元のローカル環境でinsoを使えるようにしましょう。
ステップ1:insoのインストール
Node.js環境があれば、npmを使ってグローバルにインストールするのが一番簡単です。
グローバルインストール
npm install -g insomnia-inso
バージョン確認(正しくインストールされたかチェック)
inso –version
ステップ2:Insomniaのデータをエクスポートする
ここが非常に重要なポイントです。inso CLIは、Insomniaのワークスペースデータ(JSONファイル)を読み込んで動作します。
1. InsomniaのGUIを開きます。
2. テストしたいプロジェクト(またはコレクション)の設定メニューを開き、「Export Data」を選択します。
3. JSON形式で適当な名前(例: `api-spec.json`)でプロジェクトのルートディレクトリに保存します。
> 💡 先輩からのアドバイス:
> このエクスポートしたJSONファイルを、Gitリポジトリのソースコードと一緒に管理(バージョン管理)するようにしてください。「APIの仕様やテストケースがコード化され、プルリクエストでレビューできる状態」がこれで完成します。
—
3. Hello World:ローカルで最初の自動テストを実行する
それでは、エクスポートしたJSONファイルを使って、CLIからテストを動かしてみましょう。
insoには主に3つのコマンドがありますが、今回はテストを実行する `inso run test` を使います。
inso run test api-spec.json
これだけで、Insomnia上で設定したユニットテスト(Unit Test)がターミナル上で次々と実行され、結果がリッチなカラー出力で表示されます。
もし、特定の環境変数(開発環境、ステージング環境など)を切り替えてテストしたい場合は、`-e` オプションで環境名を指定します。
inso run test api-spec.json -e “Staging Environment”
手元のPCで一発動かせたら、次はこれを自動化(CI/CD化)します。
—
4. 実践:GitHub ActionsでPRごとにAPIテストを自動実行する
ここからが本番です。GitHubにコードをプッシュした際、あるいはプルリクエスト(PR)を作成した際に、GitHub Actionsが自動でinsoを呼び出し、APIテストを走らせるパイプラインを構築します。
プロジェクトのルートディレクトリに `.github/workflows/api-test.yml` というファイルを作成し、以下の設定を記述してください。
name: API Automated Testing
1. トリガーの設定:mainブランチへのPR、または直接プッシュされた時に実行
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
test-apis:
runs-on: ubuntu-latest
steps:
# 2. リポジトリのコードをチェックアウト
- name: Checkout repository
uses: actions/checkout@v4
# 3. Node.js環境のセットアップ(insoの実行に必要)
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: ’20’
# 4. inso CLIのインストール
- name: Install Insomnia CLI (inso)
run: npm install -g insomnia-inso
# 5. APIテストの実行
# ※ api-spec.json はリポジトリにコミットされている前提です
- name: Run Insomnia Unit Tests
run: |
inso run test api-spec.json –ci
env:
# テスト内で参照する環境変数(必要に応じてGitHub Secretsから注入)
API_BASE_URL: ${{ secrets.STAGING_API_URL }}
この設定ファイルのポイント
- `–ci` フラグ:CI環境向けに最適化された出力になり、テストが失敗した場合には正しく非ゼロの終了コード(exit code)を返します。これにより、テストが1つでも失敗するとGitHub Actions自体が失敗(赤く)なり、マージをブロックできるようになります。
- 環境変数の注入:実環境のURLやAPIキーなどの機密情報は、GitHubの「Secrets」機能に登録し、環境変数経由で安全に渡すのが鉄則です。
—
5. 現場で役立つ!さらに一歩進んだ運用ノウハウ
最後に、この仕組みを現場で運用する上で知っておくべき「知見」をいくつか授けましょう。
1. 仕様変更の同期をどうするか?
InsomniaのGUIでテストを修正するたびに、JSONをエクスポートして手動でgit addするのは面倒です。チームで開発する際は、「Insomnia Git Sync」機能を使ってワークスペース自体をGitリポジトリと連携させるか、定期的にエクスポートする習慣をつけましょう。
2. モックサーバーの活用
CI環境でテストする際、実際のバックエンドAPIがまだ育っていない、あるいは不安定な場合は、`inso run mock` コマンドを使って、Insomniaの定義に基づいたモックサーバーをCI上で一時的に立ち上げてテストすることも可能です。
—
まとめ:今日から始める自動テストの第一歩
いかがでしたか?
「Insomnia = GUIで手動テストするツール」という枠を超えて、`inso CLI` を使えば、堅牢なCI/CDパイプラインの一部として強力なテスト自動化基盤が手に入ることがお分かりいただけたかと思います。
- Insomniaでテストを書く。
- JSONとしてエクスポート・共有する。
- `inso run test` でCLIから回す。
- GitHub Actionsで自動化する。
このフローを取り入れるだけで、「あ、またAPIの結合部分でバグが出た……」という開発者特有のストレスから解放されます。
これをマスターすれば、あなたの毎日の開発作業は劇的に楽になり、よりクリエイティブなコードを書く時間に集中できるようになりますよ。ぜひ、次のプロジェクトで試してみてくださいね!