LoginSignup
4
1

体育館の空き状況って?

image.png

普段何かしらの社会人サークルに入っている人なら分かると思いますが、そうではない人にとってはなんのことかさっぱり分からないと思います。体育館はその体育館がある市に住んでいれば誰でも利用申請ができ、任意の日時の枠が空いていれば予約して利用することができます。申請のためには利用登録をする必要があり、各都道府県によってその方法は異なります。公共の体育館は誰でも利用することができるようになっているのです。

つまり、空き状況とは予約可能枠のことを指しています。

どこで確認できるの?

全ての都道府県の事情を知らないので明言はできませんが、一般的には各公共の体育館の予約を束ねる専用のHPが存在し、利用者はHP経由で体育館を予約することができます。

例) 福岡市 HPリンク
スクリーンショット 2023-12-21 13.12.11.png

なぜ監視するのか?

体育館を利用したいと思っている人は実はたくさんいます。その大半が社会人です。体育館自体は朝から夜まで枠がありますが、社会人が利用するとなると少なくとも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を利用して通知を飛ばすようにしています。
architecture1.png

実際に運用してみて

以下が実際のLINEの画面です。空いた日時が通知されるのでそれを元にHPにアクセスして取りに行っています。予約を取るところまで自動化することはできるんですが、闇雲に予約してしまうと使わないところまで予約してしまいキャンセル料が取られてしまうので予約自体は手動で行っています。

IMG_2724.jpg

最後に

身近なペインを技術を使って解消するのは凄く楽しいしそれを実現する過程で得られる知見も多いと思うので皆さんも是非挑戦してみて欲しいです!

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1