🐶

Rider で環境変数を設定してコード上で参照する

2023/06/22に公開

動機

Rider でコンソールアプリケーションを作成していて環境変数を設定したくなることがあると思います。例えば私の場合、PlayFab ServerAPI を叩くようなコンソールアプリケーションを作成していました。PlayFab Server API を実行するためには秘密鍵を設定する必要があります。

https://github.com/PlayFab/CSharpSDK/blob/82ddcae7f87395f89e0e1fb4ecb3cfdc262c2134/PlayFabSDK/source/PlayFabSettings.cs#LL33C30-L33C48

ソースコード上にベタ書きして Github に push したくないので、IDE 側で管理したくなるわけです。

設定

超簡単です。

https://pleiades.io/help/rider/Unreal_Engine__EzArgs.html

  • ヘッダーの [Run] > [Edit Configurations...] の順に押す
  • ウィンドウが表示される

  • 下記画像の 1 のマークの箇所を押す
  • 下記画像の 2 のマークの箇所を押す

  • Name(環境変数名), Value(値)をそれぞれ入力する
  • [OK] を押して Environment variables ウィンドウを閉じる
  • [Apply] を押す
  • [OK] を押す

これで設定が完了しました。

豆知識

設定した環境変数は、プロジェクトのルートディレクトリ配下のProjectName/.idea/.idea.ProjectName/.idea/workspace.xmlに格納されます。

参照

Environment.GetEnvironmentVariable を利用する。
以上です、非常に簡単ですね。
下記に簡単なテストスクリプトを置いておきます。

TestScript.cs
public async UniTask DeletePlayer()
{
    var settings = new PlayFabApiSettings
    {
        TitleId = titleId,
        DeveloperSecretKey = Environment.GetEnvironmentVariable("PLAYFAB_DEV_SECRET_KEY", EnvironmentVariableTarget.Process)
    };

    var id = "XXXXXXXXXXXXX";

    try
    {
        var instance = new PlayFabServerInstanceAPI(settings);

        var result = await instance.DeletePlayerAsync
        (
            new DeletePlayerRequest
            {
                PlayFabId = id
            }
        );

        if (result.Error is not null)
        {
            Console.WriteLine();
            throw new Exception(result.Error.GenerateErrorReport());
        }

        Console.WriteLine($"削除されたユーザーの Id: {id}");
    }
    catch (Exception e)
    {
        Console.WriteLine($"例外のメッセージ: {e.Message}, スタックトレース: {e.StackTrace}");
    }
}

今後も重要な value を使いたいといった局面に出くわした際は、環境変数などを利用してベタ書きは回避していきましょう。

Discussion