先ほど(ていうかもう昨日ですが)
という記事を上げましたが、
BOTが動かないまま寝るのが癪に障るのでLINE BOT APIについていろいろ調べて、意識高い系のBOTを作って山田孝之さんとトライのお兄さんと会話させてみました。
まぁ、APIを発行するサーバーの関係で、厳密に言うとBOTというよりAPIでの送信ができただけですが。
あれから色々調べてみると、herokuならすんなり動くというのでherokuでの実装に挑戦してみました。
といっても私はherokuは触ったことがなかったのでherokuの使い方から調べないといけませんでしたが、マニュアルが分かりやすく、すぐにリリースできるように作られているので、ツールベルトという開発用のツールを入れてから1時間ほどでAPIのコールバックの受付口を作り、自分のLINEアカウントからBOTのアカウントに対してメッセージを送った時にコールバックが届くようになりました。
あんなに嵌っていたSSLに関しても、何も問題なく動作しています。
最初っからこっちで試せばよかった。あぁ、無駄に消耗した週末の時間を返してほしい・・・
herokuも楽ちんですが、最近よく使っているsinatraも手っ取り早くいろいろ試せていいですね。
※herokuに不満があるとしたら、herokuはコマンドベースなのでwindowsとの相性があまりよくなさそうなところでしょうか。まぁこれはherokuのせいというよりはwindowsとUnix/Linux系OSとの文化の違いなのでしょうがないことですが。
さて、Botということで何かメッセージを受信したらレスを返すものを作りたかったのですがAPIを呼び出すには、APIを発行するサーバのIPアドレスを登録しておく必要があるそうで、herokuは固定IPではなさそうだったので、いつも使っているさくらのVPSからRubyを使ってAPIをたたいてみました。※Herokuでは有料でそういったAPIの発行などに使える機能もあるらしいですが。
で行っていました。
なのでさくらのVPS側に別途自分で着信通知用のAPIを用意すればBOTはできそうです。
作ってみたBOT(というかメッセージの送信処理)のソース(Ruby)はこちらです。
RubyでBOTを作られる方の参考になりましたら幸いです。
require 'net/http' require 'json' uri = URI.parse('https://trialbot-api.line.me') client = Net::HTTP.new(uri.host, 443) client.use_ssl = true header = { "Content-Type" => "application/json; charser=UTF-8", 'X-Line-ChannelID' => "channelsタブのChannel ID", 'X-Line-ChannelSecret' => "channelsタブのChannel Secret", 'X-Line-Trusted-User-With-ACL' => "channelsタブのChannel MID" } messages = [ "会社は学校じゃねぇんだよ", "学生気分で会社に来てるヤツがいる。\r\nお前、何しにきてんの?", "群れるな。孤独と対峙しろ", "だから渋谷の時代が終わってきてんだよ。本物の「男」が全然いない。", "仕事なんて全部自分で見つけてこいよ。ここは学校じゃねぇんだよ。" ] idx = rand(5) body = {to: ["送信相手のMID"], toChannel:1383378250, # ←toChannelは1383378250固定 eventType:"138311608800106203", # ←メッセージ送信では、eventTypeは138311608800106203固定 # contentTypeは1固定, toTypeは例を見る限り1でよいみたい。 # text に送りたいメッセージを指定する content:{contentType:1, toType:1, text: messages[idx] } } # メッセージ送信はpostメソッド # 他にもGETのAPIでいろいろと情報をとることもできるみたい... res = client.post("/v1/events", body.to_json, header) # resはこんな感じ # {"failed":[],"messageId":"1234567890123","timestamp":1234567890123,"version":1} # 送信先のMIDが違うと # {"statusCode":"401","statusMessage":"INVALID_MID"} # が返ってくる puts res.body
上記のコードではテキストのメッセージ送信しか試していませんが、APIのマニュアルを読む限り
- 画像
- 動画
- 位置情報
- 連絡先情報
- スタンプ
等も送れるようです。
LINEの最大の特徴であるスタンプが送れるのは楽しいですね!
感想
- 「これは確かにやばい」
- 「あれ!?なんかスマホがお金臭くない?」
といった印象ですね。
IoTや車のカーナビと連携させたり、出会い系サイトのサクラ用のBotが販売されたり、BotAPIを使えばいろいろビジネスアイデアが広がりそうですね。
LINEはもうすぐ上場するらしい
LINEのAPIは、私自身早く出ないかなと待っていたのですがなかなか出なかったので(IT業界の他の会社と比べて)遅いなぁ~と思っていました。
今この時期に公開されたのは恐らくですが、株式公開、通称、イポ!があるからですね。
こちらの記事の通り6月に上場予定だとしたら、4月のこのタイミングでのAPI公開は(トライアル版とは言え)完璧なタイミングじゃないでしょうか。
LINE : 「大変お待たせ致しました。只今よりLINE BOT APIを10000名様に公開致します。」
IT業界: 「おお!触ってみよう」
IT業界: 「なんだこれ!まじやべぇ!」
「これはぜってー金のなる木になるぜ。俺もBOTで一山あててやるぜ」
「IoTもビッグデータも活用できるじゃないか!」
日経記者:「フムフム。LINEのBOTが金になると... φ(・ω・ )メモメモ」
日経新聞:「LINE BOT APIで世界市場の席巻を狙う!」
LINE :「皆様、当社は本日、上場致しました。さあさあ、どうぞ当社の株を買ってください。」
皆 :「うお~。俺に買わせろ~!」
みたいな構図が既に出来上がっている気がしますね。
ネットの記事とか見るとみんな凄い凄いって騒いでますけど、LINEからしたらシメシメって思ってるのかもしれませんね。
LINE関連の記事書いたらなんかもらえたりしないかな。。。
ぼくも、ヤーシブで働くチャンネーからLINEで友達リクエストとかいっぱい届くんだったら
みたいに一生懸命煽るんですけどね。。。
本当に儲かるのは誰だろうか?
Bot API使ってアプリ層で金儲けができるとして、それはそれでいいと思いますが、アプリを動かすにはサーバーが必要になるわけで、恐らくBOT開発の最前線で使われるのはPaaSでしょう。
要するに、
といったサービスが選ばれると思うのですが(今回Herokuを使ってみたら秒殺でAPIが使えたので強くそう思います)、この中に日本のIT企業は入っていません。
(RubyのMatzさんはHerokuの仕事をされているそうですが)
今回のBotも本来で有ればチャンネル桜じゃなくて、さくらのVPSで作りたかったのですがSSLに関する事情でHerokuを使って作ることになりました。
自称、思想の強いプログラマとしては歯がゆい気持ちでいっぱいです。
こういうのを見ると日本のIT業界とアメリカのIT業界の基礎体力の違いというか、本質的なレベルの違いを見せつけられている気がします。まぁ僕がどうこう言う話でもないですが、何かむなしさを感じてしまうんですよね。
アメリカのECの巨人であるamazonはPaaSを実質支配していますが、日本のECの会社は
「〇〇カードマ~ン!」
ですし、ブログやポータルサイトの会社はあくまでブログや広告の会社で、IT企業というよりはメディア企業ですよね。
※個々のエンジニアの方には技術力は当然すごいあるんだと思いますが、現実問題今のこの状況を鑑みるとまぁなんというかあれですね・・・
自分もまだまだ勉強不足なので、もっともっと勉強してエンジニア・ビジネスマンとして成長して行くべきだと改めて思いました。
反省点
- 英語のAPIのマニュアルを流し読みしていたので大事なところを読み飛ばしてしまっていた。"note"とか注意しよう。英文、もうちょっと読みこなせるように頑張ろう!