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

MapLibreタイル:現代的で効率的なベクタタイルフォーマット

概要

  • MapLibre Tile (MLT) は、Mapbox Vector Tile (MVT)の後継となる新しいベクタータイルフォーマット
  • 大規模地理空間データ や次世代フォーマットへの対応を目的に設計
  • 圧縮率やデコード性能が大幅向上 し、コストやレイテンシ削減を実現
  • 今後の拡張性 (3D座標や複雑なプロパティ等)も考慮
  • MapLibre GL JS/Native で既に利用可能

MapLibre Tile (MLT) の概要

  • MapLibre Tile (MLT) は、 Mapbox Vector Tile (MVT) の後継フォーマット
  • 地理空間データ量の急増複雑な次世代ソース形式 への対応を目的とした設計
  • 最新ハードウェアやAPI を活用し、 高性能な2D/2.5Dベースマップ描画 を実現

MLTの主な特徴

  • 圧縮率向上 ・大規模タイルで最大6倍の圧縮率 ・カラム指向レイアウト&再帰的な軽量エンコーディング採用 ・ レイテンシ、ストレージ、データ転送コスト削減キャッシュ効率の向上

  • デコード性能の向上軽量かつ高速なエンコーディングSIMD/ベクトル化命令 との組み合わせによる処理効率化

今後対応予定のユースケース

  • 3D座標(標高等)への対応
  • 最新グラフィックスAPI最適化 によるCPU/GPUでの高速処理 ・ストレージ/メモリフォーマットが GPUバッファへの直接ロード に最適化
  • 線形参照やm値対応 (Overture Maps/GeoParquet等の次世代フォーマット対応)
  • 複雑なデータ型 (ネストプロパティ、リスト、マップ等)への対応

コミュニティ主導の開発

  • MapLibreプロジェクト の一環として、今後も コミュニティの要望 を重視
  • 拡張や貢献 を歓迎

MLTの利用方法

  • MapLibre GL JS/Native で既に MLTソース対応

  • style JSONのencodingプロパティmltを指定

  • デモスタイル (MLTベース)を簡単に試せる

  • 既存MVTスタイル/ソースをMLTへ変換するサーバ も開発者向けに提供

  • Planetiler の次期バージョンでMLTタイル生成対応予定

  • 統合・実装情報 は専用ページで随時更新

    • MLT対応を進めるインテグレーター は自身のプロジェクト追加も可能

コミュニティ参加・問い合わせ

  • #maplibre-tile-format チャンネル(Slack)での議論
  • tile specリポジトリ でのIssue/Discussion作成

謝辞

  • MLT開発は学術・OSS・企業連携 による長年の成果
  • Markus Tremmel (フォーマット考案)、 Yuri Astrakhan (プロジェクト推進)、 Tim Sylvester (C++実装)、 Harel Mazor/Benedikt Vogl/Niklas Greindl (JavaScript実装)に特別謝意
  • Microsoft/AWS による資金提供

注意点

  • MVTと異なり、MLTはレイヤ内でカラム値の型がフィーチャごとに変化することをサポートしない

Hackerたちの意見

MapLibreはすごいプロジェクトだね!彼らのJSライブラリは、今まで見た中でブラウザで地図を表示するのに最適な方法だと思う。これに切り替えるのが楽しみだよ!

これ、100%同意!

これは面白いね。最近、pmtilesを使ったソリューションを導入したんだけど、めちゃくちゃ良いよ。https://docs.protomaps.com/pmtiles/ 確か、pmtilesはmvtを使ってるから、タイルをmltに変換するツールも早く出てほしいな。

pmtilesは本当にシンプルで革新的なソリューションだね!

PMTilesは、どんな種類のタイルが含まれていても結構無関係なんだよ!すでにMLTを含めるためのタイルタイプを指定するバイトを更新するPMTilesのPRがあるよ。https://github.com/protomaps/PMTiles/pull/596

PMtilesはMVTタイルと一緒に使われることが多いけど、いろんなタイルタイプをカプセル化できるんだ。現在の仕様[1]では、MVT、PNG、JPEG、WebP、AVIF(あと「Unknown/Other」)のタイルタイプが定義されてるよ。[1]: https://github.com/protomaps/PMTiles/blob/main/spec/v3/spec....

Tilemakerを使ってPMTilesを作ってるんだけど、PMTilesはすごいよ。ただ、Tilemakerを通してMLTを作るのはかなりの手間がかかりそうだね :/

ちょっと探してみたけど、デモページ見つけたよ: https://maplibre.org/maplibre-gl-js/docs/examples/display-a-... これと比較できるのは: https://maplibre.org/maplibre-gl-js/docs/examples/display-a-... その例でコンソールにこんなのが出てた: before - 2.41+26.29+24.87+71.28+59.2+77.57 - 261.62kb after - 2.45+22.4 +22.66+60.6+51.99+77.57 - 237.67kb だから、だいたい10%くらい圧縮改善されてるね、すごい!

ただし、demotilesスタイルは、人気のあるOpenMapTilesスキーマに基づくような本番用のベースマップとはあまり比較できないから注意してね。発表にリンクされた記事には、圧縮率に関するさらにいくつかの発見があるよ。それに、軽量なエンコーディングがフォーマットに組み込まれていて、異なるタイルは全く違う方法でエンコードされることもあるから、最適なエンコーディングの組み合わせを見つけるためにヒューリスティックを使う必要があるんだ。そして、タイルサイズとデコード性能の間でトレードオフをすることが多いよ。MLTはまだ始まったばかりだけど、これらすべてが最適化の可能性をたくさん秘めているってことだね。実際、AWSは今年もMLTの最適化に焦点を当てて作業を資金提供しているんだ。最後に、タイルサイズをベンチマークする際は、タイルセット全体のサイズではなく、実際の使用パターンを見ておくといいよ。例えば、誰も海のランダムな場所をズームインして見たりしないからね。 ;-)

いい感じだね。フル3Dタイルの進展もあればいいのに。今のところ、実際の選択肢はCesiumの3Dタイルフォーマットだけど、速さは全然足りないよね。

残念ながら、Tilemakerは中期的にMLTをサポートする予定がないみたい。これでコミュニティのかなりの部分がこの移行から取り残されちゃうね。興味深い(しかも結構熱い)議論があるよ: https://github.com/systemed/tilemaker/issues/856

もう一つ言っておくべきことは、ArrowやParquetみたいなカラム形式の構造にすごく似てるってこと。これらのフォーマットに詳しい人なら、数日でデコーダーを作れると思うよ。FastPFORを使わなければね。本当にFastPFORを使わなければよかった。あれは研究用のライブラリで、アルゴリズムがめちゃくちゃ不透明なんだよね: https://ayende.com/blog/199523-C/integer-compression-underst...

自分でマップをホストしてる人いる?もしそうなら、メリットやデメリット、使ってるツールを教えてくれない?

私たちは数年間、プロトマップ(つまりpmtiles)を自分でホストしてるよ。サーバー側で必要なのは、静的ファイルを提供できて、レンジリクエストをサポートするウェブサーバーだけ。だから、何でも大丈夫だよ;私はcaddyとnginxを試したことがある。マップは一つの大きなファイルだから、必要なだけサーバー間で簡単に共有できるよ。 https://docs.protomaps.com/guide/getting-started デメリット?特に大きな問題は思いつかないな。もう一つクライアント側の依存関係を追加しなきゃいけない(彼らのカスタムプロトコルのサポート);ライブラリはかなり小さくて、監査も簡単だよ。マップスタイルの編集はちょっと難しいけど、一般的なmaplibreスタイルは使えないからね。少しカスタムのソースを追加してるんだ。確かこのエディタはうまく動いてたはずで、プロトマップのスタイルをインポートして作業のベースにできるよ: https://maputnik.github.io/editor それくらいかな。

我々はmod_tileとrenderdを使ってるよ: https://github.com/openstreetmap/mod_tile ざっくり言うと、興味のあるエリア(アメリカのコロラド州)のOSMからpbfを作るスクリプトがあって、それを使ってopenstreetmap-tile-serverのコンテナをセットアップして、スタイルを持ち込んで、renderdを設定するって感じ。

関係ないけど、ロゴをクリックするとホームページじゃなくて現在のパーマリンクに飛ぶのに気づいた。意図しないかもしれないね。

Planetilerは現在、—-tile-format=mltというCLI引数を追加することでMLTの生成をサポートしてるよ。今のところ最新のメインにしかないけど、数日内にリリースできると思う。テストでは、デフォルト設定でOpenMapTilesアーカイブのサイズが約10%減少したけど、チームがさらに最適化に取り組んでるから、もっと減るはずだよ。

土曜日にFOSDEMのジオスペーシャル開発ルームでMapLibreのトークに来てね! https://fosdem.org/2026/schedule/event/QAL9VN-state-of-the-m...