(O+P)ut

アウトプット



(O+P)ut

エンジニアのアウトプット

【Go言語】オープンソース版What3Wordsの利用手順

スポンサーリンク

はじめに

世界中を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をフリーソフトとして利用できるので、興味がある方はサクッと動かしてみてください。

以上、ご参考になれば幸いです。