Philarium

Driving Reservation Bot

教習所の技能予約の空き状況を24時間監視し、LINEで即時通知するボット。

cloudAWS Lambda
languagePython
terminalSelenium
databaseDynamoDB
chatLINE Messaging API

Overview

教習所の予約サイトは常に混雑しており、希望する日時の予約を取るのが困難でした。
そこで、PythonとSeleniumを用いてサイトを定期的にスクレイピングし、新しい空き枠が発生した瞬間にLINEで通知を送るシステムを開発しました。
AWS Lambda上でサーバーレスに動作させることで、運用コストを抑えつつ24時間稼働を実現しています。

Architecture

システムは以下のフローで動作します。

EventBridge
5分毎に発火
AWS Lambda
Python + Selenium
Target Site
Scraping
DynamoDB
前回状態と比較
Difference
Check
LINE API
Notification

Key Features

1. Headless Chrome on Lambda

AWS Lambdaの制限された環境下でSeleniumを動作させるため、ヘッドレスブラウザの設定を最適化しています。 メモリ使用量を抑えつつ、安定したスクレイピングを実現するために --disable-dev-shm-usage --single-process などのオプションを活用しています。

2. 状態管理による差分通知

単に空きがあるかどうかではなく、「新たに空きが出た瞬間」を知るために、前回のスクレイピング結果を Amazon DynamoDB に保存しています。 前回との差分を検出し、新しい枠が増えた場合のみ通知を送ることで、通知のノイズを減らしています。

3. リトライロジック

Webサイトのレスポンス遅延や一時的なエラーに対応するため、要素のクリックやページ遷移にはリトライロジックを組み込み、処理の堅牢性を高めています。