はじめに
結論から言うと、BrunoはAPIクライアントの新しい選択肢として、個人的にはかなりアリだと思っています。
PostmanやInsomniaを使っている方は多いと思うんですが、正直なところ、最近のPostmanって重くないですか?アカウント作成必須になったり、クラウド同期がデフォルトだったり。個人開発やセキュリティに敏感なプロジェクトだと、ちょっと気になる部分があるんですよね。
そこで今回紹介するのがBrunoというオープンソースのAPIクライアントです。GitHubで39,000スター以上を獲得していて、381人以上のコントリビューターがいる、かなり活発なプロジェクトです。
Brunoとは
Brunoは、APIの探索・テストに特化したオープンソースのAPIクライアントです。PostmanやInsomniaの軽量な代替として設計されていて、「オフラインファースト」「Gitフレンドリー」をコンセプトにしています。
公式サイト: https://www.usebruno.com GitHub: https://github.com/usebruno/bruno
特徴・メリット
1. オフラインファースト
これ、意外と重要なポイントなんですよ。
Brunoはクラウド同期機能をあえて搭載していません。すべてのデータはローカルに保存されます。APIキーや認証情報がクラウドに送信される心配がないので、セキュリティに敏感なプロジェクトでも安心して使えます。
# データの流れ
Postman: ローカル → クラウド → チーム共有
Bruno: ローカル → Git → チーム共有(クラウド経由なし)
2. Gitフレンドリー
個人的にはこれが一番の推しポイントです。
BrunoはAPIリクエストの情報を「Bru」というプレーンテキストのマークアップ言語で保存します。つまり、普通のテキストファイルとしてGitで管理できるんですよね。
これのメリットは:
- コードと一緒にバージョン管理できる
- プルリクエストでAPIの変更をレビューできる
- チーム全員が同じコレクションを使える
- ブランチごとにAPIコレクションを分けられる
3. アカウント不要
ログインもアカウント作成も不要です。ダウンロードして即使える。30代になって思うのは、こういうシンプルさって本当にありがたいということ。
4. クロスプラットフォーム
Mac、Windows、Linuxに対応しています。チームメンバーのOS環境がバラバラでも問題なし。
5. MITライセンス
完全なオープンソースなので、商用利用も問題ありません。
インストール方法
各OSのパッケージマネージャーから簡単にインストールできます。
macOS
brew install bruno
Windows
# Chocolatey
choco install bruno
# Scoop
scoop bucket add extras
scoop install bruno
# winget
winget install Bruno.Bruno
Linux
# Snap
sudo snap install bruno
# APT (Debian/Ubuntu)
sudo mkdir -p /etc/apt/keyrings
sudo gpg --no-default-keyring --keyring /etc/apt/keyrings/bruno.gpg --keyserver keyserver.ubuntu.com --recv-keys 9FA6017ECABE0266
echo "deb [signed-by=/etc/apt/keyrings/bruno.gpg] http://debian.usebruno.com/ bruno stable" | sudo tee /etc/apt/sources.list.d/bruno.list
sudo apt update
sudo apt install bruno
または公式サイトから直接ダウンロードも可能です。
基本的な使い方
コレクションの作成
- Brunoを起動
- 「Create Collection」をクリック
- コレクション名と保存先フォルダを指定
ここで指定したフォルダに、Bruファイルが保存されていきます。このフォルダをGitリポジトリにすれば、そのままバージョン管理ができます。
リクエストの作成
meta {
name: Get Users
type: http
seq: 1
}
get {
url: https://api.example.com/users
body: none
auth: bearer
}
auth:bearer {
token: {{access_token}}
}
Bruファイルはこんな感じで、人間が読める形式になっています。JSONよりも直感的でわかりやすいですね。
環境変数の設定
開発環境・本番環境など、環境ごとに変数を切り替えられます。
vars {
base_url: https://api.example.com
api_key: your-api-key-here
}
CLIでの実行
Bruno CLIを使えば、CI/CDパイプラインでAPIテストを自動化できます。
# Bruno CLIのインストール
npm install -g @usebruno/cli
# コレクションの実行
bru run --env production
実践的なユースケース
1. チーム開発でのAPI仕様共有
コスパ的にこれが一番効いてきます。
project/
├── src/
├── tests/
└── api-collection/ # Brunoコレクション
├── auth/
│ ├── login.bru
│ └── logout.bru
└── users/
├── get-users.bru
└── create-user.bru
API仕様がコードと一緒にGit管理されるので、「このエンドポイント、どうやって叩くんだっけ?」という質問がなくなります。
2. CI/CDでのAPIテスト
# GitHub Actions例
- name: Run API Tests
run: |
npm install -g @usebruno/cli
bru run api-collection --env staging
プルリクエストのたびにAPIテストを自動実行できます。
3. ローカル開発環境のセットアップ
新しいメンバーがチームに入ったとき、リポジトリをクローンするだけでAPIコレクションも一緒についてきます。セットアップの時短になりますね。
Postman/Insomniaからの移行
既存のPostmanコレクションがある場合、Brunoにインポートできます。
- Brunoを起動
- 「Import Collection」を選択
- Postman/InsomniaのエクスポートファイルをインポートOpenAPI、HAR形式にも対応しています。
まとめ
正直なところ、すべての場面でBrunoがベストとは言いません。Postmanのモック機能やモニタリング機能が必要な場合は、Postmanを使い続けるのも全然アリです。
ただ、以下の条件に当てはまるなら、Bruno一択ですね:
- APIコレクションをGitで管理したい
- クラウドにデータを送りたくない
- 軽量でサクサク動くツールがいい
- オープンソースを使いたい
- チームでAPI仕様を共有したい
QOL上がること間違いなしなので、まずは試してみてください。
公式サイト: https://www.usebruno.com GitHub: https://github.com/usebruno/bruno
