しふみんのブログ

しふみんのブログです。

Heroku+RailsでLine botを作る 第7回 はじめてのgit commit

前回までのあらすじ

第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回: shifumin.hatenablog.com

LINEデベロッパー登録を終え、必要なAPIキーである「Channel Secret」と「アクセストークン」を手に入れました。
また、Railsアプリが動作する環境を整えました。
そして、Railsアプリを作成し、動作することを確認しました。
今回はアプリが動作することも確認できたことですし、現在の内容でgitでcommitしていきましょう。
(LINE botの雛形を作成するところまで進められず……)

git commit

gibo

git commit する前の準備として、.gitignoreをいい感じに整えるためにまずgiboを導入します。
.gitignoreというのはその名前の通り、gitの管理上無視する(ignore)するファイル(orディレクトリ)を指定するためのファイルです。
例えば、ログファイルや一時ファイルはバージョン管理をする意味がないですし、パスワード等の秘匿情報はバージョン管理すること事態が危険です。
そういったファイルを.gitignoreで指定します。
giboについては下記をご参照ください(定期投げ)

github.com qiita.com

それでは、Homebrewでgiboをインストールしましょう。

brew install gibo

インストールが完了したら、下記のgiboコマンドで.gitignoreを更新します。
gibo railsRails用の.gitignoreの内容を出力し、リダイレクト演算子 >| で.gitignoreに渡し上書きしています。

gibo rails >| .gitignore

.gitignoreの内容は下記のリンク先のRails用のものと同内容になったはすです。

github.com

git commit

.gitignoreをRails用のものに更新できたら、 git commit していきましょう。
コマンド群として下記のようになります。
git add コマンドは新規ファイルを、あるいは内容に変更があったファイルをgitの管理下に追加するコマンドです(苦しい説明)
. オプションを付けるとカレントディレクリの全ファイル(ディレクトリ)を対象に取ります。
コミットは git commit コマンドで行います。
-m オプションはコミットメッセージを付け加えるためのものです。
今回はRailsアプリを作成したということで create app としておきましょう。

git add .
git commit -m "create app"

gitは内容がドチャクソあるので詳しくは下記を合わせてご参照ください(投げ)

qiita.com kray.jp

また、 git log コマンドを使うと過去のコミット情報を見ることができます。
例えば、 --stat オプションを付けると変更ファイル名とその行数も合わせて表示させることができます。

git log  --stat

上記の git log --stat コマンドで確認すると下記のような出力になるはずです。
誰がいつコミットしたか、コミットメッセージ、変更のあったファイルとその行数等が分かりますね。

commit a75fe4bdf4dd9e5bfd866ad3bd4af32cda787c5d (HEAD -> master)
Author: shifumin <shifumin_no_honyarara@mail_adress.com>
Date:   Thu Apr 26 22:28:54 2018 +0900

    create app

 .gitignore                                             |  53 +++++++++++++++++++
 .ruby-version                                          |   1 +
 Gemfile                                                |  57 ++++++++++++++++++++
 Gemfile.lock                                           | 193 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 README.md                                              |  24 +++++++++
 Rakefile                                               |   6 +++
 app/assets/config/manifest.js                          |   3 ++
 app/assets/images/.keep                                |   0
 app/assets/javascripts/application.js                  |  16 ++++++
 app/assets/javascripts/cable.js                        |  13 +++++
 app/assets/javascripts/channels/.keep                  |   0
 app/assets/stylesheets/application.css                 |  15 ++++++
 app/channels/application_cable/channel.rb              |   4 ++
 app/channels/application_cable/connection.rb           |   4 ++
 app/controllers/application_controller.rb              |   2 +
 app/controllers/concerns/.keep                         |   0
 app/helpers/application_helper.rb                      |   2 +
 app/jobs/application_job.rb                            |   2 +
 app/mailers/application_mailer.rb                      |   4 ++
 app/models/application_record.rb                       |   3 ++
 app/models/concerns/.keep                              |   0
 app/views/layouts/application.html.erb                 |  15 ++++++
 app/views/layouts/mailer.html.erb                      |  13 +++++
 app/views/layouts/mailer.text.erb                      |   1 +
 bin/bundle                                             |   3 ++
 bin/rails                                              |   4 ++
 bin/rake                                               |   4 ++
(以下略)

git log もオプションが大量にあるためその他オプション等はググるか下記等をご参照ください。

qiita.com

終わりに

今回はアプリをgitで管理するために記念すべきはじめての git commit を行いました。
次回こそはLINE botの雛形を作成していきましょう。

参考

simonwhitaker/gibo: A shell script for easily accessing gitignore boilerplates
https://github.com/simonwhitaker/gibo

気付いたら.gitignoreはgiboで自動生成する時代になっていた - Qiita
https://qiita.com/tmknom/items/c4bcebe17d25381fa45d

gitignore/Rails.gitignore at master · github/gitignore
https://github.com/github/gitignore/blob/master/Rails.gitignore

【Git】基本コマンド - Qiita
https://qiita.com/konweb/items/621722f67fdd8f86a017

Git初心者に捧ぐ!Gitの「これなんで?」を解説します。 | KRAY Inc
http://kray.jp/blog/git-why-explanation/

git log よく使うオプションまとめ - Qiita
https://qiita.com/take4s5i/items/15d8648405f4e7ea3039

Heroku+RailsでLine botを作る 第6回 Railsアプリの作成

前回までのあらすじ

第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回: shifumin.hatenablog.com

LINEデベロッパー登録を終え、必要なAPIキーである「Channel Secret」と「アクセストークン」を手に入れました。
また、必要なパッケージの導入し、Rubyをインストールしました。
そして、プロジェクトディレクトリをバージョン管理できるようにGitリポジトリ化しました。
さらに、Bunblerを導入してrails gemをインストールしました。
今回は、(本当に!やっと!)Railsアプリを作成していきたいと思います。

rails new

ようやくのようやくで、Railsアプリの作成コマンドの実行までたどり着きました!
下記の rails new コマンドでRailsアプリを作成します。
コマンド実行後にOverwriteするかを聞かれたら全て y で問題ありません。

bundle exec rails new . --database=postgresql --skip-bundle --skip-test

rails new の各オプションの詳細は下記をご参照ください(投げ)

railsコマンド(rails) - - Railsドキュメント

それぞれのオプション他を軽く一言説明をしますと、

  • bundle exec
    • Bundlerでインストールしたカレントディレクリのgemのrailsコマンドを使用する
  • .
    • カレントディレクリにRailsアプリを作成する
  • --database=postgresql
  • --skip-bundle
    • bundle installを行わない -> 後で手動で行うため
  • --skip-test
    • test::unitを組み込まない -> この連載では(今のところは)テストを省略します

となります。
加えて、1点だけ補足説明しておきます。
前回の第5回の記事で bundle instlal したと思います。
あの bundle installrails gemをインストールするためのものです。
そして、実はもう一度 bundle install する必要があります。
次の bundle installRailsアプリを動かすために必要な他のgemをインストールするためのものになります。

ls -la で確認すると下記のようにRailsアプリの各ファイルが作成されていることと思います。

ls -la
total 32
drwxr-xr-x 22 shifumin staff  704  4 24 23:33 .
drwxr-xr-x 11 shifumin staff  352  4 22 11:51 ..
drwxr-xr-x  3 shifumin staff   96  4 24 22:09 .bundle
drwxr-xr-x  9 shifumin staff  288  4 24 23:33 .git
-rw-r--r--  1 shifumin staff  604  4 24 23:33 .gitignore
-rw-r--r--  1 shifumin staff    5  4 24 23:33 .ruby-version
-rw-r--r--  1 shifumin staff 1969  4 24 23:33 Gemfile
-rw-r--r--  1 shifumin staff 2911  4 24 22:11 Gemfile.lock
-rw-r--r--  1 shifumin staff  374  4 24 23:02 README.md
-rw-r--r--  1 shifumin staff  227  4 24 23:02 Rakefile
drwxr-xr-x 10 shifumin staff  320  4 24 23:33 app
drwxr-xr-x  8 shifumin staff  256  4 24 23:33 bin
drwxr-xr-x 16 shifumin staff  512  4 24 23:33 config
-rw-r--r--  1 shifumin staff  130  4 24 23:33 config.ru
drwxr-xr-x  3 shifumin staff   96  4 24 23:33 db
drwxr-xr-x  4 shifumin staff  128  4 24 23:33 lib
drwxr-xr-x  3 shifumin staff   96  4 24 23:33 log
-rw-r--r--  1 shifumin staff   66  4 24 23:33 package.json
drwxr-xr-x  9 shifumin staff  288  4 24 23:33 public
drwxr-xr-x  3 shifumin staff   96  4 24 23:33 storage
drwxr-xr-x  5 shifumin staff  160  4 24 23:33 tmp
drwxr-xr-x  4 shifumin staff  128  4 24 23:33 vendor

しかし、まだRailsアプリは動きません。
なぜならRailsアプリを動かすために必要な各gemがインストールされていないためです。
中身は載せませんが、 rails new 前は gem "rails" の行のみでしたGemfileにRailsアプリを動かすために必要な様々なgemが追加されていると思います。
これらのgemをインストールしていく必要があります。

line-bot-sdk-ruby gemの追加

追加されたgemをインストールする前にLINE bot開発に必要なgemを追加します。
下記の line-bot-api です。

github.com

Gemfileの一番最後に gem 'line-bot-api' の行を追加しましょう。
line-bot-apiの機能や使い方については実装時に追々見ていくことにします。

(前略)
# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]

gem 'line-bot-api'

余談ですが、gem名の記述が bundle init で作成したGemfileは "" で括られており、 rails new で上書き作成したGemfileは '' で括られていることを今回初めて知りました。
不思議ですね。

bundle install

2回目の bundle install です。
初回時に --path vendor/bundle オプションをつけていた場合、2回目以降はつけなくても ./vendor/bundle にインストールされます。
Bundlerの設定ファイルである .bundle/config の中身を見てみると、下記のように BUNDLE_PATH の設定があると思います。
これのおかげで、2回目以降は --path オプションが必要ないというわけです。

 ---
 BUNDLE_PATH: "vendor/bundle"

それでは追加されたgemを bundle install でインストールしましょう(今回も数分ほどかかるはずです)

bundle install

これで、ようやくRailsアプリを起動させる準備が整いました(大嘘)

rails s

Railsアプリ(のサーバ)を起動させるには rails s コマンドを利用します。

bundle exec rails s # bundle exec rails server でも bin/rails s でも bin/rails server でも可

下記のような出力が出るはずです。

=> Booting Puma
=> Rails 5.2.0 application starting in development
=> Run `rails server -h` for more startup options
Puma starting in single mode...
* Version 3.11.4 (ruby 2.5.1-p57), codename: Love Song
* Min threads: 5, max threads: 5
* Environment: development
* Listening on
Use Ctrl-C to stop

Railsアプリが起動しましたね。
ちなみに、先に書いておくとアプリの起動を止める方法は最後の行に書いてあるように Ctrlボタン + C 同時押しです。

Railsアプリを起動させた状態でブラウザで確認してみましょう。
ローカル環境(Mac)で rails sRailsアプリを起動させた場合は http://localhost:3000/ でアプリを確認できます。
それではブラウザで確認してみます。

f:id:shifumin:20180425235639p:plain

Oh……

PG::ConnectionBad というエラーが出ていますね。
could not connect to server と怒られました。
そうです、データベースサーバのPostgreSQL(PG)の準備を何もしていないからです。

PostgreSQLのインストール

PostgreSQLについては下記をご参照ください(定期投げ)

(公式サイトがメンテ中なので後でここに貼ります)

インストール方法その他の詳細についてはこちらをご参照ください。

qiita.com

Homebrewでインストールし、データベースクラスタRuby(Rails)のデフォルトエンコーディングである UTF-8 で初期化します。

brew install postgresql
initdb /usr/local/var/postgres -E utf8

初期化が完了したら、下記のコマンドでPostgreSQLサーバを起動させます。

brew services start postgresql # 停止コマンドは brew services stop postgresql

それでは、PostgreSQLサーバも起動させたことですし、再びRailsアプリを起動させてブラウザで確かめてみましょう。

bundle exec rails s

f:id:shifumin:20180425235540p:plain

Oh……(2回目)
今度は ActiveRecord::NoDatabaseError というエラーが出ました。
FATAL: database "line_bot_development" does not exist とデータベースがないって怒られていますね。
そうです(2回目)、DBサーバは起動させましたが、肝心のデータベースをまだ作成していません。
データベースの作成(初期化)はrailsコマンドが良きに計らってやってくれます。
下記の rails db:create コマンドです。

bundle exec rails db:create
Created database 'line_bot_development'
Created database 'line_bot_test'

データベースが作られました(開発環境用DBとテスト用DB)
これで本当の本当の本当にRailsアプリを起動させる準備が整いました(真)

rails s再び

それでは、 rails sRailsアプリを起動させてブラウザで http://localhost:3000/ を確認しましょう。

bundle exec rails s

f:id:shifumin:20180425235424p:plain

無事にRailsアプリが起動できましたね。
お疲れ様でした(僕が)(今回の記事は長かった……)

終わりに

今回はRaisアプリの作成を行い、起動させ、確認しました。
次回はこのRails上にbotの実装を進めていきましょう。
ようやく本編がスタートする気がします。

参考

railsコマンド(rails) - - Railsドキュメント
http://railsdoc.com/rails

line/line-bot-sdk-ruby: Line: :API - SDK of the LINE Messaging API for Ruby.
https://github.com/line/line-bot-sdk-ruby

MacにPostgreSQL9.6.3をインストールしてみた - Qiita
https://qiita.com/uhooi/items/cd6256a72c6a03621c09

Heroku+RailsでLine botを作る 第5回 Bundlerの導入

前回までのあらすじ

第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回: shifumin.hatenablog.com

LINEデベロッパー登録を終え、必要なAPIキーである「Channel Secret」と「アクセストークン」を手に入れました。
また、必要なパッケージの導入し、Rubyをインストールしました。
そして、プロジェクトディレクトリをバージョン管理できるようにGitリポジトリ化しました。
今回は、Bundlerの導入を行っていきたいと思います(また、Railsアプリの作成まで辿り着けなかったよ……)

Bundlerとは

Rails(Ruby)アプリはBunlderというgem管理システムを導入することが多いです。
Ruby用のライブラリ(便利ツール的なもの)は「gem」という形で提供されています。
例えば、Railsもgemの形で提供されています。
このgemをGemfile(とGemfile.lock)というファイルで管理するためのシステムがBundlerです。
インストールするgemの種類・バージョン管理しているGemfile(Gemfile.lock)さえあれば同じgemの環境を整えることが容易であるため、複数人や複数の環境で開発を行う場合に役立ちます。

詳しくは下記を見てください(いつも通りの投げ)

Bundler: The best way to manage a Ruby application's gems qiita.com

Bundlerのインストール

そういうわけで、Bundlerをインストールしていきます。
念のため、gem自体をアップデートしてからBundlerをインストールします。

gem update --system
gem install bundler
bundle --version # bundle -v でも可
Bundler version 1.16.1

Bundlerがインストールされました。

Gemfileの準備

続けてBundlerで使用するGemfileの準備に進みます。
Gemfileとはインストールするgemの種類やバージョンを記載するファイルです。
まず、 bundle init でGemfileを作成します。

bundle init
Writing new Gemfile to /Users/shifumin/project/line_bot/Gemfile

Gemfileが作成されましたので開いて内容を確認します。

vim Gemfile # お使いのエディタでGemfileを開いてください(以下略)
# frozen_string_literal: true

source "https://rubygems.org"

git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }

# gem "rails"

上記のようなGemfileになっているはずです。
まず、Railsアプリを実行するRubyのバージョンを明示するために ruby "2.5.1" の行を追加しましょう(バージョンは適宜ご変更ください)
次に、Railsをインストールするために gem "rails"コメントアウトを外しましょう。
また、一応Railsのバージョンを固定しておきましょう。
バージョンを固定する理由は、バージョンを固定しないとBundlerでgemをインストールする時期によってインストールされるgemのバージョンが左右されてしまうためです(やや曖昧な説明。許して)
バージョンが異なるとgemの挙動が変わって意図しない挙動をする場合があります(バグの温床になる)
例えば、現在(2018年4月24日)はバージョンを固定しない場合はRailsは5.2.0がインストールされますが、もう少し先の未来にはそれが5.2.1, 5.2.2, あるいは5.3.0になったりするはずです。
それでは、下のようにGemfileを修正しましょう。

# frozen_string_literal: true
ruby "2.5.1"

source "https://rubygems.org"

git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }

gem "rails", "5.2.0"

rails gemのインストール

下記の bundle install コマンドでrails gemをインストールします。

bundle install --path vendor/bundle

--path vendor/bundle のオプションを付けています。
pathを指定する理由は、pathを指定しないとシステム配下にgemがインストールされてしまうためです。
今回インストールするgemはこのbot作成のためだけにインストールするので、プロジェクトディレクトリ配下にインストールされるようにpathを指定します。
詳しくは下記の公式ドキュメントの真ん中らへんをご参照ください。

Bundler: The best way to manage a Ruby application's gems

初回のインストールには数分かかるはずです。

Fetching gem metadata from https://rubygems.org/..........
Fetching gem metadata from https://rubygems.org/.
Resolving dependencies...
Fetching rake 12.3.1
Fetching concurrent-ruby 1.0.5
(中略)
Fetching rails 5.2.0
Installing rails 5.2.0
Bundle complete! 1 Gemfile dependency, 41 gems now installed.
Bundled gems are installed into `./vendor/bundle`

Rails gem(とその依存関係のgem)は ./vendor/bundle/ にインストールされました。

終わりに

今回はBundlerを導入し、rails gemをインストールしました。
次回こそ、本当の本当にRailsアプリの作成を行なっていきましょう(三度目の正直)
この次に実行するコマンドが rails new であるため次回の記事で大丈夫(?)なはずです。。。

参考

Bundler: The best way to manage a Ruby application's gems
http://bundler.io/

Bundlerの使い方 - Qiita
https://qiita.com/oshou/items/6283c2315dc7dd244aef

bundle install - Bundler: The best way to manage a Ruby application's gems http://bundler.io/v1.16/bundle_install.html

Heroku+RailsでLine botを作る 第4回 Gitリポジトリの作成

前回までのあらすじ

shifumin.hatenablog.com shifumin.hatenablog.com shifumin.hatenablog.com

LINEデベロッパー登録を終え、必要なAPIキーである「Channel Secret」と「アクセストークン」を手に入れました。
そして、必要なパッケージの導入し、Rubyをインストールしました。
今回は、プロジェクトをバージョン管理できるようにGitリポジトリを作成していきたいと思います。
(前回の次回予告で、今回は「Railsアプリの作成」を行うと書いた気がしますが、まだ全然そこまで辿り着けない!)

Gitとは

Gitとは、リポジトリとは、人生とは……。
それ(人生を除く)を説明するとそれだけでこの連載が15回分くらい増えるので、詳しくはググってください。
あるいは下記の記事群が参考になります。

Git backlog.com qiita.com

しかしながら、Gitには関しては全体を網羅しようとすると分量が多すぎるため、利用しながら適宜調べていく方が無難であると思います。この連載では、新しいgitのコマンドが出てきた場合はその都度簡単な解説を加えることとします。

ここで、Gitを簡単に説明すると「バージョン管理するためのツール」で、
バージョン管理とは、「プログラムの状態をバージョンとして管理すること」で、
リポジトリとは「バージョン管理する対象」となります。

bot開発を例に取ると、

  • 「オウム返し」機能を実装した <- ここでセーブ
  • 「おはよう」機能を実装した <- ここでセーブ
  • 「ゴミ出し日通知」機能を実装した <- ここでセーブ

上記のように機能を追加した節目で状態(バージョン)をセーブ(コミット)して、後でどのような機能を追加したかを振り替えしやすくしたり(コミットごとにコメントを残せる)、いざという時に過去のバージョンに戻せたりできます。
プログラムの開発を進めていくと、例えばバグが混在している場合など、今の状態から修正を加えるよりもある時点の状態に戻してそこからもう一度機能を追加した場合の方が結果的に作業が早い場合が往往にしてあります。そういった場合にGitでのバージョン管理が役立ちます。
バグは怖いですね。

Gitの初期設定

さて、それではgitの初期設定を行いましょう。
既に行なっている方は飛ばしてください。

git config —global user.name {ユーザー名}
git config —global user.email {メールアドレス}

ちなみに、ユーザー名もメールアドレスも適当なものでも特に問題ありません。

リポジトリの作成

Railsアプリの作成の前にプロジェクトディレクトリをgitリポジトリ化しましょう。
リポジトリの作成(初期化)には git init を使います。

git init
Initialized empty Git repository in /Users/shifumin/project/line_bot/.git/

ls -la で確認した時に .git が存在していればリポジトリ化されています。

ls -la
total 4
drwxr-xr-x  4 shifumin staff 128  4 23 01:01 .
drwxr-xr-x 11 shifumin staff 352  4 22 11:51 ..
drwxr-xr-x  9 shifumin staff 288  4 23 01:01 .git
-rw-r--r--  1 shifumin staff   6  4 22 12:36 .ruby-version

これでプロジェクトディレクトリをgitでバージョン管理できるようになりました。

終わりに

今回はプロジェクトのバージョン管理を行うためにGitリポジトリを作成しました。
次回こそ本当にbotの機能を実装するRailsアプリの作成を行なっていきましょう(二度目の正直)

参考

Git
https://git-scm.com/

サルでもわかるGit入門 〜バージョン管理を使いこなそう〜 | どこでもプロジェクト管理バックログ
https://backlog.com/ja/git-tutorial/

Gitの基礎 - Qiita
https://qiita.com/satoshi1335/items/ead109412430a078feaa

Heroku+RailsでLine botを作る 第3回 Rubyのインストール

前回までのあらすじ

shifumin.hatenablog.com shifumin.hatenablog.com

LINEデベロッパー登録を終え、必要なAPIキーである「Channel Secret」と「アクセストークン」を手に入れました。
そして、必要なパッケージの導入を行いました。
今回は、botの実行環境であるRubyをインストールしていきたいと思います。

プロジェクトディレクトリの作成

まずは、今回作成するbotのプログラムを置くディレクトリを用意しましょう。
mkdirディレクトリを作成し、 cd で作成したディレクトリに移動します。

mkdir line_bot
cd line_bot

僕の場合は下記のディレクトリで作業を進めていくことにします。
( pwd は現在のディレクトリのpathを返します)

pwd
/Users/shifumin/project/line_bot

rbenvとは

github.com

今回は前回の記事で導入したrbenvを使ってRubyをインストールしていきます。
前回は何も説明しませんでしたが、rbenvは簡単に言うと、「インストールするRubyのバージョンを管理するためのパッケージ」です。具体的には、例えばプロジェクトA(ディレクトリ /path/to/project_a)だとRubyのバージョン2.4.0を使いたいけど、プロジェクトB(/path/to/project_b)ではRubyのバージョン2.5.0を使いたいといった場合に役立ちます。
つまり、ディレクトリごとに動かすRubyのバージョンを変えたい場合に役立つパッケージということですね。rbnevがないと、例えば、MacにRuby2.5.0をインストールするとMacの中でRubyを動かす場合は全て2.5.0になってしまいます。

rbenvの各コマンドは下記に詳しくまとまっており、参考にさせていただきました。

qiita.com

Rubyのインストール

それでは、Rubyのインストールを進めていきます。
まず、インストールできるRubyのバージョンを調べます。

rbenv install --list # rbenv install -l でも可

出力の真ん中ら辺を見てみますと

(前略)
2.4.4
2.5.0-dev
2.5.0-preview1
2.5.0-rc1
2.5.0
2.5.1
2.6.0-dev
2.6.0-preview1
jruby-1.5.6
(後略)

現時点でのRubyの安定版の最新バージョンはどうやら 2.5.1 のようです。 なので、2.5.1をインストールしましょう(数分ほど時間がかかります)

rbenv install 2.5.1

次にこのプロジェクト(ディレクトリ)で使用するRubyのバージョンを指定します。
(その後、念のためrehashします)

rbenv local 2.5.1
rbenv rehash

rbenv local でのRubyバージョンを指定すると、カレントディレクトリに .ruby-version というファイルができます。
このファイルの中身を見てみましょう。
僕はエディタはVimを使っていますので、この連載の下記以降でvimが出てきた時はお使いのエディタに差し替えてください。

vim .ruby-version

.ruby-versionの中身は下記のようになっているはずです。

2.5.1

また、下記のコマンドでRubyのバージョンを確認しましょう。

ruby --version # ruby -v でも可
ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-darwin17]

Rubyのバージョン2.5.1がインストールされていることを確認できました。

終わりに

今回でbotを作成するプロジェクトディレクトリを作成し、そこにRubyの実行環境を整えることができました。 次回はbotの機能を実装するRailsアプリの作成を行いたいと思います(先は長い……)

参考

rbenv/rbenv: Groom your app’s Ruby environment
https://github.com/rbenv/rbenv

[rbenv]コマンド備忘録 - Qiita
https://qiita.com/a_ishidaaa/items/8cc14453289dba1413dd

Heroku+RailsでLine botを作る 第2回 必要なパッケージの導入

前回までのあらすじ

shifumin.hatenablog.com

LINEデベロッパー登録を終え、必要なAPIキーである「Channel Secret」と「アクセストークン」を手に入れました。
今回は必要なパッケージの導入を行っていきたいと思います。

この連載記事を書いている環境

そう言えば、bot作成を進めている(まだ進まっていないが)環境について書いていなかった気がします。 この連載はMacの上記の環境のもとで進めています。
Windowsの人は頑張ってください!
しかしながら、WindowsLinuxもパッケージの導入部分は異なりますが、それ以外は一緒の気はしています。

必要なパッケージの導入

  • git
  • rbenv
  • ruby-build

最低限、上記があればHeroku + Railsの開発は進められると思います。
不足するものがあればその都度インストールしていくことにしましょう。

github.com

github.com

以下、それっぽいコマンドは全てターミナルのコマンドラインで実行するものとします。
また、Homebrewはインストール済であるものとします。 未インストールなら下記を参考にしてください。

brew.sh

下記のコマンドで各パッケージをHomebrewでインストールして、rbenvのpathと初期起動をbashの設定ファイルに追記します。
shellがbashじゃない人は適時置き換えてください。

brew install git
brew install rbenv
brew install ruby-build

echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
echo 'if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi' >> ~/.bash_profile
source ~/.bash_profile

僕はこの記事を書いている時に知りましたが、 rbenv-doctor というスクリプトがあり、 rbenvが適切にインストールされたかを確認できるようです。
参考: https://github.com/rbenv/rbenv#homebrew-on-macos

(curlが必要なので、なければ brew install curl でインストール)

curl -fsSL https://github.com/rbenv/rbenv-installer/raw/master/bin/rbenv-doctor | bash

僕の環境だとanyenv経由でrbenvを利用しているので下記のようになりましたが、似たように感じの出力があればインストールに成功していると思います。

 ~ curl -fsSL https://github.com/rbenv/rbenv-installer/raw/master/bin/rbenv-doctor | bash
Checking for `rbenv' in PATH: /Users/shifumin/.anyenv/envs/rbenv/bin/rbenv
Checking for rbenv shims in PATH: OK
Checking `rbenv install' support: /Users/shifumin/.anyenv/envs/rbenv/plugins/ruby-build/bin/rbenv-install (ruby-build 20171226)
Counting installed Ruby versions: 2 versions
Checking RubyGems settings: OK
Auditing installed plugins: OK

パッケージの導入は下記を参考にさせていただきました。
(自分の環境は既に導入済かつZshとanyenvを利用しているため)

qiita.com

終わりに

今回でHeorku + RailsでLINE botを開発するために必要なパッケージを導入できました。
次回はbot開発のためにRubyの環境を整えていこうと思います。

参考

macOS 用パッケージマネージャー - Homebrew
https://brew.sh/index_ja

rbenv/rbenv: Groom your app’s Ruby environment
https://github.com/rbenv/rbenv

rbenv/ruby-build: Compile and install Ruby
https://github.com/rbenv/ruby-build

Heroku+RailsでLINE botを作る 第1回 LINEデベロッパー登録

はじめに

はい、というわけでね、今回から複数回に分けてLINE botを作成していこうと思います。
構成は、Line::Bot::APIRailsから呼び出して、そのRailsはHerokuに乗せて動かすという形にします。 第1回の今回はLINEデベロッパー登録を行っていきます。

※ この連載は諸事情(飽き)により予告なく終了する可能性が十分にございます。あらかじめご了承ください。

LINEデベロッパー登録

まずはLINEデベロッパー登録を行います。 その後にプロバイダーとチャネルを作成し、必要なAPIキーを取得しましょう。

Messaging APIを利用するには
https://developers.line.me/ja/docs/messaging-api/getting-started/

詳しくは公式の上記を見てください。
で終わるので、下に補足説明の箇条書きと参考画像を乗せます。

  • アクセストークン(ロングターム) : 再発行する
  • Webhook送信 : 利用するを選択する
  • Botグループトーク参加 : 利用するを選択する
  • 自動応答メッセージ : 利用しないを選択する
  • 友だち追加あいさつ : 利用しないを選択する

botを作成する上で必要になるのが下記の2つです。
これらのキーを控えておきます(下記参考画像の赤枠)

参考画像

https://gyazo.com/fff187b8df2919a00873d00bb7b2e20a Image from Gyazo

LINE bot作成依頼主の依頼でbotのアイコンと名前はこんなになっていますが、問題がありそうなら差し替えます。許して。

終わりに

LINEデベロッパー登録を終えて、LINE bot作成に必要なChannel Secretとアクセストークンが手に入りました。
これらを使って次回からbot本体の作成に取り掛かっていこうと思います。

参考

Messaging APIを利用するには
https://developers.line.me/ja/docs/messaging-api/getting-started/