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

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

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

ユーザーデータを GitBook に渡せるようにする前に、サイトで適応型コンテンツを使用するよう設定する必要があります。

次へ進み [サイト設定](https://gitbook-v2-5hpihs24d-gitbook.vercel.app/url/gitbook.com/docs/documentation/ja-gitbook-documentation/docs-site/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-5hpihs24d-gitbook.vercel.app/url/gitbook.com/docs/documentation/ja-gitbook-documentation/saitoakusesu/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-5hpihs24d-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 または署名付き 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>
