# マルチアーキ対応 {#multi-arch}

Takumi Images の各イメージは、amd64 と arm64 の両方に対応しています。
`:latest` のような1つのタグを pull すると、実行環境のアーキテクチャに応じたイメージが自動的に選ばれます。
これは、両アーキテクチャのビルドを1つの **multi-arch OCI index** にまとめて公開しているためです。

## index と manifest の関係 {#index-and-manifest}

multi-arch OCI index は、複数のアーキテクチャ向け manifest を束ねる上位の参照です。
利用者は通常 `images.flatt.tech/takumi/<image>:latest` のように1つのタグを指定し、コンテナランタイムが実行環境に合う manifest を選択します。

index であることと、対応アーキテクチャは、タグの manifest を見ると確認できます。

```bash
$ crane manifest images.flatt.tech/takumi/busybox:latest \
    | jq '{mediaType, platforms: [.manifests[].platform]}'
{
  "mediaType": "application/vnd.oci.image.index.v1+json",
  "platforms": [
    {
      "architecture": "amd64",
      "os": "linux"
    },
    {
      "architecture": "arm64",
      "os": "linux"
    }
  ]
}
```

`mediaType` が OCI の image index であること、その下に amd64 と arm64 の manifest がぶら下がっていることが読み取れます。

## Digest で固定するときの考え方 {#digest-pinning}

amd64 と arm64 の自動選択を残したまま固定する場合は、multi-arch index の digest を使います。
特定のアーキテクチャだけに固定したい場合は、そのアーキテクチャの子 manifest digest を使います。

通常のデプロイでは index digest を固定するほうが扱いやすく、同じ image reference を amd64 と arm64 の両方で使えます。
digest 固定の具体的な手順は、[クイックスタートの digest 節](/docs/ja/t/images/quickstart#pin)を参照してください。

## Attestation との関係 {#attestations}

SBOM と SLSA Provenance は、アーキテクチャごとに内容が異なるため、index の直下ではなくアーキテクチャごとの子 manifest にそれぞれ添付しています。一方、VEX はイメージ全体に対するトリアージ結果なので、原則として multi-arch index に添付します。

取り出し方や中身については、[Attestation](/docs/ja/t/images/features/attestations/) と [SBOM](/docs/ja/t/images/features/attestations/sbom) を参照してください。
