DEV Community

Cover image for ApidogをGitHub, GitLabに連携する方法
Akira
Akira

Posted on • Originally published at apidog.com

ApidogをGitHub, GitLabに連携する方法

API仕様がApidogにあり、信頼できる情報源がGitにある場合は、両者を同期して「仕様の単一の真実」を維持します。Apidog Git連携を使うと、GitHub、GitLab、Azure DevOpsリポジトリをApidogプロジェクトに接続し、OpenAPI仕様をGitへプッシュしたり、Git側の変更をApidogへプルしたりできます。結果として、仕様変更の監査証跡、コードレビュー、バックアップをGit上に残せます。

今すぐApidogを試す

この記事では、Apidog Git連携でできること、対応プロバイダー、双方向同期と自動バックアップの違い、ブランチ設計、権限管理、競合対応までを実装手順ベースで整理します。GitHubに絞った手順が必要な場合は、OpenAPI仕様をGitHubに同期する方法も参照してください。

Apidog Git連携でできること

Apidogは、Gitと2つの方法で連携します。まずこの違いを理解しておくと、設計と運用を決めやすくなります。

Apidog Git連携

機能 方向 トリガー 主な用途
Spec-Firstモード同期 双方向:Apidog ↔ Git 手動コミット、プッシュ、プル OpenAPI仕様をコードとして管理し、PRレビューしたいチーム
自動Gitバックアップ 一方向:Apidog → Git スケジュール実行 日常ワークフローを変えずに、仕様の履歴とバックアップを残したいチーム

1. Spec-Firstモードによる双方向同期

Spec-Firstモードでは、Apidog上でOpenAPIドキュメントをYAMLまたはJSONとして編集し、その変更をGitへコミット・プッシュできます。

Git側で誰かが仕様を更新した場合は、Apidogへプルして反映できます。つまり、ApidogとGitのどちらも編集元になれる双方向のワークフローです。

2. API仕様の自動Gitバックアップ

自動Gitバックアップでは、Apidogが各モジュールのOpenAPI/Swaggerファイルをスケジュールに基づいてGitリポジトリへエクスポートします。

これは一方向です。Git上の変更をApidogへ読み戻す用途ではありません。履歴保存、監査、復旧用の安全網として使います。

以降では、「同期」はSpec-Firstモードの双方向同期、「バックアップ」は一方向の自動エクスポートを指します。

サポートされているGitプロバイダー

Apidogは、GitHub、GitLab、Azure DevOpsとの連携をサポートしています。

プロバイダー 認証方法 備考
GitHub OAuth認証 個人リポジトリと組織リポジトリに対応。組織リポジトリでは管理者承認が必要な場合があります。
GitLab OAuth認証 gitlab.comおよびApidogからアクセス可能な自己管理型GitLabに対応。
Azure DevOps 汎用Git接続:HTTPS + トークン HTTPSクローンURLと、リポジトリスコープを持つ個人アクセストークンで接続します。

Azure DevOpsは、汎用Git接続を使って接続します。GitHubやGitLab以外のGitホストでも、HTTPSクローンURLとトークン認証に対応していれば、同様の方法で接続できる場合があります。

Gitプロバイダーを接続する

基本的な流れは次のとおりです。

  1. ApidogでGit連携設定を開く
  2. Gitプロバイダーを選択する
  3. 認証する
  4. リポジトリを選択する
  5. ブランチを選択する
  6. 同期またはバックアップ対象を設定する

GitHubを接続する

GitHubの場合はOAuthで認証します。

  1. ApidogからGitHub接続を開始する
  2. GitHubのOAuth画面でログインする
  3. Apidogにリポジトリへのアクセスを許可する
  4. 対象リポジトリとブランチを選択する

組織リポジトリを使う場合、GitHub組織の設定によっては、管理者がApidogのアクセスを承認する必要があります。認証できたのにリポジトリが表示されない場合は、まず組織側のサードパーティアプリ承認を確認してください。

GitLabを接続する

GitLabもOAuthで接続します。

  1. ApidogからGitLab接続を開始する
  2. GitLabのOAuth画面でログインする
  3. リポジトリへのアクセスを許可する
  4. 対象リポジトリとブランチを選択する

自己管理型GitLabを使う場合は、ApidogからそのGitLabインスタンスへネットワークアクセスできる必要があります。

Azure DevOpsを接続する

Azure DevOpsでは、汎用Git接続を使います。

必要なものは次の2つです。

  • Azure DevOpsリポジトリのHTTPSクローンURL
  • コードの読み書き権限を持つ個人アクセストークン、PAT

手順は次のとおりです。

  1. Azure DevOpsでPATを作成する
  2. PATに対象リポジトリの読み書き権限を付与する
  3. Apidogで汎用Git接続を選択する
  4. HTTPSクローンURLを入力する
  5. PATを入力する
  6. リポジトリとブランチを設定する

PATはApidogがGitへプッシュするための資格情報です。フルアクセスのトークンではなく、対象リポジトリに必要な最小権限だけを付与してください。

権限設定で確認すること

Git連携を設定するときは、次の点を確認してください。

  • 組織リポジトリでは、管理者承認が必要な場合がある
  • Azure DevOpsや汎用Git接続では、PATのスコープを対象リポジトリに限定する
  • プライベートリポジトリも利用できる
  • プッシュ権限を持つユーザーを限定する
  • 認証に使ったユーザーやトークンの権限が、実際のGit操作権限になる

GitによるOpenAPI仕様管理の前提を整理したい場合は、GitによるOpenAPIバージョン管理も参考になります。

Spec-Firstモードで双方向同期する

Spec-Firstモードでは、ApidogをOpenAPI仕様エディタとして使い、Gitへコミット・プッシュできます。詳細はApidog公式ドキュメントを参照してください。

実装フローは次のとおりです。

  1. ApidogでSpec-Firstモードを有効にする
  2. Gitリポジトリとブランチを接続する
  3. OpenAPI YAMLまたはJSONを編集する
  4. 変更内容を確認する
  5. コミットメッセージを入力する
  6. Gitへプッシュする
  7. Git側の変更がある場合はApidogへプルする

OpenAPI仕様を編集する例

たとえば、注文取得APIを追加する場合は、次のようなOpenAPI YAMLを編集します。

paths:
  /v1/orders/{orderId}:
    get:
      operationId: getOrder
      summary: Retrieve a single order
      parameters:
        - name: orderId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: The requested order
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Order'
Enter fullscreen mode Exit fullscreen mode

Apidogのエディタでは、シンタックスハイライト、ライブバリデーション、オートコンプリートを使って編集できます。不正な$refや必須フィールドの不足は、プッシュ後ではなく編集時点で検出しやすくなります。

変更をGitへプッシュする

編集後は、通常のGitワークフローと同じように操作します。

  1. 変更を保存する
  2. 差分を確認する
  3. コミットメッセージを書く
  4. 接続されたブランチへプッシュする

プッシュ後、Apidogの同期状態が最新になっていれば、Apidog上の仕様とGitブランチ上の仕様が一致しています。

Git側の変更をApidogへプルする

チームメンバーがGitリポジトリでOpenAPI仕様を変更した場合は、Apidogへプルします。

これにより、Gitリポジトリが単なるバックアップ先ではなく、Apidogと対等な仕様管理元として機能します。

未プッシュの編集を破棄する

試行錯誤した変更を残したくない場合は、コミット前に未プッシュの編集を破棄できます。

この操作により、作業コピーを最後に同期された状態へ戻せます。不要な実験的変更をGit履歴に残さずに済みます。

このように仕様変更をGitで扱う考え方は、GitネイティブAPIワークフローの中心です。API仕様もコードと同様に、差分レビュー、承認、マージ、ロールバックの対象になります。

API仕様を自動Gitバックアップする

自動Gitバックアップは、Apidog上のAPI仕様をGitへ定期的に保存する機能です。

設定後は、Apidogが各モジュールのOpenAPI/Swaggerファイルを指定したGitリポジトリへ自動的にプッシュします。

対応プロバイダーは次のとおりです。

  • GitHub
  • GitLab
  • Azure DevOps

バックアップは夜間のランダムなオフピーク時間帯に実行されます。これにより、作業時間への影響を抑えながら、Git上に仕様の履歴を残せます。

バックアップで保存されるもの

保存されるのは、各モジュールのエクスポートされたOpenAPI/Swaggerドキュメントです。

Git上では各バックアップがコミットとして残るため、次のような確認ができます。

  • 先週のAPI仕様と現在のAPI仕様を比較する
  • 特定のフィールドがいつ変更されたか確認する
  • 必要に応じて以前の仕様をリポジトリから復元する

バックアップと同期を混同しない

自動Gitバックアップは一方向です。

ApidogはGitへ書き込みますが、Git側の変更をApidogへ読み戻しません。Git側で編集した仕様をApidogへ反映したい場合は、Spec-Firstモードの双方向同期を使います。

ブランチとリポジトリ構成を決める

Git連携を安定運用するには、最初にブランチとリポジトリ構成を決めておくことが重要です。

ブランチ設計

基本方針は次のとおりです。

  • 正規の仕様はmainに置く
  • 作業中の仕様変更は機能ブランチで行う
  • レビュー後にプルリクエストでmainへマージする

例:

main
feature/add-orders-api
feature/update-user-schema
Enter fullscreen mode Exit fullscreen mode

小規模チームや低リスクの変更では、Apidogを直接mainへ接続する運用も可能です。ただし、レビューゲートを省略することになるため、仕様変更をレビューしたい場合は機能ブランチを使う方が安全です。

リポジトリ構成

代表的な構成は2つです。

APIごとにリポジトリを分ける

orders-api-spec
users-api-spec
billing-api-spec
Enter fullscreen mode Exit fullscreen mode

向いているケース:

  • APIごとに所有チームが異なる
  • アクセス制御を細かく分けたい
  • 各APIの履歴を独立して管理したい

モノレポでまとめる

api-specs/
  orders/
    openapi.yaml
  users/
    openapi.yaml
  billing/
    openapi.yaml
Enter fullscreen mode Exit fullscreen mode

向いているケース:

  • プラットフォームチームが複数APIをまとめて管理している
  • API横断で検索やレビューをしたい
  • 仕様の配置ルールを統一したい

モノレポを使う場合は、モジュールごとに専用ディレクトリを用意してください。バックアップや同期の対象パスが重ならないようにすることで、競合や意図しない上書きを防げます。

チーム権限とアクセスを管理する

Git連携では、権限管理が重要です。確認すべき場所は2つあります。

  1. Apidog側の権限
  2. Gitプロバイダー側の権限

Apidog側の権限

Apidogでは、誰が接続済みリポジトリへ同期・プッシュできるかを設定します。

推奨は次の運用です。

  • プッシュ権限はAPI仕様のオーナーに限定する
  • 閲覧やレビューだけのメンバーには読み取り権限を付与する
  • 不要なユーザーに同期操作を許可しない

これにより、仕様を閲覧しているだけのメンバーが誤って変更をプッシュするリスクを下げられます。

Gitプロバイダー側の権限

GitHubとGitLabでは、OAuth認証したユーザーの権限が使われます。

Azure DevOpsや汎用Git接続では、PATが資格情報になります。PATは秘密情報として扱ってください。

実運用では、次のルールを守るのが安全です。

  • PATを共有ドキュメントに貼らない
  • PATのスコープを対象リポジトリに限定する
  • 定期的にトークンをローテーションする
  • メンバーが離脱したらトークンを失効する
  • 必要に応じてアクティブなアカウントで再認証する

Git連携の安全性は、認証情報の管理に依存します。スコープを狭くし、所有者を明確にしてください。

マージ競合とドリフトに対応する

ApidogはGit履歴へコミットするため、Gitの競合モデルをそのまま扱います。競合は、複数人が同じOpenAPIファイルの同じ箇所を変更したときに発生します。

マージ競合の処理

たとえば、あなたがApidogでOrderスキーマを編集している間に、チームメンバーがGit側で同じOrderスキーマを編集してプッシュした場合、同期時にYAMLのマージ競合が起きる可能性があります。

これはApidog固有の問題ではなく、通常のGitマージ競合です。

競合を減らす運用

競合を減らすには、次の順序を守ります。

  1. 作業開始前にGit側の最新変更をプルする
  2. Apidogで仕様を編集する
  3. 変更をコミットする
  4. プッシュ前に必要に応じて再度プルする
  5. 競合がなければプッシュする

競合が起きた場合

競合が発生したら、通常のYAMLマージ競合として解決します。

  1. 競合している箇所を確認する
  2. 正しい変更を選択する
  3. OpenAPIドキュメントとして有効な状態に修正する
  4. バリデーションを確認する
  5. 再同期する

Apidogのライブバリデーションは、マージ後のOpenAPI構造が壊れていないか確認するのに役立ちます。

ドリフトを検知する

ApidogとGitリポジトリが徐々に乖離する状態をドリフトと考えます。

同期状態が最新でない場合は、次のどちらかが起きている可能性があります。

  • Apidog側に未プッシュの変更がある
  • Git側に未プルの変更がある

同期インジケータを確認し、差分が大きくなる前にプルまたはプッシュしてください。

トラブルシューティング

よくある問題は、認証、ブランチ設定、未同期の変更に起因します。

症状 考えられる原因 対処法
認証に失敗する、リポジトリが表示されない 組織がサードパーティアクセスを承認していない、またはトークンのスコープが不足している GitHub/GitLabでは組織管理者に承認してもらう。Azure DevOpsでは読み書き権限を持つPATを再発行する。
プッシュが拒否される トークンが失効または期限切れ、または書き込み権限がない プロバイダーを再認証する。汎用接続では新しいPATをApidogに設定する。
プッシュした変更が見えない 接続先ブランチが違う Apidogの接続ブランチと、確認しているGitブランチが一致しているか確認する。
同期状態が最新にならない 未プッシュのローカル編集がある、またはプルが必要 保留中の編集をコミットしてプッシュする。Git側に変更がある場合は先にプルする。
仕様のマージ競合が発生する 同じ行に対する複数の編集 YAMLの競合を通常通り解決し、OpenAPIとして有効な状態にしてから再同期する。
バックアップが実行されない スケジュールされたオフピーク時間にまだ達していない 次のバックアップサイクルを待つ。設定したリポジトリとブランチも確認する。
意図しない編集が残った コミット前の実験的な変更 未プッシュの編集を破棄し、最後に同期された状態へ戻す。

認証問題が繰り返される場合は、最初にトークンの有効期限、スコープ、組織承認を確認してください。多くの「突然動かなくなった」問題は、トークン失効または組織側の承認不足で説明できます。

よくある質問

同期は一方向ですか、双方向ですか?

使う機能によります。

Spec-Firstモードは双方向です。Apidogで編集した仕様をGitへプッシュし、Git側の変更をApidogへプルできます。

自動Gitバックアップは一方向です。ApidogからGitへ仕様をエクスポートしますが、Git側の変更はApidogへ読み戻しません。

仕様はどこに保存されますか?

接続したGitリポジトリに保存されます。

Spec-Firstモードでは、OpenAPIドキュメントは接続したブランチにコミットされます。自動バックアップでは、各モジュールのOpenAPI/Swaggerファイルが設定したリポジトリへコミットされます。

どちらの場合も、Gitがバージョン管理されたコピーを保持します。

どのブランチに同期すべきですか?

正規の仕様にはmainを使い、作業中の変更には機能ブランチを使うのが一般的です。

機能ブランチに同期すれば、仕様変更もコード変更と同じようにプルリクエストでレビューできます。

トークンが失効した場合はどうなりますか?

ApidogがGitへ書き込めなくなるため、プッシュやバックアップが失敗します。

GitHubまたはGitLabでは再認証してください。Azure DevOpsや汎用Git接続では、新しいPATを発行してApidogに設定してください。

まとめ

Apidog Git連携には、2つの使い方があります。

  • OpenAPI仕様をコードとして扱うなら、Spec-Firstモードで双方向同期する
  • ワークフローを変えずに履歴と復旧手段を確保したいなら、自動Gitバックアップを使う

GitHub、GitLab、Azure DevOpsに接続できるため、既存のGit環境をそのまま活用できます。

実装時は、次の順序で進めると安全です。

  1. 利用する機能を決める:同期、バックアップ、または両方
  2. Gitプロバイダーを接続する
  3. リポジトリとブランチを選択する
  4. プッシュ権限を持つメンバーを限定する
  5. PATやOAuth権限を最小スコープにする
  6. 機能ブランチとPRレビューを使って仕様変更を管理する
  7. 競合が起きたら通常のGitマージ競合として解決する

仕様変更にレビューと履歴を持たせたいチームは、Spec-Firstモードを導入してください。まずは安全網を作りたい場合は、自動Gitバックアップから始めるのが簡単です。多くのチームでは、両方を組み合わせることで、API仕様をGit上で継続的に管理できます。

Top comments (0)