# 適応型コンテンツを有効にする

読者向けにドキュメント体験をカスタマイズし始めるには、アダプティブコンテンツを有効にし、訪問者データを GitBook にどのように渡すかを決める必要があります。これにより、サイトのコンテンツは閲覧者に応じて動的に適応します。

### アダプティブコンテンツを有効にする

ユーザーデータを GitBook に渡せるようになる前に、サイトをアダプティブコンテンツを使用するよう設定する必要があります。

次の場所に移動してください [サイトの設定](https://gitbook-v2-q67etdj25-gitbook.vercel.app/url/gitbook.com/docs/documentation/ja-gitbook-documentation/publishing-documentation/site-settings)、そして **適応型コンテンツ** を、サイトのオーディエンス設定から有効にしてください。有効化すると、「Visitor token signing key」が生成されます。アダプティブコンテンツの設定を続けるには、それが必要になります。

<figure><img src="https://4217681718-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FNkEGS7hzeqa35sMXQZ4X%2Fuploads%2F5EeWAo5Ij6CKrp69uMl5%2F26_01_06_enable_adaptive_content%402x.png?alt=media&#x26;token=4a1e8558-4b91-4f8b-8581-63d570a2c330" alt="A GitBook screenshot showing the enable adaptive content toggle"><figcaption><p>サイトの設定でアダプティブコンテンツを有効にする</p></figcaption></figure>

### 訪問者スキーマを設定する

アダプティブコンテンツを有効にしたら、ユーザーがサイトを訪問したときに GitBook が受け取ると想定するクレームの種類に対するスキーマを定義する必要があります。

訪問者スキーマは、これらのクレームが GitBook に送信されるときにどのような構造になっているかを反映している必要があります。

たとえば、訪問者が製品のベータユーザーである可能性があると想定する場合、次のような訪問者スキーマを設定します。

```json
{
  "type": "object",
  "properties": {
    "isBetaUser": {
      "type": "boolean",
      "description": "訪問者がベータユーザーかどうか。"
    }
  },
  "additionalProperties": false
}
```

これは、 [条件エディター](https://gitbook-v2-q67etdj25-gitbook.vercel.app/url/gitbook.com/docs/documentation/ja-gitbook-documentation/publishing-documentation/adapting-your-content#working-with-the-condition-editor)でクレームを設定する際のオートコンプリートの利用にも役立ちます。訪問者スキーマは、以下の型のみをサポートします。

{% tabs %}
{% tab title="文字列" %}
文字列として渡されるクレームを読み取ります。

GitBook は動的文字列を受け入れます。つまり、ユーザー名、開発者トークンなどの文字列データを動的に渡すことができます。

文字列には **任意の enum** キーを含めることもでき、GitBook が受け取るデータを設定済みの値のいずれかに制限できます。

```json
{
  "type": "object",
  "properties": {
    "language": {
          "type": "string",
          "description": "訪問者の言語",
          // 任意の enum プロパティ
          "enum": [
            "en",
            "fr",
            "it"
          ]
  },
  "additionalProperties": false
}
```

{% hint style="warning" %}
動的文字列（enum キーなしで定義された文字列）は、 [インライン式](https://gitbook-v2-q67etdj25-gitbook.vercel.app/url/gitbook.com/docs/documentation/ja-gitbook-documentation/creating-content/variables-and-expressions#use-variables-in-your-content)に対してのみ受け入れられます。要素（ページ、セクション、ブロック）の表示に関する条件式は、enum キーで定義された文字列でのみ機能します。
{% endhint %}
{% endtab %}

{% tab title="ブール値" %}
ブール値として渡されるクレームを読み取ります。

```json
{
  "type": "object",
  "properties": {
    "isBetaUser": {
      "type": "boolean",
      "description": "訪問者がベータユーザーかどうか。"
    },
  },
  "additionalProperties": false
}
```

{% endtab %}

{% tab title="オブジェクト" %}
似た値をまとめるために、クレームをオブジェクト内にネストします。

```json
{
  // トップレベルのクレーム
  "type": "object",
  "properties": {
    // ネストされたクレーム
    "access": {
      "type": "object",
      "description": "ユーザーの製品機能へのアクセス",
      "properties": {
        "isAlphaUser": {
          "type": "boolean",
          "description": "訪問者がアルファユーザーかどうか。"
        },
        "isBetaUser": {
          "type": "boolean",
          "description": "訪問者がベータユーザーかどうか。"
        },
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": false
}
```

{% endtab %}
{% endtabs %}

### 署名なしクレームを設定する

署名なしクレームは、クライアントアプリケーションによって署名されていない可能性のあるクレームを識別する特定の種類のクレームです。訪問者スキーマのクレームを `署名なし` として設定する必要があります。URL パラメータ、署名なし Cookie、フィーチャーフラグを通じてクレームを渡す場合です。

署名なしクレームを扱う場合は、署名付きクレームと並べて、“unsigned” プロパティの下に、スキーマで想定するクレームを宣言する必要があります。

```json
{
  "type": "object",
  "properties": {
    "isBetaUser": {
      "type": "boolean",
      "description": "訪問者がベータユーザーかどうか。"
    },
    // 署名なしクレームを追加
    "unsigned": {
      "type": "object",
      "description": "サイト訪問者の署名なしクレーム。",
      "properties": {
        "language": {
          "type": "string",
          "description": "訪問者の言語",
          // 任意の enum プロパティ
          "enum": [
            "en",
            "fr",
            "it"
          ]
        }
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": false
}
```

### 訪問者データを GitBook に渡す

GitBook では、サイトのコンテンツを適応させるために訪問者データを渡すさまざまな方法が用意されています。スキーマを定義した後、訪問者データを GitBook にどのように渡すかを決める必要があります。

<table data-card-size="large" data-view="cards"><thead><tr><th></th><th></th><th></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><i class="fa-cookie">:cookie:</i></td><td><strong>Cookie</strong></td><td>公開または署名付きの Cookie を通じて、訪問者データをドキュメントに渡します。</td><td><a href="enabling-adaptive-content/cookies">cookies</a></td></tr><tr><td><i class="fa-link">:link:</i></td><td><strong>URL</strong></td><td>URL のクエリパラメータを通じて、訪問者データをドキュメントに渡します。</td><td><a href="enabling-adaptive-content/url">url</a></td></tr><tr><td><i class="fa-flag">:flag:</i></td><td><strong>フィーチャーフラグ</strong></td><td>フィーチャーフラグプロバイダーを通じて、訪問者データをドキュメントに渡します。</td><td><a href="enabling-adaptive-content/feature-flags">feature-flags</a></td></tr><tr><td><i class="fa-lock">:lock:</i></td><td><strong>認証済みアクセス</strong></td><td>認証プロバイダーを通じて、訪問者データをドキュメントに渡します。</td><td><a href="enabling-adaptive-content/authenticated-access">authenticated-access</a></td></tr></tbody></table>
