Shoeisha Technology Media

CodeZine(コードジン)

記事種別から探す

LINE Bot開発の概要と実装の基本

日本一わかりやすいLINE Bot開発講座 第2回

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2016/12/14 14:00

 本連載では、今後広がっていくであろうbotの開発手法を、LINE Botを例として解説していきます。開発はPHP、サーバーはHerokuのフリーアカウントを利用するので簡単に、そして無料で運用が可能です。第2回となる今回は、前回動かしてみた完成済みプロジェクトを自分で一から作りながら、LINE Botの全体像、プロジェクトに必要なもの、基本的な実装と動きを解説します。LINE Bot SDKのインストール方法から始め、Procfileを用いたサーバーの設定、最後にコードを書いて実際にデプロイするところまでを行います。

目次

LINE Bot Awardsエントリー受付中!(2017年2月22日まで)

 グランプリ賞金1000万円のLINE Bot Awards、エントリー絶賛受付中です。他にも賞金50万円の9部門、そして学生賞は賞金100万円となっています。革新的なBotを開発して入賞を狙いましょう!

(「LINE Bot Awards」より引用)
(「LINE Bot Awardsのページ」より引用)

はじめに

 まずはLINE Bot SDKをプロジェクトに組み込み、使える状態にしましょう。SDKとはソフトウェアを開発するために必要な技術文書やツールなど一式のことで、始めから用意された便利なクラスなどを用いて面倒なコードを書くことなく分かりやすく、簡単にLINE Botの持つ機能にコードからアクセスできるようになります。

 また、HerokuではProcfileというファイルを使ってプロジェクトを動かす環境を細かく設定できます。こちらは本連載では詳しく触れませんが、Webサーバーの設定のみ行います。

 スクリプトは、PHPを使って書いていきます。

対象読者

  • Webアプリケーション開発経験者
  • スマートフォンなどのアプリ開発経験者

必要な環境

 PHPが利用できる環境でしたら、どのような環境でも開発が可能ですが、解説はMacで行い、Windows環境で手順に違いがある場合は都度解説します。

 筆者の環境はMac OS X El Capitan(10.11.6)、PHPのバージョンは5.6.25です。

準備

 まず、前回デプロイしたプロジェクトの中身をすべて削除し、「Dropbox/アプリ/Heroku/アプリ名」フォルダに何もない状態に戻します(Dropboxで同期しローカルにフォルダが作られた直後の状態)。

ファイルとフォルダをすべて削除

ファイルとフォルダをすべて削除

LINE Bot SDKのインストール

 では空になったプロジェクトフォルダに自分で一から作っていきましょう。まずはSDKです。

Composerとは?

 まずはLINE Bot SDKをComposerを使ってインストールします。Composerについては前回概要のみ説明したので、もう少し詳しく解説します。

 通常PHPでプロジェクトを開発する時には、外部のライブラリを活用することで、例えば画像の編集や合成などの自分で作ると多大な時間がかかる機能を追加したり、HTTP通信などの助長なコードを書くことなく簡単に複雑な機能を利用できるようにしたりします。

 しかし一方で、ライブラリの導入にはメリットだけでなくデメリットもあり、プロジェクトを動かしている環境によってバージョンを変えなくてはいけなかったり、複数のライブラリを入れたりしている場合は、その複雑に絡まりあった依存関係も整理しておかなければなりません。

 Composerはそのような問題を解決するために開発されたプロジェクトで、簡単にいうと必要なライブラリを記載した構成ファイルさえ作っておけば、コマンドを打つだけで指定されたライブラリをすべての依存関係をダウンロードすることができます。これにより、環境が変わったり、大きなプロジェクトで依存関係が複雑になったりしても衝突することなく必要なものだけをプロジェクトに一発で組み込むことができるようになります。

 当然LINE Bot SDKもComposerに対応していますので、こちらを使ってダウンロードしましょう。

SDKのダウンロード

 では最初に構成ファイルであるcomposer.jsonを作成しましょう。Finder(Windowsの方はエクスプローラー)ではなく、ターミナル(Windowsの方はコマンドプロンプト)を通じて作成します。

 まずはプロジェクトフォルダに移動します。ターミナルを開き、以下のコマンドを実行してください。フォルダはDropboxの設定やアプリ名によって異なるので適宜変更してください。

cd Dropbox/アプリ/Heroku/アプリ名
プロジェクトフォルダに移動
プロジェクトフォルダに移動

 移動できたら以下のコマンドを実行します。

composer require linecorp/line-bot-sdk

 少し待つと以下のような応答があります。

Using version ^1.1 for linecorp/line-bot-sdk
./composer.json has been created
Loading composer repositories with package information
Updating dependencies (including require-dev)
  - Installing linecorp/line-bot-sdk (1.1.0)
    Loading from cache

Writing lock file
Generating autoload files

 最初の行はLINE Bot SDKのバージョン1.1を使うことを示しています。requireコマンドの際にバージョンを指定しなかった場合、マシンの環境で使える中で最新のバージョンが自動的に選択されることに注意してください。今回も本番環境はHerokuですが、開発を行うのはローカルのため、ローカルのマシンのPHPのバージョンもアップデートする必要がありました。

 前回PHPのバージョンを調べ5.6以上にアップデートしましたが、本連載で利用するLINE Bot SDKのバージョン1.1はPHPのバージョンが5.5以下では使えません。そのため、応答の1行目が1.1未満(0.1.0など)になっている場合は先に進めませんので、前回を参考にPHPのバージョンを5.6以上にアップデートしてからrequireコマンドを実行してください。

 2行目以降は指定されたライブラリ(今回はLINE Bot SDK)がダウンロードされ、構成ファイルとロックファイルが作成されたことを示しています。

 Finderでプロジェクトフォルダを見るとcomposer.json、composer.lock、vendorフォルダができています。

composerが必要なファイルを作成した
composerが必要なファイルを作成した

 vendorフォルダの中を見るとline-bot-sdkというフォルダができているのが分かります。これでプロジェクトフォルダにLINE Bot SDKがダウンロードされ、コードから利用できるようになりました。

 なお、Windowsの方で上記のコマンドを実行した際にopensslの問題で以下のようなエラーが表示される場合があります。

opensslのエラー
opensslのエラー

 その際はphpフォルダの中のphp.ini-productionをコピーして「php.ini」にリネームして開き、

;extension=php_openssl.dll

 の最初の「;」を消して保存してから再度コマンドを実行してください。

opensslのエラー解決方法
opensslのエラー解決方法

composerが作成するファイルについて

 composer.json、composer.lock、vendorフォルダが作成されましたが、これらのファイルはそれぞれどのような役割なのかを軽く解説しておきます。

 composer.jsonは使うライブラリと、そのバージョンを記しておくファイルです。これがあるフォルダでコマンド「composer install」を実行すると、それぞれのライブラリの依存関係をチェックし、必要なものだけをvendorフォルダにダウンロードしてくれます。

 その際に作成されるのがcomposer.lockで、composer.jsonにあるライブラリを取得する際、実際にどのライブラリがダウンロードされたかが記載されます。

 つまり、チームで開発している時など新たに同じプロジェクトの環境を作りたい時などには、composer.lockがあればコマンド「composer install」を実行したときは初めにライブラリをインストールした人と同じライブラリ、バージョンのものを依存関係のチェックをスルーしてダウンロードすることができます。

 Herokuにおいても、デプロイ時にvendorフォルダは無視され、Heroku上でcomposer.lockを参考に環境が作られることになります。

 そのため、composer.lockをはじめてデプロイするときは完了まで時間がかかります。デプロイ時の挙動はブラウザで見ることができるので、知りたい方は見てみるとよいでしょう。

lockファイルを元に環境が作られる
lockファイルを元に環境が作られる

  • LINEで送る
  • このエントリーをはてなブックマークに追加

修正履歴

  • 2016/12/20 16:36 記事タイトルでLine⇒LINEに修正いたしました

著者プロフィール

  • 立花 翔(タチバナ ショウ)

    GMOインターネット株式会社特命担当。 Android、iPhoneアプリ・ゲームをメインに企画・コーディング・モデリング・デザイン・楽曲作成など全てこなし、これまで100本以上のアプリをリリース。双方のマーケットで300万超えのダウンロード、計700万ダウンロード以上。 2016年より...

バックナンバー

連載:日本一わかりやすいLINE Bot開発講座

おすすめ記事

All contents copyright © 2006-2017 Shoeisha Co., Ltd. All rights reserved. ver.1.5