Skip to content

非公式本サイトは非公式の日本語ドキュメントであり、Cloudflare 公式サイトではありません。最新情報はdevelopers.cloudflare.comをご確認ください。

概念

最終更新 Markdown で表示Agent セットアップ

Flagship はフィーチャーフラグをアプリに整理します。バリアントとターゲティングルールを持つフラグを定義し、Cloudflare のグローバルネットワーク上で評価します。

概要

Flagship のフィーチャーフラグは、作成から評価まで次の 3 段階を経ます。

  1. 設定(Configure)Cloudflare ダッシュボード または API で、フラグとターゲティングルールを作成します。
  2. 伝播(Propagate) — Flagship は、フラグ設定を数秒以内に Cloudflare のグローバルネットワークへ自動配布します。
  3. 評価(Evaluate) — Worker(または SDK)は、伝播済みの設定を使い、ローカルでフラグを評価します。中央サーバーへの往復はありません。

フラグの変更は、保存から数秒以内に世界中で反映されます。Worker の再デプロイやアプリケーションの再起動は不要です。ダッシュボードが一時的に使えない場合でも、最後に伝播された設定でフラグ評価は継続します。

アプリ

アプリは Flagship の最上位の整理単位です。関連するフラグをまとめます。

アプリは通常、1 つのプロジェクト、サービス、または製品に対応します。1 つの Cloudflare アカウントに複数のアプリを持てます。たとえば、マーケティングサイト用と API バックエンド用に、それぞれアプリを作成できます。

フラグ

フラグは名前付きの機能トグルです。各フラグにはキー、バリアント の集合、ターゲティングルール、有効 / 無効の状態があります。

フラグキーはアプリ内で一意である必要があります。キーには文字、数字、ハイフン、アンダースコアを使えます。

フラグが無効のときは、ターゲティングルールに関係なく、常にデフォルトバリアントを返します。Flagship がフラグを評価できない場合に備え、アプリケーションにとって安全なデフォルトバリアントを選んでください。

バリアント

バリアントは、フラグが返しうる値です。各フラグには少なくとも 1 つのバリアントが必要で、そのうち 1 つをデフォルトに指定します。

Flagship は次の 4 種類のバリアントに対応しています。

種類
Boolean on: trueoff: false
String v1: "old-checkout"v2: "new-checkout"
Number low: 100high: 1000
JSON premium: { "tier": "premium", "features": ["analytics", "export"] }

単純なオン / オフトグルには Boolean フラグを使います。設定値や構造化データを渡す必要があるときは、String、Number、または JSON フラグを使います。JSON バリアントにはオブジェクトまたは配列を含められます。

ターゲティングルール

ターゲティングルールは、特定のリクエストに対してフラグが返すバリアントを制御します。ルールは順番に評価され、最初に一致したルールが採用されます。一致するルールがなければ、デフォルトバリアントを返します。

各ルールには次が含まれます。

  • 評価コンテキスト の属性を、演算子を使って値と比較する 条件
  • トラフィックをバリアントに分割する、任意の パーセンテージロールアウト
  • ルールが一致したときに返す バリアント

ルール内の条件は、AND / OR 演算子でグループ化できます。

演算子と設定オプションの一覧は、ターゲティングルール演算子 を参照してください。

評価コンテキスト

評価コンテキストは、現在のユーザーまたはリクエストを表すキーと値の属性セットです(例: userIdcountryplan)。

binding の評価メソッドには、第 3 引数としてコンテキストを渡します。

const value = await env.FLAGS.getBooleanValue("new-checkout", false, {
	userId: "user-42",
	country: "US",
});

OpenFeature SDK を使う場合は、OpenFeature の評価コンテキストオブジェクト経由でコンテキストを渡します。

Flagship は、ターゲティングルールの照合と、パーセンテージロールアウトのバケット分割にコンテキスト属性を使います。一貫したコンテキスト(同じ userId など)は、毎回同じロールアウト結果になります。

評価コンテキストに機密データを送らないでください。ターゲティングルールまたはロールアウトのバケット分割に必要な属性だけを含めてください。

フラグの伝播

フラグを変更したあと、更新後の値が世界中に反映されるまで最大 30 秒かかることがあります。この伝播のあいだ、一部の評価は以前のフラグ値を返すことがあります。

役に立ちましたか?