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();
});
機能比較表
| 比較項目 | Bruno | Hoppscotch | Insomnia |
|---|---|---|---|
| Gitでコレクション管理 | ✅(ファイルベース) | ❌ | ❌ |
| クラウド同期 | ❌(ローカルのみ) | ✅ | ✅ |
| WebSocket/SSE | ✅ | ✅ | 限定的 |
| GraphQL | ✅ | ✅ | ✅ |
| CLI(CI/CD対応) | ✅ | ❌ | ✅ |
| GitHub Stars | 31k+ | 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ファイルのtypeをgraphqlに設定します。
# 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 |