こころがホッコリー

ただイカしたRubyistになりたい人生だった。

緯度経度を入力値に、2地点間の距離を算出するgemを作ってみた(国土地理院提供APIを使用)

松村 Advent Calendar 2016 の14日目です。 @muramurasan です。
タイトルの通り、gem作りの練習として「緯度経度を入力値に、2地点間の距離を算出するgem」を作ってみたので、その使い方を紹介させていただきたいと思います。
gemの名前は conncect_gsi_api という、一体何のgemなのかさっぱりわからないものになっています。(後悔)

github.com

インストール

Gemfile を使う場合は、下記の記述を追加して、bundle install してください。

gem 'connect_gsi_api'

手動でインストールして使う場合は、gem install connect_gsi_api を叩きましょう。

実際に使ってみた

インストールから、利用するところまで実際に紹介していきます。
まずはインストールをします。

$ gem install connect_gsi_api
Fetching: connect_gsi_api-0.1.0.gem (100%)
Successfully installed connect_gsi_api-0.1.0
Parsing documentation for connect_gsi_api-0.1.0
Installing ri documentation for connect_gsi_api-0.1.0
Done installing documentation for connect_gsi_api after 0 seconds
1 gem installed

次に、手っ取り早く使用感を確かめるために、irb を起動して使ってみます。

$ irb
irb(main):001:0> require "connect_gsi_api"
=> true
irb(main):002:0> ConnectGsiApi.distance2p 35.6581, 139.701742, 36.123456, 138.705749
=> 103682.866

こんな感じで、引数 出発地緯度出発地経度到着地緯度到着地経度 を渡して distance2pを呼び出すと、距離がメートルで返ってきます。
不正なパラメータを渡してしまったなど、エラーが起きている場合はnilが返ってくる仕様になっています。

なお、デバッグのため、コマンドにも対応しています。

$ bundle exec calcdist 35.6581 139.701742 36.123456 138.705749
103682.866

注意事項

あくまで、このgemは国土地理院提供のAPIを使用しているものですので、
APIの使用回数制限や、API側のインタフェース変更で、gemが使えなくなることが想定されます。
残念な仕様ではありますが、うまく値を取得できなかった場合は、nilを返すような仕様になっておりますので、
うまく利用者側でよしなにハンドリングしていただければと思います。