スプシとSSSAPIでWebサイトやアプリの設定情報を管理する

スプシとSSSAPIでWebサイトやアプリの設定情報を管理する

WebアプリやWebサイト、スマホアプリを開発する際、
バージョンやAPIのURL、メンテナンスモードなどの設定情報を外部で持ちたいときも。

そのためだけに、APIと管理画面を用意するのは少し手間で、
環境構築やサーバを用意するオーバヘッドが大きく感じます。

Firebaseを利用している場合では、Firebase Remote Configの利用する方法もありますが、
設定情報をキャッシュするため、即時性には少し欠ける面も。

この記事では設定情報をスプレッドシートを管理画面としたAPI
SSSAPIで用意し、活用する方法をご紹介します。

APIであればWebサイト/スマホアプリの両方にも対応できます。

SSSAPIでも各プランの上限値をAPI化しており、
LPサイト/管理画面/サーバという複数の環境で、
設定値を共有でき、簡単に一括で変更することができています。

活用事例

例1 メンテナンスモード

一時的にメンテナンスモードに切り替えたい場合での例です。

この例では開発環境(develop)と本番環境(production)の2行を用意しています。

作成したAPIを呼ぶと全件取得しますが、

$ curl -s "https://api.sssapi.app/<API_ID>" | jq
[
  { "id": "develop", "isMaintenance": true },
  { "id": "production", "isMaintenance": false }
]

idを指定することで1件だけを取得することができます。

$ curl -s "https://api.sssapi.app/<API_ID>/develop" | jq
{ "id": "develop", "isMaintenance": true }

$ curl -s "https://api.sssapi.app/<API_ID>/production" | jq
{ "id": "production", "isMaintenance": false }

環境変数などを利用し、実行する環境によって取得する行を切り替えることで、
特定の環境だけ変更することも可能です。

あとは、このAPIのisMaintenanceのフラグに応じて、
メンテナンスモードにするかどうかを判定すればOKです。

例2 APIのエントリーポイント

APIのエントリーポイントやURLを変更したい場合も。

特にiOSやAndroidなどのスマホアプリでは、
アップデートが必要なため、外部から設定できると重宝します。

この例のようにAPIのエントリーポイントを設定情報として管理しておけば、
スプレッドシートを編集するだけで、アクセス先を変えることできます。

$ curl -s "https://api.sssapi.app/<API_ID>/develop" | jq
{
  "id": "develop",
  "isMaintenance": true,
  "apiUrl": "http://localhost:8080"
}

例3 バージョン

強制的に更新したり、アップデートを促したい場合も。

スマホアプリではデータモデルの変更や不具合などにより強制アップデートさせたい場合や WebアプリでもPWAなどのキャッシュをクリアしたいことがあります。

そういった場合、バージョンを設定情報として用意しておくと便利です。

環境変数などでソースコード内にバージョンを組み込んでおき、
このAPIのversionと比較することで、バージョンアップを通知するかどうか判定できます。

$ curl -s "https://api.sssapi.app/<API_ID>/develop" | jq
{
  "id": "develop",
  "isMaintenance": true,
  "apiUrl": "http://localhost:8080",
  "version": "v1.1.0"
}

シートごとに環境を分離する

上の例では1シートの各行に各環境の設定情報を記載していましたが、 SSSAPIではシートごとにAPIを作成するため、
環境ごとにAPIを用意することも可能です。

オプション無しでそのままだと、リストになってしまいますが、

$ curl -s "https://api.sssapi.app/<API_ID>" | jq
[
  {
    "isMaintenance": true,
    "apiUrl": "http://localhost:8080",
    "version": "v1.1.0"
  }
]

「1行の場合は配列にしない」オプションを有効にすると、
さきほどと同様のJSONを取得することができます。

$ curl -s "https://api.sssapi.app/<API_ID>" | jq
{
  "isMaintenance": true,
  "apiUrl": "http://localhost:8080",
  "version": "v1.1.0"
}