> ## Documentation Index
> Fetch the complete documentation index at: https://docs.devin.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# GitHub

> Devinとリポジトリ内で直接作業する

<div id="why-integrate-devin-with-github">
  ## なぜ Devin を GitHub と統合するのか？
</div>

GitHub の組織に Devin を統合すると、Devin はプルリクエストを作成し、PR コメントに返信し、リポジトリ内で直接コラボレーションできるようになります。これにより、Devin をエンジニアリングチームのフルメンバーとして活用できます。

まずは [app.devin.ai](http://app.devin.ai) にアクセスし、**Settings** > **Integrations** > **GitHub** を開き、**Add Connection** をクリックして、表示される手順に従ってください。Devin にアクセスさせるリポジトリを選択し、必要な権限を確認します。

<Note>
  **GitHub Enterprise Server または Data Residency 対応の GitHub Enterprise Cloud を利用していますか？** セットアップ手順については、[GitHub Enterprise Server 統合ガイド](/ja/enterprise/integrations/github-enterprise-server) を参照してください。
</Note>

<div id="setting-up-the-integration">
  ## インテグレーションの設定
</div>

<Tip>Devin インテグレーションを作成および管理するには、GitHub 組織の管理者である必要があります。問題がある場合は、[Common Issues](/ja/admin/common-issues#i-m-unable-to-connect-my-github-organization) を参照してください。</Tip>

1. [app.devin.ai](http://app.devin.ai) の Devin アカウントで **Settings** > **Integrations** > **GitHub** を開き、**Add Connection** をクリックします。

<Frame>
  <img src="https://mintcdn.com/cognitionai/wcZUamn7iKJ5mKOX/images/integrations/Add-GitHub-Connection.png?fit=max&auto=format&n=wcZUamn7iKJ5mKOX&q=85&s=6a5120cb74d52c7b9abbd09cc4849dc5" alt="Devin" width="1264" height="1474" data-path="images/integrations/Add-GitHub-Connection.png" />
</Frame>

2. まだ GitHub にログインしていない場合は、認証を求められます。

<Frame>
  <img src="https://mintcdn.com/cognitionai/wcZUamn7iKJ5mKOX/images/integrations/GitHub-Authenticate.png?fit=max&auto=format&n=wcZUamn7iKJ5mKOX&q=85&s=1318f858b4f4e65aceb84f5583acf119" alt="Devin" width="1004" height="1380" data-path="images/integrations/GitHub-Authenticate.png" />
</Frame>

3. Devin と接続したい GitHub 組織を選択します。

<Frame>
  <img src="https://mintcdn.com/cognitionai/wcZUamn7iKJ5mKOX/images/integrations/GitHub-Select-Organization.png?fit=max&auto=format&n=wcZUamn7iKJ5mKOX&q=85&s=9344af98e3c15f1a3db3543e58082935" alt="Devin" width="1296" height="726" data-path="images/integrations/GitHub-Select-Organization.png" />
</Frame>

4. Devin に付与するアクセス範囲として **All repositories** か **Select repositories** を選択し、Devin がアクセスできるリポジトリを制御します。

<Frame>
  <img src="https://mintcdn.com/cognitionai/wcZUamn7iKJ5mKOX/images/integrations/GitHub-Grant-Repository-Permissions.png?fit=max&auto=format&n=wcZUamn7iKJ5mKOX&q=85&s=997ba548f0face4b855e62a03b826b09" alt="Devin" width="1004" height="652" data-path="images/integrations/GitHub-Grant-Repository-Permissions.png" />
</Frame>

5. GitHub の認可が完了すると、Devin の設定画面にリダイレクトされるので、インテグレーションが有効になっていることを確認します。

<Frame>
  <img src="https://mintcdn.com/cognitionai/wcZUamn7iKJ5mKOX/images/integrations/GitHub-Connected.png?fit=max&auto=format&n=wcZUamn7iKJ5mKOX&q=85&s=bbfa1d3dcfcdf40bf9a13bccf85af0f9" alt="Devin" width="1212" height="326" data-path="images/integrations/GitHub-Connected.png" />
</Frame>

<Tip>Devin が変更をマージする前に、必要なチェックがすべて通過していることを確実にするため、メインブランチにブランチ保護ルールを有効にすることを推奨します。</Tip>

<div id="using-devin-with-the-github-integration">
  ## GitHub 連携で Devin を使う
</div>

<div id="for-core-and-teams-users">
  ### Core および Teams ユーザー向け
</div>

インテグレーションの設定が完了すると、Devin の Web アプリケーション内で、プロンプト中にリポジトリを @メンションして参照できるようになります。

<div id="for-enterprise-users">
  ### Enterprise ユーザー向け
</div>

統合の設定が完了したら、**Enterprise Settings** > **Repository Permissions** から、特定の組織にリポジトリを割り当てることができます。

<Frame>
  <img src="https://mintcdn.com/cognitionai/IRy9C2mAI1Fl2Qc9/images/enterprise/Enterprise-Add-Repositories.png?fit=max&auto=format&n=IRy9C2mAI1Fl2Qc9&q=85&s=5d056bf93a6f544b0f5893692f365b2b" alt="Devin" width="2360" height="1322" data-path="images/enterprise/Enterprise-Add-Repositories.png" />
</Frame>

<Tip>
  リポジトリを初めて利用する場合は、Devin がコードベースに関する正確で
  最新の情報を取得できるように、[オンボーディングフローでの開発環境セットアップ](/ja/onboard-devin/environment) を完了することをおすすめします。セッションがアーカイブされていない限り、Devin は PR のコメントに自動で返信します。
</Tip>

<div id="managing-devins-permissions-in-github">
  ## GitHub での Devin の権限管理
</div>

セットアップ時に、Devin に組織内の **すべてのリポジトリ** へのアクセスを許可するか、**特定のリポジトリ** へのアクセスに制限するかを選択できます。

リポジトリアクセスは、GitHub の設定からいつでも変更できます:

1. GitHub 組織の **Settings** > **GitHub Apps** に移動します (例: `https://github.com/organizations/<org_name>/settings/installations`)
2. Devin.ai Integration の **Configure** をクリックします
3. **Repository access** のセクションで、すべてのリポジトリへのアクセスを許可するか、特定のリポジトリを選択します
4. **Save** をクリックして変更を反映します

<Frame>
  <img src="https://mintcdn.com/cognitionai/wcZUamn7iKJ5mKOX/images/integrations/GitHub-Manage-Devin-Permissions.png?fit=max&auto=format&n=wcZUamn7iKJ5mKOX&q=85&s=952f1f5df1f6311a1e80ff230bb7f429" alt="Devin" width="1984" height="1542" data-path="images/integrations/GitHub-Manage-Devin-Permissions.png" />
</Frame>

Devin には以下の権限が必要です:

**Read** アクセス:

| Permission                       | Description                                                              |
| -------------------------------- | ------------------------------------------------------------------------ |
| `dependabot alerts`              | Devin があなたに代わって Dependabot アラートを解消できるようにします (例: 依存関係のバージョンを更新するなど)       |
| `actions`                        | Devin が、リポジトリに設定されている Actions を確認し、Devin の変更が CI を通過しているかどうかを把握できるようにします |
| `deployments`                    | Devin が、どのバージョンのリポジトリがデプロイされているかを確認できるようにします                             |
| `metadata`                       | Devin が、リポジトリの所有者などの重要なメタデータを確認できるようにします                                 |
| `packages`                       | Devin が、どのバージョンのリポジトリがパッケージとして公開されたかを確認できるようにします                         |
| `pages`                          | Devin が、ドキュメントの閲覧などの目的で、リポジトリに関連付けられた Pages を参照できるようにします                 |
| `repository security advisories` | Devin が、リポジトリに関連するセキュリティアドバイザリを確認し、セキュリティ問題の修正に役立てられるようにします              |
| `members`                        | Devin が組織のメンバーを確認できるようにします                                               |
| `webhooks`                       | Devin が、lint や型チェックなど、リポジトリに設定されている Webhooks を確認できるようにします                |

**Read** および **write** アクセス:

| Permission        | Description                                                                         |
| ----------------- | ----------------------------------------------------------------------------------- |
| `checks`          | Devin が、リポジトリに設定されている Checks の結果を確認および報告し、Devin の変更が CI を通過しているかどうかを把握して伝えられるようにします |
| `commit statuses` | Devin が、コミットが CI を通過したかどうかを示す commit status を参照および設定できるようにします                       |
| `contents`        | Devin がコードベースに変更を加えて貢献できるようにします                                                     |
| `discussions`     | Devin が Discussions に参加できるようにします                                                    |
| `issues`          | Devin が新しい Issue を作成できるようにします                                                       |
| `pull requests`   | Devin が新しい PR を作成できるようにします                                                          |
| `projects`        | Devin が、タスク情報の取得などの目的で、リポジトリに関連付けられた Projects を表示および管理できるようにします                     |
| `workflows`       | Devin が新しい Workflow を設定できるようにします (例: CI/CD を構成するため)                                 |

これらの権限により、Devin は通常のコントリビューターと同様にリポジトリで作業でき、ブランチの push、pull request の作成、PR でのディスカッションへの参加が可能になります。

<div id="pull-request-templates">
  ## プルリクエストテンプレート
</div>

Devin がプルリクエストを作成する際、リポジトリ内のテンプレートを利用して PR の説明文を構造化します。テンプレートを用意しておくと、Devin はそのフォーマットに従って GitHub に PR を送信します。

<div id="devin-specific-template-recommended">
  ### Devin 専用のテンプレート (推奨)
</div>

以下の対応している `PULL_REQUEST_TEMPLATE` のいずれかの場所に `devin_pr_template.md` という名前のファイルを追加することで、既存の人間向けデフォルトテンプレートを変更せずに、Devin 専用のテンプレートを用意できます。レビュアー用チェックリストや変更ファイルの Mermaid 図など、追加のコンテキストを Devin に渡したい場合に便利です。

<div id="template-search-order">
  ### テンプレートの検索順序
</div>

Devin は、次の順序でテンプレートを検索し、最初に見つかったものを使用します。

1. PULL\_REQUEST\_TEMPLATE/devin\_pr\_template.md
2. docs/PULL\_REQUEST\_TEMPLATE/devin\_pr\_template.md
3. .github/PULL\_REQUEST\_TEMPLATE/devin\_pr\_template.md
4. pull\_request\_template.md
5. docs/pull\_request\_template.md
6. .github/pull\_request\_template.md

テンプレートが見つからない場合、Devin はデフォルトの PR 説明形式を使用します。

<Tip>既存の `pull_request_template.md` を Devin に使わせたい場合は、そのファイルを上記のいずれかの `devin_pr_template.md` パスにコピー (またはシンボリックリンクを作成) してください。</Tip>

<Info>GitHub のプルリクエストテンプレート (サポートされる配置場所、複数テンプレート、クエリパラメータなど) について詳しくは、GitHub Docs の <a href="https://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/creating-a-pull-request-template-for-your-repository" target="_blank" rel="noopener noreferrer">Creating a pull request template for your repository</a> を参照してください。</Info>

<div id="commit-signing">
  ### コミット署名
</div>

Devin のコミットに GPG 署名を付けるには、キーがセッションをまたいで保持されるように、[environment](/ja/onboard-devin/environment/blueprints) で設定します。セッションのターミナル内でキーを生成しても機能しません。Devin の各セッションは machine image のクリーンなコピーから起動するため、セッション中に作成したキーはセッション終了時に破棄されます。

<Warning>
  environment 設定による GPG 署名で **Verified** コミットになるのは、
  Devin が *commit author* の場合だけです。GitHub は署名を author の
  identity に対して検証しますが、author がリクエストした user になる
  **Commit authoring** モード (例: "Co-authored", "User only", "User as author, Devin as
  committer") では、Devin はセッションごとに `user.email` を各 user 自身の
  email で上書きします。そのため、単一の共有 GPG キーとは一致しません。この設定を利用する前に、
  org の [Commit
  authoring](https://app.devin.ai/settings/profile) モードを **"Devin only"** または
  **"Devin as author, user as committer"** に設定してください。
</Warning>

すべての repo で署名付きコミットの設定が適用されるよう、これを **org-wide** レイヤー (すべての orgs で必要な場合は **enterprise** レイヤー) で設定します。

1. commit author の identity と、Devin が push に利用する認証情報の両方を持つ、専用の GitHub user account を作成するか、既存のものを選択します。例: `devin@company.com`。両方を 1 つの account にまとめると署名設定はシンプルになります。2 つの account に分ける場合は、以下の設定も両方にまたがって必要になります。
2. [GitHub の instructions](https://docs.github.com/en/authentication/managing-commit-signature-verification/generating-a-new-gpg-key) に従い、その account の email を UID として、ローカルで GPG キーを生成します。
3. **公開** キーを、GPG UID と一致する verified email を持つ GitHub account の [GitHub Settings > SSH and GPG keys](https://github.com/settings/keys) に upload します。GitHub は、push に利用した identity ではなく、*commit author* の identity に対して署名を検証します。そのため、公開キーは `user.email` の email を所有する account に登録されている必要があります。 (push にも同じ専用 account を利用している場合、この作業は 1 回だけで済みます。)
4. **非公開** キーを export して base64 エンコードし、対応する `GIT_USER_NAME` / `GIT_USER_EMAIL` とあわせて、[Settings > Secrets](https://app.devin.ai/settings/secrets) に secrets として追加します。
5. [org-wide environment config](https://app.devin.ai/settings/environment) でキーを import し、各セッションの開始時に署名を有効にします。完全な YAML については、コピー＆ペーストで使える [GPG commit signing example](/ja/onboard-devin/environment/templates#gpg-commit-signing) を参照してください。

<Tip>
  committer の email (`user.email`) は GPG キー上の UID と一致している必要があり、
  さらに同じ email が、公開キーを upload した GitHub account 上で
  verified email になっている必要があります。この 3 つのいずれかが一致しない場合、
  署名自体が有効でも、GitHub ではその commit は **Unverified** と表示されます。
</Tip>

<div id="security-considerations">
  ### セキュリティに関する考慮事項
</div>

* **ブランチ保護:** Devin が変更をマージする前に、すべての必須チェックが通っていることを確保するため、メインブランチにブランチ保護ルールを有効にすることを推奨します。
* **組織レベルの権限:** Devin は、セッションを実行している個々のユーザーの権限ではなく、組織レベルで付与された権限を使用します。
* **一貫したアクセス:** GitHub の組織と Devin の組織の両方にアクセス権限を持つすべてのユーザーは、同じ Devin 連携の権限を共有します。
* **リポジトリ作成:** Devin は、GitHub アカウント内で新しいリポジトリを作成することはできません。

<div id="ip-allowlisting">
  ## IP Allowlisting
</div>

組織で GitHub へのアクセスに IP 許可リストを設定している場合は、次の IP アドレスを追加してください。

* 100.20.50.251
* 44.238.19.62
* 52.10.84.81
* 52.183.72.253
* 20.172.46.235
* 52.159.232.99
* 4.204.199.103
* 54.201.200.193
* 54.69.238.189
* 100.23.34.160

<Note>これらの IP アドレスは今後のアップデートで変更される可能性があります。変更があった場合に備えて、リリースノートを確認することを推奨します。</Note>

<div id="troubleshooting-github-organization-connected-to-the-wrong-devin-organization">
  ## トラブルシューティング: GitHub 組織が誤った Devin 組織に接続されている
</div>

GitHub 組織が、アクセス権のない Devin 組織にすでに接続されている場合、GitHub 組織の管理者は既存のインストールを削除し、別の Devin 組織に再インストールできます。

<Warning>インストールを削除する前に、現在の Devin 組織の所有者に確認することを推奨します。</Warning>

1. [github.com/settings/installations](https://github.com/settings/installations) に移動し、**Devin.ai Integration** の横にある **Configure** をクリックします。

   必要に応じて、右上の **Go to settings page** ドロップダウンを使用して、正しい GitHub 組織に切り替えます。

   <Frame>
     <img src="https://mintcdn.com/cognitionai/fbV8dpDB0lpUNhsC/images/integrations/GitHub-Settings-Switch-Context.png?fit=max&auto=format&n=fbV8dpDB0lpUNhsC&q=85&s=833e7727b53d26f19addeba7320393cd" alt="GitHub 設定の組織を切り替える" width="788" height="192" data-path="images/integrations/GitHub-Settings-Switch-Context.png" />
   </Frame>

2. インストール ページで、**Danger zone** セクションまでスクロールし、**Uninstall** をクリックして GitHub 組織から Devin.ai Integration を削除します。

   <Frame>
     <img src="https://mintcdn.com/cognitionai/fbV8dpDB0lpUNhsC/images/integrations/GitHub-Uninstall-App.png?fit=max&auto=format&n=fbV8dpDB0lpUNhsC&q=85&s=fa31cff537e8b97f3c74da8dcc536980" alt="Devin.ai Integration をアンインストールする" width="1095" height="839" data-path="images/integrations/GitHub-Uninstall-App.png" />
   </Frame>

3. [app.devin.ai](https://app.devin.ai) に戻ってページを更新します。これで、GitHub 統合を自分の Devin 組織に再インストールできます。

<div id="github-integration-faqs">
  ## GitHub 統合に関するよくある質問
</div>

<AccordionGroup>
  <Accordion title="自分の個人 GitHub アカウントを所属組織の Devin アカウントに接続できますか？" icon="user">
    はい。Devin の組織には、GitHub Organization または個人の GitHub アカウントのいずれも接続できます。ただし、Devin がチームで必要とするリポジトリへアクセスできるよう、適切な権限を持つアカウントを接続することを推奨します。
  </Accordion>

  <Accordion title="GitHub アプリはユーザー認証をどのように処理しますか？" icon="shield-halved">
    GitHub 統合をインストールした組織のメンバーであるユーザーだけが、自分の Devin セッションでその統合を利用できます。Devin が利用できる GitHub 統合のアクセス権は、ユーザーの所属組織のメンバーシップに基づいて引き継がれます。
  </Accordion>

  <Accordion title="Devin は暗号鍵をどのように管理・ローテーションしますか？" icon="binary">
    暗号鍵は AWS KMS によって管理され、定期的にローテーションされます。
  </Accordion>
</AccordionGroup>
