私立中学の説明会の確実なキャンセル待ち方法

go言語

年々加熱する私立中学への進学熱。

知り合いから「私立中学の入試説明会に申し込もうとしたら、すぐに満員になって取れなかったんけど、何とか取る方法ない?」と訊かれ、「申し込みページを監視して、空いたらすぐに知らせてくれるシステム作ってみる?」と提案した。

速攻で作って運用してみたら、なんと2日間で「空き」(キャンセル)を自動検知して、無事、申し込みを完了することができた。

「満員」から「受付中」に変わった瞬間

今回はその具体的な方法を公開しようと思う。

スポンサーリンク

まとめ

概要は以下の通り。

  1. Slackでアカウントを作る
  2. Go言語でプログラムを作る
  3. crontabで2分に1度自動監視する
  4. Slackに通知が来たら、すぐに申し込む

相談が来た背景

実は、その知り合いは直接、志望する中学校に電話を掛けたそうだ。

「入試説明会に申し込もうとしたら満員だったのですが、何とかキャンセル待ちの枠とかに入れて頂けませんでしょうか?」と。

すると担当者は「申し込みサイトでは、キャンセルする人が出たら受付中になるので、その時に申し込んで頂くしかないですね」と答えたようだ。

だが、実際に申し込みページをスマホから毎時間、毎分、リロードして確認し続けるのは、相当に大変である。

実際、その知人は数日間それをやってみたが、結局、一度も「受付中」表示にはならなかったそうだ。

それで、私(弊社代表)に相談が来たという訳である。

Slackでアカウントを作る

監視結果をどう通知するか検討したところ、Slackというコミュニケーションツールが良さそうという結果になった。

無料でアカウントが作れるし、スマホにアプリを入れておけば、24時間どこでも通知を受け取ることができる。

今どき、メールでの通知は気が付きにくいし、SMS送信だと送信料がかかる場合もあるので使いにくい。

サインアップは以下から可能。

AI による業務管理とプロダクティビティツール
Slack は、チームで使う新しいコミュニケーション方法です。メールよりも速く、よく整理され、安全です。

Go言語でプログラムを作る

開発言語を検討したところ、弊社で実績のあるGo言語を採用することにした。

便利なライブラリ(パッケージ)が多く公開されており、開発効率がとても高い。

最新版のダウンロードはこちらから可能。

The Go Programming Language
Go is an open source programming language that makes it simple to build secure, scalable systems.

作成したプログラムは、200行程度の小規模なもの。

今回、オープンソースとしてGitHub上に公開した(下記)ので、ダウンロードして利用して頂ければと思う。

GitHub - iwaon/monitor_and_notify
Contribute to iwaon/monitor_and_notify development by creating an account on GitHub.

なお、Slackにプログラムから投稿するためには、OAuthトークンと呼ばれるものを取得してプログラム中に設定することと、該当チャンネルへのアプリの追加操作が必要だ。

具体的な方法は、こちらのページが詳しいので、参考にしたら良いかと思われる。

crontabで2分に1度自動監視する

ビルドしたバイナリを、さくらのレンタルサーバにアップロードし、crontabの設定を行って、2分間隔で自動実行するようにした。

cron設定の例

なお、さくらのレンタルサーバにおいては、最短の実行間隔は2分である。

もっと短くしたければ、ローカルPCで動かすか、他のサービスを利用する必要がある。

しかし、いろいろ試したところ、2分ですぐに空き枠が埋まることはないので、十分だと思われる。

Slack通知が来たら、すぐに申し込む

設定してから2日後、「×」(バツ印)が「受付中」になったとスマホに通知が来た!

受付中になったこと検知した瞬間に来た通知

早速ページを開いて申し込んだところ、無事に席を確保することができた!

受付完了後の様子

キャンセル待ちの秘訣

なお、いろいろ観察した結果、空き枠が出るのは特に土日などの週末が多い

また、説明会の1-2日前になると、キャンセルが入る確率が急に増えるようだ。

この知人が申し込もうとしていた説明会は、定員が500名のものだったが、2週間の間、自動監視を続けて「空き」を検出したのは10回程度だったので、全部で10-20人程度のキャンセルが出た(1回の空きで1-2人の欠員なので)ことになるが、これは全体の2-4%という割合であり、かなりシビアである。

もし、システムを組むのが大変であれば、このように受付期間の終了直前に申し込みページを頻繁に確認するのも手かもしれない。

なお、空きが出てから埋まってしまうまでの時間は、10分というシビアなこともあるが、30分間とか、1時間とかの間、埋まらないこともあるので、手動の場合でも諦めずにトライしたら良いのではないかと思う。

その他の参考事項

なお、この種のプログラムの運用は、完全自動というわけにはいかないことが多い。

たとえば、申込み先のサイトは、アクセスの負荷が高まると「2分待ちです」というようなページが出て、受付状況が表示されなくなることがある。

当然、このような場合にも通知が飛んできてしまう(実は1日に数回ある)ので、このようなノイズを避けて、本当のキャンセル待ちの瞬間を判別しなければいけなかった。

もちろん、プログラムを改良すればできなくはないが、それは今後の課題と考えている。

コメント

タイトルとURLをコピーしました