LINE bot作成チュートリアルをやってみたPart2~開発編~
前回のLINE bot作成チュートリアルをやってみたPart1~環境構築~の続きから
※思ったより長くなったので開発編は分割
Railsプロジェクトの新規作成
rails new <プロジェクト名> -d postgresql
コマンド/オプション | 概要 |
---|---|
rails new | アプリケーションに最低限必要なフォルダや ファイルを自動的に作成 |
-d | データベースの種類 |
※データベースは自身の環境による。今回はPostgreSQLを指定
※プロジェクト名は任意で指定する
Rails new コマンド実行時に指定したプロジェクト名に当たるディレクトリが作成され、その配下に下記のディレクトリやファイルが作成される。
Gemファイルの編集
その前に、そもそもGemファイルってなんぞや?
項目 | 概要 |
---|---|
Gem | RubyGemsの管理ツール Ruby言語用のライブラリ |
Gemfaile | Railsで使用するGemの依存関係を管理するファイル |
Bundler | アプリケーションで使用するgemのバージョン管理を行うプログラム |
デフォルトのGemfile
source 'https://rubygems.org' git_source(:github) { |repo| "https://github.com/#{repo}.git" } ruby '2.5.1' # Bundle edge Rails instead: gem 'rails', github: 'rails/rails' gem 'rails', '~> 5.2.2' # Use postgresql as the database for Active Record gem 'pg', '>= 0.18', '< 2.0' # Use Puma as the app server gem 'puma', '~> 3.11' # Use SCSS for stylesheets gem 'sass-rails', '~> 5.0' # Use Uglifier as compressor for JavaScript assets gem 'uglifier', '>= 1.3.0' # See https://github.com/rails/execjs#readme for more supported runtimes # gem 'mini_racer', platforms: :ruby # Use CoffeeScript for .coffee assets and views gem 'coffee-rails', '~> 4.2' # Turbolinks makes navigating your web application faster. Read more: https://github.com/turbolinks/turbolinks gem 'turbolinks', '~> 5' # Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder gem 'jbuilder', '~> 2.5' # Use Redis adapter to run Action Cable in production # gem 'redis', '~> 4.0' # Use ActiveModel has_secure_password # gem 'bcrypt', '~> 3.1.7' # Use ActiveStorage variant # gem 'mini_magick', '~> 4.8' # Use Capistrano for deployment # gem 'capistrano-rails', group: :development # Reduces boot times through caching; required in config/boot.rb gem 'bootsnap', '>= 1.1.0', require: false group :development, :test do # Call 'byebug' anywhere in the code to stop execution and get a debugger console gem 'byebug', platforms: [:mri, :mingw, :x64_mingw] end group :development do # Access an interactive console on exception pages or by calling 'console' anywhere in the code. gem 'web-console', '>= 3.3.0' gem 'listen', '>= 3.0.5', '< 3.2' # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring gem 'spring' gem 'spring-watcher-listen', '~> 2.0.0' end group :test do # Adds support for Capybara system testing and selenium driver gem 'capybara', '>= 2.15' gem 'selenium-webdriver' # Easy installation and use of chromedriver to run system tests with Chrome gem 'chromedriver-helper' end # Windows does not include zoneinfo files, so bundle the tzinfo-data gem gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]
項目 | 概要 |
---|---|
source | gemが置いてある場所を指定する |
git_source | Gitレポジトリが置いてある場所を指定する |
ruby | アプリケーションを実行するRubyのバージョンを指定 |
gem | 使用するgemを指定する |
group | gemをインストールする環境を指定 |
バージョン指定方法
指定方法 | 概要 |
---|---|
x.x.x | バージョンを固定 |
>= x.x.x | x.x.x以上のバージョンが必要 |
>= x.x.x, < y.y.y | x.x.x以上、y.y.y以下のバージョンが必要 |
~> x.0 | メジャーバージョンは固定で、マイナーバージョンは0~9が使用可能 |
デフォルトのGemファイルを例にすると
ruby '2.5.1'
→ruby '2.5.1'でバージョンを固定
gem 'rails', '~> 5.2.2'
→Rails 5.2.2のメジャーバージョンは固定でマイナーバージョンは2.2以上が可能
gem 'pg', '>= 0.18', '< 2.0'
→ pg 0.18以上、pg 2.0 以下のバージョンが必要
となる
Line Messaging API
今回のLINEbotの作成にあたって必須のAPIがMessagingAPI(line-bot-api)
となります。
MessagingAPI(line-bot-api)
はざっくり以下の2つに分類
Push API
①LINEを介してメッセージを自動送信する機能
Reply API
①LINEを介してメッセージを受信する機能
②受信したメッセージをプログラムされた通りに処理する機能
③処理した結果をLINEを介して送信する機能
また、使用するプランによって料金体系が違います
参考:LINE公式/プラン料金
一応公開して反応を見たいのでPush APIは使えないが制限のないフリープランでいこうと思う
LINE Developersの公式サイトに各種ドキュメントがあるので諸々参考にする
公式Messaging APIドキュメント一覧
LINE Messaging APIを使用する為に
公式のドキュメントよりMessaging APIを利用する為には以下の手順が必要とのこと
Messaging APIを使ってボットを作成するには、以下の手順に従います。
1.チャネルを作成する
2.ボットを作成する
ボットは後で作るので先ずは1.チャネル
から
チャネル作成
LINE Developersコンソールにログイン
初めてログインする場合、開発者登録画面が表示されるので開発者名
とメールアドレス
を入力し、LINE Developers Agreementの内容に同意します。
にチェックを入れて確認画面に進む
を押下
確認画面に遷移するので、内容を確認し問題がなければこの内容で作成する
を押下する
LINE Developersトップ画面右上のアカウントアイコンをクリック
開発者情報のページに遷移したら認証用メールを送信
を押下する
認証用のメールを受信するのでメールアドレスの認証リンク
をクリックする
※認証用メールには有効期限があるので注意
再度、開発者情報のページに戻り、認証済になったことを確認する
開発者情報のページ下部のプロバイダーリスト
を押下
プロバイダーリスト画面より、新規プロバイダー作成
を押下
新規プロバイダー作成画面にて任意のプロバイダー名
を入力して確認する
を押下
確認画面にてプロバイダー名を確認し、問題がなければ作成する
を押下
作成完了画面に遷移するのでそのまま新規チャネルを作成する為、真ん中のMessaging API チャネルを作成する
を押下
新規チャネル作成画面にてアプリアイコン
、アプリ名
、アプリ説明
、プラン
、大業種
、少業種
、メールアドレス
をそれぞれ入力/登録して入力内容を確認する
を押下
アプリアイコン…だと…
※テスト用なんで適当なフリー素材で済ませる
今回、プランはフリー
を選択
利用規約が表示されるので同意する
を押下
また、確認画面下部に利用規約のチェックボックスがあるのでそれぞれチェックを入れて作成
を押下
プロバイダー画面にて先程作成されたチャネルが表示されていれば作成完了
思ったより長かった…
Amazon API
参考
【Rails】Amazon APIで書籍検索アプリ作成
[Ruby] Amazon Product APIで商品検索してみた
今回はAmazonからデータを取得するLINEbotを作成するのでAmazon API
のgemであるamazon-ecs
を使用
※ecsと聞くとAWSのElastic Container Service
の方をイメージしちゃって若干混乱
Amazon APIの登録
Product Advertising API 開発者として登録する
アソシエイトへの登録
ライセンス契約を読む
※参照 Product Advertising API開発者ガイド(日本語)
他のブログ記事を読むとAPI開発者登録とアソシエイト登録の順序が逆が殆ど…
Product Advertising API
のページ自体がアソシエイトページ内にあるので恐らくアソシエイト登録が先…
Amazonアソシエイトにアクセスしてアソシエイト登録を行う
アソシエイト登録完了後、Amazon Product Advertising APIを開き、利用をはじめる
を押下
認証情報のダウンロード
画面が表示されるので認証情報をダウンロードする
を押下してcsvをダンロードする
※認証情報csvは基本このタイミングでしかダウンロード出来ないので必ずダウンロードして、保管する
※シークレットキーを忘れたたりcsvを紛失した場合、下の画像を参考に既存の認証情報を削除して再度認証情報を作成する
環境変数の設定
後々、Line Messaging API
とAmazon API
の環境変数を設定の際にあると便利なものらしい
使用するGemはdotenv-rails
Gemfileに追記
Gemfileバックアップ作成
cp -pi Gemfile Gemfile.org
Gemfileファイル末尾に追記
echo -e "\ngem 'line-bot-api'\n\ngem 'dotenv-rails'\n\ngem 'amazon-ecs'" >> Gemfile
diffでバックアップファイルとの差分確認
diff Gemfile Gemfile.org
bundle install
プロジェクトディレクトリにて、Gemfileに記述された依存ライブラリのインストールを実行
pwd bundle install
下記の様にメッセージが出力されれば成功
Bundle complete! 21 Gemfile dependencies, 84 gems now installed. Use `bundle info [gemname]` to see where a bundled gem is installed.
上手くいっている模様
コントローラーの作成
コントローラーとはなんぞや?
参考:Rails controllerを徹底解説!知っておくべき3つの知識も紹介
Railsのcontrollerとは、一言で言うと、「パソコン(ブラウザ)からのリクエストを受け取り、model・viewと連携しながら結果をブラウザに送る(レスポンス)役割を担う部分」です。
らしい
modelとはなんぞや?
参考:Railsのmodelを徹底解説!知っておくべき3つの知識も紹介
Railsのmodelとは、「データベースとのやり取りを行うクラスのこと」です。
らしい
viewとはなんぞや?
これら3つでMVCアーキテクチャ
*1と呼ぶらしい
rails g controller <コントローラ名>
コントローラー名は任意
オプション | 概要 |
---|---|
g(generate) | 生成 |
結果
コントローラー生成の確認
cd app/controllers/ pwd ls
linebot_controller.rb
が生成されていますね
デフォルトのcontrollerの中身
class LinebotController < ApplicationController end
ここから細かい処理を公式のドキュメントなどを参考にcontrollerに書き込んでいくわけですが、余り複雑にせずシンプルに先ずは動作させる事を目指す…
*1:model view controller