iDエディタをめぐるエコシステムに参加する楽しみ

OpenStreetMapは自由な地理データのプロジェクトであるが、そのデータを取り扱うためのソフトウェアプロジェクトもまたたいていは自由なものであり、世界各国からいろんな人がよってたかって発明や改善を日々続けている。
OSMに参加する際に多くの人がお世話になるiDエディタもそうしたプロジェクトのひとつであり、誰でもその開発に参加することができる。ナイト財団の助成で始まったこのプロジェクトはその後もGoogle Summer of Codeの成果のフィードバックを受けたりと、企業などの直接・間接の支援も受けながら直感的に操作できるOSM編集ソフトを基本コンセプトとしてグローバルなコミュニティにより開発がアクティブに進められている。
OSMにデータを投稿すること以外にも、エンジニアであればbug fixや機能追加に参加できるが、私のような非エンジニアでもやれることは結構多い。こうしたプロジェクトへの参加は当初は敷居が高かったり一方的な労力の提供に思えたりしても、次第に自分のやっていることが何らかの貢献につながっていることが実感できたり、仲間と知り合いになれたり、いつの間にか中身について詳しくなったり、何らかの機会に発表したりと、次第に面白くなってくる。何か間違ってもごめんなさいして修正すれば良いだけの話。ぜひ非エンジニアにもちょっとの勇気を出してプロジェクトに参加し、ナカのヒトとしての楽しみを味わって頂きたいということでとりまとめた次第。

## 1.入門編
### 1.1 日本語化済みのプリセットに日本語の検索キーワードを追加する
iDの画面上で編集対象を選んだ状態で、地物エディタの検索窓で適当なキーワードを入れると、そのキーワードを含むタグの候補名（ラベル）が現れ、その中からワンタッチで選ぶことができる。頭に浮かんだキーワードがヒットせずに歯がゆい思いをした経験をお持ちの方も多いのではないだろうか。このキーワードは検索に有効な値であれば、誰でもいくつでも追加することができる。また、表示されるラベルが分かりにくければそれを修正することもできる。

(1) [transifex](https://www.transifex.com/signup/)でアカウントを作成して、[iD Editorプロジェクト](https://www.transifex.com/openstreetmap/id-editor/dashboard/)で日本語を選んで「チームに参加」。
![iD Editor _ 概要.png](https://qiita-image-store.s3.amazonaws.com/0/35320/d50d8945-505f-e2e6-cacb-3b6e6d32cb78.png)
参加申請は通常1日程度で承認される。
(2) 翻訳/修正を開始する際にはJapaneseの翻訳を選び「リソースを表示」。
![リソースを表示.png](https://qiita-image-store.s3.amazonaws.com/0/35320/92504f0f-e808-f6b6-bda1-e254918db26e.png)
- community：iDで登録データの「保存」後に左下あたりに表示されるコミュニティの情報
- core：iDコア部分の文字列
- imagery：背景画像まわりの文字列
- presets：プリセットの文字列
![iD Editor _ 言語.png](https://qiita-image-store.s3.amazonaws.com/0/35320/6312e876-ee4d-7652-1bfa-f334f259c5f4.png)
「presets」を選ぶ。
下記画面が出たら「翻訳」。
![翻訳.png](https://qiita-image-store.s3.amazonaws.com/0/35320/7853b0b5-d324-7e4f-70fd-5bcf60500360.png)
デフォルトで「すべて」の文字列の一覧が表示される。「text:」は英語の原文、「translation_text:」は翻訳後の日本語でそれぞれ検索する際に選ぶ。
![検索窓.png](https://qiita-image-store.s3.amazonaws.com/0/35320/6141247d-4040-ae15-de01-a751f683e797.png)
(3) ここでラベルを修正したりキーワードを追加したりする。プリセットの翻訳行は基本的にiDのサイドバー（地物エディタ）に表示されるタグの「ラベル」行と、検索のための「キーワード」行の2行がセットになっている。
![iD Editor _ Transifexエディタ.png](https://qiita-image-store.s3.amazonaws.com/0/35320/fa3f129a-6789-b386-2ca8-9faa1250b100.png)

ここでは例として「劇場」に「シアター」という検索キーワードを追加してみる。下のキーワード行を選んで右側の編集パネルで「, シアター」と追加し「変更を保存」。
![iD Editor _ Transifexエディタ (1).png](https://qiita-image-store.s3.amazonaws.com/0/35320/50a1f47f-48da-5258-ff59-3517fabf6d05.png)
(4) [プレビュー用のiDインスタンス](http://preview.ideditor.com/master/#background=Bing&disable_features=boundaries&map=19.00/35.71638/139.77651)で動作確認し、手直しが必要なら(3)に戻る。transifexで更新してから10分程度で反映される。（ブラウザ上でリロードが必要）
なお、プレビュー用インスタンスは右下で向き先（本番サーバー/開発サーバー）を切り替える。本番サーバーでのOSMデータ更新内容は本番OSMデータに即時反映されるので注意が必要。
![シアター.png](https://qiita-image-store.s3.amazonaws.com/0/35320/505b8e98-1f39-afa1-877f-9ecb745e0140.png)
地物エディタで「シアター」を検索した結果。左が修正前、右が修正後。「劇場」というラベルが先頭に表示された。プリセットの修正内容は本番iD実行環境には次回のリリースで反映される。

なお、iDのプリセットはモバイルエディタである[Go Map!!](https://qiita.com/higa4/items/7cd06dd98280a50c2948)でも（更新タイムラグはあるが）使われている。iDでのタグ引きに慣れている方はアウトドアマッピングの際にはGo Map!!の利用をおすすめする。
### 1.2 新規追加されたプリセットなどを日本語化する
github上でプリセットなどが新規追加されると、transifexのプロジェクトページに未翻訳件数が表示されるので、それを選んで日本語化する。ラベル行は最も一般的な名称を、キーワード行には別名やカテゴリなど、検索の際に入力されそうな値をできるだけ多く登録する。

iDで編集する人はキーワードでヒットしたラベルだけをたよりにタグを選ぶので、似たような概念で微妙に違うタグについては、それらの間の違いが分かるような記述を付加すると良い。下記は「病院」を区別している例。
![iD Editor   Transifexエディタ.png](https://qiita-image-store.s3.amazonaws.com/0/35320/2477fbd9-b937-8940-fb39-d8567c9c5729.png)

## 2.中級編
### 2.1 新規プリセットの登録依頼を行う
地物エディタで検索にヒットしないものの中にはキーワードが漏れているのではなく、プリセット自体が未登録のものがある。
(1) 未登録かどうかtransifex上のプリセット一覧やgithub上のソースコードで確認する
(2) 未登録が確認できたら、Wikiやtaginfoで登録対象として適切か確認する。明確なしきい値は無いが、taginfoで数百件使用実績があるようなものは登録対象となり得る。
(3) 適切と判断したらgithubでプリセット登録依頼のissueを上げる。

- エスカレータ用のプリセット登録を依頼する[issueの例](https://github.com/openstreetmap/iD/issues/5350)

## 3.上級編
### 3.1 新規プリセット登録依頼をひきとって対応し、プルリクエストを上げる
(1)自分または他の人が上げたプリセット登録依頼に対して引き受ける旨のコメントをつける
(2)フォークしてプリセットを追加登録し、プルリクエストを上げる

- 釣りポイントのプリセットを登録する[プルリクエストの例](https://github.com/openstreetmap/iD/pull/5476)

### 3.2 name値からタグを逆引きするプリセットを登録・修正し、プルリクエストを上げる
iDとの連携プロジェクト[「name-suggestion-index」](https://github.com/osmlab/name-suggestion-index)ではチェーン店名などからタグを逆引きできるようにデータを整備している。
＜「吉野家」で逆引きする操作例＞
地物エディタの検索窓で「吉野家」と入力して検索すると候補の先頭に表示される。
![OpenStreetMap (5).png](https://qiita-image-store.s3.amazonaws.com/0/35320/8c83baf7-7dbd-a60d-891d-8e028ba26164.png)
選択すると下記タグが自動的にセットされる。
![OpenStreetMap (6).png](https://qiita-image-store.s3.amazonaws.com/0/35320/739812e1-4442-b33d-fe03-a38b48bd1b08.png)

このような逆引きを出来るようにしたいチェーン店名があれば[日本コミュニティで推奨するname値](https://wiki.openstreetmap.org/wiki/JA:Naming_sample)などを参照しながら登録する。
[DIY店のコメリを追加するプルリクエストの例](https://github.com/osmlab/name-suggestion-index/pull/2066)
>    "countryCodes": ["jp"],
>    "tags": {
>      "brand": "コメリ",
>      "brand:wikidata": "Q11302690",
>      "brand:wikipedia": "ja:コメリ",
>      "name": "コメリ",
>      "name:en": "Komeri",
>      "shop": "doityourself"
>    }
>  },

### 3.3 画像タイルを追加し、プルリクエストを上げる
iDとの連携プロジェクト[「editor-layer-index」](https://github.com/osmlab/editor-layer-index)では背景画像の利用情報を登録・更新できる。
(1)背景画像として利用して良いものであることを確認する
(2)editor-layer-indexプロジェクトで[日本用のエリア](https://github.com/osmlab/editor-layer-index/tree/gh-pages/sources/asia/jp)に下記のようなメタデータを付加したカバー範囲を示すgeojsonを格納し、プルリクエストを行う。

- 国土地理院 基盤地図2500の[プルリクエストの例](https://github.com/osmlab/editor-layer-index/pull/536)

> {
>  "type": "Feature",
>  "properties": {
>    "description": "GSI Kiban 2500 via finds.jp. Good for tracing, but a bit older.",
>    "i18n": true,
>    "id": "finds.jp_KBN_2500",
>    "name": "Japan GSI KIBAN 2500",
>    "type": "tms",
>    "url": "http://www.finds.jp/ws/tmc/1.0.0/KBN2500FN-900913-L/{zoom}/{x}/{y}.png",
>    "country_code": "JP",
>    "license_url": "https://wiki.openstreetmap.org/wiki/GSI_KIBAN",
>    "attribution": {
>      "url": "http://www.finds.jp/siteinfo/c_tou.html.ja",
>      "text": "GSI KIBAN 2500"
>    },
>    "max_zoom": 20,
>    "min_zoom": 15


多少とも試してみる気になって頂けたら幸いである。Happy Mapping!