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

GitHub API でインテグレーションを構築し、柔軟性を強化してワークフローの摩擦を軽減できます。また、GitHub Marketplace で他のユーザとインテグレーションを共有することも可能です。

GitHub のアプリケーションを使用すると、ワークフローを自動化し改善できます。 アプリケーションを構築して、ワークフローを改善できます。 また、GitHub Marketplace でアプリケーションを共有または販売することも可能です。 GitHub Marketplace にアプリを掲載する方法については、「GitHub Marketplace を使ってみる」を参照してください。

GitHub Appsは、データへのアクセスについてより細やかな権限を提供することから、GitHubとのインテグレーションのための公式に推奨される方式ですが, but GitHub supports both OAuth App and GitHub Apps. アプリケーションのタイプ選択に関する情報については、「GitHub App と OAuth App の違い」を参照してください。

GitHub Actionsと合わせてアプリケーションを使っており、ワークフローファイルを変更したいのであれば、workflowスコープを含むOAuthトークンでユーザの代わりに認証を受けなければなりません。 ユーザは、ワークフローファイルを含むリポジトリの管理もしくは書き込み権限を持っていなければなりません。 詳しい情報については「OAuthアプリケーションのスコープを理解する」を参照してください。

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 を作成する際は、以下に気を付けてください。

  • ユーザもしくはOrganizationは、最大で100個のGitHub Appsを所有できます。

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

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

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

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

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

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

  • GitHub Actionsと合わせてアプリケーションを使っており、ワークフローファイルを変更したいのであれば、workflowスコープを含むOAuthトークンでユーザの代わりに認証を受けなければなりません。 ユーザは、ワークフローファイルを含むリポジトリの管理もしくは書き込み権限を持っていなければなりません。 詳しい情報については「OAuthアプリケーションのスコープを理解する」を参照してください。

GitHub Apps アプリケーションの開発を始めるには、「GitHub App を作成する」から取りかかってください。構成済みの GitHub Apps を作成できる GitHub App マニフェストの使い方については、「マニフェストから GitHub Apps を作成する」を参照してください。

About OAuth App

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

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

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

単純なスクリプトで処理できるよりも複雑なプロセスを作成する場合、OAuth App を構築するのは良い選択肢です。 Note that OAuth App are applications that need to be hosted somewhere.

Keep these ideas in mind when creating OAuth App:

  • ユーザもしくはOrganizationは、最大で100個のOAuth Appsを所有できます。
  • OAuth App は、GitHub 全体にわたって、常に認証された GitHub ユーザとして振る舞う必要があります (たとえば、ユーザ通知を行う場合など)。
  • 認証されたユーザに対して「GitHub でログイン」を有効化することにより、OAuth App をアイデンティティプロバイダとして使用できます。
  • 単一のリポジトリで動作するアプリケーションが必要な場合、OAuth App を構築しないでください。 With the repo OAuth scope, OAuth App can act on all of the authenticated user's repositories.
  • Team や企業を代理するアプリケーションとして OAuth App を構築しないでください。 OAuth App authenticate as a single user, so if one person creates an OAuth App for a company to use, and then they leave the company, no one else will have access to it.
  • GitHub ActionsでOAuthアプリケーションを使っていて、ワークフローファイルを変更したいなら、OAuthトークンはworkflowスコープを持っていなければならず、ユーザはワークフローファイルを含むリポジトリへのオーナーもしくは書き込み権限を持っていなければなりません。 詳しい情報については「OAuthアプリケーションのスコープを理解する」を参照してください。

For more on OAuth App, see "Creating an OAuth App" and "Registering your app."

個人アクセストークン

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

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

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

  • トークンは自分自身のみを表すものとして使用してください。
  • 1 回限りの cURL リクエストを実行できます。
  • 個人用のスクリプトを実行できます。
  • Team や会社全体が使用するスクリプトは設定しないでください。
  • Don't set up a shared user account to act as a bot user.
  • Do set an expiration for your personal access tokens, to help keep your information secure.

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

インテグレーションの作成に取りかかる前に、GitHub API を使用したアクセス、認証、対話に最善の方法を見極める必要があります。 The following image offers some questions to ask yourself when deciding whether to use personal access tokens, GitHub Apps, or OAuth App for your integration.

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

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

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

サポートのリクエスト

For questions, bug reports, and discussions about GitHub Apps, OAuth App, and API development, explore the GitHub API Development and Support Forum. このフォーラムはGitHubのスタッフによって進行及び管理されていますが、フォーラムにポストされた疑問に対してGitHubのスタッフからの返答があることは保証されていません。

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

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

このドキュメントは役立ちましたか?

プライバシーポリシー

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

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

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

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

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