5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ZOZOテクノロジーズ #3Advent Calendar 2020

Day 20

Firebase Remote Configの設定情報の取得と更新をAPIで行う

Posted at

概要

最近ABテストのためにRemote Configの設定を確認や更新する機会が多いが、ブラウザからでは面倒なためプログラムから行えないか調べた。

Remote Config API

Remote ConfigはAPIが公開されているため、プログラムから設定情報の取得と更新は簡単に行えそうだ。

サンプルコードを動かす

Node.jsのサンプルコードがあるのでこれを動かしてみる。

Firebaseプロジェクトとサービスアカウントの作成

Firebaseコンソールからプロジェクトを新規作成した。作成後、適当なRemote Configのパラメータを作成しておく。

image.png

次にサービスアカウントを作成する。サービスアカウントを自動で作成されていて、Firebaseコンソールで、[プロジェクトを設定] > [サービス アカウント]を開くと確認できる。

そこで、[新しい秘密鍵の生成] をクリックし、[キーを生成]をクリックするとキーがローカルにダウンロードされる。このキーをSDKの認証に使用する。

設定情報の取得

firebase/quickstart-nodejsをcloneし、configディレクトリに移動しnpm installを実行する。

先ほどダウンロードしたキーを環境変数GOOGLE_APPLICATION_CREDENTIALSにセットする。

$ export GOOGLE_APPLICATION_CREDENTIALS=path_to_key

そして、次のコマンドを実行するとRemote Configの設定情報がconfig.jsonに保存される。

$ node index.js get

今回のサンプルプロジェクトの場合、次のようなjsonが取得できる。

{
    "conditions":[],
    "parameters":{
        "sample":{
            "defaultValue":{
                "value":"test"
            }
        }
    },
    "parameterGroups":{},
    "etag":"etag-123456789-1",
    "version":{
        "versionNumber":"1",
        "updateOrigin":"CONSOLE",
        "updateType":"INCREMENTAL_UPDATE",
        "updateUser":{
            "email":"update user email"
        },
        "updateTime":"Sun, 20 Dec 2020 10:17:55 GMT"
    }
}

設定情報の更新

設定情報を取得できたので更新を行ってみる。先ほどのjsonを次のように変更する。

{
    "conditions":[],
    "parameters":{
        "sample":{
            "defaultValue":{
                "value":"change from api"
            }
        }
    },
    "parameterGroups":{},
    "etag":"etag-123456789-1",
    "version":{
        "versionNumber":"1",
        "updateOrigin":"CONSOLE",
        "updateType":"INCREMENTAL_UPDATE",
        "updateUser":{
            "email":"update user email"
        },
        "updateTime":"Sun, 20 Dec 2020 10:17:55 GMT"
    }
}

そして、次のコマンドを実行する。

$ node index.js publish

実際に確認すると次のように変更されている。

image.png

cURLでの設定情報の取得

cURLコマンドでの設定情報の取得を試してみる。設定情報は、次のようにすることで取得できる。

curl --compressed -D headers -H "Authorization: Bearer ACCESS TOKEN" \
-X GET https://firebaseremoteconfig.googleapis.com/v1/projects/MY-PROJECT-ID/remoteConfig \ 
-o config.json

ここで、ACCESS TOKENはSDKを使用して取得する。firebase/quickstart-nodejs/confg/index.jsonにトークンを取得するコードが含まれているので、それを使用する。また、MY-PROJECT-IDには対象となるFirebaseプロジェクトのIDを指定する。

簡単にトークンが取得できるようindex.jsonの98行目以降を次のように変更する。

if (action && action === 'get') {
  getTemplate();
} else if (action && action === 'publish') {
  publishTemplate();
} else if (action && action === 'update') {
  getAndUpdateTemplate();
} else if (action && action === 'accesstoken') { 
  getAccessToken().then(token => {
    console.log(token);
  });
} else {
  console.log(
`
Invalid command. Please use one of the following:
node index.js get
node index.js publish
node index.js update
node index.js accesstoken
`
  );
}

そして次のコマンドを実行するとトークンが得られる。

$ node index.js accesstoken

得られたトークンを使いcURLコマンドを実行すると設定情報を取得することができた。

参考

5
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?