こんにちは!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開発ライフを手に入れてください!