Skip to content

フィーチャーフラグをClaude Codeで設計する

フィーチャーフラグは「機能のオン/オフをコードの再デプロイなしに制御する仕組み」です。段階的ロールアウトやA/Bテスト、障害時のKill Switchとして活用できます。Claude Codeを使えば、この設計をゼロから素早く進められます。

Claude Codeに設計の叩き台を作らせる

Section titled “Claude Codeに設計の叩き台を作らせる”

まずはターミナルでClaude Codeを起動し、要件を一気に伝えましょう。

Terminal window
claude "TypeScriptでフィーチャーフラグシステムを設計してください。要件は以下です:
- ユーザーIDベースの段階的ロールアウト(0〜100%)
- A/Bテスト用のバリアント割り当て
- Kill Switch(即時全無効化)
- LaunchDarklyへの差し替えを想定したアダプター構造"

Claude Codeはインターフェース定義・ローカル実装・LaunchDarklyアダプターの3ファイルを一度に生成してくれます。自分で考えるより圧倒的に速く叩き台が手に入ります。

TypeScript: JavaScriptに型定義を追加した言語。型チェックによりバグを事前に発見しやすくなる。

生成されたコードを確認・修正する

Section titled “生成されたコードを確認・修正する”

生成されたコアのインターフェースは次のようなイメージになります。

feature-flag.interface.ts
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 “テストコードも一緒に生成する”

設計が固まったら、テストも任せましょう。

Terminal window
claude "LocalFlagClientのユニットテストをVitestで書いてください。
ロールアウト0%・50%・100%のケースと、killSwitchの動作確認を含めてください。"

ロールアウトのパーセンテージ境界値テストは手書きだと地味に面倒ですが、Claude Codeなら一発です。生成後にnpx vitest runを実行してすぐに動作確認できます。

フィーチャーフラグはシステムの信頼性を高める重要な仕組みです。Claude Codeを使って設計・実装・テストをまとめて進め、本番リリースのリスクを下げていきましょう。