スクレイピング依存のAlexaバス到着案内をODPTリアルタイム連携へリファクタした話 | TechDistill
> Source: Zenn_Python
Execute Primary Source
// Problem
従来のスクレイピング方式は、WebサイトのDOM構造やCSSクラス名に強く依存しており、サイトのリニューアルによって容易に動作不能になるという脆弱性を抱えていた。また、HTMLのパースが必要なためロジックが複雑化し、メンテナンスコストが高いことが課題であった。
// Approach
ODPTが提供する公共交通オープンデータAPIへ移行。GTFS-realtime規格に基づいたProtocol Buffers形式のデータをデコードし、バス停IDを動的に解決するロジックを実装した。さらに、リアルタイムデータが取得できない場合に備え、静的時刻表APIを用いたフォールバック機構を構築した。
// Result
サイト構造の変化に左右されない、堅牢で安定したデータ取得基盤を実現。標準規格であるGTFSへの準拠により、データの信頼性が向上した。また、リアルタイムデータ欠損時も時刻表から案内を継続できる、可用性の高いシステムへと進化させた。
Senior Engineer Insight
> スクレイピングからAPIへの移行は、運用における技術的負債を解消する極めて正しい判断である。特に、GTFS-realtimeのような標準規格を採用することで、将来的な拡張性やデータの信頼性を担保できる点は高く評価できる。実装面では、APIのフィルタリング制約を考慮したクライアントサイドでの処理や、IDのマッチングロジックの構築など、実務的な課題に対する具体的な解決策が示されており、実戦的な設計思想が伺える。可用性を高めるためのフォールバック設計も、実運用を意識した優れたアプローチである。