News

Postman卒業のススメ:Git管理できる軽量APIクライアント「Bruno」徹底解説と完全クローン構築ガイド

🧭 はじめに

API開発に欠かせないPostman。しかし最近、「重い」「プロジェクト単位の管理が難しい」「差分レビューができない」と感じていませんか?

そんな不満に応えて登場したのが、軽量かつGitフレンドリーなオープンソースAPIクライアント「Bruno」です。

本記事では、

  • Brunoとは何か?なぜバズっているのか?
  • 私が作成したBruno風クローンアプリ「papi_client」について
  • papi_clientの技術構成・実装解説・拡張性

を解説します。
わざわざ今あるサービスをクローンしたのは、「自分の使うものは自分で作ってみたい」という単純な理由です。

Pythonの学習用などに是非ご活用ください。


🚀 Brunoとは何か?

✅ 特徴まとめ

特徴解説
軽量高速Electron製ではあるがメモリ消費が非常に少ない
Git連携最適APIリクエストを .bru テキストで管理、差分比較が容易
ローカル完結ネット不要で動作、オフラインでのAPIデバッグが可能
OSS & 無料GitHub上でオープンソースとして活発に開発中

🌍 バズ理由

  • Postmanに代わる「GitにやさしいAPIツール」として急浮上
  • Reddit / HackerNews / Qiitaでの紹介記事が多数
  • GitHubスター数:27,000以上(2025年4月時点)
  • Qiita記事がはてブ1位になるなど、日本でも注目増

📦 “.bru” ファイルの例

GET https://api.example.com/users

Authorization: Bearer {{TOKEN}}

これをGitで管理できる → 差分レビューOK、PR管理OK。


🛠️ 自作しました:「papi_client」

papi_client は、Brunoの思想を取り入れたAPIクライアントです。

  • GUIでAPI構成を定義
  • .papi ファイルでリクエスト・ヘッダー・ボディ・環境変数を記述
  • JSONレスポンス整形+保存
  • 認証トークンUI、プロジェクト一覧表示あり

🔗 GitHub: https://github.com/Yuusuke9228/papi_client

📦 技術構成

技術用途
Python + PyQt5GUI構築(軽量スタンドアロン)
JSON/YAML設定ファイルフォーマット
requestsAPIリクエスト送信モジュール
sqlite3(予定)保存機能に今後対応

🔧 ファイル構成と起動方法

papi_client/
├─ gui/
│   └─ main_window.py
├─ core/
│   ├─ parser.py
│   └─ sender.py
├─ projects/
│   └─ sample.papi
├─ assets/
│   └─ logo.svg

🖥 起動コマンド

python gui/main_window.py

起動後、GUI上で.papiファイルを読み込み、API定義を選択して「送信」するだけ。


📄 .papi ファイル仕様

{
  "name": "Get Users",
  "method": "GET",
  "url": "https://jsonplaceholder.typicode.com/users",
  "headers": {
    "Authorization": "Bearer {{API_KEY}}"
  },
  "env": {
    "API_KEY": "your-token-here"
  }
}

🧠 拡張例

機能解説
環境変数ファイル .env 読み込みdotenv形式を読み込んでトークン管理
リクエスト履歴表示過去のAPI呼び出しを一覧化&再送信
テストスクリプトassert status == 200 的な記述サポート予定
ファイル添付Multipart形式に対応予定

🔒 安全性とオフライン性

  • 完全ローカルアプリ
  • 通信は選択されたAPI先のみに行う
  • .papiファイルのみで構成可能(Git管理向き)

🌟 Brunoとpapi_clientの違い

項目Brunopapi_client
GUIElectron + ReactPyQt5(軽量)
記述形式.bru.papi(JSON)
プラットフォームWin/Mac/LinuxWin/Mac/Linux(Python環境)
Git管理
OSS公開✅(MITライセンス)

🧪 使用例:ChatGPT APIをテスト

{
  "name": "ChatGPT Test",
  "method": "POST",
  "url": "https://api.openai.com/v1/chat/completions",
  "headers": {
    "Authorization": "Bearer {{OPENAI_KEY}}",
    "Content-Type": "application/json"
  },
  "body": {
    "model": "gpt-3.5-turbo",
    "messages": [{"role": "user", "content": "こんにちは"}]
  },
  "env": {
    "OPENAI_KEY": "sk-***"
  }
}

これをpapi_clientで読み込んで送信 → JSON整形された応答を表示&保存可能。


📢 まとめ:これからは「GitでAPI管理する時代」

Postmanは便利ですが、GUI重視ゆえに変更履歴やレビューが難しい。その点、Brunoやpapi_clientのように、

  • 軽量で高速
  • テキストベースで構成
  • Gitと相性抜群

なツールは、開発現場に新たな選択肢を提供してくれます。

papi_clientも今後以下のような機能追加を予定中:

  • 認証テンプレート(OAuth 2.0)
  • 自動スキーマ補完
  • REST/GraphQL両対応

気になった方はぜひGitHubからcloneして触ってみてください。

🔗 https://github.com/Yuusuke9228/papi_client