行政サイトでウェブ地図を使う際の注意点などまとめ


昨今、行政のウェブサイトでも、JavaScriptを使用したインタラクティブな地図が使われることが多くなってきました。

2016年現在、民間のウェブページでは、動かせる地図を表示することは当たり前に行われるようになっています。
施設やイベントの場所を表現するにあたって、ウェブ地図はたいへん便利なツールであり、これからも利用が進みこそすれ、廃れることは無いはずです。
もちろん行政においても、サイトにウェブ地図を利用することはこれから一般的になってゆくと考えられます。

そうしたなか、行政サイトを構築する際に、いくつかの観点から気をつけたほうがよいだろう、ということをまとめてみます。

# 従うべき要件
行政のサイトを構築する際には、特にセキュリティ要件など、当然のように多くの要求仕様がありますが、ウェブ地図を利用するにあたって、見逃されがちな観点がいくつか存在します。

## 著作権・ライセンス的な観点
それぞれの地図サービスには、それぞれの利用規約が設定されています。
組織が当然従うべきコンプライアンスの一環として、それらの著作権やライセンスに沿った利用を行うことが求められます。

## 政府からの事務連絡
2013年に、内閣官房内閣総務官室、各府省ホームページ担当課室、各府省CIO連絡会議担当課室より、「ホームページ等における電子情報の利用について」という事務連絡が出されています。

当時、いわゆる「Google Maps禁止令」として話題になったもので、記憶にあたらしい方も多いと思います。

* [片山さつきオフィシャルブログ: ホームページ等における電子地図の利用について](http://satsuki-katayama.livedoor.biz/archives/7855139.html)
* [Huffington Post: グーグルマップの「利用禁止令」 竹島や北方領土が「日本名でない表記」 政府が自治体などに要請](http://www.huffingtonpost.jp/2013/09/29/google-map-forbidden_n_4011180.html)

この事務連絡の内容を簡単にいうと「公的な機関だったらば、日本の領土は日本の領土としてちゃんと書いてある地図を使ったほうがよいよ」ということになります。
あくまで事務連絡なので法的な強制力はないようですが、留意はしたほうが良いでしょう。

# 検討したほうがよい観点
必須というほどではありませんが、気をつけておいたほうがよい項目です。

## データ利用料金の観点
Google Mapsなど企業が提供しているプロダクトは一般的に、商用利用であったり、一定の利用量を超えると有償となります。
さすがに昨今、「タダで使えるし、ぜんぶ無料だと思った」というようなかたは非常に少ないと思いますが、逆に、利用できなくなってから慌てるようでは笑いものになるレベルでもあります。

また、OpenStreetMapでも[タイル利用規約](http://wiki.openstreetmap.org/wiki/JA:%E3%82%BF%E3%82%A4%E3%83%AB%E5%88%A9%E7%94%A8%E8%A6%8F%E7%B4%84)のなかで、あまりにアクセス数が多くなった場合、当該サイトからのアクセス遮断を行うことが明記されています。
OpenStreetMapのタイルは商用利用であっても無償で使用できるという認識が一部にあり、一定程度の利用についてはそのとおりです。
しかし、正しくは共有地であるサーバ資源を守るために、ヘビーユースが禁止されていることには留意ください。

![アクセスブロック時に表示される画像](https://qiita-image-store.s3.amazonaws.com/0/9928/9f16ff89-9f63-3dbd-a4a4-e22880bf5bb7.png "Blocked_userfacing.png")

## 可用性の観点
行政サイトのサービス要求仕様の中に、ダウンタイムや可用性について言及されることがあります。

地図の表示にはAPIを利用することがほとんどであるため、利用を検討しているサービスの可用性は検討しておいた方がよいでしょう。

商用の地図サービスのほとんどはこれらの可用性を満たしているはずですが、OpenStreetMapは不定期に、メンテナンスとして1日程度のダウンタイムが設けられることがあります。
（蛇足ですが、OpenStreetMapでは、障害対応もボランティアで行われています。）

# 各プロダクトについてのメモ

## Google Maps
ウェブ地図のなかで最も有名なこのプロダクトは、ユーザも多く、設置も簡単で、ドキュメントも多い、Web地図といえばまずはこれ、的なポジションになっています。

2013年に話題になった地図の地名表記も、その事務連絡以降、``region=JP``を指定することで、日本政府の連絡内容にあわせた表示を行ってくれるようになっています。（[あめいさんの記事](http://qiita.com/amay077/items/979dfc858a21c8bbb7a9)も参照）
地図のデザイン変更についても、若干のプログラミングが必要ではありますが、実施することが可能です。

ただ、Google Mapsは、[アクセス量が一定以上になった場合には有償](https://developers.google.com/maps/pricing-and-plans/#details)となり、それなりの金額が必要になります。

参考:

* [Google Maps APIドキュメント, 価格とプラン](https://developers.google.com/maps/pricing-and-plans/#details)
* [ゴーガ社による価格例](http://www.goga.co.jp/solution/maps.html)
* [ゼンリンデータコム社によるプラン紹介](https://www.zenrin-datacom.net/business/gmapsapi/price/flow.html)

また、Google Mapsの利用規約は[わりと複雑](https://www.google.co.jp/help/terms_maps.html)であり、制限が多いことでも有名です。
例えば、以下のようなことはNGです。

* 地図タイルへの直接アクセス
[Terms of Service 10.1.a項](https://developers.google.com/maps/terms?hl=ja#10-license-restrictions) ``No access to APIs or Content except through the Service``

* 地図画像のスクリーンショットを撮影して、ウェブページに掲載する
* 地図画像のスクリーンショットを撮影して、配布物資料に掲載する
* 地図を印刷・あるいは印刷物に掲載して、不特定多数に配布・販売する
[Terms of Service 10.5.aからg](https://developers.google.com/maps/terms#10-license-restrictions) ``Intellectual Property Restrictions.``

Google Mapsにおける制約の基本的な方向性は、以下のようになっています。

* Google Mapsはウェブ地図として使うことを想定
* なおかつ「地図を使うのであればGoogle Maps APIを設置してね」

印刷物として利用する際の詳細については、主に以下から辿ることができます。

* Googleによる[利用ガイドライン](https://www.google.co.jp/intl/ja/permissions/geoguidelines.html)
* 詳細な記述である [Google Maps / Google Earth APIs Terms of Service](https://developers.google.com/maps/terms)

Terms of Serviceのほうが詳細に書かれています。
できるだけこちらを参照することをお勧めします。

なお、利用規約上はフェアユースに関する文言がありますが、日本国の法域では著作権にフェアユース条項が存在していないため、無効な文言となります。なので、このフェアユースの記載をもとにした利用を主張することはできません。
また、利用規約内の[法的通知](https://www.google.co.jp/help/legalnotices_maps.html)では、各国で使用されているデータソースに関しての利用規約が整理されています。日本についても3.17項で多くのデータソースが述べられており、(株)トヨタマップマスターや(株)ゼンリンなどのデータに関する注意点が記載されています。

もちろん日本国の法域、という意味では、引用の範囲での画像利用や、個人での印刷物利用など、著作権法上で認められた権利を行使しつつ利用することは問題ないと考えられます。

## YOLP (Yahoo!地図)
Yahoo!地図を埋め込むためのJavaScriptです。

基本的には無償ですが、[アクセス数が一定以上となった場合には有償](http://developer.yahoo.co.jp/appendix/rate.html)、というGoogle Mapsに近いライセンス体系となっています。

ただし、有償といっても、値段が安く、日本の細かな事情にも通じたAPIが用意されていて、かなり良心的です。
もちろん、ドキュメントも日本語で用意されています。

印刷物に関する規約も Google Mapsと似ており、印刷物の第三者への配布行為は禁止されています。

* [Yahoo! Open Local Platformの利用方法](http://developer.yahoo.co.jp/webapi/map/#policy) 3項および4項

## OpenStreetMap
[openstreetmap.org](http://www.openstreetmap.org)で配布されている地図タイルを、[Leaflet](http://leafletjs.com/)や[OpenLayers](http://openlayers.org/)などのJavascriptを使って読み込むことで、地図を表示させることができます。

なお、OpenStreetMapの利用は無償、とよく言われますが、完全に無償というわけではなく、[タイル利用規約](http://wiki.openstreetmap.org/wiki/JA:%E3%82%BF%E3%82%A4%E3%83%AB%E5%88%A9%E7%94%A8%E8%A6%8F%E7%B4%84)に従った利用が求められることは前述したとおりです。

具体的な対応として、過度な通信量のアクセスが行われた場合、ブロックが行われ、地図の表示ができなくなることがあります。

また、openstreetmap.orgの地図デザインの変更は[非常に活発に行われています](https://github.com/gravitystorm/openstreetmap-carto/issues)が、基本色の変更など大幅な変更を気軽に行うことはできません。

さらに、年に数回、数日間のメンテナンス作業が行われます。
最近のメンテナンス作業では、地図の編集のみが停止され、地図画像の閲覧・利用は可能なことが多いのですが、他にサーバトラブルなどの理由で不定期に転送速度が遅くなることもあり、注意が必要です。

こうした弱点の箇所をカバーし、地図デザインの変更や安定したサービスの提供をうけるには[Mapbox](https://www.mapbox.com/)や[Cloudmade](http://cloudmade.com/)のサービスを利用することが推奨されます。
もちろん、タイルサーバや経路探索サーバを自分で構築したりすることも可能ですが、自治体でそこまでの構築を行うことは稀だと思われます。

## 地理院地図
国土地理院もまた、[地理院地図](http://maps.gsi.go.jp/)という名称で、自身の地図を配信するサービスを行っています。

地理院地図もOpenStreetMapと同じく、[Leaflet](http://leafletjs.com/)や[OpenLayers](http://openlayers.org/)などのJavascriptを使用して地図タイルを読み込みます。

データの利用ライセンスは[タイル毎に異なります](http://maps.gsi.go.jp/development/ichiran.html)が、多くのタイルは[国土地理院コンテンツ利用規約](http://www.gsi.go.jp/kikakuchousei/kikakuchousei40182.html)（政府標準利用規約2版ベース）で提供されており、かなり自由な利用が可能です。

また、道路情報や建物、水系など、主に利用されているデータは[基盤地図情報](http://www.gsi.go.jp/kiban/)として配布されています。
こちらは絵図ではなく、ベクタデータとしての利用も可能です。

> 基盤地図情報は[基本測量成果](https://ja.wikipedia.org/wiki/%E5%9F%BA%E6%9C%AC%E6%B8%AC%E9%87%8F)に指定されていますので、こちらを利用して作成した作成物を公開するには測量成果の[複製の承認申請](http://www.gsi.go.jp/LAW/2930-29zyou.html)が必要となっています。

地理院地図は、元となっている公共測量データの性質上、データ更新が基本的に、5年毎の単位となりますが、最近では高速道路や公共施設といった局地的な建物や建築物に対する更新が非常に早いことでも有名です。

国のサービスということで、ダウンタイムも非常に少なく、[Githubを通じて](https://github.com/gsi-cyberjapan/gsimaps)[改善要望をあげられる](https://github.com/gsi-cyberjapan/gsimaps/issues)など、技術的にも制度的にも、非常に面白い試みが行われています。
使い回しのしやすい部品としての地図を提供する、という観点は、ともすればパッケージ化されて使いづらくなってしまいがちな公共機関のサービスに比べ、圧倒的な利便性を誇っている、といってよいでしょう。

惜しむらくは、地図デザインに好き嫌いが分かれそう、というところでしょうか :)

## その他の地図サービス
もちろん、日本地域だけを見ても、さまざまな地図画像配信サービスが存在しています。
それぞれの会社ごとに、異なる観点からの地図デザインや機能が盛り込まれており、用途に応じて使い分けることは非常に重要です。

挙げているときりがないので、ここでは割愛します。

# OpenStreetMapと国境線・地名表示
OpenStreetMapで描かれている国境線は、実際に各国が主張する国境線とは異なります。
また、それぞれの国の主張やアクセス元などに合わせてレンダリングを変更する、ということも、openstreetmap.org上では行われていません。

また、地図上の地名表記ルールは「現地表記優先（On the Ground）」にもとづいており、さらに現状、openstreetmap.org上での表示について、各国の状況に応じた変更は行っていません。

参考: 

* [OSM wiki: Disputes](http://wiki.openstreetmap.org/wiki/Disputes)
* [OSMF position: Disputed Territories Information](http://wiki.osmfoundation.org/w/images/d/d8/DisputedTerritoriesInformation.pdf)

具体的には、nameタグの各国語表記バリアントであるname:jaタグなど、「日本語ではこう呼ばれている」という情報を追加することは可能ですが、それにあわせたレンダリングは openstreetmap.orgでは行いません。

このため、openstreetmap.orgのタイルをそのまま利用してしまうことで、日本政府からの連絡に反する可能性があります。
その対応のためには、ちょっとしたトリックが必要になります。

## OSM利用対応: 簡単な方法（地図の表示域固定）
Leafletを使っている場合、[maxBound関数などを使う](http://qiita.com/yuskesuzki@github/items/eaa97766cefaa16fbec8#comment-8e58801a5af39da6eadc)方法を使うことで、表示・移動できる範囲を制限したりすることが可能です。

OpenStreetMapを主な背景図として利用するマイマップサービス [uMap](https://umap.openstreetmap.fr/ja/)でも、[「指定範囲外に出られない」という設定が可能](http://qiita.com/kudarisenmon/items/754abab56f5a2a786942)です。

## OSM利用対応: 大掛かりな方法（サーバ側対応）
ちょっと大掛かりな利用方法として、配信されるタイルを入れ替える、という手法があります。

例えば、内閣官房が提供するサービス [RESAS](https://resas.go.jp/)では、いちどタイル画像をAWSに格納し、そのなかで特定の地域のタイルだけを入れ替える、という対応方法が採用されています。
osm.jpで採用されているタイルサーバ [Tileman](https://github.com/osmfj/tileman)でも、「クライアントのアクセス元によって、対象地域で配信するタイルを変更する」という[方法をとっています](http://miurahr.github.io/slides/2013-0908-tileman.html#/title)。（現在は竹島地域のみ対応）

## OSM地図画像のスナップショット配置
CMSの都合などでウェブ地図を配置することが出来ない場合には、いっそのこと、openstreetmap.orgの画像スクリーンショットを撮って、画像として配置する、ということも可能です。

これは、openstreetmap.orgの画像タイルのライセンスが [CC-BY SA 2.0](https://creativecommons.org/licenses/by-sa/2.0/deed.ja)だからこそできる技です。
ただしその場合、画像のどこか、あるいはその近くに ``© OpenStreetMap contributors``という[著作権表示を行い](http://www.openstreetmap.org/copyright)、その文言から http://www.openstreetmap.org/copyright に対してリンクを貼るようにしてください。

# Google Maps APIとその他の地図表示スクリプト
余談では有りますが、Google Maps APIと、LeafletやOpenLayersなどその他の地図表示スクリプトから呼び出して良いタイルには若干の注意点があります。

具体的に言うと、LeafletやOpenLayersから、単純にGoogle Mapsを表示させることは規約違反にあたります。
これは、Google Mapsタイルへの直接アクセスの禁止という制限のためです。

逆に、Google Maps APIを使ってOpenStreetMapや地理院地図のタイル画像を表示させることは問題ありません。
LeafletやOpenLayers独自の機能やプラグインを使いつつGoogle Mapsを表示させたい、という場合には、ちょっとした注意が必要、ということです。

この問題の回避策として、Leafletでは[Google Maps表示用のプラグイン](https://github.com/shramov/leaflet-plugins)が用意されており、こちらを使うことで[Google Mapsへのアクセスが可能です](http://shimz.me/blog/google-map-api/4389)。

プラグインをかませる程度でよいの？という疑問があるかもしれませんが、このプラグインはバックヤードの動作として、Leaflet上でレイヤを切り替えた際、Google Mapsを表示している間はそのコントロールをすべてGoogle Maps APIに切り替える、という動作をします。
つまり、プラグインの機能起動時には実際にはGoogle Maps APIが起動されており、Leaflet公式FAQの解説に沿っていえば、このプラグインはGoogle Mapsへの[プロキシとして動作するもの](https://github.com/Leaflet/Leaflet/blob/master/FAQ.md)として扱われています。

## 関連記事
特に自治体のウェブページにおける地図データ・地図表示の利用については、[森林土木memo](http://koutochas.seesaa.net/) の記事 「[自治体のホームページで安心して使える地図の作り方](http://koutochas.seesaa.net/article/444993828.html)」が非常に参考になります。
特に、地理院地図の利用や申請の条件については、こちらのページを参考にすると良いでしょう。


# おわりに
ウェブ地図の表示それ自体は非常に一般化してきたとはいえ、自分のやりたいことと必要な機能、そのための選択肢はまだまだ浸透しているとはいえません。

この文書が少しでも、行政の方々、そしてそれらのサイトを構築する方の助けになれば幸いです。