Postman代替ツール Bruno完全ガイド【2026年版】— Git管理できるAPI開発環境
Postmanの代替として注目されるBrunoの使い方を徹底解説。インストールからPostmanからの移行手順、Git管理対応の利点、他ツールとの比較まで実例付きで紹介します。
「Postmanが有料化してきて、もっと軽量でGit管理できるAPIクライアントが欲しい…」 そんなエンジニアの声に応えるのが、オープンソースAPIクライアントBrunoです。
本記事では、BrunoのインストールからPostmanとの機能比較、移行手順、さらにInsomniaやHoppscotchとの違いまで、API開発に必要な情報をステップバイステップで解説します。
Postman有料化の流れ — なぜ代替ツールが必要なのか
Postmanの料金改定の歴史
Postmanは長らくAPI開発者にとってのスタンダードツールでした。しかし、近年は無料プランの制限が段階的に強化されています。
- 2023年: 無料プランのコレクション共有が制限される
- 2024年: Lightweightクライアントの廃止、クラウド同期が必須化
- 2025年: 無料プランのAPI呼び出し回数に月間上限が追加
- 2026年: チームワークスペースの無料枠がさらに縮小
こうした変更により、個人開発者や小規模チームにとってPostmanの無料利用が難しくなりつつあります。
Postmanの課題
有料化だけでなく、Postmanには以下の構造的な課題もあります。
- クラウド依存: コレクションがPostmanのサーバーに保存される(セキュリティ上の懸念)
- アプリの肥大化: 年々機能が追加され、起動が遅くなっている
- Git管理が困難: コレクションをJSON形式でエクスポートできるが、差分管理には不向き
- オフライン利用の制限: クラウド同期前提の設計でオフライン環境では使いにくい
Brunoとは — オープンソースのAPI開発クライアント
Brunoの概要
Brunoは、2023年にリリースされたオープンソースのAPIクライアントです。MIT Licenseで公開されており、完全に無料で利用できます。
Brunoの最大の特徴は、APIリクエストをファイルシステム上にプレーンテキストとして保存することです。これにより、Gitでのバージョン管理が自然にできます。同じ「オープンソースで代替」の流れとしては、Airtable代替のNocoDBやFigma代替のPenpotも注目されています。
Brunoの主な特徴
| 特徴 | 詳細 |
|---|---|
| ライセンス | MIT License(完全無料) |
| データ保存 | ローカルファイルシステム(クラウド不要) |
| ファイル形式 | Bru言語(独自のプレーンテキスト形式) |
| Git管理 | ネイティブ対応 |
| オフライン利用 | 完全対応 |
| 対応OS | Windows / macOS / Linux |
| インポート | Postman / Insomnia / OpenAPI対応 |
Bru言語とは
BrunoはAPIリクエストを「Bru」という独自のマークアップ言語で保存します。以下はGETリクエストの例です。
meta {
name: ユーザー一覧取得
type: http
seq: 1
}
get {
url: https://api.example.com/users
body: none
auth: bearer
}
auth:bearer {
token: {{access_token}}
}
headers {
Content-Type: application/json
Accept: application/json
}
JSONと比べて人間が読みやすく、Gitでの差分比較も容易です。
Brunoのインストール方法
macOSの場合
Homebrewを使ったインストールが最も簡単です。
brew install bruno
または、公式サイトから .dmg ファイルをダウンロードしてインストールします。
Windowsの場合
# Chocolateyを使う場合
choco install bruno
# Scoopを使う場合
scoop bucket add extras
scoop install bruno
Linuxの場合
# Snapを使う場合
sudo snap install bruno
# AppImageを使う場合
# 公式サイトからAppImageをダウンロードして実行権限を付与
chmod +x Bruno-*.AppImage
./Bruno-*.AppImage
インストール後の初期設定
- Brunoを起動する
- 「Create Collection」をクリックして新しいコレクションを作成する
- 保存先フォルダを選択する(プロジェクトのリポジトリ内がおすすめ)
- コレクション名を入力して「Create」をクリックする
💡 Tips: コレクションの保存先をGitリポジトリのルートに
api/などのディレクトリ名で作成しておくと、コードとAPIリクエスト定義を一緒にバージョン管理できます。
Brunoの基本操作
リクエストの作成
- コレクション名を右クリックし、「New Request」を選択する
- リクエスト名を入力する(例:
ユーザー一覧取得) - HTTPメソッド(GET / POST / PUT / DELETEなど)を選択する
- URLを入力する
- 「Send」ボタンをクリックしてリクエストを実行する
環境変数の管理
Brunoでは、環境変数をコレクション単位で管理できます。
- コレクション名をクリックし、「Environments」タブを選択する
- 「Create Environment」で新しい環境を作成する(例:
development,staging,production) - 変数を追加する
vars {
base_url: https://api.example.com
api_key: your-api-key-here
}
リクエストURL内で {{base_url}}/users のように参照できます。
認証設定
Brunoは主要な認証方式に対応しています。
- Bearer Token: JWTなどのトークンベース認証
- Basic Auth: ユーザー名・パスワード認証
- API Key: ヘッダーまたはクエリパラメータでのAPIキー認証
- OAuth 2.0: Authorization Code / Client Credentialsフロー
コレクション全体に認証設定を適用することも、個別リクエストで上書きすることも可能です。
スクリプトの実行
Brunoではリクエストの前後にJavaScriptを実行できます。
// Pre-request Script
const timestamp = Date.now();
bru.setVar("timestamp", timestamp);
// Post-response Script(テスト)
const res = bru.getResponse();
const body = res.getBody();
test("ステータスコードが200である", () => {
expect(res.getStatus()).to.equal(200);
});
test("ユーザー一覧が返される", () => {
expect(body.users).to.be.an("array");
expect(body.users.length).to.be.greaterThan(0);
});
Git管理対応 — Brunoの最大の利点
なぜGit管理が重要なのか
APIリクエストのコレクションをGitで管理することには、以下のメリットがあります。
- 変更履歴の追跡: 誰がいつどのリクエストを変更したか把握できる
- コードレビュー: APIリクエストの変更もPRでレビューできる
- ブランチ運用: フィーチャーブランチでAPIリクエストを追加し、マージで統合できる
- チーム共有: Gitリポジトリを共有するだけでコレクションが共有される
- バックアップ: Gitリポジトリ自体がバックアップになる
ディレクトリ構成の例
my-project/
├── src/
│ └── ...
├── api/ # Brunoコレクション
│ ├── bruno.json # コレクション設定
│ ├── environments/
│ │ ├── development.bru
│ │ ├── staging.bru
│ │ └── production.bru
│ ├── auth/
│ │ ├── login.bru
│ │ └── refresh-token.bru
│ └── users/
│ ├── get-users.bru
│ ├── get-user-by-id.bru
│ ├── create-user.bru
│ └── update-user.bru
├── .gitignore
└── package.json
.gitignoreの設定
環境変数にはAPIキーなどの機密情報が含まれる場合があります。.gitignore に以下を追加しましょう。
# Brunoの環境変数ファイル(機密情報を含む場合)
api/environments/production.bru
api/environments/*.local.bru
CLIでの実行
BrunoにはCLI版も用意されており、CI/CDパイプラインでのAPIテスト実行が可能です。Docker Composeと組み合わせて開発環境ごとテスト自動化する構成もおすすめです。
# CLIのインストール
npm install -g @usebruno/cli
# コレクション全体を実行
bru run --env development
# 特定のフォルダのみ実行
bru run api/users --env development
# JUnit形式でレポート出力
bru run --env development --reporter junit --output results.xml
Postmanからの移行手順
ステップ1: Postmanからコレクションをエクスポート
- Postmanを開く
- 移行したいコレクションの「…」メニューをクリック
- 「Export」を選択
- 「Collection v2.1」形式を選択して「Export」をクリック
- JSONファイルを任意の場所に保存する
ステップ2: Brunoにインポート
- Brunoを開く
- 左下の「Import Collection」をクリック
- 「Postman Collection」を選択
- エクスポートしたJSONファイルを選択する
- 保存先フォルダを指定する
- 「Import」をクリックする
ステップ3: 移行後の確認ポイント
インポート後に以下を確認しましょう。
- 環境変数: Postmanの環境変数は別途移行が必要です。Brunoの環境設定で再設定してください
- Pre-request Script: Postmanの
pmオブジェクトはbruオブジェクトに読み替える必要があります - テストスクリプト:
pm.test()→test()、pm.response→bru.getResponse()に変更します - 認証設定: コレクションレベルの認証設定が正しく引き継がれているか確認します
スクリプトの変換例
Postman:
pm.test("Status code is 200", function () {
pm.response.to.have.status(200);
});
const jsonData = pm.response.json();
pm.environment.set("user_id", jsonData.id);
Bruno:
test("Status code is 200", () => {
const res = bru.getResponse();
expect(res.getStatus()).to.equal(200);
});
const body = bru.getResponse().getBody();
bru.setEnvVar("user_id", body.id);
他の代替ツールとの比較
Bruno vs Insomnia
InsomniaはKongが開発するAPIクライアントです。
| 比較項目 | Bruno | Insomnia |
|---|---|---|
| 料金 | 完全無料(MIT License) | 無料プラン+有料プラン($5/月〜) |
| データ保存 | ローカルファイル | ローカル+クラウド |
| Git管理 | ネイティブ対応 | Git Syncプラグイン(有料) |
| プラグイン | 限定的 | 豊富 |
| GraphQL対応 | 対応 | 対応 |
| gRPC対応 | 未対応 | 対応 |
| WebSocket | 未対応 | 対応 |
InsomniaよりBrunoが向いているケース:
- Git管理を無料で使いたい場合
- クラウドにデータを保存したくない場合
- シンプルなREST API開発が中心の場合
Bruno vs Hoppscotch
HoppscotchはブラウザベースのAPIクライアントです。
| 比較項目 | Bruno | Hoppscotch |
|---|---|---|
| 料金 | 完全無料 | 無料(セルフホスト)/ 有料(クラウド) |
| 動作環境 | デスクトップアプリ | ブラウザ+デスクトップ |
| オフライン | 完全対応 | デスクトップ版のみ |
| Git管理 | ネイティブ対応 | 非対応(クラウド同期) |
| コラボレーション | Gitベース | リアルタイム共同編集(有料) |
| UI/UX | シンプル | モダンで洗練 |
HoppscotchよりBrunoが向いているケース:
- デスクトップアプリとして使いたい場合
- Gitベースのワークフローを重視する場合
- オフライン環境での利用が多い場合
3ツール比較まとめ
| 項目 | Bruno | Insomnia | Hoppscotch |
|---|---|---|---|
| Git管理 | ◎ | △ | × |
| 無料度 | ◎ | ○ | ○ |
| エコシステム | △ | ○ | ○ |
| 軽量さ | ◎ | ○ | ◎ |
| チーム向け | ○ | ◎ | ◎ |
Brunoを使う上での注意点
現時点での制限
Brunoはまだ発展途上のツールです。以下の点に注意してください。
- プラグインエコシステム: Postmanほどの拡張性はまだない
- WebSocket / gRPC: REST API以外のプロトコルへの対応は限定的
- モック機能: Postmanのモックサーバーのような機能は未実装
- ドキュメント生成: APIドキュメントの自動生成機能は開発中
向いているプロジェクト
- REST APIの開発・テストが中心
- Gitでの変更管理を徹底したいチーム
- セキュリティポリシーでクラウドにデータを置けない環境
- 軽量で高速なツールを求める個人開発者
まとめ
Brunoは「Git管理対応」「完全無料」「ローカルファースト」という3つの強みを持つAPIクライアントです。Postmanの有料化が進む中、特にGit中心のワークフローを採用しているチームにとって魅力的な選択肢となっています。
この記事のポイント:
- Postmanの有料化に伴い、代替ツールの需要が高まっている
- BrunoはAPIリクエストをプレーンテキスト(Bru形式)で保存し、Git管理が容易
- Postmanからのインポート機能があり、移行の敷居は低い
- CLIでCI/CDパイプラインへの組み込みも可能
- WebSocketやgRPCなど一部機能は未対応だが、REST API開発には十分
まずは小規模なプロジェクトで試してみて、ワークフローに合うか確認してみてください。