AI

OSSのAPIクライアント比較:Bruno vs Hoppscotch vs Insomnia でPostman代替をチームに導入する

オープンソースラボ編集部2026年6月14日

OSSのAPIクライアント比較:Bruno vs Hoppscotch vs Insomnia でPostman代替をチームに導入する

Postman(月$14/ユーザー〜)・Insomnia(月$0〜$16〜)に対して、Bruno(Gitフレンドリー・ファイルベース・オフライン)・Hoppscotch(Webベース・軽量・無料)・HTTPie Desktop(最もシンプルなCLI/GUI)はOSSのAPIテストクライアントです。

APIクライアントが必要な場面

  • API開発中の動作確認: JWTトークン付きのPOSTリクエストを送って200が返るか確認
  • チームでAPIコレクション共有: 全エンドポイント・認証設定をチーム全員で使い回す
  • 環境切り替え: dev/staging/production のURLとトークンを環境変数で管理
  • テスト・モック: APIレスポンスのアサーションを記述して自動テスト化

主要ツールの概要

Bruno

2023年に公開されたElectron製のOSSデスクトップAPIクライアントです。GitHubスター31k+。Postmanとの最大の違いはコレクションをフォルダ(.bruファイル)に保存してGitで管理できる点です。クラウド同期がなく全データがローカルファイル(ブルーノ独自のMarkdownライクな形式)に保存されるため、プライバシーに優れGitHubで他の開発者と共有できます。

# Bruno コレクション構成(.bruファイルはプレーンテキスト)
api-collection/
  bruno.json              # コレクション設定
  environments/
    local.bru             # ローカル環境変数
    staging.bru           # ステージング環境変数
    production.bru        # 本番環境変数
  auth/
    login.bru             # ログインエンドポイント
    refresh-token.bru     # トークンリフレッシュ
  users/
    get-profile.bru       # ユーザープロフィール取得
    update-profile.bru    # プロフィール更新
  posts/
    list-posts.bru        # 記事一覧
    create-post.bru       # 記事作成
    delete-post.bru       # 記事削除
# list-posts.bru - Brunoリクエストファイルの中身
meta {
  name: List Posts
  type: http
  seq: 1
}

get {
  url: {{baseUrl}}/api/posts?status=published&page={{page}}
  body: none
  auth: bearer
}

auth:bearer {
  token: {{accessToken}}
}

params:query {
  status: published
  page: 1
  limit: 10
}

headers {
  Content-Type: application/json
  Accept: application/json
}

script:post-response {
  const res = bru.response.getBody();
  bru.setVar("totalPages", res.meta.totalPages);

  // アサーション(テスト自動化)
  test("Status 200", function() {
    expect(res.getStatus()).to.equal(200);
  });
  test("Posts array is not empty", function() {
    expect(res.data.length).to.be.greaterThan(0);
  });
}
# Bruno CLI(CI/CDで使用)
npm install -g @usebruno/cli

# コレクションをCIで実行
bru run --env staging api-collection/posts/
bru run --env production api-collection/ --output report.html

# 特定のフォルダのみ実行
bru run api-collection/auth/ --env local

Hoppscotch

2019年に公開されたVue.js製のWebベースAPIクライアントです。GitHubスター67k+。ブラウザで動きChrome拡張やデスクトップアプリのインストールなしに使えるのが最大の特徴。REST・GraphQL・WebSocket・SSEのリクエストをサポートし、セルフホスト版も提供されています。

# Hoppscotch セルフホスト版(Docker Compose)
git clone https://github.com/hoppscotch/hoppscotch
cd hoppscotch

cat > .env << 'EOF'
DATABASE_URL=postgresql://hoppscotch:hoppscotch@db:5432/hoppscotch
JWT_SECRET=your-jwt-secret
SESSION_SECRET=your-session-secret
REDIRECT_URL=http://localhost:3000
WHITELISTED_ORIGINS=http://localhost:3000
VITE_ALLOWED_AUTH_PROVIDERS=EMAIL,GITHUB,GOOGLE
GITHUB_CLIENT_ID=your-github-client-id
GITHUB_CLIENT_SECRET=your-github-client-secret
EOF

docker compose up -d
# Hoppscotch WebUI: http://localhost:3000
// Hoppscotch の Pre-request Script(リクエスト前の処理)
// ログインしてアクセストークンを取得して変数にセット
const response = await pw.sendRequest({
  method: "POST",
  url: `${pw.env.get("baseUrl")}/api/auth/login`,
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({
    email: pw.env.get("email"),
    password: pw.env.get("password"),
  }),
});

const { accessToken, refreshToken } = response.body;
pw.env.set("accessToken", accessToken);
pw.env.set("refreshToken", refreshToken);

// Test Script(レスポンス検証)
pw.test("ログイン成功", function() {
  pw.expect(response.status).toBe(200);
  pw.expect(accessToken).toBeTruthy();
});

機能比較表

比較項目BrunoHoppscotchInsomnia
Gitでコレクション管理✅(ファイルベース)
クラウド同期❌(ローカルのみ)
WebSocket/SSE限定的
GraphQL
CLI(CI/CD対応)
GitHub Stars31k+67k+34k+

Bruno/HoppscotchでテストしたエンドポイントにはSecurityカテゴリ/categories/securityのAuth.js・Better Authで認証を実装します。APIのレスポンス時間をモニタリングするにはDevOpsカテゴリ/categories/devopsのGrafana+Prometheusと組み合わせてください。

FAQ

Q. PostmanからBrunoへの移行はどうやればいいですか?

A. BrunoはPostmanコレクションのインポート機能があります。PostmanでコレクションをJSONエクスポート(Postman Collection v2.1形式)してBrunoにインポートすると.bruファイルに変換されます。環境変数・リクエスト・認証設定が自動変換されます。ただしPostmanの高度なスクリプト(Chaike・特殊ライブラリ使用)は手動修正が必要な場合があります。チームでのGit移行手順: ①Postmanコレクションをエクスポート②Brunoでインポート→.bruファイルを確認③GitHubリポジトリにコミット④チームメンバーがGitHubからクローンしてBrunoで開く。

Q. BrunoのCLI(bru run)をGitHub Actionsで実行するには?

A. .github/workflows/api-tests.ymlを作成します。

name: API Tests
on:
  pull_request:
    paths: ["api/**", "src/app/api/**"]

jobs:
  api-test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: アプリを起動
        run: npm install && npm run build && npm run start &
        env:
          DATABASE_URL: ${{ secrets.TEST_DATABASE_URL }}

      - name: サーバー起動を待機
        run: npx wait-on http://localhost:3000

      - name: Bruno CLI でAPIテストを実行
        run: |
          npm install -g @usebruno/cli
          bru run api-collection/ --env ci --output report.html

      - name: テストレポートをアーティファクトに保存
        if: always()
        uses: actions/upload-artifact@v4
        with:
          name: api-test-report
          path: report.html

Q. Hoppscotchのセルフホスト版と公式クラウド版の違いは?

A. セルフホスト版: ①データが完全に自社管理(GDPR対応・機密APIのテストにも安心)②カスタムOAuthプロバイダーの設定が可能③無制限のチームメンバー・コレクション④PostgreSQL+Redisのインフラが必要。公式クラウド版(hoppscotch.io): ①セットアップ不要で即使える②無料プランはコレクション共有が制限あり③チームプラン月$12/人。医療・金融・社内向けAPIはセルフホスト版を推奨。個人開発者やオープンなAPIテストは公式クラウドが手軽です。

Q. GraphQL APIをBrunoでテストする方法を教えてください

A. BrunoはGraphQLを専用サポートしています。.bruファイルのtypegraphqlに設定します。

# get-user.bru(GraphQLリクエスト)
meta {
  name: Get User Profile
  type: graphql
  seq: 1
}

post {
  url: {{baseUrl}}/graphql
  auth: bearer
}

auth:bearer {
  token: {{accessToken}}
}

body:graphql {
  query GetUser($id: ID!) {
    user(id: $id) {
      id name email
      posts(first: 5) {
        edges { node { title publishedAt } }
      }
    }
  }
}

body:graphql:vars {
  { "id": "{{userId}}" }
}

まとめ

ユースケース推奨ツール
Gitでコレクション管理・チームでバージョン管理Bruno
ブラウザで即使える・インストール不要Hoppscotch
Postman互換・既存ワークフロー継続Insomnia

関連外部リソース

他の記事も読む

Let's Build Together

OSS導入、自社だけで悩まない。

ツール選定から構築・運用・AI活用まで、オープンソースラボ運営元のClasslessが伴走します。初回のご相談は無料です。