AIプロダクト
子どもや10代のユーザーを対象とするAIプロダクトは、コンテンツ・データ・AIの動作に関する世界各地の規制(米国のCOPPA、EUのGDPR-K、英国のAADCなど)の影響を受けます。これらの規制によって、どの年齢でどのAI機能が利用可能かが決まります。k-IDのCDKは、ユーザーの年齢と管轄区域をAI固有の権限セットに解決し、プロダクトはその権限を読み取って各機能をユーザーごとに有効化または無効化します。
k-ID Dev Explorer(オープンソースの開発者サンドボックス)を使用して、AI権限フローをテストし、イベントログですべてのトラフィックを表示できます。独自のAIプロダクト実装の出発点としても使用できます。
k-IDのモデルにおけるAIプロダクトとは?
AIプロダクトとは、ユーザーが生成AI機能(テキストチャット、音声、画像や動画の生成、永続的なAIペルソナなど)と対話するあらゆるアプリケーションを指します。k-IDは各AI機能を個別の権限として扱います。各権限は、ユーザーの年齢、管轄区域、保護者の設定に基づいて、有効化、無効化、または禁止のいずれかになります。
CDKフローは他のk-IDプロダクトと同じです:年齢ゲート → 未成年者の場合はVPC → セッション → 権限の適用 → Webhookによる変更への対応。AI固有の部分は、ステップ1で示すセッションに含まれる権限のセットです。
VPCクイックスタート と セッションと権限の管理クイックスタート も参照してください。
前提条件
始める前に、以下が必要です:
- k-IDプロダクト:k-ID Compliance Studioでプロダクトを作成して設定
- APIキー:Compliance Studioのプロダクトの開発者設定ページからAPIキーを生成
- Webhookエンドポイント(オプションですが推奨):セッションと権限のイベントを受信するための安全なHTTPSエンドポイントを設定。詳細はWebhooksを参照してください。
- Compliance StudioでのAI権限の有効化:プロダクトの機能に該当するAI権限を有効化します(ステップ1を参照)。
ステップ1:AI権限を設定する
Compliance Studioでプロダクトを開き、Configuration → Permissionsタブに移動します。AIカテゴリには、AIプロダクトでよく使われる機能に対応する7つの権限があります:
| 権限 | 表示名 | 説明 | 有効化のタイミング |
|---|---|---|---|
ai-chat | AIチャット | お子様は、インタラクティブ性やサポート機能などの目的で生成AIを利用する機能と自由にコミュニケーションできます。 | プロダクトが入力モダリティを問わず、AIとの自由形式の会話を提供する場合。 |
ai-companion-chatbot | コンパニオンチャットボット | お子様は、パーソナライズされたコンテンツを通じて人間のような交流を模倣するAIキャラクターやコンパニオンと対話できます。 | AIがセッションをまたいで関係を維持する永続的なコンパニオンやペルソナとして位置付けられている場合。 |
ai-memory | AIメモリー | お子様の好みやAIとのやり取りが保持され、長期にわたって体験のプロファイル作成に使用されます。 | AIがユーザーの嗜好や会話履歴をセッションをまたいで保持し、今後の対話をパーソナライズする場合。 |
ai-voice-mode | AI音声モード | お子様は、リアルタイムの音声会話でAIに話しかけることができます。AIはお子様の音声を処理します。 | AIがユーザーの音声を処理する(音声→テキスト)か、音声を生成して返す(テキスト→音声)場合。 |
ai-media-generation | AIメディア生成 | お子様は、子どものプロンプトに基づいて画像や動画を生成する可能性のあるAIと対話できます。 | AIがユーザーに対して画像、動画、または音声を生成する場合。 |
ai-media-upload | AIメディアアップロード | お子様は、AIとの対話の一環として画像、動画、その他のメディアを提供できます。 | ユーザーが画像、動画、または音声をアップロードしてAIに処理させることができる場合。 |
ai-model-training | AIモデルトレーニング | お子様の情報や入力がAIモデルのトレーニングに使用されます。 | ユーザー入力がAIモデルのトレーニングまたはファインチューニングに使用される可能性がある場合。 |
プロダクトの機能に該当する権限を有効にし、それ以外はオフのままにします。サポート対象のすべての管轄区域に管轄区域固有のデフォルトがすでに設定されており、米国(COPPA)、英国(AADC)、オーストラリア(オンライン安全法)、EU(GDPR第22条)、ブラジルなどに合わせて調整されたルールが含まれます。
ai-model-trainingとCOPPA2026年COPPA改正法のもとでは、AIモデルのトレーニングや開発のために子どもの個人情報を開示することは**非本質的(non-integral)**として扱われ、別途の保護者の同意が必要となります。プロダクトでユーザーの入力をトレーニングに使用する場合は、ai-model-trainingが有効になっていることを確認し、2026年COPPA改正法ガイドを確認してください。
すべてのカテゴリにわたる権限の完全なリストについては、利用可能な権限を参照してください。
ステップ2:保護者の同意を収集してセッションを作成する
AIプロダクトは、他のk-IDプロダクトと同じ年齢ゲートおよび検証可能な保護者の同意(VPC)フローに従います。ウィジェットとAPIが管轄区域ごとのロジックを処理するため、プロダクト側はフローを開始して結果のセッションを受け取るだけで済みます。
エンドツーエンド統合については、以下のいずれかに従ってください:
- VPCクイックスタート:最も速い経路です。エンドツーエンドウィジェットを使って、年齢収集、VPC、データ通知、権限を1つのiframeで処理します。
- カスタム年齢ゲートクイックスタート:独自の年齢ゲートUIを構築しつつ、コンプライアンスロジックはk-IDに任せます。
保護者が同意フローを完了すると、プロダクトはsessionIdを受け取ります。/session/getでセッションを取得し、ステップ1で設定したAI権限を読み取ります:
GET /api/v1/session/get?sessionId=0ad1641f-c154-4c2a-8bb2-74dbd0de7723
Response:
{
"session": {
"id": "0ad1641f-c154-4c2a-8bb2-74dbd0de7723",
"permissions": [
{ "name": "ai-chat", "enabled": true, "managedBy": "GUARDIAN" },
{ "name": "ai-companion-chatbot", "enabled": false, "managedBy": "GUARDIAN" },
{ "name": "ai-memory", "enabled": true, "managedBy": "GUARDIAN" },
{ "name": "ai-voice-mode", "enabled": false, "managedBy": "GUARDIAN" },
{ "name": "ai-media-generation", "enabled": false, "managedBy": "GUARDIAN" },
{ "name": "ai-media-upload", "enabled": false, "managedBy": "GUARDIAN" },
{ "name": "ai-model-training", "enabled": false, "managedBy": "PROHIBITED" }
]
}
}
managedByフィールドは、各権限を誰が制御するかを示します(GUARDIAN、PLAYER、PROHIBITEDのいずれか)。完全なセマンティクスについては、権限を参照してください。
ステップ3:セッションに基づいてAI機能を制御する
各AI機能を提供する前に、セッション上の該当する権限を確認します。パターンは他のk-IDで制御される機能と同じです:
- 権限:
enabledとmanagedByの動作(GUARDIAN、PLAYER、PROHIBITEDのセマンティクスを含む)。 - セッションと権限の管理クイックスタート:セッションの取得、時間経過に伴う比較、アップグレードのリクエスト、UIでの無効化された機能の処理。
セッションからAIリクエストを構築する
セッションからpermissionsを読み取り、各AI機能を小さなヘルパーで制御し、結果の設定オブジェクトをAIプロバイダーに渡します:
function allowed(session, name) {
const permission = session.permissions.find((p) => p.name === name);
return permission?.enabled === true;
}
function buildAIConfig(session) {
return {
chat: allowed(session, "ai-chat"),
companion: allowed(session, "ai-companion-chatbot"),
memory: allowed(session, "ai-memory"),
voice: allowed(session, "ai-voice-mode"),
mediaGeneration: allowed(session, "ai-media-generation"),
mediaUpload: allowed(session, "ai-media-upload"),
trainOnInputs: allowed(session, "ai-model-training"),
};
}
const aiConfig = buildAIConfig(session);
const response = await aiProvider.respond({ prompt, ...aiConfig });
実装時に押さえておくべき4つのルール:
- 読み取ってから適用する。 セッション開始時に
/session/getを呼び出します。 - フェイルクローズ。 権限が見つからない、またはセッションが取得できない場合は機能をオフにします。
- グレースフル・デグラデーション。 機能オフは行き止まりではありません。フォールバックを表示します。
- 未成年はデフォルトでオフ。 親が有効化します。
ステップ4:権限変更に対応する
保護者は、Family Connectを通じていつでもAI権限を調整できます。たとえば、通知を読んだ後でai-companion-chatbotを無効にしたり、子どもが十分な年齢になったらai-voice-modeを有効にしたりすることがあります。プロダクトはそのような変更を検出し、ユーザーに反映する必要があります。
検出と処理のパターンは、他の権限変更と同じです:
Session.ChangePermissionsWebhookを購読するか、起動ごとにキャッシュ済みセッションと現在のセッションを比較します。- 権限が切り替わったら、プロダクトの状態をすぐに更新して、ユーザーがオフになった機能を使おうとしないようにします。
- 何が変わったか、なぜ変わったかをユーザーに分かりやすく伝えます。
Webhook処理、セッション比較、年齢アップしたユーザーに対するmanagedBy: PLAYERの処理、ユーザーへの変更の伝達などを含む完全な実装については、セッションと権限の管理クイックスタートを参照してください。
Webhook設定
AIプロダクトでは、Webhookエンドポイントが以下を受信できるように設定してください:
Session.ChangePermissions:保護者がユーザーのAI権限を有効化または無効化した際に通知されます。
このイベントは、次回のセッション取得を待たずに、AI機能を保護者の決定と同期させ続けるために不可欠です。
次のステップ
AIプロダクトをk-IDに接続できたので、以下のリソースでさらに理解を深めましょう:
- 権限:権限構造、
managedBy値、アップグレードフローの完全なリファレンス - セッションと権限の管理:保護者起点の権限変更のリアルタイム処理
- 2026年COPPA改正法ガイド:AIモデルトレーニングおよびその他の非本質的な開示に関するコンプライアンス上の影響
- Webhooks:Webhook実装と検証の完全なガイド
- CDK概要:権限決定を支えるコンプライアンスエンジンの詳細
- ローンチ前チェックリスト:本番化前に確認すべき要件