クソアプリ2 Advent Calendar 2018 18日目の記事です。
アドベントカレンダー初心者のgohh56です。
input主体だったのをoutput主体にしたいと思い、なんの準備もなく、アドベントカレンダーやる!というアドベントカレンダー駆動で開発してみました。
個人開発経験があまりないときに作ったものを晒そうとすると敷居が高いですが、クソアプリなら多少どうしようもないものでもきっと大丈夫!と思い、やろうやろうと思っていてやっていなかったちょっとしたことをやってみました。
開発動機
- 4歳の息子がいます。仕事している最中に息子の行動を思い出すとくすっとできるので自分の癒やしのためにbotを作ってみようと思いました。そのため、なんら現実世界でのバックグラウンドとして我が息子の行動を知らないとなんの癒やしにもなんのためにもなりません。(ご注意)
- そもそもBOT開発には興味があったのでやってみました。
- そもそもサーバレスに興味があったのでやってみました。
- Python勉強してきたからPythonで書きたい。
作ったもの
- なにか発言すると「きんにく」と返事する
- 「きんにく」と発言すると「もりもりー!」と返事する
これだけなんですが、これだけで私個人は情景を思い浮かべて癒やされるというメンタルヘルス効果のあるBOTになりました。
技術的な話
- AWS Lambda
- AWS API Gateway
- Python3.6
- LINE Messaging API
AWSはほぼ触ったことがないので、IAMユーザーとポリシー作成で手間取りました。AWSのデモなどで見ていると超簡単そうですが、自分でやろうとするとそう簡単ではないですね。
LINE Messaging APIの設定
LINE Developersにログインして、新規にMessaging APIを作成します。
基本情報など入力後、設定で
- webhookの有効化
- 自動メッセージの無効化
- 友達追加時のメッセージ設定(これはwebページで設定可能。スタンプなどを表示するなどもできます。)
をします。
AWS IAMユーザーとポリシー作成
これはやりながらなんやかんややりましたが、
- Lambda
- API Gateway
- ポリシー作成
あたりを紐付けると諸々できました。でもIAMユーザーがイマイチわからないうちはルートユーザーで作成してしまう、というのもありだと思います。とにかく動く状態になるというのがモチベーションになるので。
AWS Lambda設定
画面が変わったようでネットの参考記事などと異なる画面でしたが、内容は大きく変わっていないので、コンソールでポチポチやるとできました。
設定ができたらLINEのアクセストークンなどを環境変数へ定義します。
API Gatewayの設定
設定が終わるとAPIのエンドポイントが確認できるので、この内容をLINE Messaging APIのwebhook URLに貼り付けます。
Lambda関数をPythonで記載
ログ出しなど基本的な内容を記載しつつ、受け取ったメッセージの内容で「きんにく」「もりもりー!」を制御しているぐらいです。
今後の継続検討
せっかくなので以下のような拡張をしていってみたいと思ってます。
- メッセージの返事のレパートリーを増やす。(randomで何種類化を出せるように)
- req側のメッセージと発信時間を溜め込んでデータ分析してみる。(いつ癒やしを求めているか?の分析)
- 妻に利用させて、上記の内容を把握して妻のストレスチェックをする。
やってみてわかったこと
- クソアプリという敷居の低さでとりあえず出してみる!というモチベーションが維持できました。アドベントカレンダー駆動×クソアプリはアウトプット初心者にはよい場所なのかもしれません。(勝手にそんなこと思っている。)
- AWSもLINE Messaging APIもまだまだ使いこなせていないが、とりあえず使えるようになるまでまず行くことが大事。やってみてわかる課題、調べたいことがわかってくるな、と気づきました。
- AWSは簡単そうに見えてやはりいろいろ設定が大変だな、と思ったので、継続して使って知識を深めたいなと思います。
参考にさせていただいた情報
まだまだ雑魚エンジニアの私にはネットは救いです。感謝しかない。
AWS Lambda の Python 3.6 で LINE Bot を動かす
利用させていただいた素材
みんなだいすき「いらすとや」さんからイラストを利用させていただきました。
こんなきんにくのイラストまであるなんて最強か!