ドキュメントには頻繁に更新が加えられ、その都度公開されています。本ページの翻訳はまだ未完成な部分があることをご了承ください。最新の情報については、英語のドキュメンテーションをご参照ください。本ページの翻訳に問題がある場合はこちらまでご連絡ください。

アプリケーションについて

GitHub API でインテグレーションを構築し、柔軟性を強化してワークフローの摩擦を軽減できます。

ここには以下の内容があります:

GitHub のアプリケーションを使用すると、ワークフローを自動化し改善できます。 アプリケーションを構築して、ワークフローを改善できます。

GitHub Appsは、データへのアクセスについてより細やかな権限を提供することから、GitHubとのインテグレーションのための公式に推奨される方式ですが。ただし、GitHub は OAuth App と GitHub Apps の両方をサポートしています。 For information on choosing a type of app, see "Differences between GitHub Apps and OAuth Apps."

GitHub App を構築する手順については、「はじめての GitHub App 構築」を参照してください。

GitHub Apps について

GitHub Apps は GitHub の中でも主役級の存在です。 GitHub App は独自で動作し、独自の ID を使用して API 経由で直接アクションを実行します。つまり、ボットやサービスアカウントを別途維持する必要がありません。

GitHub Apps は、Organization やユーザアカウントに直接インストールでき、特定のリポジトリへのアクセス権を付与できます。 精細なアクセス権限が付いており、webhook が組み込まれています。 GitHub App をセットアップする際、アクセスさせるリポジトリを選択できます。 たとえば、octocat リポジトリ のみ に IssueIssue を書き込む、MyGitHub というアプリケーションをセットアップできます。 GitHub App をインストールするには、Organization のオーナーであるか、リポジトリで管理者権限を持っている必要があります。

デフォルトでは、Organization内のGitHub Appsの設定を管理できるのはOrganizationのオーナーだけです。 Organization内のGitHub Appsを管理できるユーザを追加するには、管理者がそのユーザにGitHub Appの管理者権限を許可します。 Organization内でのGitHub Appの管理者の追加と削除の方法を学ぶには、「GitHub Appの管理者」を参照してください。

GitHub Apps は、どこかにホストする必要があるアプリケーションです。 サーバーとホスティングに関するステップバイステップガイドについては、はじめての GitHub App 構築」を参照してください。

ワークフローを改善するため、複数のスクリプトまたはアプリケーション全体を含む GitHub App を作成し、それをその他の数多くのツールと接続できます。 たとえば、GitHub Apps を GitHub、Slack、その他の社内アプリケーション、電子メールプログラム、その他の API などに接続できます。

GitHub Apps を作成する際は、以下に気を付けてください。

  • GitHub App は、ユーザと独立したアクションを実行する必要があります (アプリケーションが user-to-server トークンを使用する場合を除きます)。 ユーザからサーバーへのアクセストークンをさらにセキュアにするために、8時間後に期限切れとなるアクセストークンと、新しいアクセストークンと交換できるリフレッシュトークンを使用できます。 詳しい情報については「ユーザからサーバーへのアクセストークンのリフレッシュ」を参照してください。

  • GitHub App は、必ず特定のリポジトリと統合するようにしてください。

  • GitHub App は個人アカウントまたは Organization に接続する必要があります。

  • ユーザができる全てのことを GitHub App が知り、行えるとは思わないでください。

  • 単に「GitHub でログイン」するサービスが必要な場合は、GitHub App を使用しないでください。 ユーザ識別フローでユーザをログインさせ、かつ他のことを行う場合は、GitHub App を使用できます。

  • GitHub ユーザとして振る舞い、ユーザが実行できることを全て実行したいだけの場合は、GitHub App を構築しないでください。

GitHub Apps アプリケーションの開発を始めるには、「GitHub App を作成する」から取りかかってください。

OAuth App について

OAuth2 は、外部アプリケーションがパスワードにアクセスすることなく、ユーザの GitHub アカウントの個人情報にアクセスする承認を要求できるようにするプロトコルです。 これは Basic 認証よりも好ましい方法です。なぜなら、トークンは特定の種類のデータに限定でき、ユーザがいつでも取り消すことができるからです。

警告: OAuth Appからすべての権限を取り消すと、デプロイキーを含めてユーザの代わりにアプリケーションが生成したすべてのSSHキーは削除されます。

OAuth App は、アプリケーションにアクセス権を付与するユーザを認証するため、アイデンティティプロバイダとして GitHub を使用します。 つまり、ユーザが OAuth App にアクセス権を付与すると、アカウントでアクセスできる すべての リポジトリ、およびサードパーティのアクセスをブロックしていないあらゆる Organization に対してアクセスを許可することになります。

単純なスクリプトで処理できるよりも複雑なプロセスを作成する場合、OAuth App を構築するのは良い選択肢です。 OAuth App は、どこかにホストする必要があるアプリケーションであることに注意してください。

OAuth App を作成する際は、以下に気を付けてください。

  • OAuth App は、GitHub 全体にわたって、常に認証された GitHub ユーザとして振る舞う必要があります (たとえば、ユーザ通知を行う場合など)。
  • 認証されたユーザに対して「GitHub でログイン」を有効化することにより、OAuth App をアイデンティティプロバイダとして使用できます。
  • 単一のリポジトリで動作するアプリケーションが必要な場合、OAuth App を構築しないでください。 repo OAuth スコープを使用すると、OAuth App は認証されたユーザの全てのリポジトリで動作します。
  • Team や企業を代理するアプリケーションとして OAuth App を構築しないでください。 OAuth App は単一のユーザとして認証を行うので、ある人が OAuth App を会社が使用するものとして作成し、その人が会社を辞めた場合は、他の人がアクセスできなくなります。

OAuth App の詳細については、「OAuth App を作成する」および「アプリケーションを登録する」を参照してください。

個人アクセストークン

個人アクセストークンは、権限をスコープで特定できる点において、OAuth トークンと機能が似ている文字列です。 また、個人アクセストークンはパスワードとも似ています。ただし、個人アクセストークンは複数所有でき、それぞれのアクセス権をいつでも取り消すことができます。

たとえば、個人アクセストークンにリポジトリへの書き込みをできるように設定できます。 そして、リポジトリでIssue を作成する cURL コマンドを実行するかスクリプトを記述する場合、個人アクセストークンを渡して認証します。 個人アクセストークンを環境変数として保存することで、使用のたびに入力することを避けることができます。

個人アクセストークンを使用する際は、以下に気を付けてください。

  • トークンは自分自身のみを表すものとして使用してください。
  • 1 回限りの cURL リクエストを実行できます。
  • 個人用のスクリプトを実行できます。
  • Team や会社全体が使用するスクリプトは設定しないでください。
  • ボットユーザとして振る舞う共有ユーザアカウントは設定しないでください。

構築すべきインテグレーションを決定する

インテグレーションの作成に取りかかる前に、GitHub API を使用したアクセス、認証、対話に最善の方法を見極める必要があります。 以下の画像にある質問に答えていくと、個人アクセストークン、GitHub Apps、OAuth App のどれをインテグレーションとして使用するかを決めることができます。

アプリケーションの質問フローの紹介

インテグレーションがどう振る舞うべきか、何にアクセスできるべきかについては、以下の質問を検討してください。

  • インテグレーションは自分自身としてのみ振る舞うのか、それともアプリケーションのように振る舞うのか?
  • 独自のエンティティとして、自分から独立して動作させるのか?
  • 自分がアクセスできるもの全てにアクセスするのか、それともアクセスを制限するのか?
  • 単純か、それとも複雑か? たとえば、個人アクセストークンは単純なスクリプトや cURL に適し、OAuth App はより複雑なスクリプトを処理できます。

サポートのリクエスト

GitHub App、OAuth App、API開発に関する疑問、バグレポート、議論については、GitHub API Development and Support Forumを調べてみてください。 このフォーラムはGitHubのスタッフによって進行及び管理されていますが、フォーラムにポストされた疑問に対してGitHubのスタッフからの返答があることは保証されていません。

以下の場合は、連絡フォームを使ってGitHub Supportに直接連絡することを検討してください。

  • GitHub Enterprise Serverのスタッフからの反応を確実に得たい場合
  • センシティブなデータやプライベートな懸念事項に関わるサポートリクエスト
  • 機能リクエスト
  • GitHub Enterprise Serverの製品に関するフィードバック

このドキュメントは役立ちましたか? プライバシーポリシー

これらのドキュメントを素晴らしいものにするのを手伝ってください!

GitHubのすべてのドキュメントはオープンソースです。間違っていたり、はっきりしないところがありましたか?Pull Requestをお送りください。

コントリビューションを行う

OR, コントリビューションの方法を学んでください。

問題がまだ解決していませんか?

GitHubコミュニティで質問する サポートへの連絡