LINE Bot Awardsエントリー受付中!(2017年2月22日まで)
グランプリ賞金1000万円のLINE Bot Awards、エントリー絶賛受付中です。他にも賞金50万円の9部門、そして学生賞は賞金100万円となっています。革新的なBotを開発して入賞を狙いましょう!
はじめに
まずは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フォルダができています。
vendorフォルダの中を見るとline-bot-sdkというフォルダができているのが分かります。これでプロジェクトフォルダにLINE Bot SDKがダウンロードされ、コードから利用できるようになりました。
なお、Windowsの方で上記のコマンドを実行した際にopensslの問題で以下のようなエラーが表示される場合があります。
その際はphpフォルダの中のphp.ini-productionをコピーして「php.ini」にリネームして開き、
;extension=php_openssl.dll
の最初の「;」を消して保存してから再度コマンドを実行してください。
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をはじめてデプロイするときは完了まで時間がかかります。デプロイ時の挙動はブラウザで見ることができるので、知りたい方は見てみるとよいでしょう。