#背景
筆者は久しくコードから離れたインフラエンジニアである。
ふとコードを書いてみたい衝動にかられたが面倒なことは嫌なので
さくっと動くものが作ってみたかった。
簡単に調べた結果、LINEmessagingAPI と GoogleAppsScriptを用いて
簡単なBOTを作るというのが手軽そうだったのでやってみた。
ひとまずは応答メッセージとして単一の文字列を返すだけのものを作成したが
その際、何点かつまずいたところがあったので備忘する。
#LINEmessagingAPI
開発コンソールの登録はLINEのアカウントがあれば簡単に作成できた。
プランはひとまずtrialを選択した。
もし公開サービスとして運用していくのであればプラン変更が必要になる(trialは登録ユーザ数50が上限)
リファレンスは完全日本語でサンプルコードも見やすいのでつまずきにくいと思う。
#GoogleAppsScriptの設定
ChromeにGoogleAppsScriptアプリを登録し、ブラウザ上からコードが書ける。
一旦はStandaloneスクリプトを作成するのがわかりよいと思う。
GASの概要は下記が参考になった。
https://qiita.com/soundTricker/items/4d04c97c499b22886dfd
GASで一番つまずいた点は公開アプリケーションとして設定する点だった。
エディタ画面から
公開 > ウェブアプリケーションとして導入
を選択する。
「次のユーザーとしてアプリケーションを実行」欄は「自分」を選択する。
「アプリケーションにアクセスできるユーザー」欄は「全員(匿名ユーザを含む)」を選択する。
自分の権限としてアプリケーションを実行するため、他人の認証を行うと公開アプリケーションとして機能しない。
これらを設定すると「現在のウェブ アプリケーションの URL」として外部から呼び出せるURLが表示される。
これをLINEmessagingAPIのWebhook URLとして設定すればよい。
また「ウェブ アプリケーションで最新のコードをテストします。」としてテスト用のURLも利用できる。
この2種類のURLを以下にまとめる。
公開用URL | テスト用URL | |
---|---|---|
URL末尾 | exec | dev |
編集反映タイミング | 版(バージョンを更新した後) | 保存後即時 |
この編集反映タイミングに気づかず、ブラウザ上からのテストは想定通り動作するのに
LINEから呼び出すと動作しないという事態になり混乱してしまった。
#デバッグ方法
GASでのデバッグ方法はLogger.log(string)でログに吐き出すというのが基本になると思う。
吐き出したログはエディタ画面から編集 > ログ(ctrl+Enter)で表示できる。
しかしこれは一度実行される度にリフレッシュされてしまうので
貯め続けたい場合はGoogleドキュメントに吐き出す等工夫が必要になりそうだ。(今回はそこまで必要にならなかった)
またブラウザからテスト用URLを叩くとGETメソッドが呼び出されるので
doGet()でPOSTパラメータを偽造してdoPost()を呼び出す等すれば簡単にテストできる。
#感想
以上のようにつまずいた箇所もあったが、アカウントの作成から動作確認まで2~3時間程でできた。
実態として書いたコードは70行程だったが。
インタフェースとして誰もが利用しているLINEが使えるというのはハードルが低いし、テストしやすいし、布教しやすいしとてもよかった。
気が向けばこれを機に更に試してみたい。
##参考
https://qiita.com/cheese/items/33dda88acb5a63c7399c
https://qiita.com/howdy39/items/4dc11af7b1c74c17f7f7
https://qiita.com/soundTricker/items/4d04c97c499b22886dfda
https://qiita.com/kkdmgs110/items/3483ad6cb5c85983ffc6