Firestore最高だけど、初期データとかマスタデータ管理がめんどくさいので、スプレッドシートをAPI化サービスを作ってみた

開発しているGoogleスプレッドシートのAPI化サービス「SSSAPI」。
無事にオープンβ版を公開できたので、なんで作ろうと思ったかを書いてみた。


http://sssapi.app

なぜ作ろうと思ったか

個人開発が好きで、いろんなものをちょこちょこ作ってる。
今は、Nuxt.jsとFirebaseがお気に入りで、
小さなものを含めると20サービスくらい作ったと思う。

ちょっとしたものを作ることも多く、
もっと楽に作ることはできないかなぁ?
といろいろ考えたりしていた。

その時同時に考えていたのが、ゲーム攻略のサービス
マスタデータが多く、更新も早いので、どうしようかなと。

とりあえず、初期データが必要なので、
スプレッドシートにまとめていた。

データを集め終わって、いざつくろうとしたときに、
このままJSON APIにできれば楽なのにな〜
というのが最初だった。

最初はJSONファイル

ゲームの攻略サービスを作っている途中だったので、
まずは、スプレッドシートAPIでJSON化して、
JSONファイルをソースに含める形で開発。

これだけでも割とよく、
とりあえずJSONファイルで開発するのは良い感じだった。

データの項目が足りなくても、
スプレッドシートなら列を追加するだけなので、
データ構造を検討している初期はスムーズに進んだ

ただ、JSONファイルをインポートしてるので、
ビルドサイズは大きくなるし、
データを更新したいときはビルドしないといけないので、
めんどくさいな思うようになり、API化は必要だなと作りはじめた。

Firestoreで初期データをめんどくさい

今まで作ってきたものを振り返ると、
割とこういうことが多い感じだった。

過去に作ったものでも、カテゴリやお知らせなど、
こちらが用意するデータは、JSONファイルで用意していたり、
JSONファイルの内容をFirestoreに登録するスクリプトを書いていた。

Firestoreは便利なんだけど、
管理画面は自分で用意しないといけないので、
マスターデータを扱いたいときは、めんどうな部分があった。

1つ項目を追加するのにも、JSONファイル&ビルドだったり、
追加用のスクリプトを書かないといけない。。

SSSAPIであれば、スプレッドシートを管理画面にでき、
そのままAPI化できるので、かなり楽になるな〜と。

実際、楽になって、crieitweb1weekの企画へ
参加したときに作ったWebサービスは1~2日で開発できた。

他のじゃダメだった?

いざ作るとなると、時間が必要なので、
既存のものはないかな〜と見てみた。

見てみたのは、GAS、ヘッドレスCMS、競合サービスの3種類。

GASは?

一番よく見るのはこれかなと思う。
Google Action ScriptでWebサービスとして公開するパターン。

記事も多くコードもあるので、便利で昔使っていた。

ただ、シートごとにGASの設定が必要だったり、
どれが設定したスプレッドシートか忘れてしまう
ので、
一元管理ができればな〜と思ったりする。

SSSAPIであれば、毎シートにGASを設定する必要はないし、
登録してあるスプレッドシート=API化しているなので、
一元管理も簡単にできるようにした。

ヘッドレスCMSは?

次によくみるのはヘッドレスCMSかなと思う。
スキーマも柔軟に設定できて、管理画面もリッチ。

ただ、内容がリッチすぎたり、
個人開発だとお高めの価格設定なので、手が出せず。。

「多くのサービスを楽に作りたい!!」と思うと、
無料枠の制限では心もとないなと。。
また、アクセス制限などは有料プランぽいので、断念。

SSSAPIでは、機能は限定的だけど、
個人開発でも使いやすい価格帯になるようにがんばってる。
無料のプランでもドメイン制限を使えるようにしている。

競合サービスは?

今まで聞いたことがなかったけど、調べてみたら、
6つくらい競合のサービスがあった。

もちろん、ヘッドレスCMSよりも安めだけど、
Googleドライブやスプレッドシートへの全権限を許可しないといけない。。
もしくは、全員がアクセスできるように共有設定を変更する必要がある。

Googleドライブやスプレッドシートへの全権限を許可は、
割とこれが強くて、個人情報や機密情報を入れているアカウントだと使えない

API化したいスプレッドシートのデータ自体も財産なので、
オープンにはしたくないときも多い。

SSSAPIでは、権限を共有するのではなく、
システムアカウントを共有設定に追加してもらう形にし、
共有設定されているシートのみ参照できる方法にしている。

すこし手間ではあるけど、安心・安全のため。

ドメイン制限やアクセストークンによる認証も用意しているので、
APIのURLがわかっていても、アクセスできない仕組みを用意している。

使ってみてどうだったか?

利便性・価格・セキュリティの面から、
作ったほうがいいなぁと思って、開発を進めてみた。

使っているのが、マスターデータが多いものに偏っているけど、

  • スプシが管理画面になる
  • ビルドしないで更新できる
  • ドメイン制限できるので守れる

と、かなり便利に。

他のサービスのお知らせやリリースノートなども、
順次、SSSAPIに置き換えている。

ユーザが作成するデータは、今までどおりFirestoreを使っている感じだけど、
プロトタイプ開発のときやテストデータ作成なんかでも活躍してるので、
最初に思っていた「ちょっとしたものを早く楽に作れる」ようになった気がする。

スプレッドシートで管理するのつらいな。。という規模になってきたら、
JSON APIの結果をFirestoreに突っ込めばよいのもいい。

β版なので、まだまだ足りないところはあるけど、
ユーザさんからのフィードバックとドックフーディングをして、
よりよいものにしていければと思う。

SSSAPIでは、β版ユーザを募集中です!

β期間中はプレミアムプランの内容を無料で使えるのでお得!
ぜひぜひ、この機会にお試しいただければ〜!

GoogleスプレッドシートのAPI化サービス
『SSSAPI』
Twitter: @sssapi_app

http://sssapi.app

Originally published at zenn.dev
ツイッターでシェア
みんなに共有、忘れないようにメモ

きらぷか@積読ハウマッチ/SSSAPIなど

フリーエンジニア/今はNuxt.js/いつかFlutter 受託&アプリ/Webサービス/ゲームを #個人開発 CS修士→SIer/R&D→フリー #paiza はAランクで満足/AtCoderしたい #DMでお仕事募集はお休み中 Kotlin/Python/Swift/Unity/Java/Haskell/DDD

Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。

また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!

有料記事を販売できるようになりました!

こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?

コメント