世界を動かす技術を、日本語で。

責任を持ってダウンロードする

概要

  • OSMダウンロードサーバー のインフラ強化による高速化
  • 技術的変更 として「…latest」ファイルがHTTPリダイレクトに
  • 無責任な大量ダウンロード による影響と注意喚起
  • 利用者への具体的なお願い と推奨ツール紹介
  • サービス継続のための 責任ある利用 の重要性

ダウンロードは責任を持って!2025年10月9日 | Frederik Ramm

  • 今月、 ダウンロードサーバーのインフラ強化 による高速化・早期公開の実現
  • 「…latest」ファイルリクエスト時、HTTPリダイレクトで特定バージョンへ誘導する技術的変更
  • サービス継続のため、 「責任あるダウンロード」 を利用者へ要請
  • 全利用者が 最新のOSMデータへ簡単にアクセス できる環境維持を目指す運営方針

無責任な利用の事例と影響

  • 同一クライアントによる20GBファイルの数百回ダウンロード などの過剰利用事例
  • 例: italy-latest.osm.pbfファイルを24時間で約10,000回ダウンロード したユーザーの存在
  • 全ファイルを毎日ダウンロードするユーザー による帯域圧迫問題
  • ネットワーク帯域に限界 があり、過剰利用は全体の速度低下を招く
  • IP範囲のブロック時、無関係な第三者にも影響が及ぶリスク

利用者への具体的なお願い

  • 全世界データが必要な場合、分割ダウンロードではなくplanet.openstreetmap.orgのplanetファイル利用を推奨
  • 大規模地域(例:Europe, North America)を毎日更新したい場合、pyosmium-up-to-dateプログラムの利用を推奨
    • ローカルファイルの更新状況を自動判定し、 最新変更分のみダウンロード
    • 新規ダウンロードと比較して約98%の通信量削減、処理も高速
  • 自動化スクリプト利用時、動作監視やエラー処理の実装を徹底
    • 例: ディスク容量不足等で同一ファイルを何千回もダウンロード しないような設計
  • 全利用者の利便性維持 のため、節度ある利用の徹底

まとめ

  • ダウンロードサーバーの高速・安定運用 のためには、全利用者の協力が不可欠
  • 責任ある利用 が、誰もが便利にOSMデータを活用できる未来への鍵

Hackerたちの意見

確かに、BitTorrentの使い道はあるよね。

データが変わったら、トレントクライアントはどうやってそれを拾って変更をダウンロードするんだろう?

誰かがCIパイプラインでダウンロードしてるみたい。多分、知らずにね。だから、ほとんどのサービスは認証されていないユーザーの自動ダウンロードを禁止したんだよ。URLをcurlで使いたいなら、サインアップさせればいいし、ダウンロードしすぎるユーザーはブロックするか課金すればいいんじゃない?

CIは計算リソースの無駄遣いの一つだと思うけど、地図データがライブラリや他のコードと同じように乱用されるとは思えないな。

CIサーバーからのリクエストを確実に特定できるのかな?

GPKGファイルを「クエリ」するウェブアプリがあるんじゃないかな。Parquetは精密にクエリできるけど、GPKGでも同じことができるかはわからないな。

何か軽量な認証(APIキーとか、メールベースでも)を持つのはいい妥協だと思う。

ヘビーユーザーにはメール送ってるのかな?2012年に住所のジオコーディングにNominatimの無料APIを使った時、メールアドレスが必須パラメータだったんだ。そしたら、結果をキャッシュしてリクエスト数を減らすようにってメールが来たよ。

ログインがないから、メールアドレスも持ってないよね。

こういう問題を読むたびに、なんでみんなもっとBitTorrentを使わないのか不思議に思う。なんでもっと多くのものの基盤プロトコルになってないんだろう?コンテナレジストリとか、パッケージリポジトリとか。

いくつか考えられる理由があるね。1. BitTorrentは悪いイメージがある。ほとんどの人は違法ダウンロードと結びつけて考えてる。2. ちょっと複雑なファイアウォールのルールが必要で、ネットワーク管理者にそれを設定してもらうのは、理由1のせいでちょっと抵抗があるかも。非常に制限の厳しいネットワークでは、BitTorrentのせいで全く許可したくないってこともあるし。3. BitTorrentクライアントはHTTPクライアントよりも複雑で、ほとんどの会社のコンピュータやCIパイプラインにはインストールされてない(必要がないから、そしてまた理由1)。多くの人はただcurlして終わりにしたいんだよね。4. 多くの人がシードする必要があると思ってて、なぜかそれが怖いみたい。全体的に見て、理由1と、単にcurlしてすべてが動くっていう事実が大きいと思う。BTがどれだけ優れたファイル転送プロトコルか、そしてそれがどれだけ使われていないかを理解していないのが悲しいな。確か、あるゲームクライアントが裏でBTを使ってアップデートしてたのを覚えてるし、peertubeはwebtorrentを使ってるけど、残念ながらBTはあまり人気がないね。

単にhttpが持ってる「ユニバーサルクライアント」がないからだと思うし、devたちがssh/scpで持ってることが多いんだよね。そんなクライアント(自動化されたスクリプトCLIクライアントでも)を設定するのが難しいわけじゃないけど、トラッカーも必要になるし、それを維持するためのツールも必要だし。直感的に言うと、これらは不可能じゃないし、数カ所の難しいところを除けば、そんなに難しくもないと思う。要は、非常に大きなファイルやセットの頻繁なダウンロードに対する需要がどれくらいあるかってことが問題なんだよね。それが信頼性やシーディングのボリュームの問題につながって、ツールを開発して様々なRCSやファイル同期サービスと統合するための労力と対比されることになる。Git LFSみたいなものが役立つかな?ここら辺は私の理解の限界だわ。

数年前に「動的コンテンツのトレント」って概念を見た記憶があるけど、結局は実現しなかったみたいだね。実現してたらよかったのに、でも重大な問題(例えばセキュリティとか)があるのかもしれない。

コンテナレジストリみたいな感じ? https://github.com/uber/kraken が存在してるけど、修正されたBTプロトコルを使ってるんだ。ただ、大きなイメージをたくさんのノードに配布するわけじゃないなら、中央集権的なレジストリの方が速くてシンプルで安いと思うよ。

Amazon、Esri、Grab、Hyundai、Meta、Microsoft、Precisely、Tripadvisor、TomTom、他の数十社が集まって、S3上でOSMデータをParquet形式で無料提供してるんだ。これを精密にクエリして、マルチTBのデータセットでMB単位の帯域幅だけで分析ができるよ。 https://tech.marksblogg.com/overture-dec-2024-update.html ArcGIS Proを使ってるなら、このプラグインを使ってみてね: https://tech.marksblogg.com/overture-maps-esri-arcgis-pro.ht...

ネットワークの観点から見ると、BitTorrentはひどいよね。ネットワークトポロジーを把握できないから、トラフィックがアイボールネットワークからアイボールネットワークに流れることが多くて、「安い」経路がないことが多い(これがトランジットポートの混雑を引き起こす可能性がある)。さらに、トラフィックがどこから来るかを予測する信頼できる方法がないから、キャパシティプランニングが大変だよね。それに、誰かが重いトレントをしてるときにインターネット接続を共有しようとしたことがある人ならわかると思うけど、接続数が多すぎると、ネットワーク上の非トレントトラフィックの全体的な質が下がるんだよね。もちろん、BitTorrentには大きなスティグマがあるのも忘れちゃいけない。以前はSquidキャッシュボックスが答えだったけど、httpsがそれを非常に難しくしてる。全てのデバイスにmitm証明書をインストールしないといけないからね。コンテナイメージについては、プルスルーレジストリがあるけど、これを設定するのは簡単じゃないし(サービスとしても各クライアントとしても)、クラウドプロバイダーはストレージにかなりの料金を請求するから、チェックが「普通に動く」時に正当化するのが難しいんだ。Linuxディストリビューション(CPANやtexliveなど)には、数年前からミラーネットワークがあって、これらの問題の一部を解決してるけど、OpenCachingプロジェクトもあったけど、動画メディアや公開後数時間でキャッシュに現れるパッケージ以外の様々なコンテンツをキャッシュするには持続可能じゃないんだよね。BitTorrentは魅力的に見えるかもしれないけど、問題を移動させるだけで、解決にはならないんだ。

HTTPにちょっとした変更を加えるだけで、Bittorrentの利点をかなり享受できると思うよ。HTTPの基本的な原則はそのままでね。ここでOSMにBittorrentが理想的だと思う。

ワールド・オブ・ウォークラフトは、しばらくの間、パッチ用にBitTorrentのようなプロトコルをデフォルトオプションとして使ってた気がする。 https://www.bluetracker.gg/wow/topic/us-en/10043224047-need-... その例として挙げてみる。いろんな問題やクレームがあって嫌われるようになったけど、主にブリザードが拡張パックの数週間前にパッチセットを事前にロードするっていうアイデアを思いついたから、消えちゃったんだよね。リリースの1ヶ月前に10GBのパッチを送って、リリースの1週間前にそのパッチを更新して、リリースの前日には最後の小さなパッチを当てれば、全部事前にロードされるってわけ。Netflixとかの影響でCDNの爆発的な増加も市場をかなりシンプルにしてるしね。

以前、毎週すべての開発者に巨大なファイルを配信しなきゃいけない会社で働いてたんだけど、ある時、rsyncの大群からBitTorrentに切り替えたんだ。速度がめちゃくちゃ上がったよ。

BitTorrentを使うには、マシンがリスニングしてて、何らかの形でアクセス可能である必要があるんだけど、これが多くの場合当たり前じゃないし、時には望ましくもないこともあるよね。目立っちゃうし。企業や一般的な非オタク環境で成功する可能性があるBitTorrentのバリエーションは、次のような特性を持っているべきだと思う。

  • WebSocket経由で動作すること
  • ブラウザで動く、インストール不要
  • 反抗的な評判がないこと これが実装されてるのは明らかだから、何度も行われてると思うけど、注目を集めないことが目的だからあまり知られてないんだろうね。

Geofabrikみたいな人たちのおかげで、たまにいいものが手に入るんだよね。本当に感謝してる。APIをホスティングしてると、開発者たちの無責任さや無知さには驚かされることが多いから、ダウンロード数が多いのも全然驚きじゃないよ…数年前に、今見てることを誰かに言われたら、絶対に嘘だって思ってたと思う。でも、同時にAPI開発者が物事の複数形を考えないことが多いのも驚きだよね。ほとんどのユースケースがそのレベルじゃないのに、単一のエンティティに対するアクションのためのエンドポイントしか考えないから、「一つのアクション」をするために700リクエスト送るしかないっていう状況になっちゃうんだよ。

APIをホスティングしてると、開発者の無責任さや無知さには驚かされるよ。これは、スキルのない人には誰にでも当てはまることだね。みんなが見つけたAPIを叩きまくってるわけじゃないって保証するよ。プログラミングがほぼ誰でもできるようになって、特に今は「バイブコーディング」なんてのもあるから、こういうことは起こるだろうね。レスポンスに429(リクエストが多すぎます)を返すか、漏れバケツアルゴリズムを使って、ジュニア開発者や見習い、バイブコーダーはすぐに自分のやってることが間違ってるって学ぶだろうね。 - シニアバックエンド開発者

たった一人のユーザーが1日に20GBのファイルを何千回もダウンロードしてるって言ってるけど、エンドポイントにレートリミットをかければいいじゃん?

正直、両方とももう少し共感が必要だと思う。クライアントは共有インフラを尊重しないといけないし、API開発者はもっとユーザーの気持ちを考えるべきだよ。

S3の「ダウンローダーが支払う」みたいな機能がもっと広く使われてないのが理解できない(AWS以外でも利用できればいいのに)。非効率な消費者には自分のコストを負担させればいいのに。大きな欠点は、支払いネットワークにアクセスできない人が除外されることだけど、レート制限付きの無料オプションがあればいいかもね。

数年前、ビルドスクリプトで100MB以上をダウンロードするなんてバカなことする人はいないだろうと思ってたんだけど、Dockerのことを知ってしまった。

だから、CIでプロジェクト特化のイメージを作って使ってるんだ。毎回apt-getを実行するのは時間がかかりすぎるからね。

ちょっと待って、Dockerはレイヤーをキャッシュするから、毎回ゼロからビルドしなくてもいいんだよね…?

コンテナに入っちゃうと、みんな魔法みたいにタダだと思っちゃうよね。

こういうことする人たちは、こういうブログ記事なんて読まない気がするな。

APIキーを使うのに完璧な理由だね。これがソフトウェアモデルのニュアンスを見落としてなければだけど。

でも、これでデータのホスティングがめっちゃ複雑になるよね。ファイルとnginxだけだったのが、今はアクティブな認証、キーの発行、モニタリング、レート制限が必要になるんだから…確かに「正しい」解決策だけど、めっちゃ面倒だし、こんなに手間をかけずにいいものが手に入ればいいのに。これがコモンズの悲劇だね。

メタ的に言うと、タイトルをもう少し分かりやすくした方が良かったかも。「OSMデータを責任を持ってダウンロード」とかにすれば、ドメイン名に不慣れな自分でも文脈がすぐに分かったと思う。

元のタイトルは問題ないと思うよ。OSMかどうかはあまり関係ないし、無駄にデータをループでダウンロードしてる人たちの他のケースにも当てはまるから。

そのうち別のコメントが来るだろうね。「OSMって何?」って。今のタイトルで全然いいけど。

おお、やあ、俺だよ、8秒ごとにitaly-latestをダウンロードしてるやつ! まあ、そうじゃないかもしれないけど、チームの誰か(俺はGeoFabrikをかなり利用してるイタリアのスタートアップで働いてる)が、コンテナ化の実験でちょっとやりすぎたんじゃないかって気になっちゃう。しばらく前にGeoFabrikからバンされちゃったみたいで、今でもその理由が全然わからないんだ。将来的に避けるために何が原因だったのか理解したいんだけど、geofabrik.deに載ってる連絡先に電話やメールを送ってみたけど、全然ダメだった。もし他に連絡を取る方法があって、バンを解決できる手段があれば、そして何が原因だったのか教えてくれる人がいたら、ぜひ教えてほしい。