Postmanの代替として注目されるBrunoの使い方を徹底解説。インストールからPostmanからの移行手順、Git管理対応の利点、他ツールとの比較まで実例付きで紹介します。
SaaS比較
公開: by ToolCraft Lab 約13分で読めます

Postman代替ツール Bruno完全ガイド【2026年版】— Git管理できるAPI開発環境

Postmanの代替として注目されるBrunoの使い方を徹底解説。インストールからPostmanからの移行手順、Git管理対応の利点、他ツールとの比較まで実例付きで紹介します。

#Bruno#Postman#API開発

「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代替のNocoDBFigma代替のPenpotも注目されています。

Brunoの主な特徴

特徴詳細
ライセンスMIT License(完全無料)
データ保存ローカルファイルシステム(クラウド不要)
ファイル形式Bru言語(独自のプレーンテキスト形式)
Git管理ネイティブ対応
オフライン利用完全対応
対応OSWindows / 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

インストール後の初期設定

  1. Brunoを起動する
  2. 「Create Collection」をクリックして新しいコレクションを作成する
  3. 保存先フォルダを選択する(プロジェクトのリポジトリ内がおすすめ)
  4. コレクション名を入力して「Create」をクリックする

💡 Tips: コレクションの保存先をGitリポジトリのルートに api/ などのディレクトリ名で作成しておくと、コードとAPIリクエスト定義を一緒にバージョン管理できます。

Brunoの基本操作

リクエストの作成

  1. コレクション名を右クリックし、「New Request」を選択する
  2. リクエスト名を入力する(例: ユーザー一覧取得
  3. HTTPメソッド(GET / POST / PUT / DELETEなど)を選択する
  4. URLを入力する
  5. 「Send」ボタンをクリックしてリクエストを実行する

環境変数の管理

Brunoでは、環境変数をコレクション単位で管理できます。

  1. コレクション名をクリックし、「Environments」タブを選択する
  2. 「Create Environment」で新しい環境を作成する(例: development, staging, production
  3. 変数を追加する
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で管理することには、以下のメリットがあります。

  1. 変更履歴の追跡: 誰がいつどのリクエストを変更したか把握できる
  2. コードレビュー: APIリクエストの変更もPRでレビューできる
  3. ブランチ運用: フィーチャーブランチでAPIリクエストを追加し、マージで統合できる
  4. チーム共有: Gitリポジトリを共有するだけでコレクションが共有される
  5. バックアップ: 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からコレクションをエクスポート

  1. Postmanを開く
  2. 移行したいコレクションの「…」メニューをクリック
  3. 「Export」を選択
  4. 「Collection v2.1」形式を選択して「Export」をクリック
  5. JSONファイルを任意の場所に保存する

ステップ2: Brunoにインポート

  1. Brunoを開く
  2. 左下の「Import Collection」をクリック
  3. 「Postman Collection」を選択
  4. エクスポートしたJSONファイルを選択する
  5. 保存先フォルダを指定する
  6. 「Import」をクリックする

ステップ3: 移行後の確認ポイント

インポート後に以下を確認しましょう。

  • 環境変数: Postmanの環境変数は別途移行が必要です。Brunoの環境設定で再設定してください
  • Pre-request Script: Postmanの pm オブジェクトは bru オブジェクトに読み替える必要があります
  • テストスクリプト: pm.test()test()pm.responsebru.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クライアントです。

比較項目BrunoInsomnia
料金完全無料(MIT License)無料プラン+有料プラン($5/月〜)
データ保存ローカルファイルローカル+クラウド
Git管理ネイティブ対応Git Syncプラグイン(有料)
プラグイン限定的豊富
GraphQL対応対応対応
gRPC対応未対応対応
WebSocket未対応対応

InsomniaよりBrunoが向いているケース:

  • Git管理を無料で使いたい場合
  • クラウドにデータを保存したくない場合
  • シンプルなREST API開発が中心の場合

Bruno vs Hoppscotch

HoppscotchはブラウザベースのAPIクライアントです。

比較項目BrunoHoppscotch
料金完全無料無料(セルフホスト)/ 有料(クラウド)
動作環境デスクトップアプリブラウザ+デスクトップ
オフライン完全対応デスクトップ版のみ
Git管理ネイティブ対応非対応(クラウド同期)
コラボレーションGitベースリアルタイム共同編集(有料)
UI/UXシンプルモダンで洗練

HoppscotchよりBrunoが向いているケース:

  • デスクトップアプリとして使いたい場合
  • Gitベースのワークフローを重視する場合
  • オフライン環境での利用が多い場合

3ツール比較まとめ

項目BrunoInsomniaHoppscotch
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開発には十分

まずは小規模なプロジェクトで試してみて、ワークフローに合うか確認してみてください。

関連リンク