チュートリアル: Python アプリケーションでカスタム フィルターを使用して条件付き機能を有効にする

機能フラグでは、機能フィルターを使用して、機能を条件に応じて有効にすることができます。 機能フィルターの詳細については、「チュートリアル: 機能フィルターを使用して条件付き機能を有効にする」を参照してください。

このチュートリアルで使用する例は、機能管理のクイックスタートで紹介した Python アプリケーションに基づいています。 先に進む前に、このクイックスタートを完了して、Beta 機能フラグを設定した Python アプリケーションを作成します。 完了したら、App Configuration ストア内の Beta 機能フラグにカスタム機能フィルターを追加する必要があります。

このチュートリアルでは、カスタム機能フィルターを実装し、機能フィルターを使用して機能を条件付きで有効にする方法について説明します。

前提条件

カスタム機能フィルターを実装する

前提条件で Beta 機能フラグに対して Random という名前のカスタム機能フィルターと Percentage パラメーターを追加しました。 次に、機能フィルターを実装して、Percentage パラメーターで定義される確率に基づいて Beta 機能フラグを有効にします。

  1. 次のコードを使用して、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.aliasRandomFilter に修飾して、フィルターに別名 Random を付けます。これは、Azure App Configuration で Beta 機能フラグに設定したフィルター名と一致します。

  2. 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") メソッドの結果はコンソールに出力されます。 RandomFilterBeta 機能フラグによって実装されて使用されるため、結果は 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

次のステップ

組み込みの機能フィルターについてさらに学ぶには、次のチュートリアルに進んでください。