AndroidとJavascriptでGoogleマップの代わりにOpenStreetMapを使ってみました

現在、弊社で開発している位置情報共有サービス「ルナスコープ」ですが、GoogleマップではなくOpenStreetMapを利用しています。その理由と使用感をお伝えしたいと思います。

GPSを追跡するサービスでは、Googleマップはライセンス料が必須

ルナスコープは、Androidアプリ、iOSアプリで位置情報を収集して、登録したメンバー同士で位置情報を確認し合うことができます。iOSアプリはAppleの地図を利用するので良いとして、ルナスコープではAndroidアプリとWEBでGoogleマップを利用しようかと当初検討していました。Googleマップの代理店さんに問い合わせしたところ、アセットトラッキングになるので最低でも年間120万円のライセンスが必要とご説明をいただきました。また、ユーザ数が増加したらライセンス料金も上がります。

Googleマップ自体は無料で利用できるのですが、一定の条件を超えるとライセンス購入が必要になる販売モデルを取っています。(参考: Googleマップ 価格とプラン

比較検討して自社でOpenStreetMapサーバを用意

Googleマップより機能は劣りますがOpenStreetMapという地図があります。これは、商用でもライセンスフリーで利用できる地図パッケージです。注意点としては、地図データの著作権に対してライセンス料は発生しませんが、アクセスの多いサービスを作る場合は地図送信サーバ(タイルサーバ)を自前で用意する必要があります。

こちらも参考になります。
地図サービス料金比較
Web地図サービス (Mapbox, MapQuest)のイロハと静的地図画像のこと

アセットトラッキングをするケースは個別にライセンス料金が設定されていたり、高めだったので今回はさくらのVPSを使って、OpenStreetMapのタイルサーバを構築する方法にしました。AWSよりさくらのVPSが優れている点としては、データ転送量がかからないというのがあります。タイルサーバは沢山データを送信すると想定して、さくらのVPSを利用することにしました。

さくらのVPSでどのプランが良いか分からなかったのですが、メモリ4G、SSD100Gの月額約4000円のプランにしました。日本の地図データしか対象にしませんのでこのサイズですが、世界の地図データを対象にする場合は、もっと大きな保存領域が必要です。

参考: Ubuntu 16.04 で OpenStreetMap タイルサーバを構築

動作はルナスコープのWEB, Androidアプリで確認できます

WebではLeafletというjsライブラリを利用すると、簡単にマップをスムーズに表示、操作できるようになります。「運営会社 – Lunascope」のページでOpenStreetMap + Leafletの操作感が確認できます。

思ったより良い感じでした。

Androidでは osmdroid というライブラリを使うことになるのですが、ルックアンドフィールはGoogleマップに及びません。

タイルサーバはキャッシュがない場合に、タイルを生成しますがさくらのVPS 4GプランではCPUを使い切ってしまい、レスポンスが遅くなるときが多々あることも確認できました。

まとめ

GPSなどで位置をトラッキングするアプリやサービスでは、Googleマップを利用するとラインセンス料が必ず必要になります。OpenStreetMapは著作権無料で利用できますが、タイルサーバを用意したり、使用感が劣ります。予算と目的に合わせて地図サービスを選びましょう。

今回の調査で見つけたLINE社が出してる LINE HERE というアプリですが、Android版はGoogleマップを使っています。100万ダウンロード超えててかなりのライセンス料が必要そうですが、内部課金も広告も無いので、お金持ちの会社を羨ましく思いました笑。