データを保存できるWebAPIを作ったら楽になった

最近は無料で使えるナントカ as a serviceが増えてきて、サービスを簡単に作れるようになって楽しい
例えばロジックはheroku + javaで堅牢に作れるし、定期実行はgoogle apps script(以下、GAS)でできる
あと足りないのはデータストア

てことで自分の身の回りでデータストアとして使えそうなものを探したら、サクラのレンタルサーバがあった!
プランがライトプランなのでsqliteしか使えないけど、なんとかなるはず!
てことで、データストア的なwebサービスを作ってみた

仕様

要するにwebAPI経由でデータの追加・更新・参照ができるサービスです
詳細はこんな感じ

  • IDと状態を保存できる
  • 状態を更新できる
  • ID指定で状態を取得できる
  • 過去の状態遷移履歴も取れる
  • データは投入から1ヶ月で消える
  • 認証はリクエストに固定のトークンを入れることで行う
  • 環境: PHP + slim + SQLite

データが1ヶ月で消える仕様がミソ
sqliteだから大量データを保持したくないって理由もあるけど、実際1ヶ月くらい保持してくれるだけで十分なサービスがたくさんあるのでこの仕様で問題なし

利用例:ブログ更新通知サービス

せっかくなのでデータストアを使ったブログ更新通知サービスを作ってみた
使うのはGAS

基本的に定期的にRSSをクロールしてチャットに通知すればイイだけですが、すでに通知済みの記事は通知して欲しくない
そうなると通知したものを貯めるデータストアが必要になる
そこで今回作ったデータストアを使う
通知した記事のIDをデータストアに保存して、次回クロール時はデータストアにすでにあるかを確認してなかったら通知する
1ヶ月でデータが消える仕様があるので、翌月に同じ記事を通知してしまう可能性はあるけど、そこは日付見て「1ヶ月以上たった記事は通知しない」て処理いれれば問題なし

ロジックをまとめるとこんな感じ

  • 定期的にRSSを取得する
  • 記事の投稿日時が1ヶ月以内のものを抽出する
  • 記事IDでデータストアに問い合わせてチャットに通知済みかどうかをチェックする
  • 未通知だったら
    • 記事をチャットに通知する
    • データストアに通知済みとして保存

作った

GASで簡単に作れた
このデータストアは汎用的に使えて良さそう
APIのインターフェースとか認証周りとかをもう少し整理して公開できる状態まで持っていきたい
認証サービスを作ればいいのか?
結局AWSみたいにマイクロサービスがたくさん作られそうな予感

まとめ

データストアサービスを作ったら新たなサービス作りが簡単になった
この他にもマイクロサービスのアイデアがいくつか浮かんで楽しくなってきた