TL;DR
Brunoには組み込みのクラウド同期機能がありません。チームはGitリポジトリ、共有ネットワークドライブ、または開発コンテナを使ってこの問題を回避しています。それぞれの回避策には実際の限界があります。Apidogは今、両面からそのギャップを埋めます。新しいSpec-First Gitモードでは、OpenAPI仕様がBrunoと同様にリポジトリに存在し、プルリクエストを通じて移動できます。さらに、オプションのクラウド同期機能により、リアルタイムコラボレーション、ロールベースアクセス、中央管理された資格情報、そして組み込みのモックサーバーが追加されます。あなたはもうGitを選ぶかチームワークスペースを選ぶかで悩む必要はありません。
はじめに
Brunoのローカル専用設計は、見落としではなく、機能です。メンテナーは意図的に選択しました。データはあなたのマシンに残ります。クラウドがないということは、アカウントもサブスクリプションも、コレクションを人質にとるベンダーもいないということです。
しかし、「ローカル専用」は、2人目が同じコレクションを必要とした瞬間に調整問題を引き起こします。5人の開発者チームはどのようにAPIコレクションを共有するのでしょうか?QAエンジニアはどのようにして最新のリクエストを取得するのでしょうか?新しいメンバーは、Slack経由でファイルをコピーすることなく、どのように環境をセットアップするのでしょうか?
このガイドでは、チームが使用するすべての回避策、それぞれの実際のコスト、そしてその限界について説明します。また、Apidogの新しいSpec-First Gitモードについても取り上げます。これにより、Brunoのリポジトリにファイルを置くという哲学を維持しながら、Gitだけでは得られないリアルタイムコラボレーションを実現できます。まず全体像を把握したい場合は、Gitと連携するAPIツールのまとめが背景を提供します。
Gitアプローチ(意図されたパス)
BrunoはGitを中心に設計されています。コレクションは.bruファイル、環境はJSONファイルであり、すべてプレーンテキストです。意図された共有メカニズムはGitリポジトリです。
仕組み:
- APIコレクション用のGitリポジトリを作成します(または既存のリポジトリ内のフォルダを使用します)。
- コレクションをGitHub、GitLab、またはBitbucketにプッシュします。
- チームメンバーはリポジトリをクローンし、Brunoでフォルダを開きます。
- 変更がコミットされてプッシュされ、他のメンバーがプルします。
うまくいく点:
- すべてのリクエストに対する完全なバージョン履歴
- APIの変更はコードレビューを経る
- CI/CD統合が自然(パイプラインで
bru runを使用) - Gitホスト以外のサードパーティサービスは不要
- 理論的にはあらゆるチームサイズに対応
問題点:
- Gitに慣れていないチームメンバーはワークフローに苦労する
- 変更はリアルタイムではありません。プッシュしても、他のメンバーは手動でプルする必要があります。
- 機密値(トークン、パスワード)はコミットされないため、別のメカニズムが必要です。
- 2人が同じリクエストを編集するとマージコンフリクトが発生します。
- Gitアカウントを持たない非開発者に読み取り専用アクセスを付与する方法がない
これが機能する対象: 一貫したGit規律を持つ開発者のみのチーム。他のすべてで既にGitを使用している2~8人の開発者には有効です。このパターンは、GitによるOpenAPIのバージョン管理のより広範なアプローチに合致します。
共有ネットワークドライブのアプローチ
一部のチームは、Brunoコレクションフォルダを共有ネットワークドライブ(NAS、ネットワークファイルサーバー、共有Dropbox、またはGoogle Driveフォルダ)に配置します。
仕組み: Brunoは任意のフォルダパスからコレクションを開きます。共有ドライブの場所を指定します。
うまくいく点:
- 簡単なセットアップ、Git不要
- すべてのチームメンバーが同じファイルを見る
- Gitを使えない非開発者にも有効
問題点:
- バージョン履歴がない、またはDropboxやDriveを使用する場合は貧弱なバージョン履歴
- 2人が同時に同じコレクションを開くと、ファイルが破損したり上書きされたりする可能性があります。
- ネットワークドライブはローカルファイルよりも遅く、大規模なコレクションは動作が鈍く感じられます。
- ファイルシステム権限以外のアクセス制御がない
- 機密値は引き続き別途管理が必要
- チームメンバーがオフラインの場合や不安定な接続の場合に破綻する
これが機能する対象: 同時に編集することが少なく、Git以外の共有を必要とする2〜3人の小規模チーム。カジュアルな使用以外には推奨されません。
Gitpod / 開発コンテナのアプローチ
一部のチームはBrunoコレクションをGitpodワークスペースまたは開発コンテナの定義に配置し、全員がコレクションを含む一貫した環境を得られるようにします。

仕組み: コレクションはリポジトリ内にあります。Gitpodまたは開発コンテナがBruno(またはBruno CLI)とコレクションを事前にロードして起動します。
うまくいく点:
- すべての開発者にとって一貫した環境
- コレクションは常にテストするコードベースと一致する
- ローカルセットアップ不要。クローンして開発コンテナを起動するだけ。
問題点:
- やはりGitベース。Gitユーザー以外のメリットはない
- デスクトップ版Bruno GUIはクラウド開発環境では動作しない(ほとんどのコンテナ設定ではヘッドレスCLIのみが提供される)
- リアルタイム同期はまだ存在しない
これが機能する対象: 既にGitpodまたは開発コンテナを使用しており、APIテストを開発環境に組み込みたいチーム。
開発者ごとのコピーアプローチ
これは最も構造化されていないオプションです。各開発者が独自のBrunoコレクションを保持し、共有ドキュメントとの手動同期、またはチームメイトのエクスポートからのコピーを行います。
うまくいく点:
- 完全な自律性、調整不要
- 個々の開発者にとっては高速
問題点:
- コレクションはすぐに乖離する
- 共有された真実のソースがない
- 誰もが異なるバージョンを持っている場合、「チームのAPIコレクション」は意味をなさない
- メンテナンスのオーバーヘッドが急速に増大する
これが機能する対象: ソロ開発者以外にはいない。このパターンはすぐに技術的負債を蓄積します。
すべての回避策が共有する限界
Brunoのすべての同期回避策には同じギャップがあり、Gitではそれらを埋めることができません。
リアルタイムコラボレーションがない。 ApidogやPostmanの有料ティアでは、2人が同じコレクションを開くと、お互いの変更が即座に表示されます。BrunoとGitを使用する場合、アリスとボブは常に最後のプルから作業します。アリスがリクエストを追加してプッシュしても、ボブはプルするまで何も見えません。アクティブなAPIセッション中には、これが絶え間ない摩擦となります。
ロールベースアクセスがない。 Gitの権限(リポジトリレベルでの読み取りまたは書き込み)は、APIコレクションのロールにはマッピングされません。ステークホルダーを、リクエストを実行できるが編集できない閲覧者にすることはできません。請負業者を特定のフォルダに制限することはできません。Brunoでのアクセスは、リポジトリごとに全てか無かのどちらかです。
共有環境資格情報がない。 Brunoのシークレット変数はコミットされない、これは正しいセキュリティ動作です。しかし、これはすべてのチームメイトが手動で資格情報を設定することを意味し、トークンがローテーションするたびに、全員にローカルで更新するように伝えるための帯域外プロセスが必要です。安全なクラウド環境を持つツールはこれを一元的に処理します。
コレクションレベルのコメントがない。 チームメイトが見るために特定のリクエストにメモを残すことはできません。GitのPRコメントは近いですが、それらは差分に付随し、ライブコレクションには付随しません。
これら4つのギャップが、チームが回避策から脱却する本当の理由です。次のセクションでは、ApidogがGitを諦めることなくこれらのギャップをどのように埋めるかについて説明します。
ApidogのSpec-First Gitモード:回避策なしのGitワークフロー
通常の枠組みでは、「BrunoとGit」が「クラウドツール」と対立しています。ApidogのSpec-First Gitモードはその選択肢を解消します。OpenAPI仕様をあなた自身のGitHub、GitLab、またはセルフホスト型リポジトリに唯一の真実のソースとして配置し、その同じリポジトリの上にチーム機能を追加します。

BrunoとGitのセットアップと比較して、何が変わるかを見てみましょう。
仕様が真実のソースであり、リポジトリに存在します。 ApidogプロジェクトをGitリポジトリに接続すると、API定義がファイルとして同期されます。機能ごとにブランチを作成し、プルリクエストを開き、契約の差分を1行ずつレビューしてマージします。これは、Brunoが提供する正確なレビューフローであり、バラバラの.bruリクエストファイルではなく、完全なOpenAPIドキュメントに適用されます。その背後にあるデザインファーストの考え方については、「spec-first API開発とは何か?」を参照してください。
設計、テスト、モック、ドキュメントが1つの定義から派生します。 ブランチで仕様が変更されると、モックサーバー、例示応答、テストケース、公開されたリファレンスドキュメントがすべてそれに合わせて変更され、全体が1つのレビュー可能な差分としてコミットされます。Brunoではリクエストファイルが得られますが、ドキュメントやモックは他の誰かの問題です。これがspec-as-codeアプローチの中核であり、かつて4つの別々のツールが行っていた作業を1つのOpenAPIファイルが行う場所です。
Gitを維持し、リアルタイムコラボレーションを追加します。 これはBrunoの回避策では対応できない部分です。リポジトリは記録システムとして残りますが、Apidogアプリで作業するチームメイトは、次のプルを待つことなく、お互いの編集をリアルタイムで確認できます。Gitは履歴とレビューを提供し、共有ワークスペースはライブセッションを提供します。それらのどちらかを選択するのをやめることができます。
ロールベースアクセスがリポジトリの上に存在します。 ビューアー、エディター、管理者といったロールにより、ステークホルダーはリクエストを実行できるが編集はできない、または請負業者を特定のプロジェクトに限定するといったことが可能になります。これはリポジトリレベルのGit権限では表現できません。
資格情報が一元的に管理されます。 クラウド環境は共有された(そして安全に保存された)変数を保持するため、トークンのローテーションは一度更新するだけで済み、すべての開発者にローカルの.secret.jsonを編集するよう促す必要がなくなります。
モックサーバーが付属しています。 Brunoにはモックサーバーがないため、チームはBrunoのモックサーバー代替品を探します。Apidogではモックが仕様から直接生成されるため、フロントエンドの作業は初日から現実的なレスポンスに対して開始できます。
CIで動作します。 ApidogにはCLIランナーが付属しており、同期された仕様に関連付けられたテストケースは、bru runと同様に、すべてのプッシュで同じパイプラインで実行されます。
短く正直な比較:
| 機能 | Bruno + Git | Apidog Spec-First Gitモード |
|---|---|---|
| 自身のリポジトリ内のファイル | はい (.bru) |
はい (OpenAPI仕様) |
| ブランチ + プルリクエストレビュー | はい | はい |
| CIランナー | はい (bru run) |
はい (Apidog CLI) |
| セルフホスト / GitLabサポート | はい | はい |
| リアルタイム複数ユーザー編集 | いいえ | はい |
| ロールベースアクセス(閲覧者/編集者) | いいえ | はい |
| 中央共有資格情報 | いいえ | はい |
| 仕様からのモックサーバー | いいえ | はい |
| 1ファイルから派生するドキュメント + テスト | いいえ | はい |
Spec-First Gitモードはベータ版ですので、チーム全体を移行する前に、トライアルで自身のGitHubまたはGitLabのセットアップと照らし合わせて詳細を確認してください。接続自体のより詳細な説明については、ApidogのGit統合と同期、およびSpec-Firstモードガイドを参照してください。これを2つのツールからなる設計とテストのスタックと比較検討している場合、Stoplight + Postman vs Apidogでも同様の評価が行われています。
Brunoを使い続けるべき時と、切り替えるべき時
BrunoとGitの組み合わせは機能します。適切なチームにとってはうまく機能します。問題は、回避策の累積コストがBrunoのシンプルさの価値を上回る時期です。
チーム全体が開発者であり、全員がGitに精通しており、リアルタイム同期が必要なく、すべてか無かのリポジトリ権限モデルで問題ない場合は、Brunoを使い続けてください。
以下の場合はApidogのSpec-First Gitモードに切り替えてください:
- Gitを学ぶことなくAPIアクセスを必要とする非開発者のチームメンバーがいる場合
- チームが5人以上で、Gitのみの調整が日常的な摩擦になっている場合
- アクティブなAPIセッション中にリアルタイム同期が必要な場合
- リポジトリだけでなく、プロジェクトまたはフォルダレベルでのアクセス制御が必要な場合
- トークンがローテーションするたびに手動で資格情報を配布するのにうんざりしている場合
- APIクライアントの隣にモックサーバーが必要な場合
仕様は引き続きリポジトリに存在するため、これはバージョン管理からの片道切符ではありません。Brunoが教えてくれたGitワークフローを維持し、その上にチーム層を追加します。
実際に機能するBruno + Gitワークフローのセットアップ
Brunoを使い続けるのであれば、摩擦を少なくするためのレイアウトを次に示します。
リポジトリ構造:
api-collections/
.gitignore # *.secret.json, .envを除外
README.md # オンボーディング手順
environments/
local.json
staging.json
production.json # シークレットなし、変数名のみ
users-api/
get-user.bru
create-user.bru
orders-api/
create-order.bru
list-orders.bru
bruno.json
資格情報管理: ローカルのシークレットにはenvironments/production.secret.json(Gitignore対象)を使用します。必要な変数をenvironments/production.jsonに空の値でテンプレートとして記述します。実際の値はチームのパスワードマネージャーまたはシークレット保管庫に保存し、READMEにリンクを記載します。
新しい開発者のオンボーディング:
- リポジトリをクローンする
- Brunoでコレクションフォルダを開く
production.jsonをproduction.secret.jsonにコピーする- (READMEにリンクされた)保管庫から資格情報を入力する
- 使用準備完了
CI/CD: 実行時に環境変数を注入し、リポジトリにシークレットファイルが存在しないようにします。
Brunoの非クラウドという立場は原則に基づき、実際にメリットがあり、同期の回避策は適切なチームにとって許容できるものです。その限界を知ることで、いつそれらに頼るべきか、そしていつチームコラボレーションのために構築されたツールに手を伸ばすべきかがわかります。Apidogが仕様をリポジトリ内に保持するようになったことで、その選択はもはやGitを置き去りにすることを意味しません。Apidogをダウンロードし、既存のリポジトリにポイントして、自身のAPIでその違いを確認してください。
