そのうち誰かの役に立つ

もしくは誰の役にも立たない

Google Apps Script(GAS)とLINE Messaging APIでユーザアカウント不要のイベント受付システムを作る -1- 準備

続きもの。

  1. 準備 ←今ココ
  2. Googleフォームの回答と編集URLを取得する (2019/10/30更新)
  3. Googleドキュメントでチケットを作成する (2019/10/31更新)
  4. Gmailでメールを送信したりLINEにPushメッセージを送ったりする (2019/11/01更新)
  5. まとめ (2019/11/05更新)

演奏会の来場予約どうする?というのが事の発端。

PeaTiXとかEventRegistとかいったイベント管理サービス使えばそもそもシステム作る必要なんてないんだけど、 参加者サイドからすればそういうサービスのアカウントをわざわざ作るのがなんとなく面倒で障壁になったりする。 アカウントを作る代わりにSNS連携とかすればいいんだけど、そういうアカウントがない人にとっては結局一緒なので以下略。

そりゃまあイベント主催者の会員費はイベント管理サービスの大事な収入源の1つですし? 主催者にジャブジャブ課金してもらうためには主催者がうれしいサービスを提供する必要がありますし? そうしたらユーザ(参加者候補)の行動データとか欲しいですね? となると(運営が)ユーザを識別・トラッキングできるように符号(アカウント)が必要になるのは当然の話なのである。

しかし数年に一度しか開催せず、次回予定は常に未定なイベント主催からすればそのような気遣いは不要なので (これは自分達がそういったサービスの想定ユーザではないというだけであって各サービスの落ち度ではない)、 アカウントがなくても登録できるシステムが欲しかった。 無ければ作るしかないよね(悪い癖)

以上、言い訳。

全体像

実は以前の演奏会でも来場予約システムを作っていて、そのとき考えた要件としては以下の通り。

  • ユーザには特定サービスのアカウントを求めないものとする
  • ユーザの想定リテラシはメールアドレスを持っていてGoogleフォームで回答することくらいはできるレベル
    • 上記に反してメールアドレスは求めることになってしまったが、インターネット使ってるなら何かしらメールアドレスくらい持ってるでしょう
  • システムを動かすのにあまり金はかけたくない、できれば無料
  • UI(予約フォーム)はGoogleフォーム
    • あんまりこだわって独自UI作っても使いにくいだけだし
  • 回答の編集URLを発行
    • 予約の変更/キャンセルは十分考えられる
  • チケットはGoogleドキュメントで作成
    • 名前入りチケット画像の自動生成も考えたけど面倒だった
  • チケットURLと回答編集URLをユーザと管理者にメール

で、今回も作りますかとなったけど、前回と同じだと正直面白くない。 何か新機能入れるかと悪魔が囁いた結果、以下の要件を追加。

  • 予約があったことと現在の予約数合計をLINEで通知
  • 演奏会が近づいてきたら希望者にリマインダ送信

シーケンス図にするとこんな感じ。optを機能ブロックに括るために使ってるのは許してくれ。

Sequence
Created by WebSequenceDiagrams

だいたい作りたいものが固まってきたので、システム構築の準備に取り掛かる。

環境構築

今回のシステムを作成するにあたり、必要になる外部サービスは2つ。

これらのサービスにアカウントを作るところから始めると本当に長くなりそうなので、GoogleアカウントとLINEアカウントくらいは持っているものとする。

GASの準備

Googleアカウントを持っていればGASを利用できる。 今回はGASで作ったWebアプリを公開してWeb APIとして使いたいので、ここGoogle Apps Script API を「オン」にする。

GASの編集をオンラインエディタで実施してもいいが、Googleclaspというハチャメチャに便利なコマンドラインプログラムを公開している。 こいつを使えばローカルのエディタ(例えば私はVSCodeを使っている)でGASの編集ができるし、ローカルにコードを置けるのでgitで管理できるようになる。

LINE Messaging APIの準備

LINE Messaging APIを使うにはLINE Developersに登録する必要がある。 公式ドキュメントに従って登録し、プロバイダとチャネルを作成する。

チャネルを作成したら、 チャネル基本設定 > メッセージ送受信設定 > アクセストークン(ロングターム)トークンを発行しておく。 また、必要に応じて Botのグループトーク参加 も「利用する」にしておく。 Webhook送信 も利用するのだけど、現時点ではWebhook URLを作成していないので後回し。

長くなったのでコーディング部分は分割する。

最後に

このシリーズで作成したシステムが動いている演奏会はこちらです(宣伝)

2019年11月30日(土)開場:13時00分  開演:13時30分
すみだトリフォニーホール 小ホールにて(東京都墨田区)
【アクセス】JR「錦糸町駅」北口より徒歩5分/東京メトロ「錦糸町駅」3番出口より徒歩5分
入場無料 事前予約制

演奏会までにこのシリーズを完結させたいところ