Goで釣りのLINE Bot作ってる話
この記事は 釣り Advent Calendar 2016 23日目の記事です。 Goのアドベントカレンダーとは関係ありません。
大掃除や忘年会などで1日遅れになりました。。。
LINE BOT AWARDSというラインのBotのコンテストがあるのですが、グランプリの賞金がなんと 1000万円!! なのでこれはエントリーせねばと作り始めました。
個人で応募するにはDeveloper Trialのプランかフリープランじゃないと課金が辛いのでどちらかになると思いますが、Developer Trialだと友達の上限が50人、フリープランだとPush APIが使えない(ただしエントリーすれば3月まで無料で使えるらしい)ので悩ましいところです。今のところDeveloper Trialで作ってます。
環境
Google App Engineで動かしてます。Botと言ってもメッセージを受け取って何かを返すAPI サーバーを作る感じです。LINE Bot用のSDKはいくつかあるのですが、GoのSDKも用意されているので、app.yaml, main.goさえ書けばすぐ動きます。
SDKのリポジトリにサンプルも用意されているのですぐ試せるので便利です。ちゃんとApp Engine環境にも対応しているのが素晴らしいです。
釣り用の機能
釣った魚の判定
LINE Botでは写真メッセージを扱えるので、ユーザーが送った魚の写真を判定して種類や食べ方などを教えてくれたら便利だなーと考えてます。
GCPにはVISION APIがあるので魚の判定ぐらいはできそうです。
ただ試しにシーバスの写真を判定させてみたのですが、Bassというところまでしか判定してくれなかったので、シーバスなのかブラックバスなのかまでは判定できないのかもしれません。
釣った魚の記録
同じく写真メッセージを扱って記録もできたら面白いなーと思ってます。
LINEだと位置情報も簡単に送れるのでポイントを管理できそうな気がしてます。
大会機能
グループ内で大会を開催できるようにしようと考えてます。
17時まで大会
みたいなメッセージを送るとTask Queueに時間付きで登録して該当時間になったらPush APIで大会終了
みたいなメッセージと、それまでに釣った魚のサイズなどでランキングを発表したりとかできそうな気がしてます。
応援機能
一人で釣りしてると時々集中力が切れるので、一定時間毎に 釣れましたか?
とか 少し休憩しませんか?
とかのメッセージをPush APIで送ると楽しそうだなーと思ってます。
雑談機能
上記の釣り以外の受け答えもできるようにdocomoの雑談API を使ってます。
もはやBotでは定番のような気がします。これもGo用のライブラリhttps://github.com/kyokomi/go-docomoがあるのでそちらを使わせてもらってます。App Engine対応されているのですぐ使えます。
App Engineだとissueにある通り一部書き換えて使う必要があります。
res, err := d.Dialogue.WithContext(ctx).Get(zatsu, true)
おわりに
Botを作ったのは初めてなのですが、アプリを作るのとは色々と勝手が違いました。
Botは画面を作らなくていいので簡単に作れるのですが、その反面基本テキストでのやり取りになるので、如何に入力の手間を省くかを考えるのが難しいです。幸いMessaging APIではカルーセルメッセージやボタン付きのメッセージも遅れるので工夫次第でなんとかなりそうです。
もう一つ、Botを運用するにあたってマネタイズが凄く難しいなと思いました。大きい企業が自分のサービスに誘導したりする目的で作るBotであればあまり関係ないのですが、個人でBotだけでサービスをするとサーバーの運用費 + LINE のMessage API の月額費などがかかってくるので何かしら収益化しないとサービスを継続できません。LINE Payでは友人間で送金できたりするらしいので、Botにも送金とかできたりするんでしょうか?(できなさそう)
まだ作り始めたばかりなので実装予定の機能紹介になってしまいましたが、簡単にBotが作れるので是非試してみて下さい。そして1000万円を狙いましょう。
最後に、開発途中な上プラン変更する可能性もありますが、よかったら友だち追加してみて下さい。そしてフィードバックなどいただけたらありがたいですmm
つりマネちゃんです。画像はいらすとやから。