機能フラグでは、機能フィルターを使用して、機能を条件に応じて有効にすることができます。 機能フィルターの詳細については、「機能フィルターを使用して条件付き機能を有効にする」を参照してください。
このガイドで使用する例は、機能管理 クイック スタートで紹介した Go Gin Web アプリケーションに基づいています。 先に進む前に、クイック スタートを完了して、 ベータ 機能フラグを持つ Go Gin Web アプリケーションを作成します。 完了したら、App Configuration ストア内の Beta 機能フラグにカスタム機能フィルターを追加する必要があります。
このガイドでは、カスタム機能フィルターを実装し、機能フィルターを使用して条件付きで機能を有効にする方法について説明します。
Prerequisites
カスタム機能フィルターを実装する
前提条件にベータ機能フラグの Percentage パラメーターを使用して Random という名前のカスタム機能フィルターを追加しました。 次に、機能フィルターを実装して、Percentage パラメーターで定義される確率に基づいて Beta 機能フラグを有効にします。
次のコードを使用して、
random_filter.goファイルを作成します。package main import ( "fmt" "math/rand" "time" "github.com/microsoft/Featuremanagement-Go/featuremanagement" ) type RandomFilter struct{} func (f *RandomFilter) Name() string { return "Random" } func (f *RandomFilter) Evaluate(evalCtx featuremanagement.FeatureFilterEvaluationContext, appCtx any) (bool, error) { percentage, ok := evalCtx.Parameters["Percentage"].(float64) if !ok { return false, fmt.Errorf("invalid parameter type for Percentage: expected float64, got %T", evalCtx.Parameters["Percentage"]) } rand.Seed(time.Now().UnixNano()) randomValue := rand.Intn(100) return randomValue <= int(percentage), nil }RandomFilterライブラリからFeatureFilterインターフェイスを実装するfeaturemanagement構造体を追加しました。FeatureFilterインターフェイスには、次の 2 つの方法があります。Name()は、フィルター名 Random を返します。これは、Azure App Configuration の ベータ 機能フラグで設定したフィルター名と一致します。Evaluate()は、機能フラグが評価されるたびに呼び出されます。 機能フィルターは、trueを返すことによって機能フラグを有効にします。
main.goファイルを更新して、機能マネージャーの作成時にRandomFilterを登録します。// ...existing code... func main() { ctx := context.Background() // Load Azure App Configuration appConfig, err := loadAzureAppConfiguration(ctx) if err != nil { log.Fatalf("Error loading Azure App Configuration: %v", err) } // Create feature flag provider featureFlagProvider, err := azappconfig.NewFeatureFlagProvider(appConfig) if err != nil { log.Fatalf("Error creating feature flag provider: %v", err) } // Register custom filters options := &featuremanagement.Options{ Filters: []featuremanagement.FeatureFilter{ &RandomFilter{}, }, } // Create feature manager with custom filters featureManager, err := featuremanagement.NewFeatureManager(featureFlagProvider, options) if err != nil { log.Fatalf("Error creating feature manager: %v", err) } // ...existing code... }
機能フィルターの動作
アプリケーションを再起動し、ブラウザーを数回更新します。 機能フラグを手動で切り替えないと、設定した割合に基づいて ベータ メニューがランダムに表示されます。
Next steps
組み込みの機能フィルターについてさらに学ぶには、次のドキュメントに進んでください。
Go 機能管理ライブラリの完全な機能ランダウンについては、次のドキュメントに進んでください。