Amazon Echoが買えないので()、とりあえずスマートホーム化の足がかりとして、KotlinでLINE BOTを書きました。
GitHubはこちら▼
nabeen/linebot-kotlin: based on https://github.com/moritalous/linebot-serverless-blueprint-java
先人の知識が全然なくて危うく爆死するとこでした()。KotlinでLINE BOTとかちょっとマイナーすぎたか…。
Idea
Echo買えないってのはまぁ事実ではあるんですが、スマートホーム=外部からも操作できるってことだと思うので、そのインターフェースとして、LINE BOT書こうかなーとぼんやり思ったのがキッカケです。
Slackとかエンジニア寄りのチャットサービスの方がぶっちゃけ連携はしやすい(し、先人の知恵もある)と思ったんですが、「嫁も使うかもしれない」という可能性があったので、そこは素直にユーザー目線でLINEを選択。
Kotlinを選んだのは完全にKotlin欲にちょうどまみれていたからで、特に深い理由があるわけではありません。情報が少なさ過ぎて後々若干後悔しましたが。
ちなみに本プロジェクトで採用したKotlin、Serverless Framework、どちらも初めましてこんにちは状態でした。あと、Javaも全く書いたことないです:D
What went right
先人に頼り切らない実装が出来た
先述したとおり、「KotlinでLINE BOT書いた」先人が皆無だったので、いつもみたくほぼ丸っと使ってなんとなくうぇーいwwってのが出来ない状態でした。
とはいえさすがにフルスクラッチで書くのは、Kotlinスキル的にも、Serverlessスキル的にも厳しそうだった(時間の制約があるので)ので、Javaで書かれたmoritalous/linebot-serverless-blueprint-java: linebot-serverless-blueprint-javaを非常に参考にしながら実装しました。
その分、思ったより時間はかかりましたが、「最低限」と思っていた機能はなんとか自力?で実装出来たのは、経験値としては大きかったような気がします。
IDE強い。こんな強いIDEは初めてだ
KotlinということでIntelliJ IDEA CEを使ったんですが、JavaからKotlinの変換はできるわ、間違いは自動で検出してくれるわで、かなりIDEに頼った部分があります。
生産性という面ではいいんでしょうけど、なんとなく操られてる感が…。
あとは静的型付け言語なんで、ビルドでエラーを検出できるのは単純に安心感がありました。
What went wrong
えいや!で実装した部分が多々あるので、そのへんは直した方がいいんだろうなーとは思っています。
スマートホーム化は現状ではまだまだなので、後々機能開発する時にリファクタ的なことも出来ればいいなと。
あと当然ですが、テスト書いてません。
What I learned
- 初めてのKotlin
- 初めてのServerless Framework
- 初めての…すいませんもうないです