Skip to main content
ドキュメントへの更新が頻繁に発行されており、このページの翻訳はまだ行われている場合があります。 最新の情報については、「英語のドキュメント」を参照してください。

GitHub REST API のクイックスタート

GitHub REST API の使用を開始する方法について説明します。

この記事では、GitHub CLI、JavaScript、または curl を使用して、GitHub REST API の使用をすばやく開始する方法について説明します。 詳しいガイドについては、「REST API を使用した作業の開始」をご覧ください。

GitHub CLI を使用した作業の開始

コマンド ラインでの GitHub CLI の使用

GitHub CLI は、コマンド ラインから GitHub REST API を使用する方法として最も簡単です。

注: 以下の例は GitHub.com を対象としています。 GitHub Enterprise Server を使用して例を試す場合は、octocat/Spoon-Knife をインスタンスに置き換える必要があります。 または、インスタンスではなく、gh auth login コマンドを再実行して GitHub.com に対して認証します。

  1. GitHub CLI をまだインストールしていない場合は、インストールしてください。 インストールの手順については、GitHub CLI リポジトリを参照してください。

  2. auth login サブコマンドを使用して、GitHub CLI に対する認証を行います。 詳しくは、GitHub CLIauth login のドキュメントを参照してください。

    gh auth login
  3. api サブコマンドを使用して API 要求を行います。 詳しくは、GitHub CLIapi のドキュメントを参照してください。

    gh api repos/octocat/Spoon-Knife/issues

GitHub Actions での GitHub CLI の使用

GitHub Actions ワークフローでは、GitHub CLI を使用することもできます。 詳しくは、「ワークフローでの GitHub CLI の使用」を参照してください。

gh auth login コマンドを使用するのでなく、アクセス トークンを GH_TOKEN という環境変数として渡します。 GitHub では、トークンを作成するのでなく組み込みの GITHUB_TOKEN を使用することをお勧めしています。 これができない場合は、ご利用のトークンをシークレットとして格納し、次の例で GITHUB_TOKEN を実際のシークレットの名前に置き換えます。 GITHUB_TOKEN について詳しくは、「自動トークン認証」を参照してください。 シークレットについて詳しくは、「暗号化されたシークレット」を参照してください。

注: 以下の例のワークフローは GitHub.com を対象としています。 GitHub Enterprise Server を使用して例を試す場合は、octocat/Spoon-Knife を GitHub Enterprise Server のリポジトリに置き換える必要があります。

on:
  workflow_dispatch:
jobs:
  use_api:
    runs-on: ubuntu-latest
    permissions:
      issues: read
    steps:
      - env:
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        run: |
          gh api repos/octocat/Spoon-Knife/issues

GitHub App を使用して認証する場合は、ワークフロー内にインストール アクセス トークンを作成します。

  1. GitHub App の ID をシークレットとして保存します。 以下の例では、APP_ID をシークレットの名前に置き換えます。 アプリ ID は、アプリの設定ページで、あるいは API を通じて確認できます。 詳しくは、REST API のドキュメントの「アプリ」をご覧ください。 シークレットについて詳しくは、「暗号化されたシークレット」を参照してください。

  2. アプリケーションの秘密鍵を生成してください。 作成されたファイルの内容をシークレットとして保存します。 (-----BEGIN RSA PRIVATE KEY----- および -----END RSA PRIVATE KEY----- を含め、ファイルの内容全体を保存します)。以下の例では、APP_PEM をシークレットの名前に置き換えます。 詳細については、「GitHub Apps による認証」を参照してください。

  3. トークンを生成するステップを追加し、GITHUB_TOKEN ではなくそのトークンを使用します。 このトークンは 60 分後に期限切れになるので注意してください。 次に例を示します。

    # <a name="this-workflow-uses-actions-that-are-not-certified-by-github"></a>このワークフローはGitHubによって認定されていないアクションを使用します。
    # <a name="they-are-provided-by-a-third-party-and-are-governed-by"></a>それらはサードパーティによって提供され、
    # <a name="separate-terms-of-service-privacy-policy-and-support"></a>別個の利用規約、プライバシーポリシー、
    # <a name="documentation"></a>ドキュメントを参照してください。
    
    on:
      workflow_dispatch:
    jobs:
      track_pr:
        runs-on: ubuntu-latest
        steps:
          - name: Generate token
            id: generate_token
            uses: tibdex/github-app-token@36464acb844fc53b9b8b2401da68844f6b05ebb0
            with:
              app_id: ${{ secrets.APP_ID }}
              private_key: ${{ secrets.APP_PEM }}
    
          - name: Use API
            env:
              GH_TOKEN: ${{ steps.generate_token.outputs.token }}
            run: |
              gh api repos/octocat/Spoon-Knife/issues
    

JavaScript の使用を開始する

Octokit.js を使用すれば、JavaScript スクリプト内で GitHub REST API とやりとりすることができます。 詳しくは、「REST API と JavaScript を使用したスクリプト」をご覧ください。

Octokit.js の使用

注: 以下の例は GitHub.com を対象としています。 GitHub Enterprise Server を使用して例を試す場合は、octocat/Spoon-Knife をインスタンスに置き換える必要があります。 または、baseURL を指定せずに、新しい Octokit インスタンスを作成することもできます。

  1. アクセス トークンを作成します。 たとえば、personal access token または GitHub App のユーザーからサーバーへのアクセス トークンを作成します。 詳しい情報については、「personal access token の作成」か「GitHub App のユーザーの特定と認可」を参照してください。

    警告: アクセス トークンはパスワードと同様に扱ってください。

    トークンを安全な状態に保つには、ご利用のトークンをシークレットとして格納し、GitHub Actions を介してスクリプトを実行します。 詳しくは、「GitHub Actions での Octokit.js の使用」セクションを参照してください。

    これらのオプションが使用できない場合は、1Password CLI などの別のサービスを使用してトークンを安全に格納することを検討してください。

  2. octokitをインストールする。 たとえば、「 npm install octokit 」のように入力します。 octokit をインストールまたは読み込むための他の方法については、Octokit.js の README を参照してください。

  3. スクリプトで octokit をインポートします。 たとえば、「 import { Octokit } from "octokit"; 」のように入力します。 その他の octokit のインポート方法については、Octokit.js の README を参照してください。

  4. 実際のトークンを指定して Octokit のインスタンスを作成します。 YOUR-TOKEN を実際のトークンに置き換えます。

    const octokit = new Octokit({
      auth: 'YOUR-TOKEN'
    });
    
  5. octokit.request を使用して、要求を実行します。 HTTP メソッドとパスを最初の引数として送信します。 オブジェクト内のパス、クエリ、および本文のパラメーターを 2 番目の引数として指定します。 たとえば、次の要求では、HTTP メソッドは GET、パスは /repos/{owner}/{repo}/issues、パラメーターは owner: "octocat" および repo: "Spoon-Knife" となっています。

    await octokit.request("GET /repos/{owner}/{repo}/issues", {
      owner: "octocat",
      repo: "Spoon-Knife",
    });
    

GitHub Actions での Octokit.js の使用

また、GitHub Actions ワークフローで JavaScript スクリプトを実行することもできます。 詳細については、「GitHub Actions のワークフロー構文」を参照してください。

GitHub では、トークンを作成するのでなく組み込みの GITHUB_TOKEN を使用することをお勧めしています。 これができない場合は、ご利用のトークンをシークレットとして格納し、次の例で GITHUB_TOKEN を実際のシークレットの名前に置き換えます。 GITHUB_TOKEN について詳しくは、「自動トークン認証」を参照してください。 シークレットについて詳しくは、「暗号化されたシークレット」を参照してください。

注: 以下の例は GitHub.com を対象としています。 GitHub Enterprise Server を使用して例を試す場合は、octocat/Spoon-Knife をインスタンスに置き換える必要があります。 または、baseURL を指定せずに、新しい Octokit インスタンスを作成することもできます。

次のワークフロー例を参照してください。

  1. リポジトリのコンテンツをチェックアウトする
  2. Node.js を設定する
  3. octokit をインストールする
  4. GITHUB_TOKEN の値を、TOKEN と呼ばれる環境変数として格納し、.github/actions-scripts/use-the-api.mjs を実行する。これにより、その環境変数に process.env.TOKEN としてアクセスできます。

ワークフローの例:

on:
  workflow_dispatch:
jobs:
  use_api_via_script:
    runs-on: ubuntu-latest
    permissions:
      issues: read
    steps:
      - name: Check out repo content
        uses: actions/checkout@v3

      - name: Setup Node
        uses: actions/setup-node@v3
        with:
          node-version: '16.17.0'
          cache: npm

      - name: Install dependencies
        run: npm install octokit

      - name: Run script
        run: |
          node .github/actions-scripts/use-the-api.mjs
        env:
          TOKEN: ${{ secrets.GITHUB_TOKEN }}

ファイル パス .github/actions-scripts/use-the-api.mjs を含む JavaScript スクリプトの例:

import { Octokit } from "octokit"

const octokit = new Octokit({
  auth: process.env.TOKEN
});

try {
  const result = await octokit.request("GET /repos/{owner}/{repo}/issues", {
      owner: "octocat",
      repo: "Spoon-Knife",
    });

  const titleAndAuthor = result.data.map(issue => {title: issue.title, authorID: issue.user.id})

  console.log(titleAndAuthor)

} catch (error) {
  console.log(`Error! Status: ${error.status}. Message: ${error.response.data.message}`)
}

GitHub App を使用して認証する場合は、ワークフロー内にインストール アクセス トークンを作成します。

  1. GitHub App の ID をシークレットとして保存します。 以下の例では、APP_ID をシークレットの名前に置き換えます。 アプリケーションIDは、アプリケーションの設定ページで、あるいはアプリケーションのAPIを通じて確認できます。 詳細については、「アプリ」を参照してください。 シークレットについて詳しくは、「暗号化されたシークレット」を参照してください。

  2. アプリケーションの秘密鍵を生成してください。 作成されたファイルの内容をシークレットとして保存します。 (-----BEGIN RSA PRIVATE KEY----- および -----END RSA PRIVATE KEY----- を含め、ファイルの内容全体を保存します)。以下の例では、APP_PEM をシークレットの名前に置き換えます。 詳細については、「GitHub Apps による認証」を参照してください。

  3. トークンを生成するステップを追加し、GITHUB_TOKEN ではなくそのトークンを使用します。 このトークンは 60 分後に期限切れになるので注意してください。 次に例を示します。

    # <a name="this-workflow-uses-actions-that-are-not-certified-by-github"></a>このワークフローはGitHubによって認定されていないアクションを使用します。
    # <a name="they-are-provided-by-a-third-party-and-are-governed-by"></a>それらはサードパーティによって提供され、
    # <a name="separate-terms-of-service-privacy-policy-and-support"></a>別個の利用規約、プライバシーポリシー、
    # <a name="documentation"></a>ドキュメントを参照してください。
    
    on:
      workflow_dispatch:
    jobs:
      use_api_via_script:
        runs-on: ubuntu-latest
        steps:
          - name: Check out repo content
            uses: actions/checkout@v3
    
          - name: Setup Node
            uses: actions/setup-node@v3
            with:
              node-version: '16.17.0'
              cache: npm
    
          - name: Install dependencies
            run: npm install octokit
    
          - name: Generate token
            id: generate_token
            uses: tibdex/github-app-token@36464acb844fc53b9b8b2401da68844f6b05ebb0
            with:
              app_id: ${{ secrets.APP_ID }}
              private_key: ${{ secrets.APP_PEM }}
    
          - name: Run script
            run: |
              node .github/actions-scripts/use-the-api.mjs
            env:
              TOKEN: ${{ steps.generate_token.outputs.token }}
    

curl の使用を開始する

コマンド ラインで curl を使用する

注:

  • 以下の例は GitHub.com を対象としています。 GitHub Enterprise Server を使用して例を試す場合は、https://api.github.comhttp(s)://HOSTNAME/api/v3 に置き換え、HOSTNAME を your GitHub Enterprise Server instance のホスト名に置き換える必要があります。 octocat/Spoon-Knife を GitHub Enterprise Server のリポジトリに置き換える必要もあります。
  • コマンド ラインから API 要求を行う場合、GitHub では、GitHub CLI を使用することをお勧めします。これにより、認証と要求が簡略化されます。 GitHub CLI を使用して REST API の使用を開始する方法について詳しくは、この記事の GitHub CLI バージョンを参照してください。
  1. curl がまだコンピューターにインストールされていない場合は、インストールします。 curl がインストールされているかどうかを確認するには、コマンド ラインで curl --version を実行します。 出力が curl のバージョンに関する情報であれば、インストールされています。 command not found: curl のようなメッセージが表示された場合は、curl をダウンロードしてインストールする必要があります。 詳しくは、curl プロジェクトのダウンロードに関するページを参照してください。

  2. アクセス トークンを作成します。 たとえば、personal access token または GitHub App のユーザーからサーバーへのアクセス トークンを作成します。 詳しい情報については、「personal access token の作成」か「GitHub App のユーザーの特定と認可」を参照してください。

    警告: アクセス トークンは、パスワードと同様の扱いとしてください。

    curl ではなく GitHub CLI を使用することもできます。 認証は GitHub CLI によって自動的に処理されます。 詳しくは、このページの GitHub CLI バージョンを参照してください。

    これらのオプションが使用できない場合は、1Password CLI などの別のサービスを使用してトークンを安全に格納することを検討してください。

  3. curl コマンドを使用して要求を行います。 Authorization ヘッダーにトークンを渡します。 YOUR-TOKEN を実際のトークンに置き換えます。

    curl --request GET \
    --url "https://api.github.com/repos/octocat/Spoon-Knife/issues" \
    --header "Accept: application/vnd.github+json" \
    --header "Authorization: Bearer YOUR-TOKEN"

    注: ほとんどの場合は、Authorization: Bearer または Authorization: token を使用してトークンを渡すことができます。 ただし、JSON Web トークン (JWT) を渡す場合は、Authorization: Bearer を使用する必要があります。

GitHub Actions での curl コマンドの使用

GitHub Actions ワークフローでも curl コマンドを使用できます。

GitHub では、トークンを作成するのでなく組み込みの GITHUB_TOKEN を使用することをお勧めしています。 これができない場合は、ご利用のトークンをシークレットとして格納し、次の例で GITHUB_TOKEN を実際のシークレットの名前に置き換えます。 GITHUB_TOKEN について詳しくは、「自動トークン認証」を参照してください。 シークレットについて詳しくは、「暗号化されたシークレット」を参照してください。

注: 以下の例のワークフローは GitHub.com を対象としています。 GitHub Enterprise Server を使用して例を試す場合は、次の違いに注意してください。

  • https://api.github.comhttp(s)://HOSTNAME/api/v3 に置き換え、HOSTNAME を your GitHub Enterprise Server instance のホスト名に置き換える必要があります。
  • octocat/Spoon-Knife を GitHub Enterprise Server のリポジトリに置き換える必要があります。
on:
  workflow_dispatch:
jobs:
  use_api:
    runs-on: ubuntu-latest
    permissions:
      issues: read
    steps:
      - env:
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        run: |
          curl --request GET \
          --url "https://api.github.com/repos/octocat/Spoon-Knife/issues" \
          --header "Accept: application/vnd.github+json" \
          --header "Authorization: Bearer $GH_TOKEN"

GitHub App を使用して認証する場合は、ワークフロー内にインストール アクセス トークンを作成します。

  1. GitHub App の ID をシークレットとして保存します。 以下の例では、APP_ID をシークレットの名前に置き換えます。 アプリケーションIDは、アプリケーションの設定ページで、あるいはアプリケーションのAPIを通じて確認できます。 詳細については、「アプリ」を参照してください。 シークレットについて詳しくは、「暗号化されたシークレット」を参照してください。

  2. アプリケーションの秘密鍵を生成してください。 作成されたファイルの内容をシークレットとして保存します。 (-----BEGIN RSA PRIVATE KEY----- および -----END RSA PRIVATE KEY----- を含め、ファイルの内容全体を保存します)。以下の例では、APP_PEM をシークレットの名前に置き換えます。 詳細については、「GitHub Apps による認証」を参照してください。

  3. トークンを生成するステップを追加し、GITHUB_TOKEN ではなくそのトークンを使用します。 このトークンは 60 分後に期限切れになるので注意してください。 次に例を示します。

    # <a name="this-workflow-uses-actions-that-are-not-certified-by-github"></a>このワークフローはGitHubによって認定されていないアクションを使用します。
    # <a name="they-are-provided-by-a-third-party-and-are-governed-by"></a>それらはサードパーティによって提供され、
    # <a name="separate-terms-of-service-privacy-policy-and-support"></a>別個の利用規約、プライバシーポリシー、
    # <a name="documentation"></a>ドキュメントを参照してください。
    
    on:
      workflow_dispatch:
    jobs:
      use_api:
        runs-on: ubuntu-latest
        steps:
          - name: Generate token
            id: generate_token
            uses: tibdex/github-app-token@36464acb844fc53b9b8b2401da68844f6b05ebb0
            with:
              app_id: ${{ secrets.APP_ID }}
              private_key: ${{ secrets.APP_PEM }}
    
          - name: Use API
            env:
              GH_TOKEN: ${{ steps.generate_token.outputs.token }}
            run: |
              curl --request GET \
              --url "https://api.github.com/repos/octocat/Spoon-Knife/issues" \
              --header "Accept: application/vnd.github+json" \
              --header "Authorization: Bearer $GH_TOKEN"
    

次の手順

詳しいガイドについては、「REST API を使用した作業の開始」をご覧ください。