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.FLAGS と env.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 アプリを指していることを確認してください。