本記事は2020年1月26日に公開したものです。
こんにちは。今回は、BBC Micro:bitとLINE Beaconについて学んでいきたいと思います。
動機
昨年度の文化祭より、Google Formでアンケートフォームの運用を開始したのですが、流入点を文化祭ウェブサイトに限っていたこともあり、芳しい結果を得ることができませんでした。
そのため、LINE Beaconを校門に設置し、入場時にはパンフレットなどのメッセージを、退場時にはフォームリンクを配信するようにすれば、タッチポイントを増やすことができ、当課題を解決できるのではないかという推測から、LINE Beaconについて勉強することにしました。
サービス比較
iBeacon
iBeaconは、Bluetooth Low Energyビーコンの一種で、低電力、低コストの通信プロトコル、またはその技術です。
iBeaconは、以下のような不利な点を持っています。
- アプリケーションのインストールが必須である
- Android OS向けの開発が難しい
今年度の文化祭では、モバイルアプリケーションを開発する予定は無く、また、クロスプラットフォームに対応することが難しいため、本件においてはiBeaconを利用しないことにしました。
LINE Beacon
LINE Beaconは、ビーコンと呼ばれるBluetooth発信機器からのLINE向けの信号を受信する機能です。
iBeaconと同様に、BLE(Bluetooth Low Energy)端末を利用することができます。BLEとは、消費電力の低さを特徴とする、Bluetoothの規格の一部です。
- 基本的に、LINEがインストールされた端末であれば利用できる
- クロスプラットフォームに対応しているといった利点があり、LINE Beaconを採択しました。
BBC Micro:bit
BBC Micro:bitは、1980年代に情報教育のために英国放送協会が開発したBBC Microが各学校で使用されたように、英国の11歳と12歳の小学生全員に配布される低消費電力、低コストのシングルボードコンピュータ。
開発
下の記事で、Micro:bitをBLE端末として使えることを知ったので、Micro:bitを利用することにしました。
上の記事を参考に、Micro:bitをLINE Beaconとして設定しました。
LINE@からLINE 公式アカウントへのブランド再編があったため、最新版である上の記事を読んでいきます。上の記事では、Node.jsとngrokを利用した方法を提示しています。ここで、個人的な注意点があります。CHANNEL_ACCESS_TOKEN
は、チャンネルID(Channel ID)ではありません。LINE Developers コンソールから「チャネルアクセストークン(ロングターム)」を発行し、得られる文字列です。
Messaging API > Webhookの利用をオンにし、Webhook URLの検証を行い、成功したら、次の段階に進みます。
Google Apps Script (GAS)
Google Apps Scriptは、G Suiteプラットフォームでの軽量なアプリケーション開発のためにGoogleが開発したスクリプトプラットフォームです。
ローカルでサーバを常時起動しておくのは、現実的ではないので、Google Apps Scriptでコードのデプロイを行います。
上の記事を参考に進めていきます。
前節で記述したスクリプトは利用しません 🙇♂️
記事ではNode.jsを利用しておりませんので、静的デプロイができます。
注意点として、記事内では環境変数を直書きしていますが、GASの「プロパティーストア」という機能を利用して、環境変数をより安全に扱うことができます。
CHANNEL_ACCESS_TOKEN
を次のように置換します。
- const CHANNEL_ACCESS_TOKEN = 'xxxxxxxx';
+ const CHANNEL_ACCESS_TOKEN = PropertiesService.getScriptProperties().getProperty('CHANNEL_ACCESS_TOKEN');
LINE Developers コンソールで、Webhook URLを置き換え、テストします。
ビーコン(Micro:bit)に近づくと…
動きました 🙌
おまけ
たまに「応答メッセージ」機能をオフにする必要があるといった記事を見ますが、私の環境ではその必要がありませんでした。