概要
- In the Long Run は、Stravaの走行距離を使い、世界の有名ルートを仮想走破できるランナー向けアプリ
- ルート上の進捗を インタラクティブマップ で可視化し、長期的なモチベーションを提供
- GeoNames などの外部データを活用し、観光名所や史跡を自動抽出するパイプラインを構築
- AI(LLM) は補助的役割に留まり、主に「主観的な評価」付与に活用
- ルートごとのカスタマイズ性やデータバイアスの課題に直面しつつも、実用的なPOI(興味ポイント)機能を実現
In the Long Run:仮想ランニング体験の拡張
- Stravaの 累積距離 をもとに、世界各地の有名ルートを仮想で走破できるアプリ
- インタラクティブな地図上で自身の進捗を可視化し、長期間の目標設定・モチベーション維持を実現
- 一時的なスランプや不調があっても、長期的な成果を実感できる設計
- 地図上でルート周辺の 観光名所や史跡 を表示し、ユーザーの興味や知的好奇心を喚起
- ルートに詳しくない地域でもスケーラブルに名所データを抽出するためのデータパイプライン構築
データセットとツール選定
- GeoNames データベースを基盤に、世界中の地名・施設・カテゴリ情報を活用
- Pythonを主要言語とし、 Apache Parquet 形式で中間データを保存
- DuckDB をクエリレイヤーとして採用、SQLによる効率的なデータ抽出を実現
- 新技術の導入は一度に1~2個までに抑え、学習コストとプロジェクト進行のバランスを重視
- AIコーディングエージェント(Claude)を活用しつつも、主要技術は自ら理解・管理
パイプライン設計と実装
- Claudeとともに プロジェクト計画 を作成、各ステップごとに仕様を定義・反復
- GeoNamesデータの不要行(行政区画など)を除外、興味深い施設コードのみ抽出
- 人口や標高でフィルタリングし、初期段階でデータ量を大幅削減
- Wikipediaリンクの有無や多言語記事数を「知名度シグナル」として利用
- ルートごとにGeoJSONからバウンディングボックスを作成し、近傍のPOIのみ抽出
興味ポイント(POI)の選定とバイアス
- ルート近傍(50km以内)のPOIを抽出し、「ルート上のどこで表示するか」を距離属性で管理
- 英語Wikipedia依存による「英語圏バイアス」が顕著に現れる事例
- ルートごとのPOI数:Iceland ring road(1,321km)で511件、Cape Town~Magadan(23,257km)で10,000件、Route 66(3,787km)で14,181件
- 都市部ではPOIが人口分布図のようになりやすく、田舎では自然地形や史跡が中心
AI(LLM)の役割と課題
- Wikipedia要約やWikidata多言語数をもとに、 LLM(Anthropic Haiku) でPOIの「主観的評価」を自動生成
- LLM要約文は読みやすいが、事実誤認や「幻覚」が多発(例:地名の混同、人口や標高の誤り)
- Wikipedia要約文に回帰し、LLMは「評価」付与のみに限定
- LLMの評価により、単なる知名度だけでなく「面白さ」や「重要度」のバランスを調整
- LLMは「基盤」ではなく「補助ツール」として最適化
パイプラインの検証とデバッグ
- Leaflet ベースの可視化ツールでPOI配置を地図上で確認
- SQLYacやDuckDBでParquetファイルの内容をスポットチェックし、誤検出の有無を検証
- 生成物(POIリスト)はJSONでバージョン管理、ルートごとにパラメータ調整が必要であることが判明
ルートごとの最適化と今後の展望
- 各ルートで文化的・地理的特性が大きく異なるため、 パラメータの個別調整 が不可欠
- 人口集中地域ではPOIが都市部に偏りやすく、自然景観や史跡とのバランス調整が課題
- LLMの主観スコアと客観データ(知名度・カテゴリ)の重み付け最適化
- 今後はローカルモデルやコスト効率の高いAIへの切り替えも検討
- 「味」や「面白さ」の自動評価は依然として難しく、AIはあくまで 人間の判断を補助 する立ち位置
まとめ
- In the Long Runは、 データ処理・AI・地理情報 を組み合わせて仮想ランニング体験を拡張
- AIは万能ではなく、 伝統的な手法と組み合わせることで最大の効果 を発揮
- ルートごとの多様性やデータバイアスに対応し、ユーザーにとって魅力的なPOI体験を提供
- 今後もパイプラインや評価手法の改善を継続し、より豊かな仮想旅行体験を目指す