教習所の技能予約の空き状況を24時間監視し、LINEで即時通知するボット。
教習所の予約サイトは常に混雑しており、希望する日時の予約を取るのが困難でした。
そこで、PythonとSeleniumを用いてサイトを定期的にスクレイピングし、新しい空き枠が発生した瞬間にLINEで通知を送るシステムを開発しました。
AWS Lambda上でサーバーレスに動作させることで、運用コストを抑えつつ24時間稼働を実現しています。
システムは以下のフローで動作します。
AWS Lambdaの制限された環境下でSeleniumを動作させるため、ヘッドレスブラウザの設定を最適化しています。 メモリ使用量を抑えつつ、安定したスクレイピングを実現するために --disable-dev-shm-usage や --single-process などのオプションを活用しています。
単に空きがあるかどうかではなく、「新たに空きが出た瞬間」を知るために、前回のスクレイピング結果を Amazon DynamoDB に保存しています。 前回との差分を検出し、新しい枠が増えた場合のみ通知を送ることで、通知のノイズを減らしています。
Webサイトのレスポンス遅延や一時的なエラーに対応するため、要素のクリックやページ遷移にはリトライロジックを組み込み、処理の堅牢性を高めています。