Skip to content

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

設定

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

Cloudflare Worker で Flagship を使うには、Wrangler 設定ファイルに Flagship バインディングを追加します。バインディングにより、Worker から env.FLAGS にアクセスでき、フィーチャーフラグを評価するメソッドを使えます。

バインディングを追加する

Wrangler 設定ファイルに flagship ブロックを追加し、バインディング名とアプリ ID を指定します。

{
	"flagship": [
		{
			"binding": "FLAGS",
			"app_id": "<APP_ID>",
		},
	],
}
[[flagship]]
binding = "FLAGS"
app_id = "<APP_ID>"

<APP_ID> は Flagship アプリのアプリ ID に置き換えます。まだアプリを作成していない場合は、Get started ガイド を参照してください。binding フィールドは、Worker コードから Flagship にアクセスするときの名前です(例: env.FLAGS)。

複数アプリにバインドする

1 つの Worker を複数の Flagship アプリにバインドできます。配列形式で、バインディングを複数定義します。

{
	"flagship": [
		{
			"binding": "FLAGS",
			"app_id": "<APP_ID_1>",
		},
		{
			"binding": "EXPERIMENT_FLAGS",
			"app_id": "<APP_ID_2>",
		},
	],
}
[[flagship]]
binding = "FLAGS"
app_id = "<APP_ID_1>"

[[flagship]]
binding = "EXPERIMENT_FLAGS"
app_id = "<APP_ID_2>"

各バインディングは env オブジェクトの別プロパティとして使えます(例: env.FLAGSenv.EXPERIMENT_FLAGS)。

型を生成する

バインディングを追加したら、npx wrangler types を実行して TypeScript の型を生成します。これにより、各バインディングが Flagship 型になった Env インターフェイスが作られます。

interface Env {
	FLAGS: Flagship;
	EXPERIMENT_FLAGS: Flagship;
}

バインディングを使う

env.FLAGS の評価メソッドを呼び出し、実行時にフラグ値を解決します。各メソッドは、フラグキー、デフォルト値、省略可能な評価コンテキストを受け取ります。

export default {
	async fetch(request, env) {
		const isEnabled = await env.FLAGS.getBooleanValue("my-feature", false, {
			userId: "user-42",
		});

		return new Response(isEnabled ? "Feature is on" : "Feature is off");
	},
};
export default {
	async fetch(request: Request, env: Env): Promise<Response> {
		const isEnabled = await env.FLAGS.getBooleanValue("my-feature", false, {
			userId: "user-42",
		});

		return new Response(isEnabled ? "Feature is on" : "Feature is off");
	},
};

メソッドの一覧は バインディング API リファレンス を参照してください。

ローカル開発

Flagship バインディングは wrangler dev で動作します。ローカルの Worker は、app_id で設定した稼働中の Flagship アプリを使います。ローカルのフラグストアはありません。評価を試す前に、ローカルの Wrangler 設定が有効な Flagship アプリを指していることを確認してください。

役に立ちましたか?