はじめに
世界中を3m x 3mの正方形に区切り、それぞれに単語3つを組み合わせた「地名」を新たにつける「What3Words」、砂漠地帯はもちろんのこと、大きな駅での待ち合わせにも使える便利なアプリケーションです。
what3words | Addressing the world
そんなWhat3Wordsをオープンソースプロジェクトにしたのが「WhatFreeWords」です。アイデアは同じ、世界中を一辺3mの正方形で区切り、40,000語の単語から割り当てます。もちろん、3つの単語から一意の位置情報も取得できます。
本記事ではそれをGo言語で利用した流れを掲載します。
Open-source geocoding for What3Words
利用手順
ライブラリインストール
go get でインストールをすべく、GOPATHが設定済である必要があります。
設定されてなければ.bashrcに下記を入れてsourceコマンドで再読み込みを行えば
export GOPATH=/usr/local/go/dev
環境変数として読み込まれます。
$ echo $GOPATH /usr/local/go/dev
以下のコマンドでインストールができます。
$ go get -v whatfreewords.org/whatfreewords-go
Fetching https://whatfreewords.org/whatfreewords-go?go-get=1
Parsing meta tags from https://whatfreewords.org/whatfreewords-go?go-get=1 (status code 200)
get "whatfreewords.org/whatfreewords-go": found meta tag get.metaImport{Prefix:"whatfreewords.org/whatfreewords-go", VCS:"git", RepoRoot:"https://whatfreewords.org/whatfreewords-go.git"} at https://whatfreewords.org/whatfreewords-go?go-get=1
whatfreewords.org/whatfreewords-go (download)
whatfreewords.org/whatfreewords-goインストールしたパッケージ情報を確認すると以下のような構成です。--charset=Cは文字化け対策です。
$ tree --charset=C $GOPATH
/usr/local/go/dev
|-- pkg
| `-- linux_amd64
| `-- whatfreewords.org
| `-- whatfreewords-go.a
`-- src
`-- whatfreewords.org
`-- whatfreewords-go
|-- cmd
| |-- whatfreewords
| | `-- main.go
| `-- whatfreewordsd
| `-- main.go
|-- example
| `-- main.go
|-- go.mod
|-- LICENSE
|-- math.go
|-- README
|-- regions.go
|-- shuffling.go
|-- whatfreewords.go
`-- words.go
ライブラリ利用手順
サンプルコードです。
こちらを実行すると以下です。
$ go run whatfreewords_sample.go joyful.nail.harmonica
サンプルコードにもありますが以下で逆変換もできます。
lat, lon, err := whatfreewords.Words2LatLon("joyful.nail.harmonica") fmt.Printf("%.6f %.6f\n", lat, lon)
終わりに
アイデアとしては非常におもしろく、待ち合わせ場所を単語3つで正確に伝達できるのは今後スタンダードになる可能性を秘めています。そんなWhat3Wordsをフリーソフトとして利用できるので、興味がある方はサクッと動かしてみてください。
以上、ご参考になれば幸いです。