チュートリアル: Python アプリケーションでカスタム フィルターを使用して条件付き機能を有効にする
機能フラグでは、機能フィルターを使用して、機能を条件に応じて有効にすることができます。 機能フィルターの詳細については、「チュートリアル: 機能フィルターを使用して条件付き機能を有効にする」を参照してください。
このチュートリアルで使用する例は、機能管理のクイックスタートで紹介した Python アプリケーションに基づいています。 先に進む前に、このクイックスタートを完了して、Beta 機能フラグを設定した Python アプリケーションを作成します。 完了したら、App Configuration ストア内の Beta 機能フラグにカスタム機能フィルターを追加する必要があります。
このチュートリアルでは、カスタム機能フィルターを実装し、機能フィルターを使用して機能を条件付きで有効にする方法について説明します。
前提条件
カスタム機能フィルターを実装する
前提条件で Beta 機能フラグに対して Random という名前のカスタム機能フィルターと Percentage パラメーターを追加しました。 次に、機能フィルターを実装して、Percentage パラメーターで定義される確率に基づいて Beta 機能フラグを有効にします。
次のコードを使用して、
RandomFilter.py
ファイルを追加します。import random from featuremanagement import FeatureFilter @FeatureFilter.alias("Random") class RandomFilter(FeatureFilter): def evaluate(self, context, **kwargs): value = context.get("parameters", {}).get("Value", 0) if value < random.randint(0, 100): return True return False
FeatureManagement
ライブラリから、FeatureFilter
抽象クラスを実装するRandomFilter
クラスを追加しました。FeatureFilter
クラスには、機能フラグが評価されるたびに呼び出される、evaluate
という名前 の 1 つのメソッドがあります。evaluate
では、機能フィルターはtrue
を返すことで機能フラグを有効にします。FeatureFilter.alias
をRandomFilter
に修飾して、フィルターに別名 Random を付けます。これは、Azure App Configuration で Beta 機能フラグに設定したフィルター名と一致します。app.py ファイルを開き、
FeatureManager
の作成時にRandomFilter
を登録します。 また、次に示すように、コードを変更して自動的に更新されないようし、また、Beta 機能フラグにも数回アクセスするようにします。from featuremanagement import FeatureManager from azure.appconfiguration.provider import load from azure.identity import DefaultAzureCredential import os endpoint = os.environ.get("APPCONFIGURATION_ENDPOINT_STRING") # Connect to Azure App Configuration using and Endpoint and Azure Entra ID # feature_flag_enabled makes it so that the provider will load feature flags from Azure App Configuration # feature_flag_refresh_enabled makes it so that the provider will refresh feature flags # from Azure App Configuration, when the refresh operation is triggered config = load(endpoint=endpoint, credential=DefaultAzureCredential(), feature_flag_enabled=True) feature_manager = FeatureManager(config, feature_filters=[RandomFilter()]) for i in range(0, 10): print("Beta is", feature_manager.is_enabled("Beta"))
機能フィルターの動作
アプリケーションを実行すると、構成プロバイダーによって Azure App Configuration から Beta 機能フラグが読み込まれます。 is_enabled("Beta")
メソッドの結果はコンソールに出力されます。 RandomFilter
が Beta 機能フラグによって実装されて使用されるため、結果は 50% の確率で True
となり、残りの 50% の確率で False
となります。
アプリケーションを実行すると、Beta 機能フラグが有効になっている場合と無効になっている場合があることが分かります。
Beta is True
Beta is False
Beta is True
Beta is True
Beta is True
Beta is False
Beta is False
Beta is False
Beta is True
Beta is True
次のステップ
組み込みの機能フィルターについてさらに学ぶには、次のチュートリアルに進んでください。