Pocketに保存したURLをSlackに通知するアプリを作った
Pocketに保存したURLをSlackに通知するアプリを作った。
日頃の課題
日頃、Pocketに後で読みたいサイトを保存している。でも、保存した時点で満足してしまって、読まないことがほとんど。せっかく有用なサイトを見つけたのに勿体無い。いつでも読めるようになると、読まなくなるという不思議。。
これを催促するための何かが欲しいと思っていた。
解決方法
Pocketに溜まっているサイトから、Slackで毎朝通知する方法にした。Slackのリマインダーでも良いんだけど、リマインダーだとPocketにアクセスして、どれを読むか探さないといけない。少しでも手間を減らしたいので、SlackにURLを通知する形にした。
欲しい機能は以下のもの。
- Pocketに保存しているサイトからランダムで1つ通知する
- 通知タイミングは毎朝で、通知方法はSlackとする。
- 通知内容は、サイトのタイトルとURLとする。
完成した通知
毎朝、目につくようになったので、保存したサイトを見る機会は確実に増えた。
使った技術
以下の技術を使った。
- AWS Cloudwatch
- AWS Lambda
- AWS SAM
- Kotlin
AWS CloudwatchでAWS Lambdaをキック。AWS Lambdaで動くアプリケーションはKotlinで作成した。インフラの構成の補助にAWS SAMを利用した。
本当はコードも公開したかったけど、secret keyを埋め込んだままなので非公開にしている。いつか、AWS KMSでキーを隠せるようにしてGitHubにあげたい。
Pocket: Developer APIは闇が多く、めちゃくちゃ使いにくかった。
- 未読のサイトをとるのに、HTTP POSTメソッドを使っている
- 取得できるJSONのlistがarray型ではない。キーに謎のIDが入っている。
JSONはこんな感じ。“list"の周りが・・
{
"status": 1,
"complete": 1,
"list": {
"3102647521": {
"item_id": "3102647521",
"resolved_id": "3102647521",
"given_url": "https://qiita.com/moritalous/items/35ec898b6e239f3b9b21",
"given_title": "",
"favorite": "0",
// 続く・・
今後の発展
以下は改善したいところ。
- Slack上からアーカイブ or 削除を行いたい。Slackにボタンとかつけたい。
- KMSなどでシークレットキーを暗号化して、ソースを公開する。
- CodePipelineでビルドからデプロイを自動化する。
投稿日 2020年11月15日