しふみんのブログ

しふみんのブログです。

Heroku+RailsでLine botを作る 第9回 Herokuへのデプロイ

前回までのあらすじ

第1回: http://shifumin.hatenablog.com/entry/2018/04/20/000500
第2回: http://shifumin.hatenablog.com/entry/2018/04/22/002000
第3回: http://shifumin.hatenablog.com/entry/2018/04/23/000500
第4回: http://shifumin.hatenablog.com/entry/2018/04/24/000500
第5回: http://shifumin.hatenablog.com/entry/2018/04/25/000500
第6回: http://shifumin.hatenablog.com/entry/2018/04/26/000500
第7回: http://shifumin.hatenablog.com/entry/2018/04/27/000500
第8回: shifumin.hatenablog.com

LINEデベロッパー登録を終え、必要なAPIキーである「Channel Secret」と「アクセストークン」を手に入れました。
また、Railsアプリを作成し、動作することを確認しました。
そして、Railsアプリに公式サンプルコードのオウム返しbotを移植しました。
今回は作成したbotをHerokuにデプロイしていきたいと思います。

git commit

前回でオウム返しbotの実装(移植)が完了しましたので、ここらで git commit をしておきましょう。

git add .
git commit -m "implement echo bot"
git log --stat

commit 8fa85e05cdc2617e31e07b3260ca06417ca9862e (HEAD -> master)
Author: shifumin <hogehogehogehoge@mail.com>
Date:   Sun Apr 29 21:58:24 2018 +0900

    implement echo bot

 app/controllers/webhook_controller.rb | 40 ++++++++++++++++++++++++++++++++++++++++
 config/routes.rb                      |  2 +-
 2 files changed, 41 insertions(+), 1 deletion(-)

前回の変更内容ですね。
ちなみに、GitHubリポジトリを作成し、ここまでのコードを上げておきました(随時更新予定)

github.com

Herokuへのデプロイ

それではHerokuへのデプロイを進めていきましょう。
なお、Herokuのアカウントを作成していることは前提とします。

今回のHerokuアプリケーションの作成は全体的に下記の公式ドキュメント2つを参考にしました。

Herokuでサンプルボットを作成する
Getting Started with Rails 5.x on Heroku | Heroku Dev Center

Heroku CLIのインストール

最初に、コマンドライン上でHerokuを操作するためにHeroku CLIをインストールしましょう。
例のごとくHomebrewを使ってインストールします。

# brew install heroku/brew/heroku でも可
brew install heroku

参考:
devcenter.heroku.com

Herokuアプリの作成

Heroku CLIをインストールできたら、コマンドライン上でHerokuアプリの作成を進めていきます。
まずはHerokuにログインします。

heroku login
(登録したEmailとPasswordの入力)

次にアプリを作成します。
heroku create でherokuが名前を勝手につけてアプリを作成してくれますが、今回は heroku create <app_name> でアプリ名を付けて作成しましょう。

heroku create <your-app-name>
Creating ⬢ <your-app-name>... done
https://<your-app-name>.herokuapp.com/ | https://git.heroku.com/<your-app-name>.git

Herokuの各種設定

アプリのデータベースにPostgreSQLを利用しているので、それ用のHerokuのアドオンを追加します。

heroku addons:create heroku-postgresql:hobby-dev

参考:
devcenter.heroku.com

また、LINE Messaging APIの利用には下記の環境変数が必要なので登録します。
値は、この連載の第1回で確認した Channel Secretアクセストーク となります。

heroku config:set LINE_CHANNEL_SECRET=<your_line_channel_secret>
heroku config:set LINE_CHANNEL_TOKEN=<your_channel_token>

参考:
devcenter.heroku.com

Herokuへのpush

アプリの作成と各種設定が完了したので、ようやくHerokuへpushします。

git push heroku master

しばらく時間がかかります。
Herokuへのpushが完了したら、Herokuアプリの情報を確認してみましょう。
確認は heroku info で行います。

heroku info
=== amurosan-bot
Addons:         heroku-postgresql:hobby-dev
Auto Cert Mgmt: false
Dynos:          web: 1
Git URL:        https://git.heroku.com/<your-app-name>.git
Owner:          your-mail-address@mail.com
Region:         us
Repo Size:      36 KB
Slug Size:      47 MB
Stack:          heroku-16
Web URL:        https://<your-app-name>.herokuapp.com/

一番下の Web URLbotが動作しているURLとなります。
こちらのURLをLINE DevelopersのChannel設定で登録しましょう。
例えば以下のような設定となります。

f:id:shifumin:20180430175408p:plain

LINE botの完成

これでようやく連載第9回にして、オウム返しを行うだけの簡単なLINE botですが、動くものを作成することができました。
めでたいですね。

諸事情によりQRコードを消しました><(ツイートからも読み取れないことを確認済)

動作は前回の記事で貼りましたが、現在は本当にオウム返ししか行いません(行えません)。

f:id:shifumin:20180428230824p:plain

俺たちの戦いはこれからだ!
しふみん先生の次回作にご期待ください。
次回以降でこのbotの機能改善をしていこうと思います。

終わりに

今回は作成したLINE botをHerokuへとデプロイしました。
次回はローカル環境での動作確認とデバッグについて行なっていきましょう。

参考

shifumin/sample-bot-for-line-bot-api: Sample bot using Line :: Bot :: API implemented in Rails on Heroku.
https://github.com/shifumin/sample-bot-for-line-bot-api

Herokuでサンプルボットを作成する - LINE Developers
https://developers.line.me/ja/docs/messaging-api/building-sample-bot-with-heroku/

Getting Started with Rails 5.x on Heroku | Heroku Dev Center
https://devcenter.heroku.com/articles/getting-started-with-rails5

Heroku CLI | Heroku Dev Center
https://devcenter.heroku.com/articles/heroku-cli

Heroku Postgres | Heroku Dev Center
https://devcenter.heroku.com/articles/heroku-postgresql

Configuration and Config Vars | Heroku Dev Center
https://devcenter.heroku.com/articles/config-vars