はじめまして. Omni Hub チームでバックエンドを担当している shunten31 です. 最近親知らずを抜きました.
会社のテックブログを書くのは今回が初めてです. 約8ヶ月前に入社したのですが、入社後 Bruno という API クライアントを開発フローに導入したので、その話をしようと思います.
背景
Omni Hub ではプラットフォーム間のデータ連携を行っているというシステムの特性上、 外部サービスのAPI を多く使用しています. 他にも、システム間の通信のための API も有しており、 これらの API を動作確認やテストで叩く必要のあることが多いです.
しかし、これまでAPIを叩くためのツールやスクリプトは各エンジニアが個別に管理しており、以下の問題が生じていました.
- APIに変更があるたびに、全員が自分のスクリプトを修正する必要がある
- 新人エンジニアのオンボーディングに手間がかかる
Bruno とは
これらの問題を解決するために、Bruno を導入しました.
Bruno は オープンソースの API クライアントで、 類似サービスには Postman があります. Postman に比べて Bruno のメリットは以下の点にあります.
- リクエスト情報を保存するのにテキストベースのファイルを使用するので、直接編集が可能
- 各リクエストごとに、テキストベースのローカルファイルとしてリクエスト情報を保存してくれる [^1]
- 無料で利用可能
これらの利点を活かし、APIリクエスト管理の効率化を図りました.
どう Bruno を使っているか
OpenAPI からのリクエスト自動生成
Omni Hubでは、外部サービスのREST APIに対して、OpenAPI形式の YAML ファイルを保持しており、 この yaml ファイルから Rust のクライアントコードを生成してアプリケーションから利用しています.
Bruno は OpenAPI の定義ファイルからリクエストコレクションを生成する機能があるので、この機能を利用することで、外部プラットフォームのAPIリクエストを簡単に準備できました.
APIリクエスト情報の共有
Brunoはリクエスト情報を.bru
形式のテキストファイルで保存します.これらのファイルをソースコードのリポジトリと一緒に管理することで、以下のメリットを得られました.
- 各エンジニアが個別のスクリプトを維持する手間が省ける
- PR作成時に、動作確認に使用したリクエストを差分として含められるため、レビュアーが同じ環境で動作確認を簡単に行える
また、 動作確認時に使用したリクエストを PR に含めていくことで、リクエストのコレクションを徐々に増やすことができています.
環境ごとに別の変数を用意する
Brunoは他のAPIクライアントと同様に、複数の環境を作成し、環境ごとの変数を管理できます.各エンジニアのローカル開発環境やステージング環境に対応した設定ファイルを作成し、利用しています.
環境ごとの変数定義もファイルで管理できますが、セキュリティ上の理由からこれらのファイルはGit管理には含めていません.
まとめ
Brunoを導入することで、Omni HubではAPIリクエストの管理と共有が改善しました. 特に、OpenAPIからリクエストを自動生成できる機能や、ローカルファイルでの管理により、エンジニア間での作業負担が軽減されました.