Flagship はフィーチャーフラグをアプリに整理します。バリアントとターゲティングルールを持つフラグを定義し、Cloudflare のグローバルネットワーク上で評価します。
Flagship のフィーチャーフラグは、作成から評価まで次の 3 段階を経ます。
- 設定(Configure) — Cloudflare ダッシュボード ↗ または API で、フラグとターゲティングルールを作成します。
- 伝播(Propagate) — Flagship は、フラグ設定を数秒以内に Cloudflare のグローバルネットワークへ自動配布します。
- 評価(Evaluate) — Worker(または SDK)は、伝播済みの設定を使い、ローカルでフラグを評価します。中央サーバーへの往復はありません。
フラグの変更は、保存から数秒以内に世界中で反映されます。Worker の再デプロイやアプリケーションの再起動は不要です。ダッシュボードが一時的に使えない場合でも、最後に伝播された設定でフラグ評価は継続します。
アプリは Flagship の最上位の整理単位です。関連するフラグをまとめます。
アプリは通常、1 つのプロジェクト、サービス、または製品に対応します。1 つの Cloudflare アカウントに複数のアプリを持てます。たとえば、マーケティングサイト用と API バックエンド用に、それぞれアプリを作成できます。
フラグは名前付きの機能トグルです。各フラグにはキー、バリアント の集合、ターゲティングルール、有効 / 無効の状態があります。
フラグキーはアプリ内で一意である必要があります。キーには文字、数字、ハイフン、アンダースコアを使えます。
フラグが無効のときは、ターゲティングルールに関係なく、常にデフォルトバリアントを返します。Flagship がフラグを評価できない場合に備え、アプリケーションにとって安全なデフォルトバリアントを選んでください。
バリアントは、フラグが返しうる値です。各フラグには少なくとも 1 つのバリアントが必要で、そのうち 1 つをデフォルトに指定します。
Flagship は次の 4 種類のバリアントに対応しています。
| 種類 | 例 |
|---|---|
| Boolean | on: true、off: false |
| String | v1: "old-checkout"、v2: "new-checkout" |
| Number | low: 100、high: 1000 |
| JSON | premium: { "tier": "premium", "features": ["analytics", "export"] } |
単純なオン / オフトグルには Boolean フラグを使います。設定値や構造化データを渡す必要があるときは、String、Number、または JSON フラグを使います。JSON バリアントにはオブジェクトまたは配列を含められます。
ターゲティングルールは、特定のリクエストに対してフラグが返すバリアントを制御します。ルールは順番に評価され、最初に一致したルールが採用されます。一致するルールがなければ、デフォルトバリアントを返します。
各ルールには次が含まれます。
- 評価コンテキスト の属性を、演算子を使って値と比較する 条件。
- トラフィックをバリアントに分割する、任意の パーセンテージロールアウト。
- ルールが一致したときに返す バリアント。
ルール内の条件は、AND / OR 演算子でグループ化できます。
演算子と設定オプションの一覧は、ターゲティングルール と 演算子 を参照してください。
評価コンテキストは、現在のユーザーまたはリクエストを表すキーと値の属性セットです(例: userId、country、plan)。
binding の評価メソッドには、第 3 引数としてコンテキストを渡します。
const value = await env.FLAGS.getBooleanValue("new-checkout", false, {
userId: "user-42",
country: "US",
});OpenFeature SDK を使う場合は、OpenFeature の評価コンテキストオブジェクト経由でコンテキストを渡します。
Flagship は、ターゲティングルールの照合と、パーセンテージロールアウトのバケット分割にコンテキスト属性を使います。一貫したコンテキスト(同じ userId など)は、毎回同じロールアウト結果になります。
評価コンテキストに機密データを送らないでください。ターゲティングルールまたはロールアウトのバケット分割に必要な属性だけを含めてください。
フラグを変更したあと、更新後の値が世界中に反映されるまで最大 30 秒かかることがあります。この伝播のあいだ、一部の評価は以前のフラグ値を返すことがあります。