フリーランスになった以上(どんなにゴミでも)サービスの一つくらいは作るべきではないかと思いつつ、ずっと何もしないままだった。さすがに2年経ったのでもうそろそろ何かすべきかなと思ったので、以前作りかけて放置していたものに手を加えてみた。
作ろうとしていたのはPocketのマイリスト数を取得するという、本当にただそれだけのサービスである。Pocketからそのまま取得できればいいがWebからでは(多分)確認できず、iOSのアプリなら確認できるようだが生憎自分のスマホはAndroidなので、どうしても確認ができない。サービスとして需要があるかどうかはともかく自分にとってはちょっと欲しかったのと、実装しようと思うと認証やDBアクセス等も必要になるため、お試しで作る分にはちょうど良さそうだと感じていた。
構成図はおおよそ以下のような感じでFirebaseを中心に使っている。
フロントエンド側にはNuxtを利用し、認証、認可にはFIrebase AuthenticationとPocketのAPIを利用した。認証やPocketのマイリスト数取得等のサーバーサイド側の処理はCloud Functionsを利用し、得た情報はCloud Firestoreに保存することを想定した。あとは定期的にPocketのDeveloper APIを利用して登録数の推移を確認することが当初の目的だった。
認証周りの実装に苦労したが各サービス間での連携自体はやりやすく、途中までは順調に進めることが出来た。
開発途中の図。知らない間にマイリスト数が1400件くらいになってたのに気づかされる。
問題はマイリスト数の推移の確認で、これをやるために
- アクセスキーを保存
- 一日に一度バックエンドで登録数を取得し続ける
というのを考えていたが、もしアクセスキーの有効期限が切れた場合再ログインしてもらうまで登録数を取得できないことになるということを考えられていなかった。アクセスキーの有効期限がかなり長ければ問題ないかもしれないがマニュアルを見ただけだとよく分からなかったので、一旦登録数を取得し続けるというのは諦めた。
設計の重要さを改めて知らされる結果になったが、もっとシンプルな形であれば実装できそうなので引き続き開発を進めてみたい。