検索
特集

王者Googleマップにライバル登場!「Mapbox」はどこまで使えるか?マップサービス最新動向

これまでWebサイトにマップ(地図)を載せるなら、「Googleマップ」(Google Maps JavaScript API)を使うのが「普通」だった。だが最近、「Mapbox(マップボックス)」が徐々に存在感を示し始めている。どれくらい「使える」のか、簡単な比較をしてみた。

PC用表示 関連情報
Share
Tweet
LINE
Hatena
Googleマップ? いえ、Mapboxです

 自社のWebサイトに、店舗や拠点の場所を示す「地図(マップ)」を表示したい。それも、お仕着せのピン画像を1本立てただけのマップではなく、もっとカスタマイズして、顧客に価値を感じてもらえる独自のマップサービスを提供したい、という要望は多い。

 そんな場合、これまでは「Googleマップ」のサービスを使ってマップを実装するのが普通だった。読者諸氏も使ったことがある、あるいは運用中という方々がいることだろう。機能も豊富で、構築に役立つ情報はインターネットにたくさんあり、便利なサービスなのは間違いない。

 その一方で、「料金が高い」「全てのサービスをGAFA(Google、Amazon、Facebook、Apple)に頼っていいのかな……」などと感じることはないだろうか? とはいえ、なかなかGoogleマップに代わるサービスがないという声も聞く。実は、日本向けの地図サービスで「Mapbox(マップボックス)」のサービスが徐々に存在感を示し始めている。

 筆者は、弊社のWeb版マップサービス「ロケスマWEB」で数年、Mapboxのマップサービスを利用してきた。本稿ではその経験も踏まえつつ、まだMapboxをよく知らないWebサイト関係者を対象として、この企業のマップサービスがGoogleマップと比べてどれくらい使えるものなのか、比較・紹介してみたい。

 Web以外のスマホアプリなどのプラットフォームや、3D系などMapbox独自のサービス/APIには、本稿では触れない。あくまでもコーポレートWebサイトなどに2Dマップを掲載する前提で、GoogleマップとMapboxを比較してみる。

Mapboxってどんな会社?

 Mapbox社は2013年に米国で設立された企業で、Webやスマートフォンでマップを使ったサービスを構築したい企業・組織向けに、各種開発キット(SDK)やライブラリ、API、そして地図タイル(地図の画像)などを提供している。

 2017年にはソフトバンク・ビジョン・ファンドの投資を受けている。2020年にはソフトバンクとの合弁会社「Mapbox Japan」を設立するなど、日本での事業を本格化させている。

 ソフトバンク傘下のYahoo! JAPANも、同社のマップサービス「Yahoo! Mapの地図表示にMapboxを採用」している他、従来Googleマップの有償ライセンスを販売していた代理店がMapboxのライセンス販売も手がける例も散見されており、用途に応じてGoogleマップとMapboxを比較した上でライセンスが購入できるようになっている。ちなみにMapboxは、ゼンリンと提携しており、一部地図データの提供を受けているということだ。

「Mapbox」のマップサービスをGoogleマップと比較してみる

 とはいえ、気になるのはGoogleマップのサービスと比べて、Mapboxのマップサービスがどれくらい「使い物」になるのか、という点だろう。以下では、日本国内に限定して、サービス利用料金のほか、地図の品質や表示速度などエンドユーザーの使い勝手に直接関わる部分も比較してみる。

●料金は約4割安く済む!?

 ここでは、独自のピン画像で店舗を表示するなど、カスタマイズしたマップをWebページに載せるという前提で、両社のサービスの料金を比較してみた。

 両社の料金体系は以下のページに詳細が記されている。

 Googleマップでは「Dynamic Maps」、Mapboxでは「Map Loads for Web」が対象サービスの料金に該当する(住所検索機能を提供する場合、ジオコーディングAPIの呼び出し料金が別途かかる。ここでは省略する)。どちらも大ざっぱにいえば、マップを表示する(マップを「ロード」する)たびに一定の料金が加算される。表示後にマップを移動したりズームイン/アウトしたりしても、料金は増えない。

 そこでマップの表示回数に対して、どれくらいの料金がかかるか比較してみたのが以下のグラフだ。

GoogleマップとMapboxのWeb版マップサービス料金比較
GoogleマップとMapboxのWeb版マップサービス料金比較
どちらもWebページでマップを1回呼び出す(表示する)たびにかかる料金を算出してみた。Googleマップは「Dynamic Maps」と呼ばれるカスタマイズ機能の豊富なサービスを選んでいる。両社の米ドルベースの料金表に対し、1ドル=110円として算出。また無料利用分(Googleは200ドル、Mapboxは250ドル)を差し引いた後の金額を表示している。2021年1月上旬時点の情報で算出。

 まず、無料で表示可能な回数(グラフ縦棒が「\0」のままの部分)は、Googleの2万8000回に対し、Mapboxは5万回と倍近く多い。それ以上の回数でも総じて4割ほどMapboxの方が安いことが分かる。

 上記はあくまでベースの地図タイルを表示するためのサービス料金を比較した結果であり、ジオコーディング(住所から緯度/経度への変換)など他のサービスと併用するなどの条件次第で料金は変わってくる。

●地図データの品質は? 建物や店舗の表記で比較してみる

 後発企業のサービス料金が安いのは、市場シェアを先行企業から奪っていかなければならない以上、当たり前のことだろう。サービスを利用するユーザー企業としては、料金だけではなく、サービス品質も非常に重要だ。

 特に日本向けマップサービスの場合、観光施設、公園、店舗といった、エンドユーザーがマップを見ながら目的地に到達する際の目印となる建物など(Point Of Interest:POIと呼ばれる)がちゃんと地図に記載されていること、さらにその名称も併記されることが重要だ。というのも、これまでGoogle以外のマップサービスでよく採用されてきたOpenStreetMap(無償で利用可能なマップデータの一種)では、日本だとあまりPOIの記載が充実していない地点が多かったからだ。

 以下では、弊社周辺(東京都世田谷区にある京王線上北沢駅付近)と東京スカイツリー周辺(東京都墨田区)の地図タイルを比較してみた。

■Googleマップの地図タイルの例(東京都世田谷区)


■Mapboxの地図タイルの例(東京都世田谷区)


 この辺りは10階に満たない低層階の建物ばかりで、多くの店舗の中にマンションや戸建住居も混じっている。GoogleマップではPOIの種類によって色分けされて表記されており見やすい。ただ、建物名の記載では意外とMapboxが健闘していることも分かる。一方、道路の形状は明らかにGoogleマップの方が正しい(Mapboxが表示しているほど細い道路ではない)。

■Googleマップの地図タイルの例(東京スカイツリー周辺)


■Mapboxの地図タイルの例(東京スカイツリー周辺)


 一方、東京スカイツリー周辺では大きな違いがあった。Googleマップでは建物内の店舗が記載されているのに対し、Mapboxにはほとんどない。これは他の施設でも同様だった。

 このように品質という点では、絶対的にはやはりGoogleマップにはかなわない。だが、数年にわたって両社のマップサービスを利用してきた筆者としては、特に建物名についてMapboxのマップ品質は向上していて、用途によっては顧客向けサービスにも利用できそう、と感じている。

●地図表示速度の差は?

 マップの表示速度も、エンドユーザーの使用感を左右する重要な要素だ。ただ、これは条件によって激変するため、比較が難しい。ここでは、弊社のマップサービス「ロケスマWEB」で地図タイルをGoogleマップで表示した場合と、Mapboxに切り替えた場合で比較してみた(ロケスマWEBは双方のサービス/APIに対応している)。

 具体的には、Intel Core i5搭載PC/Windows 10/Google Chromeで1024×768ピクセルのブラウザペインに、東京スカイツリーを中心としたマップを表示するのにかかった時間(Google Chromeデベロッパーツールの[Network]タブの「Finish」の値)を計測した。5回測定した平均値は、Googleマップが1.01秒に対し、Mapboxは1.35秒だった。この差を大きいとみるか、小さいと見るかは、用途や人によって大きく異なるだろう

●足りない機能もあるけど優秀な点もある

 機能の数については、やはりGoogleマップに一日の長がある。筆者がマップサービス実装時に気付いた例を以下に挙げる。

  • ストリートビューがない
  • 郵便番号から緯度/経度が検索できない
  • ピンを落下させるアニメーションが標準装備されていない

 もっともストリートビューやアニメーションは、用途によっては不要だろう(特にGoogleマップのストリートビューは単価が高いため、弊社サービスでも多用していない)。検索については今後のサービス改善に期待したいところだ。

 一方でMapboxの方が優れている機能もある。例えばグラフィカルなUIで地図タイルをカスタマイズできることだ。「Mapbox Studio」という編集ツールを使うと、実際にマップを表示しながら、フォントのサイズや種類を変えたり、建物などの色を変えたり、といったことができる。しかもズームレベルに応じて各種サイズを可変できるなど、かなり細かい調整にも対応している。細かすぎて筆者は編集時にまごつくことがあるくらいだ。

地図タイルをグラフィカルに編集できるツール「Mapbox Studio」
地図タイルをグラフィカルに編集できるツール「Mapbox Studio」

 Mapbox StudioはWebベースのツールで、Google Chromeなどのブラウザで利用できる。ツールそのものは無償で利用できる。

MapboxのマップをWebサイトに載せるには

 MapboxのマップサービスでWebページに地図を載せるには、まずMapboxのアカウントを作成する必要がある。ひとまず試すだけなら、クレジットカードの設定は不要だ。

Mapboxのアカウントを作成する
Mapboxのアカウントを作成する

 次に、マップをWebページに載せる際に必要なアクセストークン」を生成する

「アクセストークン」を生成する
「アクセストークン」を生成する

 アクセストークンは後述のJavaScriptプログラムに記入するので、作成後に表示される画面でコピー後、メモしておく。

 次にマップの「スタイル」を用意する。Mapboxのギャラリーページにある「Mapbox Streets Japan」というマップスタイルで、[Add Mapbox Streets Japan to your account]ボタンをクリックする。

日本向けマップスタイルを基に自分のマップの「スタイル」を作成する
日本向けマップスタイルを基に自分のマップの「スタイル」を作成する

 すると、このスタイルの複製が自分のアカウントに追加される。前述のMapbox Studioの画面が表示されるので、以下のようにスタイルの名前を変更してから[Publish]ボタンをクリックする。表示されたダイアログでも[Publish]ボタンをクリックする。

スタイルを公開してWeb上で使えるようにする
スタイルを公開してWeb上で使えるようにする

 さらに[Share]ボタンを押して、[Developer resources]−[Style URL]をコピーして、メモしておく。

作成したスタイルの「スタイルURL」をメモしておく
作成したスタイルの「スタイルURL」をメモしておく

 これでMapboxアカウントやMapbox Studioでの作業は完了だ。

 マップを載せたいWebページのHTMLファイルを編集して、以下のように必要な要素を記入していく。Mapboxの場合、Webページにマップを載せるには、「Mapbox GL JS」というライブラリを利用する。

……
<head>
……
<!-- Mapbox GL JSのスタイルシートとJavaScriptコードを読み込む -->
<script src="https://api.mapbox.com/mapbox-gl-js/v2.0.1/mapbox-gl.js"></script>
<link href="https://api.mapbox.com/mapbox-gl-js/v2.0.1/mapbox-gl.css" rel="stylesheet" />
……
</head>
<body>
……
<div id="mapContainer"></div>    <!-- マップ表示枠 -->
……
<script>
<!-- マップなどを作成して表示するためのJavaScriptを記す後述) -->
</script>
</body>
……

マップを表示するWebページのHTML(抜粋)

 <script></script>内には、マップなどを作成および表示するためのコードを記述していく。マップを表示するだけなら、以下のようなコードだけで済む。

mapboxgl.accessToken = "<作成したアクセストークン>";
var map = new mapboxgl.Map({              // マップを生成
    container: "mapContainer",                  // マップ表示枠のID
    style: "<作成したスタイルのURL>",
    center: [139.624541, 35.6738724],     // マップの中心の経度、緯度
    zoom: 13.5                                        // ズームレベル。大きいほどズームイン
});

マップを作成および表示するJavaScript

 またマップ上にマーカーを表示するには、以下のようなコードを追加する。

var icon = document.createElement("img");    // imgタグの要素を作成
icon.src = "/assets/images/pin_da.png";        // マーカー画像
icon.style.width = "70px";                             // 画像の幅
icon.style.height = "84px";                            // 画像の高さ
var marker = new mapboxgl.Marker({           // マーカー生成
    anchor: "bottom",                                   // 経度、緯度=マーカー底辺真ん中
    element: icon                                        // 画像を指定
});
marker.setLngLat([139.624541, 35.6678724]);     // 経度、緯度を指定
marker.addTo(map);                                           // マップに載せる

マーカーを作成および表示するJavaScript

 さらに、マーカーがクリックされたときにポップアップウィンドウ(バルーン)を開くには、以下のようなコードを追加する。

var popup = new mapboxgl.Popup({        // ポップアップを生成
    offset: 80,                                         // アイコンとの距離
    closeButton: false                              // [×]アイコンを表示しない
});
popup.setHTML(                                                // ポップアップ内にHTMLを挿入
    "<h5>(株)デジタルアドバンテージ</h5>" +      // タイトル(会社名)
    "<img src='front.jpg'>"                                 // 玄関の画像
);
marker.setPopup(popup);                          // ポップアップをマーカーにひも付け

ポップアップを作成および表示するJavaScript

 後は必要に応じてCSSを設定すれば、以下のようなマップをWebページ内に表示できる。

Webページに挿入したMapboxのマップの例
Webページに挿入したMapboxのマップの例

 このようにMapboxのマップは、そう難しくないJavaScriptのコードによりWebページに載せることが可能だ。ただし、Google Maps JavaScript APIとMapbox GL JSとの間には、互換性はない。従来のGoogleマップ用プログラムをMapboxのサービスに移植するには、コードを大幅に修正する必要があるので注意してほしい。

 マップ作成を試すなら、日本語で記述されているクイックスタートを参照するとよいだろう。


 以上、簡単ながらMapboxのマップサービスとGoogleマップを比較してみた(3DやAI搭載ナビゲーションなど、Mapbox独自のサービスについては触れなかったが)。特に地図タイルの品質のように、やはりGoogleマップにかなわない面がある一方で、Mapboxのマップサービスはランニングコストを抑えられるのが魅力的である。そのため、筆者らが運用している一部のマップサービスについては、Mapboxへ移植したマップをエンドユーザーに試用してもらい、その反応を見ながら移行するかどうか検討しているところだ。

Copyright© Digital Advantage Corp. All Rights Reserved.

ページトップに戻る