adding-feature-flags について
PostHog またはローカル設定で機能フラグを追加するコーディングスキルです。クライアント側とサーバー側の評価、ターゲティングルール、段階的なリリース方法を説明します。
主な機能
- 01PostHog のクライアント側フラグ
- 02サーバー側でのフラグ評価
- 03ダッシュボードのターゲティングルール
- 04環境変数によるローカルフラグ
- 05不要になったフラグの整理
活用シーン
- 01新機能の段階的なリリース
- 02ユーザー属性やコホートに基づく対象設定
- 03外部サービスなしでのフラグ運用
- 04サーバールートでのフラグ評価
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ spencerpauly/ awesome-cursor-skills --skill adding-feature-flagsインストール後、Claude Code で/adding-feature-flagsを入力して読み込まれたか確認します。
詳細
機能フラグの追加
ユーザーから機能フラグ、機能トグル、段階的なロールアウト、または A/B テストの追加を依頼された場合に、このスキルを使用します。
オプション A:PostHog の機能フラグ(推奨)
-
PostHog がまだ導入されていない場合はインストールします。
npm install posthog-js -
コードで機能フラグを使用します。
import { useFeatureFlagEnabled } from "posthog-js/react"; function MyComponent() { const showNewFeature = useFeatureFlagEnabled("new-checkout-flow"); if (showNewFeature) return <NewCheckout />; return <OldCheckout />; } -
サーバーサイドで評価します — サーバーコンポーネントまたは API ルートで使用します。
import { PostHog } from "posthog-node"; const posthog = new PostHog(process.env.POSTHOG_API_KEY!); const isEnabled = await posthog.isFeatureEnabled("new-checkout-flow", userId); -
PostHog のダッシュボードでフラグを作成します — ユーザープロパティ、割合ベースのロールアウト、またはコホートに基づくターゲティングルールを設定します。
オプション B:シンプルなローカル機能フラグ
サードパーティーサービスを必要としないプロジェクト向けです。
-
フラグの設定ファイルを作成します —
lib/feature-flags.ts:export const FLAGS = { NEW_CHECKOUT: process.env.NEXT_PUBLIC_FF_NEW_CHECKOUT === "true", DARK_MODE: process.env.NEXT_PUBLIC_FF_DARK_MODE === "true", } as const; -
コンポーネントで使用します。
import { FLAGS } from "@/lib/feature-flags"; function App() { return FLAGS.NEW_CHECKOUT ? <NewCheckout /> : <OldCheckout />; } -
環境変数を追加します —
.envと.env.exampleにフラグを追加します。NEXT_PUBLIC_FF_NEW_CHECKOUT=false NEXT_PUBLIC_FF_DARK_MODE=true
注意事項
- ロールアウト中は、実験だけでなく、ユーザー向けのすべての変更に機能フラグを使用します。
- 古くなったフラグを整理します。機能のロールアウトが完了したら、フラグと古いコードパスを削除します。
- サーバーサイドのフラグでは、リクエストごとに API を呼び出さないよう、評価結果をキャッシュします。
- フラグには内容が分かる名前を付けます。
flag-1ではなくnew-checkout-flowを使用します。
コメント
Markdown 対応