背景
- Qiitaに投稿した記事数が増えてくると1日に何件かいいねがつくようになりそれがモチベーションになってきました
- しかし通知一覧画面はいろいろな通知が混ざっていて見やすいものではなく、以前まであった日毎のいいね数のグラフも先日のアップデートでなくなってしまいました
- なので前日何件のいいねがついたのか知らせてくれるLINE Botを勉強も兼ねて作ってみました
- まだまだ機能を追加したいですが最低限できたので紹介します
できたもの
- QiitaのIDを登録しておくと前日のいいね数を通知してくれるLINE Bot
使った技術
- フロントエンド
- LINE Bot
- LIFF
- React
- バックエンド
- Lambda
- API Gateway
- DynamoDB
- ServerlessFramework

利用イメージ
ユーザの登録
- QiitaのIDを登録してもらうフェーズです
- LINE BotのあいさつメッセージでLIFFアプリのURLを表示しそこから登録してもらいます
- LIFFアプリはこんな感じです
- LIFFアプリからはLINEのユーザIDを取得できるのでLINE IDとQiita IDの2つをLambdaに投げてDynamoに保存しています
いいね数の断面取得
- QiitaのAPIの仕様上、前日に何いいねされたかを取得することはできません
- なので毎日0時に登録ユーザの全記事を取得し、いいね数を合計した値を保存しておきます
- https://qiita.com/api/v2/users/ozaki25/items でユーザに紐づく記事情報を一発で取得できます
- 一度に取れる記事は100件までなので超えた場合はページング処理が必要です
- Lambdaの定期実行はServerlessFrameworkからも指定可能で簡単にできました
前日のいいね数をユーザに通知
- こちらもLambdaを毎日定期実行させています
- 当日0時の断面と前日0時の断面を引き算した値を前日のいいね数としています
- 最近いろいろあってQiitaのユーザ削除がブームになっていて前日いいね数がマイナスになることも。。
- LINEのMessagingAPIを使ってユーザへLINEでメッセージを送信します
感想
- LIFFを使うとWebアプリとして実装できるのでハードルがとても低く感じました
- いいね数の内訳などもっと追加したい機能がありますがLIFFアプリを拡張すればいいだけなのでその辺も扱いやすそうです
- 通知はLINEで、詳細情報はLIFFでという使い分けが便利!
- バックエンドがサーバーレスなので課金の心配もそんなにないはずなので個人でお試しするにもやりやすい構成だなと感じました