サロン予約サイトの空き状況を、全スタイリスト分まとめて取得して比較する分析ツール。 予約表を「日時の集合」に変換し、集合演算で「指定した担当者だけが空いている時間帯」を抽出します。
予約サイトでは、担当者を1人選んでからでないと空き状況を見られません。 担当者どうしの空きを比べるには、人数分のページを開いて予約表を見比べることになります。
この見比べを自動化し、サイト上では直接見られない「担当者をまたいだ切り口」で空き状況を調べられるようにしました。
予約表はJavaScriptで後から描画されるため、Selenium WebDriverで実際にブラウザを操作して取得します。 要素が現れるまで待つ明示的な待機を使い、担当者の一覧からメニューの選択、予約表の表示までをたどります。
予約表は、列が日付、行が時刻の表です。空いているセルを「日付+時刻」の値に直し、担当者ごとの集合として持ちます。 日付の見出しと列の数が合わないときは、その担当者の分を採用せずに飛ばし、ずれた日時が混ざらないようにしています。
指定した担当者の集合から、ほかの全員の集合の和を引きます。 残るのは「その担当者だけが空いている時間帯」で、日時の順に並べて表示します。
対象の担当者 − ( 担当者A ∪ 担当者B ∪ … )
対象のメニューを扱っていない担当者や、予約表の解析に失敗した担当者は、警告を出して飛ばします。 1人分の失敗で全体が止まらないようにしています。
どちらも予約サイトの空き状況を自動で取得しますが、解いている問題が違います。Driving Reservation Botは「時間の流れの中での変化」を見張り、こちらは「ある時点での担当者どうしの違い」を調べます。
| 観点 | Salon Schedule Analyzer | Driving Reservation Bot |
|---|---|---|
| 知りたいこと | 条件に合う時間帯はどこか | 新しく空いた枠はあるか |
| 比べる相手 | 同じ時点の、ほかの担当者 | 前回の自分の取得結果 |
| 使う演算 | 担当者をまたいだ差集合 | 時間をまたいだ差分 |
| 動かし方 | 必要なときに1回実行 | 5分おきに自動で実行し続ける |
| 動く場所 | 手元のPC | AWS Lambda |
| 結果の出し方 | 時間帯の一覧を表示 | LINEに通知 |
※ サーバースペックの都合上、Web版のデモ公開は停止しています。