# コンテキスト

GitHub Actionsのコンテキストについて説明します。

## コンテキストについて

コンテキストは、ワークフローの実行、変数、ランナーの環境、ジョブ、ステップに関する情報にアクセスする方法です。 各コンテキストは、プロパティを含むオブジェクトであり、文字列やその他のオブジェクトにすることができます。

コンテキスト、オブジェクト、プロパティは、ワークフローの実行条件によって大きく異なります。 たとえば、 `matrix` コンテキストは、 [matrix](/ja/enterprise-server@3.22/actions/reference/workflows-and-actions/workflow-syntax#jobsjob_idstrategymatrix) 内のジョブに対してのみ設定されます。

式構文を使用してコンテキストにアクセスできます。 詳しくは、「[ワークフロー内とアクション内で式を評価する](/ja/enterprise-server@3.22/actions/reference/workflows-and-actions/expressions)」をご覧ください。

`${{ <context> }}`

> \[!WARNING]
> ワークフローとアクションを作成するときは、攻撃者によってコードが信頼されていない入力を実行する可能性があるかどうかを常に考慮する必要があります。 攻撃者が悪意あるコンテンツを挿入してくるかもしれないので、特定のコンテキストは信頼できない入力として扱うべきです。 詳しくは、「[セキュリティで保護された使用に関するリファレンス](/ja/enterprise-server@3.22/actions/reference/security/secure-use#good-practices-for-mitigating-script-injection-attacks)」をご覧ください。

## コンテキストを使用する場合の判断

GitHub Actions には、 *コンテキスト* と呼ばれる変数のコレクションと、 \_既定の変数\_と呼ばれる同様の変数のコレクションが含まれています。 これらの変数は、ワークフロー中の様々な場所で利用されることを意図したものです。

* **既定の環境変数:** これらの環境変数は、ジョブを実行しているランナーにのみ存在します。 詳しくは、「[変数リファレンス](/ja/enterprise-server@3.22/actions/reference/workflows-and-actions/variables#default-environment-variables)」をご覧ください。
* **コンテキスト:** "既定の変数" を使用できない場合など、ワークフロー内の任意の時点でほとんどのコンテキストを使用できます。\_\_ たとえば、式を含むコンテキストを使って、ジョブが実行のためにランナーにルーティングされる前に初期処理を実行できます。これにより、条件付き `if` キーワードを含むコンテキストを使用して、ステップを実行するかどうかを決定できます。 ジョブが実行されると、`runner.os` など、ジョブを実行しているランナーからコンテキスト変数を取得することもできます。 ワークフロー内でさまざまなコンテキストを使用できる場所の詳細については、「[コンテキスト リファレンス](/ja/enterprise-server@3.22/actions/reference/workflows-and-actions/contexts#context-availability)」を参照してください。

以下の例は、さまざまな種類の変数をジョブの中で合わせてどのように使用できるかを示しています。

```yaml copy
name: CI
on: push
jobs:
  prod-check:
    if: ${{ github.ref == 'refs/heads/main' }}
    runs-on: ubuntu-latest
    steps:
      - run: echo "Deploying to production server on branch $GITHUB_REF"
```

この例では、`if` ステートメントで [`github.ref`](/ja/enterprise-server@3.22/actions/reference/workflows-and-actions/contexts#github-context) コンテキストをチェックして、現在のブランチ名を判別します。名前が `refs/heads/main`、後続のステップが実行されます。
`if`チェックはGitHub Actionsによって処理され、結果が`true`された場合にのみ、ジョブがランナーに送信されます。 ジョブがランナーに送信されると、ステップが実行され、ランナーから [`$GITHUB_REF`](/ja/enterprise-server@3.22/actions/how-tos/write-workflows/choose-what-workflows-do/use-variables) 変数が参照されます。