開発日記(2024/05/13)GCP(Google Cloud Platform)とLINEボットを繋いでみる。
おはようございます。時刻はAM1:12になりました。昨日の日記を先ほど投稿して、寝ようかなと思ったのですが、筆が進むのでもう少し頑張りたいと思います。開発貯金ですね。(実態はGWの借金返済ですが・・・)
さて、4月末の構想通りASCから値が取れそうなことと、LINEボットを動かせそうなことは確認できたので、間をつなぐサーバーサイド部分を実装していきたいと思います。
今回は当初の構想通り、GCP(Google Cloud Platform)が提供しているCloud FunctionsというFaaSを利用します。
元々はASCのAPIを叩く上で参考にしていた方がGCPを利用されていたというのもありますが、そもそもnailgrowのアプリそのものをFlutterベースに作り直そうとしているので、Google周りのサービスに慣れておいた方がいいかなというのが理由です。
(と、ここまで書いていてFirebaseでもいいのではと思ったけど、既に少し学習してしまったのでここはGCPでいきます・・・)
ちなみにLINEボット側で参考にさせていただいた方はherokuを利用されていますね。上の方も元々はherokuで検討していたけど無料プランがなくなってしまったのでGCPにしたとありました。herokuはちなみに一番安くて$5からになっているようです。まあGCPでいきます。
利用登録するとこんな感じ。
アカウント情報作成してスタート。
とりあえず新規プロジェクトを作成。チュートリアルをやってみてエンドポイントを叩いて・・・
関数が実行されることまで確認。はて、次はどうしよう。。。
取り敢えず、Cloud Functionsのエンドポイントを叩いたら(関数が実行されて)LINEにメッセージが飛ぶを試してみるかな?
昨日の段階ではLINEのチャネルを作るところまでしかできなかったので、まずはAPI叩いてメッセージが配信できるをローカルで確認したいですね。ということで公式ドキュメントがこちら
これっぽいですね。
ご丁寧にShellのサンプルコードがありました。必要なのはトークンとユーザーIDの二つ。なんかいけそうな気がしますね。X-Line-Retry-Keyは重複送信を防止する仕組みで使えるそうですが、今回は自分用ですし設定しないでいこうと思います。
curl -v -X POST <https://api.line.me/v2/bot/message/push> \\
-H 'Content-Type: application/json' \\
-H 'Authorization: Bearer {channel access token}' \\
-H 'X-Line-Retry-Key: {UUID}' \\
-d '{
"to": "U4af4980629...",
"messages":[
{
"type":"text",
"text":"Hello, world1"
},
{
"type":"text",
"text":"Hello, world2"
}
]
}'
無事に200が返ってくる!すごい!ノーストレス!
ふむふむ。問題なさそうですね!
IDとトークンは固定値で使えるようなので、Cloud Functionsのエンドポイントを叩いたら、このHTTPリクエストを実行するようしてくれればよきですね。で、最終的にはメッセージ部分にアプリのダウンロード数を設定すると。なるほど、なんか見えてきましたね。
決めてない重要な仕様としては、毎日定時にダウンロード数を通知するのか、ダウンロードされた都度通知するのかですがという仕様の部分ですが、、、臨場感を持ってアプリのニーズを実感したい(それによって開発のモチベーションを高めたい)という意味では後者が望ましいですかね。まあやってみてかな・・・
いずれにせよ定時実行が必要になるとして、そのあたりはCloud Scheduler が使えそう。
ということで寝ます。あとは明日考えよう。
(この日の夜は珍しくパートナー共々仕事が早く終わったので近所の居酒屋を三軒ハシゴしてそのまま寝てしまいこれ以上の進捗はありませんでした・・・タイトル詐欺になってしまっていますが許してください・・・)
ご覧いただきありがとうございます。とても嬉しいです。