フィーチャーフラグをClaude Codeで設計する
フィーチャーフラグは「機能のオン/オフをコードの再デプロイなしに制御する仕組み」です。段階的ロールアウトやA/Bテスト、障害時のKill Switchとして活用できます。Claude Codeを使えば、この設計をゼロから素早く進められます。
Claude Codeに設計の叩き台を作らせる
Section titled “Claude Codeに設計の叩き台を作らせる”まずはターミナルでClaude Codeを起動し、要件を一気に伝えましょう。
claude "TypeScriptでフィーチャーフラグシステムを設計してください。要件は以下です:- ユーザーIDベースの段階的ロールアウト(0〜100%)- A/Bテスト用のバリアント割り当て- Kill Switch(即時全無効化)- LaunchDarklyへの差し替えを想定したアダプター構造"Claude Codeはインターフェース定義・ローカル実装・LaunchDarklyアダプターの3ファイルを一度に生成してくれます。自分で考えるより圧倒的に速く叩き台が手に入ります。
※TypeScript: JavaScriptに型定義を追加した言語。型チェックによりバグを事前に発見しやすくなる。
生成されたコードを確認・修正する
Section titled “生成されたコードを確認・修正する”生成されたコアのインターフェースは次のようなイメージになります。
export interface FeatureFlagClient { isEnabled(flagKey: string, userId: string): Promise<boolean>; getVariant(flagKey: string, userId: string): Promise<string>; killSwitch(flagKey: string): Promise<void>;}
// local-flag-client.ts(ローカル開発用)export class LocalFlagClient implements FeatureFlagClient { private flags: Record<string, { enabled: boolean; rollout: number }> = {};
async isEnabled(flagKey: string, userId: string): Promise<boolean> { const flag = this.flags[flagKey]; if (!flag || !flag.enabled) return false; // ユーザーIDのハッシュでロールアウト割合を判定 const hash = userId.split("").reduce((acc, c) => acc + c.charCodeAt(0), 0); return (hash % 100) < flag.rollout; }
async killSwitch(flagKey: string): Promise<void> { if (this.flags[flagKey]) this.flags[flagKey].enabled = false; }
async getVariant(flagKey: string, userId: string): Promise<string> { return "control"; // ローカルはデフォルト }}気になる箇所があれば「killSwitchをRedisに永続化するよう変更して」と追加指示するだけで修正してもらえます。
:::tip LaunchDarklyへの移行はアダプターを差し替えるだけ
ローカル実装と同じFeatureFlagClientインターフェースを実装したLaunchDarklyFlagClientを用意しておけば、本番環境への切り替えはDIコンテナの設定変更のみで完了します。Claude Codeに「LaunchDarklyのSDKを使ったアダプターを書いて」と依頼すれば数秒で雛形が出てきます。
:::
テストコードも一緒に生成する
Section titled “テストコードも一緒に生成する”設計が固まったら、テストも任せましょう。
claude "LocalFlagClientのユニットテストをVitestで書いてください。ロールアウト0%・50%・100%のケースと、killSwitchの動作確認を含めてください。"ロールアウトのパーセンテージ境界値テストは手書きだと地味に面倒ですが、Claude Codeなら一発です。生成後にnpx vitest runを実行してすぐに動作確認できます。
フィーチャーフラグはシステムの信頼性を高める重要な仕組みです。Claude Codeを使って設計・実装・テストをまとめて進め、本番リリースのリスクを下げていきましょう。