java で line bot 作った話
TRANSCRIPT
Daisuke Hirata (@daichan4649)● 株式会社アバンテクニカ
○ 受託開発
○ 講師業
● Java、Android、Go
● GAE、Google Apps Script
● Jazz Vocal
● プログラマってこんなかんじ??
リリース
● アルファ版リリース (BOT API Trial)
○ 2016/5/3 公開
○ 登録ユーザ数 50人 (上限値!)
● 正式版リリース (Messaging API)
○ 2016/10/24 公開
○ 登録ユーザ数 130人 (2017/2/8 時点)
○ 50 アクセス程度 / 日
月末、月初めにスケジュールデータを更新
● つらくない (自動化済)
○ スクレイピング可能なサイト
○ Google Calendar 使ってるお店
● つらい (人力)
○ スクレイピング不可なサイト
○ 店主にヒアリング
とにかく開発スピード重視
● すぐに完成、実現させたかった
● 自分のメイン言語が Java
● Google 系サービスと連携しやすそう
● そんな軽い気持ちで GAE/J (standard environment) を選定
つらい (開発環境)● LINE 社が公開してくれている line-bot-sdk が使えない
○ Java8、Spring Boot 前提で実装されている
○ GAE/J に Spring Boot 載せれるけど・・スピンアップが・・
つらい (スピンアップ)● スピンダウン→スピンアップが前提
● Java のスピンアップは特に遅い (資料 *3)
○ Java は 3.8 秒
○ Go は 0.3 秒
○ ということは BOT の応答が・・・
● スピンダウンしないくらいアクセス数あれば大丈夫?
つらい (固定IP ではない)● スピンアップ時に IP アドレスが変わる可能性あり
● 現在(2017/2/8 時点)は固定 IP でなくても大丈夫
● 仕様が変わらないか不安
● Trial 版では 固定 IP 必須だった
ざっくり構成
● JAX-RS (Jersey2)
○ LINE とのやり取り(callback)
○ RESTful API (スケジュールデータの CRUD)
● DataStore (Objectify)
● スクレイピング (Jsoup)
○ 各サイトのスケジュールデータ取得
● インスタンス落ちしない or 起動が速い
● Java だと Java8、Servlet3 系
○ 最近のライブラリ導入しやすい
● 固定 IP 可
○ いまは大丈夫だが、仕様がいつ変わるかわからない
○ Trial 時は 固定IP 必須だった
こういうのがいい
BOT を実際に運用してみて
● LINE はインターフェースとしては最高
○ スマホ (iPhone/Android)
○ ガラケー (一部)
● 別途インストール不要なので導入しやすい
○ 友だち登録だけで OK
○ 実際に導入してもらえたのはこのあたりは大きい
BOT を実際に運用してみて
● BOT 自体はわりと簡単に作れる
○ サーバサイドによっては 非エンジニア でも可能では?
● 自分で作ったものが身近な人に使ってもらえる喜び
○ 簡単に導入してもらえる → 反応がもらえる
○ こんなに開発モチベーションがあがったのは久しぶりだった
登録してご意見いただけるとうれしいです
公式サイト(facebook)
● 登録方法○ LINE 起動○ 友だちとして追加 (QRコード読込)
1. 2016年半ば現在のGoogle App Engine
2. 個人的に最強のPaaSプラットフォームGoogle App Engineの良い所を挙げてみる
3. GAE/go+ginとGAE/java+servletでそれぞれスピンアップの速度差をゆる〜く確認する
4. 大量メッセージが来ても安心な LINE BOTサーバのアーキテクチャ
5. [github] line-bot-sdk-java
資料