
Postmanの管理が辛くなったのでBrunoに移行してみた — VSCode連携・Git管理・シークレット管理まで
はじめに
APIテストツールといえばPostmanが定番ですが、長く使っていると地味にストレスが溜まります。
- プロジェクトAのコレクションとプロジェクトBのコレクションがPostmanのUI上に混在する
- チームメンバーとコレクションを共有するにはPostmanアカウントが必要
- エクスポートしたJSONをGitで管理しても、差分が読みにくい
最近 Bruno というオープンソースのAPIクライアントを試してみたところ、これらの問題がきれいに解決できたので、セットアップ手順をまとめます。

Brunoの何が良いのか
プロジェクト単位でAPIコレクションが完結する
Brunoではコレクションを プロジェクトフォルダ内 に .bru ファイルとして配置します。Postmanのように全プロジェクトのコレクションが1つのアプリに混在することがなく、 プロジェクト = コレクション という1:1対応が自然に実現します。
Gitで管理・共有できる
.bru ファイルはプレーンテキストなので、Gitの差分も見やすく、PRでレビューもできます。新メンバーが git clone すれば、すぐにAPIテスト環境が手に入ります。Postmanアカウントの招待やエクスポート/インポートの手間はありません。

アカウント不要・オフラインで動く
Brunoにはクラウド同期がありません。ログインもサブスクリプションも不要です。ネットワークが不安定な環境でもローカルで完結して動きます。
前提・環境
| 項目 | バージョン |
|---|---|
| macOS | 15.x |
| Bruno Desktop | 最新版 |
| VSCode | 1.9x |
| Bruno VSCode拡張 | 最新版 |
セットアップ手順
Step 1: Bruno Desktopアプリをインストールする
Bruno公式サイト からデスクトップアプリをダウンロードしてインストールします。
macOSの場合はHomebrewでもインストールできます:
brew install bruno

Step 2: VSCode拡張をインストールする
VSCodeの拡張機能マーケットプレイスから Bruno を検索してインストールします。
この拡張により、VSCode上で .bru ファイルのシンタックスハイライトが有効になり、コレクションフォルダを右クリックして「Open with Bruno」でデスクトップアプリを起動できるようになります。

Step 3: コレクションを作成する
プロジェクトルートに .bruno/ ディレクトリを作成し、コレクション設定ファイルを配置します。
mkdir .bruno
bruno.json(コレクション設定)
{
"version": "1",
"name": "My API Collection",
"type": "collection",
"ignore": ["node_modules", ".git"]
}
collection.bru(コレクション変数)
vars:pre-request {
base_url: https://api.example.com
api_token: your-token-here
}
collection.bru にはAPIトークンなどの機密情報を含むことがあるため、.gitignore に追加しておきます:
.bruno/collection.bru
チームメンバー向けに、空のテンプレートを別名で用意しておくと親切です:
# collection.example.bru
vars:pre-request {
base_url: https://api.example.com
api_token:
}
Step 4: リクエストファイルを作成する
.bruno/ ディレクトリ内に、1リクエスト = 1ファイルで .bru ファイルを作成します。
GETリクエストの例
meta {
name: list-users
type: http
seq: 1
}
get {
url: {{base_url}}/users
body: none
auth: bearer
}
auth:bearer {
token: {{api_token}}
}
POSTリクエストの例
meta {
name: create-user
type: http
seq: 2
}
post {
url: {{base_url}}/users
body: json
auth: bearer
}
auth:bearer {
token: {{api_token}}
}
body:json {
{
"name": "Test User",
"email": "test@example.com"
}
}
ポイント:
{{variable_name}}でcollection.bruの変数を参照できるauth:bearerブロックでトークン認証を設定body:jsonブロックにJSONボディを記述seqでBruno上での表示順を制御
Step 5: リクエストを実行する
VSCodeで .bruno フォルダを右クリックし、「Open with Bruno」 を選択するとBrunoデスクトップアプリでコレクションが開きます。各リクエストをクリックして「Send」で実行できます。

シークレット・変数管理のポイント
collection.bru をGitから除外する
前述の通り、実際のトークン値が入る collection.bru は .gitignore に追加します。代わりに collection.example.bru をコミットしておき、READMEなどでセットアップ手順を案内します:
cp .bruno/collection.example.bru .bruno/collection.bru
# collection.bru を開いて、自分のトークンを記入
おまけ: Claude Code で .bru ファイルを自動生成する
今回のセットアップを通じて、Claude Codeのカスタムスキル /bruno も作成しました。ソースコード内のAPI呼び出しを読み取り、対応する .bru ファイルを自動生成するスキルです。
使い方:
/bruno scripts/contentful.py
これだけで、指定したPythonファイル内のHTTPリクエストを解析し、適切な .bru ファイルをすべて生成してくれます。手動でリクエストのURL・ヘッダー・ボディをひとつずつ書き写す手間がなくなりました。
スキルの定義は .claude/commands/bruno.md にあるので、自分のプロジェクトに合わせてカスタマイズすることもできます。
正直な感想
BrunoはPostmanの完全な代替ではありません。Postmanにある高度なテスト自動化やモック、モニタリング機能はBrunoにはありません。UIの洗練度もPostmanに一日の長があります。
ただ、自分のユースケース — プロジェクト固有のAPIをちょっと叩いて確認したい、それをチームで共有したい — にはBrunoが明らかに合っていました。ファイルベースでGit管理できるのは本当に楽です。PRで「このエンドポイントの.bruファイルも追加しておいて」とレビューできるのは、地味に嬉しいポイントです。
もうPostmanの左サイドバーで「これどのプロジェクトのやつだっけ」と迷う日々には戻りたくないです。
まとめ
- BrunoはPostmanの「コレクションがアプリに紐づく」問題を解決する
.bruファイルはプレーンテキストなのでGit管理しやすいcollection.bru+.gitignore+collection.example.bruのパターンでシークレットを安全に管理できる- VSCode拡張で右クリックからBrunoを起動できる
- Claude Codeのカスタムスキルで
.bruファイルの生成を自動化できる









