ふくふくHukuhuku Inc.
EP.05Open Data 10分公開: 2026-05-10

OpenStreetMap × 自社配送ログで配送ルートを最適化する

Google Maps の API課金を抑え、OSM ベースで配送計算を内製化する。

#OpenStreetMap#配送#ルーティング
CO📔 Google Colab で開く(上から順にセルを実行)
シェア

Google Maps Distance Matrix は便利ですが、配送計算で大量に叩くと課金がえぐい。(OSM)と OSRM( Routing Machine)を使えば、自前ホストでルート計算を内製化できます。

OSM ベースの配送計算スタック

コンポーネント役割実体
OSM データ地理ベースマップPBF ファイル(地域別ダウンロード可)
OSRMルート計算エンジン でホスト可能
Nominatim住所→座標 変換OSM 公式の Geocoder
pgroutingPostgreSQL でグラフ処理高度なルーティング

コスト比較:Google vs OSRM 自前

項目Google Distance MatrixOSRM 自前
100万呼び出し/月約 $5,000 EC2 t3.medium ~ $30
セットアップAPI キーのみ1日(Docker)
更新頻度Google 任せ週次で OSM 取り込み
対応国全世界OSM カバー範囲(実質全世界)

配送最適化への適用

OSRM API(自前ホスト)の呼び出し
Python
import requests
OSRM_HOST = "http://osrm:5000"  # Dockerの自前OSRM
def get_route(from_coord, to_coord):    """A→B のルートと所要時間を取得"""    url = f"{OSRM_HOST}/route/v1/driving/{from_coord};{to_coord}"    res = requests.get(url, params={"overview": "false"})    data = res.json()    if data["code"] != "Ok":        return None    return {        "duration_sec": data["routes"][0]["duration"],        "distance_m": data["routes"][0]["distance"],    }

で配送最適化ジョブを構築

prompt:配送ルート最適化
自社の配送センターと配送先データから、OSRMを使った配送ルート最適化ジョブを構築してください。

## 入力
- BigQuery: `logistics.delivery_centers`(30箇所)
- {{bigquery|*}}: `logistics.daily_orders`(日次1万件)
- OSRM Docker(既にホスト済み: http://osrm:5000)

## 必要な処理
1. 各注文を最寄り配送センターに割り当て(OSRM での実走距離)
2. センター単位で配送ルートを最適化(TSP/巡回セールスマン問題)
3. 1台あたりの想定積載量で分割
4. 過去30日のGoogle Maps API利用と比較してコスト試算
5. ルート提案を {{looker-studio|*}} で地図可視化

## 出力
- ジョブスクリプト
- ルート割当 mart テーブル
- コスト削減レポート
想定される実行結果(例示)
## 配送ルート最適化 完成

### コスト削減
- 旧: Google Maps Distance Matrix API
- 月間呼び出し: 240万 → 月額 $1,200
- 新: 自前 OSRM (EC2 t3.medium)
- 月額: $32 + 運用工数 0.1人月
- **削減: 月 $1,168(年間 $14,000)**

### ルート最適化結果
- 30配送センター × 1日333件平均
- 旧(最寄り単純割当): 1日合計走行距離 8,400 km
- 新(TSP最適化): 1日合計走行距離 6,800 km
- **走行距離 -19%、燃料費 月額 -¥45,000**

### 構築物
- `pipelines/route_optimize.py` (250行) - メインジョブ
- `mart.delivery_routes` - 日次ルート提案
- `looker_studio/route_map.json` - 地図可視化
- `reports/cost_comparison.md` - 経営層向け

PR #312 を生成しました。

### 注意点
- OSRM の地図データは月1で再生成推奨(道路改良の反映)
- 災害時など道路通行止めは別途オーバーライド機構が必要

データ取得の留意点(2026年5月時点)

OpenStreetMap は「公共インフラ」感覚で使う

OSM は寄付ベースで運営される世界最大の地図 OSS。安易な大量アクセスは即ブロック。ライセンスは ODbL(Open License)で、再利用には継承条件あり。

  • ライセンス: ODbL(Open Database License v1.0)。商用利用 OK だが、派生データの公開要件あり。地図画像表示時は「© OpenStreetMap contributors」のクレジット表示が必須。
  • Nominatim(: 公式インスタンスは 最大 1 リクエスト/秒 が絶対上限。User- または HTTP Referer でアプリケーション識別が必須(デフォルトの User-Agent は不可、ブロック対象)。商用利用は予告なくアクセス停止される可能性あり。
  • Nominatim 禁止事項: ① オートコンプリート実装(タイプごとに API 呼び出し)/ ② 系統的クエリ(グリッド逆検索・郵便番号一括取得)/ ③ 詳細ページ自動ダウンロード。違反するとIP単位でブロック。
  • Overpass API: 公式 overpass-api.de の目安は 1日 10,000 クエリ以下 / 1日 1GB 以下。デフォルトタイムアウト 180秒(最大 900秒)、メモリ上限 1GiB の指定が可能。
  • Main API(api.openstreetmap.org): 編集専用。読み取り用途では使わない。大規模データ取得は `planet.osm` ダウンロードを使う(最大 2 並列)。
  • 商用での推奨: 商用サービスで地図機能が止められない場合は、Mapbox / Google Maps Platform / MapTiler / 国産:地理院タイル+自前ジオコーダ などの 有償サービスへの切替が現実的。
  • 自前 Nominatim / Overpass: 大規模利用なら 自社サーバーで Nominatim / Overpass を立てるのが最終手段。Docker イメージあり。
公式リソース

Nominatim 利用ポリシー: https://operations.osmfoundation.org/policies/nominatim/ / Main API 利用ポリシー: https://operations.osmfoundation.org/policies/api/ / Overpass API 利用ガイド: https://wiki.openstreetmap.org/wiki/Overpass_API ─ 商用導入前に必ず一読

次回予告

EP.06 は、誰も知らない宝の山「日銀統計データAPI」の使いどころをお届けします。

シェア

この記事の感想を教えてください

あなたの 1 クリックで、本当にこの記事は更新されます。「もっと詳しく」「続編希望」が一定数集まった記事は、 ふくふくが 実際に内容を拡充したり続編記事を公開 します。 送信したリアクションはお使いのブラウザに記録され、再カウントされません。

シリーズの外も探す:

まずは、現状を聞かせてください。

要件が固まっていなくて大丈夫です。現状診断と方針提案までを無料でお手伝いします。

無料相談フォームへ hello [at] hukuhuku [dot] co [dot] jp