体育館の空き状況って?
普段何かしらの社会人サークルに入っている人なら分かると思いますが、そうではない人にとってはなんのことかさっぱり分からないと思います。体育館はその体育館がある市に住んでいれば誰でも利用申請ができ、任意の日時の枠が空いていれば予約して利用することができます。申請のためには利用登録をする必要があり、各都道府県によってその方法は異なります。公共の体育館は誰でも利用することができるようになっているのです。
つまり、空き状況とは予約可能枠のことを指しています。
どこで確認できるの?
全ての都道府県の事情を知らないので明言はできませんが、一般的には各公共の体育館の予約を束ねる専用のHPが存在し、利用者はHP経由で体育館を予約することができます。
例) 福岡市 HPリンク
なぜ監視するのか?
体育館を利用したいと思っている人は実はたくさんいます。その大半が社会人です。体育館自体は朝から夜まで枠がありますが、社会人が利用するとなると少なくとも18時以降の利用がメインになります。ですのでその狭い枠を大勢が争って予約をしているのが現状です。また、予約がキャンセルになっても通知がくるようにはなっていませんので、予約が空いているかを確認しなければいけないという超ハードなことを皆さんやられています。本気で取りたい人の中には数分おきにサイトへアクセスして確認しています。
開発
ここからは開発について書いていきます。
開発環境
使用言語: Python
ライブラリ等: Selenium, Chromedriver, LineBotSDK
クラウド: AWS
フレームワーク: AWS Chalice
AWS Chalice
はシンプルなサーバーレスアーキテクチャを実現するためのフレームワークです。手の込んだことをするには向いていませんが、シンプルなものであれば1分もあればAPIエンドポイントを作成することができるのでめっっっちゃおすすめです。
参考
AWS Chalice
アーキテクチャ
今回は監視が目的なので、クローリングをLambda
で行い、そのLambda
の定期実行をCloudWatch Events
で実現しています。AWS SSM Parameter Store
を使っている理由として、状態として前回の空き状況を保存していないと空いたかどうかを判別できないため、その情報を保持するのに利用しています。
最後に通知する内容を整理し、LINE Messaging API
を利用して通知を飛ばすようにしています。
実際に運用してみて
以下が実際のLINE
の画面です。空いた日時が通知されるのでそれを元にHPにアクセスして取りに行っています。予約を取るところまで自動化することはできるんですが、闇雲に予約してしまうと使わないところまで予約してしまいキャンセル料が取られてしまうので予約自体は手動で行っています。
最後に
身近なペインを技術を使って解消するのは凄く楽しいしそれを実現する過程で得られる知見も多いと思うので皆さんも是非挑戦してみて欲しいです!