Skip to main content

GitHub アプリをビルドするタイミングを決定する

統合を構築するときは、GitHub App、OAuth app、またはpersonal access tokenではなく、次のシナリオでGitHub Actionsを使用することを検討する必要があります。

GitHub App の代わりに OAuth app を使用する

一般に、 GitHub Apps は OAuth appsよりも好ましい。

OAuth appsとGitHub Appsの両方で OAuth 2.0 が使用されます。

OAuth apps はユーザーに代わってのみ動作できますが、 GitHub Apps はユーザーに代わって、またはユーザーとは別に動作できます。

詳しくは、「GitHub アプリと OAuth アプリの違い」をご覧ください。

既存の OAuth app を GitHub Appに移行する方法については、 OAuth アプリを GitHub Apps に移行する を参照してください。

GitHub Apps 強化されたセキュリティを提供する

GitHub Apps アプリで実行できる操作をより詳細に制御できます。 OAuth apps が使用する広範なスコープの代わりに、GitHub Apps はきめ細かなアクセス許可を使用します。 たとえば、アプリがリポジトリの内容を読み取る必要がある場合、 OAuth app には repo スコープが必要です。このスコープにより、アプリはリポジトリの内容と設定を編集することもできます。 GitHub Appは、リポジトリコンテンツへの読み取り専用アクセスを要求できます。これは、アプリがリポジトリの内容や設定を編集するなどの特権を持つアクションを実行することを許可しません。

GitHub Apps リポジトリアクセスをより詳細に制御することもできます。 GitHub Appでは、アプリをインストールしたユーザーまたは組織の所有者が、アプリがアクセスできるリポジトリを決定できます。 逆に、 OAuth app は、アプリを承認したユーザーがアクセスできるすべてのリポジトリにアクセスできます。

GitHub Apps 有効期間の短いトークンを使用します。 トークンが漏洩した場合、トークンの有効期間は短くなり、発生する可能性のある損害が軽減されます。 逆に、 OAuth app トークンは、 OAuth app を承認したユーザーがトークンを取り消すまで期限切れになりません。

これらのセキュリティ機能は、アプリの資格情報が漏洩した場合に発生する可能性のある損害を制限することで、 GitHub Appのセキュリティを強化するのに役立ちます。 さらに、これにより、より厳格なセキュリティ ポリシーを持つ Organization がアプリを使用できるようになります。

GitHub Apps は、ユーザーとは独立して、またはユーザーに代わって行動できます。

GitHub Apps は、ユーザーとは独立して動作できます。 これは、ユーザー入力を必要としない自動化に役立ちます。

OAuth appsと同様に、GitHub Appsでもユーザーに代わってアクションを実行できます。 OAuth apps は、その操作がアプリによって実行されたことを示しませんが、GitHub Apps は、その操作がユーザーに代わってアプリによって実行されたことを示します。

GitHub Apps はユーザー アカウントに関連付けられず、 licenseを使用しません。 GitHub Apps は、最初にアプリをインストールしたユーザーが組織を離れた場合でもインストールされたままです。 これにより、ユーザーが Team を離れた場合でも、統合は引き続き機能します。

GitHub Apps スケーラブルなレート制限がある

インストール アクセス トークンを使用する GitHub Apps のレート制限は、リポジトリの数と組織のユーザー数に応じてスケーリングされます。 逆に、 OAuth apps はレート制限が低く、スケーリングされません。 詳しくは、「GitHub アプリのレート制限」をご覧ください。

GitHub Apps はWebhook を内蔵しています

GitHub Apps には、一元化された Webhook が組み込まれています。 GitHub Apps は、アプリがアクセスできるすべてのリポジトリと組織の Webhook イベントを受信できます。 逆に、 OAuth apps は、リポジトリと組織ごとに Webhook を個別に構成する必要があります。

API アクセスが多少異なる

一般に、 GitHub Apps と OAuth apps は同じ API 要求を行うことができます。 ただし、いくつかの違いがあります。

  • チェックの実行とチェック スイートを管理する REST API は、 GitHub Appsでのみ使用できます。
  • エンタープライズ オブジェクト自体などのエンタープライズ レベルのリソースは、GitHub Appsでは使用できません。 これは、 GitHub Apps が GET /enterprise/settings/license などのエンドポイントを呼び出すことができないことを意味します。 ただし、エンタープライズ所有の組織とリポジトリのリソースを使用できます。
  • 一部の要求では、 GitHub Appに付与されたアクセス許可とリポジトリ アクセスに応じて、不完全なデータが返されることがあります。 たとえば、アプリで、ユーザーがアクセスできるすべてのリポジトリを取得するように要求した場合、応答には、アプリがアクセスを許可されたリポジトリのみが含まれます。

GitHub Appsで使用できる REST API エンドポイントの詳細については、「GitHub アプリのインストール アクセス トークンで使用できるエンドポイント」を参照してください。

GitHub Appまたはpersonal access tokenのどちらを選ぶか

ユーザーまたは組織内の GitHub リソースにアクセスする場合、または長期間の統合が予想される場合は、 GitHub Appを構築することをお勧めします。

personal access tokens は、API テストや短期間しか使用しないスクリプトに使用できます。 personal access tokenはユーザーに関連付けられているため、ユーザーが必要なリソースにアクセスできなくなった場合、自動化が中断する可能性があります。 GitHub Appenterprise または は、ユーザーに依存しません。 さらに、ユーザーとは異なり、 GitHub App は GitHublicense を使用しません。

GitHubでは 2 種類のpersonal access tokensがサポートされていますが、可能な限りfine-grained personal access tokenではなくpersonal access tokens (classic)を使用することをお勧めします。 personal access tokens の詳細については、「個人用アクセス トークンを管理する」を参照してください。

GitHub App または GitHub Actions の選択

GitHub Apps と GitHub Actions の両方に、自動化ツールとワークフロー ツールを構築する方法が用意されています。

_ GitHub Actions _ は、リポジトリ内の継続的インテグレーション、デプロイ タスク、プロジェクト管理などのジョブを実行できる自動化を提供します。 これらは、GitHub でホストされたランナーマシン、または管理者が設定するセルフホスト ランナー上で直接実行されます。 GitHub Actions は永続的に実行されません。 GitHub Actions ワークフローは、リポジトリ内で発生するイベントに応答して実行され、設定されているリポジトリのリソースにのみアクセスできます。 ただし、カスタム アクションをリポジトリや Organization 間で共有できるため、開発者はニーズに合わせて既存のアクションを再利用したり、変更したりできます。 GitHub Actions また、組み込みのシークレット管理も付属しています。これを使用すると、サードパーティのサービスと安全に対話し、デプロイ キーを安全に管理できます。

_ GitHub Apps _ は、ユーザー デバイスで提供または実行するサーバーまたはコンピューティング インフラストラクチャで永続的に実行されます。 GitHub webhook イベントや、GitHub エコシステムの外部からのイベントに対応できます。 これらは、複数のリポジトリまたは organization にまたがる操作や、ホストされたサービスを他の organization や Enterprise に提供する場合に適したオプションです。 GitHub Appは、主にGitHubの外部で発生する関数や、GitHub Actions ワークフローに割り当てられているものよりも多くの実行時間またはアクセス許可が必要な関数を使用してツールを構築する場合に最適な選択肢です。

GitHub ActionsとGitHub Appsの比較の詳細については、AUTOTITLE を参照してください。

GitHub Appを使用して、GitHub Actionsで認証できます 組み込みの GITHUB_TOKEN に十分なアクセス許可がない場合のワークフロー。 詳しくは、「GitHub Actions ワークフローでGitHub アプリを使用して認証済み API 要求を作成する」をご覧ください。