LINE BOTをNode.jsで作る

LINE BOTをNode.jsで作るための学習リソースをまとめました。

#こんな人が対象です
・これからLINE BOTを作りたい
・LINE BOTでどんなことができるか知りたい
・node.jsが読める

#システム構成図
大体こんな感じのシステムが多い。

![Untitled.png](https://qiita-image-store.s3.amazonaws.com/0/162655/3c03a7bf-e572-ed69-7e27-cde4d357d079.png)

#事前知識と事前準備

## 公式サイト

[開発者向け公式サイト](https://business.line.me/ja/)
LINE Business Center。
LINE BOTを作る際には、提供サービスの中の「Messaging API」というサービスを主に使います。

[Messaging APIのリファレンス](https://devdocs.line.me/ja/#messaging-api)
リファレンス読み慣れてないと読みづらいけど、Messaging APIで何ができるかは、これでなんとなくわかる。

## 事前準備①: node
nodeをインストールしてnpmを使えるようにしよう。

[インストーラでnodeをインストールしよう](http://www.tettori.net/post/293/)
nodeのインストールからHello worldまで載ってる

[nodebrewでnodeをインストールをしよう](http://www.hirooooo-lab.com/entry/development/install-node)
インストーラでインストールできない場合

## 事前準備②: heroku
herokuのアカウントを作ろう。

[Herokuのアカウント作成](https://signup.heroku.com/dc)
アカウントを作って、まずはLINE BOTの作業ディレクトリを作ろう。(要Gitの知識)

[Herokuの使い方(日本語)](http://developers.mobage.jp/blog/how-to-use-for-beginners-heroku)
Gitの基礎知識や英語に自信がない人は参考にどうぞ。

[Heroku入門 - ドットインストール](http://dotinstall.com/lessons/basic_heroku)
みんな大好きドットインストール。

[herokuの16の常識](http://blog.mah-lab.com/2013/05/16/heroku-commons-16/)
herokuのじゃじゃ馬っぷりがわかる

## まずはLINE BOTでHello world!

[初期設定から実装まで](http://whippet-818.hatenablog.com/entry/2017/02/07/004558)

　
#学習リソースまとめ

## 基礎: Reply Message (相手のコメントに返事する機能)

[おうむ返しBOT](http://qiita.com/n0bisuke/items/56d7ace2193fbc106639#webhook-event-object)

[文字数カウントBOT](http://watchcontents.com/make-linebot-useing-messagingapi/)

[くっころBOT](http://qiita.com/k_nakayama/items/18a437e9c837ec11da6d)

## 応用: 外部サービスと連携

[毎朝！お天気通知BOT](http://takagusu.hateblo.jp/entry/2017/01/24/200453)
JP Weather Forecastという天気予報 APIを利用

[IBMサービスでお天気通知BOT](http://qiita.com/skuwa229/items/772db2d1a3919fca990a)
１時間間隔で、降水確率70%を越えると知らせてくれる
IBM BluemixのNode-REDとWeather Company Dataでお手軽に作ってる
(BluemixはIBMのクラウド基盤サービス、AWSやGCPの親戚)

[レストラン検索BOT](http://qiita.com/enta0701/items/45d5295e023e24e9ff0b)
ぐるなびAPI使ってる

[写真で年齢判定BOT](http://www.buildinsider.net/pr/microsoft/azure/solution02)
Microsoft AzureのFace APIを使った表情認識
(AzureはMicrosoftのクラウド基盤サービス、AWSやGCPの親戚)

[画像タイトル&タグ生成BOT]
(http://tech.innovation.co.jp/2017/04/14/Azure-3.html)
Microsoft AzureのComputer Vision APIを使った画像機械学習

[会話の雰囲気判定BOT](https://teratail.com/Bluemix/2)
IBM BluemixのTone Analyzerを使った雰囲気分析

[docomoのサービスを使った雑談対話BOT①](http://www.kazuweb.asia/aws/lambda/chatbot)
docomoの雑談対話APIを利用、会話レベルは凡骨

[docomoのサービスを使った雑談対話BOT②](http://qiita.com/ryotahirano/items/dd1093fd413c2d1e938a)
上に同じ、docomoさん頑張ってくだされ

[LINE BOTでTODOリスト](http://qiita.com/mtokiwa/items/bdc5ac441697c4dc782e)
Todoistというタスク管理サービスを利用
このBOT欲しい

[LINE Pay決算BOT](https://engineering.linecorp.com/ja/blog/detail/247)
LINE Payによる決算でユーザに商品を購入させることができる

[Google Homeに読み上げさせるBOT](http://megalodon.hateblo.jp/entry/2018/01/10/014604)
Firebaseとラズパイ経由でGoogle Homeにメッセージを読み上げさせるBOT

## 応用: 外部サービスと連携してない

[Lambda+DynamoDBで友達管理](http://dev.classmethod.jp/cloud/aws/receive-line-bot-api-on-lambda/)
ユーザー毎のuserID管理にAWS Lambdaを使ってる

[LambdaでRSS通知BOT](http://dev.classmethod.jp/cloud/build-line-bot-api-using-lambda/)
RSS(Webサイトの更新情報など)を受け取れる、複数サイトの更新管理に便利

[声優ブログ更新通知BOT](https://luispc.com/php/2016/10/13/8615) ※PHP
RSSじゃなくてURLの照合で更新判定してる

[落語BOT](http://blog.8arrow.org/entry/2016/11/29/082403)
ソースコード載せてないけど、UX/UIがとてもいいアイデア
Template Message使ってるみたい

[チラシ宅配BOT](http://qiita.com/kurouw/items/f00229e51818d80ae643) ※Ruby
Reply&Push機能から、ユーザ情報管理まで、丁寧で実践的な解説

[誕生日お祝いBOT](https://www.indetail.co.jp/blog/13006/) ※PHP
前編で入門（Reply)、後編で応用(Pushとユーザ情報管理)

## 補助・その他

[データ構造まとめ](https://techblog.recochoku.jp/1835)
LINE BOTで扱う主要なJSON構造などをまとめてくれてる

[新機能Template Messageを使ってみた](http://qiita.com/Kosuke-Szk/items/eea6457616b6180c82d3) ※Python
LINEの横スクロール機能！

[商用LINE BOTサーバの実装例](http://qiita.com/Matanabe/items/92a613411cd051f64cb9)
LINE BOTを実運用する場合のサーバ構築例

[1時間でLINE BOTを作るハンズオン (資料+レポート) in Node学園祭2017](https://qiita.com/n0bisuke/items/ceaa09ef8898bee8369d)
LINE BOTハンズオンの内容と、参加者の応用作品がまとまっている

## おまけ

[Heroku+Pythonを使ってlinebotを作る方法doc](https://gist.github.com/S-Shimotori/649952428253368238ff69ad8eaec6e9)
日経ネタ