【入門編】Insomniaで環境変数とグローバル変数を活用してAPIテストを効率化するコツ – データベース・API管理活用バイブル

こんにちは!API開発やテストの現場で、こんな無駄な作業に時間を使っていませんか?

  • 「あ、今のリクエスト、本番環境のURLに投げちゃった!?」という冷や汗をかく瞬間
  • 環境を切り替えるたびに、URLのホスト名やアクセストークンをコピペで書き換えている
  • ログインAPIで取得したBearerトークンを、次のリクエストのヘッダーに手作業で貼り付けている

これ、エンジニアとしてのリソースの無駄遣いどころか、重大なインシデントの温床です。

今回は、APIクライアントツール「Insomnia」が持つ強力な武器――「環境変数(Environment)」と「グローバル変数(Global Variables)」を徹底的に使いこなし、手作業のミスをゼロにし、開発スピードを爆発的に向上させる極意を伝授します。

これをマスターすれば、毎日のAPIテストが劇的に楽になりますよ。さあ、一緒にスマートな開発フローを手に入れましょう!

—

1. なぜInsomniaの環境変数を使うべきなのか?

API開発では、通常いくつかの「環境(Environment)」が存在します。

1. Local(開発環境): `http://localhost:3000`
2. Staging(ステージング環境): `https://stg-api.example.com`
3. Production(本番環境): `https://api.example.com`

これらを毎回手動で書き換えていると、いつか必ず本番環境のデータを吹っ飛ばします。プロのエンジニアは、「人間が手動で環境を切り替えない仕組み」を作ります。

Insomniaの環境変数機能を使えば、リクエストのURLやヘッダーを「変数」として抽象化し、画面右上の一つのドロップダウンを切り替えるだけで、すべての設定値(URL、APIキー、ポート番号など)を自動的に切り替えることができるのです。

—

2. インストールと最速の基礎セットアップ

まずは、Insomniaの基本概念とセットアップを確認していきましょう。まだインストールしていない人は、公式サイトからダウンロードしておいてください。

Insomniaでは、プロジェクトやワークスペースの中に「Environment(環境)」という概念が紐づいています。

データのスコープを理解する

Insomniaには、変数を管理するレベルが2つあります。

  • Environment(環境変数): ワークスペース(プロジェクト単位)ごとに定義し、環境(Dev/Staging/Prod)ごとに値を切り替えるもの。
  • Global Variables(グローバル変数): どの環境にいても常に共通で参照したい値(例:共通のタイムアウト値や、全環境共通のシステム名など)を置くもの。

まずは、環境変数を設定して「Hello World」ならぬ「動的なAPIリクエスト」を飛ばせる状態を作りましょう。

—

3. 実践:環境変数を設定してAPIを叩いてみる

ここからが本番です。具体的な手順を追って、環境変数を構築していきましょう。

ステップ1: ワークスペースの作成と環境の定義

Insomniaを開き、新しいWorkspaceを作成します。次に、画面左上のワークスペース名をクリックし、「Manage Environments」を選択してください。

ここに、JSON形式で各環境の変数を定義します。初期状態では `base_url` などのサンプルが入っているはずです。これを次のように書き換えてみてください。

{
“base_url”: “http://localhost:3000”,
“api_version”: “v1”,
“timeout”: 5000
}

これは「Development(開発環境)」用の設定です。続いて、右上の「+」ボタンを押して、Staging環境やProduction環境用の設定を追加します。

【Staging環境用 JSON】

{
“base_url”: “https://stg-api.example.com”,
“api_version”: “v1”,
“timeout”: 10000
}

これで、環境ごとの変数の定義が完了しました。「Done」を押して閉じ、画面右上のドロップダウンから「Development」や「Staging」が選択できることを確認してください。

ステップ2: リクエストURLを変数化する(HelloWorld)

次は、実際にリクエストを作ってみます。新しいHTTPリクエストを作成し、URL欄に次のように入力してみてください。

{{ _.base_url }}/api/{{ _.api_version }}/users

【ここがポイント!】

  • `{{` と入力すると、Insomniaが自動的に補完候補(Nunjucks環境変数)を出してくれます。
  • `_.変数名` と書くことで、現在選択されている環境の変数が自動的にバインドされます。

この状態で、右上の環境ドロップダウンを「Development」にすれば `http://localhost:3000/api/v1/users` に、「Staging」に切り替えれば `https://stg-api.example.com/api/v1/users` に、リクエスト先が魔法のように自動で切り替わります。もうURLのコピペミスとはお別れです。

—

4. 認証トークンをスマートに共有する(極意:連鎖する変数)

APIテストで最も面倒なのが、「ログインAPIで取得したアクセストークンを、他のAPIのヘッダー(Authorization)にコピペする作業」です。

Insomniaの環境変数とResponseタグを組み合わせれば、この手作業を完全に自動化できます。

ログインリクエストからトークンを自動抽出する

1. ログイン用のPOSTリクエスト(例: `/api/v1/login`)を作成し、正常にレスポンスが返ってくる状態にします(レスポンスに `{“token”: “xyz12345…”}` が含まれていると仮定)。
2. 環境変数の設定画面(Manage Environments)を開きます。
3. 新たに `auth_token` という変数を追加します。

ここで手動で値をいれるのではなく、「Responseタグ」を埋め込みます。

1. 変数の値を入れる欄をクリックし、`Ctrl + Space`(Macは `Cmd + Space`)を押すか、値の入力欄の右端に出る小さなドロップダウンをクリックします。
2. 「Tag」の中から 「Response ♀」 を選択します。
3. どのリクエストのレスポンスから値を取るか(Requestの選択)と、どのJSONパスから値を取り出すか(Filter: `$.token` など)を指定します。

これにより、「ログインリクエストを叩いた瞬間に、そのレスポンスからトークンが抽出され、環境変数 `auth_token` に自動保存される」という仕組みが完成します。

他のリクエストでトークンを使い回す

あとは、保護されたAPIリクエスト(例: ユーザー情報取得)のHeadersタブで、次のように設定するだけです。

  • Header名: `Authorization`
  • 値: `Bearer {{ _.auth_token }}`

これで、ログインAPIを1回実行し直すだけで、プロジェクト内のすべての認証付きAPIが「新しいトークン」で自動的にテスト可能になります。劇的に効率が上がることが体感できるはずです。

—

5. 現場で使える!さらに一歩進んだテクニック

最後に、ベテランエンジニアが現場でこっそり使っている、Insomniaの高度なテクニックをいくつか紹介しておきます。

1. グローバル変数の活用

環境ごとに変わらない値――例えば「テスト用のデフォルトメールアドレスのドメイン(`@example.test`)」や「共通の組織ID」などは、環境変数ではなくGlobal Variablesに入れておきましょう。管理画面の左側のタブで「Global」を選択して定義できます。参照方法は環境変数と全く同じ `{{ _.global_variable_name }}` です。

2. 環境変数のネストとJSONパース

Insomniaの環境変数には、単なる文字列だけでなく、入れ子構造のJSONオブジェクトを持たせることも可能です。
例えば、以下のように環境変数にユーザーごとの情報を定義しておきます。

{
“users”: {
“admin”: {
“email”: “admin@example.com”,
“password”: “super-secret-password”
}
}
}

リクエストのJSONボディ内で `{{ _.users.admin.email }}` のように呼び出すことで、テストデータの管理が驚くほどクリーンになります。

—

ディオ(先輩エンジニア)からのアドバイスとしては以上です。

ツールに仕事をさせられるのではなく、ツールに面倒な作業をすべて肩代わりさせる。これが、バグのない美しいAPI開発・テストを行うための第一歩です。

今日からあなたのInsomniaの設定を見直し、環境変数とグローバル変数を駆使して、ストレスフリーなAPI開発ライフを手に入れてください!

タイトルとURLをコピーしました