jqやxmllintといったコマンドの使い勝手がなっておらんので、独自JSON&XML解析コマンドと、その応用品であるこのコマンド“getsunrise.sh”を作った。どこがなっておらんのかはQiita上に記した次のセクションでこってり書いたので読んでくるがよい。
まあとにかく、ここではこのgetsunriseを使ってみよ。
curlかwgetが入っているUNIX環境ならほとんどの環境で動く。もちろん jqやxmllintなど不要 。JSONとXMLの解析はsedやAWKで済ませておる。
よって、上記のどちらかをインストールした後、次のようにしてこのリポジトリーをgit cloneすれば完了だ。
$ git clone https://github.com/ShellShoccar-jpn/getsunrise.git
そうか、gitがインストールされておらんと上記のコマンドは使えんな。gitが無くともunzipコマンドがあるなら
https://github.com/ShellShoccar-jpn/getsunrise/archive/master.zip
からファイルをダウンロード、展開、中のREADME.md以外のすべてのファイルに実行パーミッションセットで使えるようになるぞ。
コマンドの引数に郵便番号(nnn-nnnn
)を付ければよいだけだ。次の例では後ろにさらに年月日を指定しているが、そうやって知りたい年月日を指定することもできる。
$ ./getsunrise.sh 288-0012 2016/01/01
千葉県銚子市犬吠埼、20160101の日の出・日の入時刻を調べます。
(15秒くらい待ってね...)
千葉県銚子市犬吠埼(緯度=35.706987,経度=140.861803)における、
2016年1月1日の 日の出時刻は6:46、日の入時刻は16:33、みたいですよ。
$ ./getsunrise.sh 100-2100 2016/01/01 # ←日本一早い初日の出の時刻は?
#(実際に動かしてみるがよい)
$
結果が出るまで15秒くらい待たされるが、これはAPIの仕様だ。我々のシェルスクリプトのせいではないぞ!
このコマンドがやっている事は下記のとおりだ。要するにWebAPIを渡り歩いておるのだ。
- コマンド引数から郵便番号を受け取る。
- 郵便番号検索WebAPIに掛けて、地名と緯度・経度を得る。
- さらに、日の出・日の入時刻WebAPIに掛けて、日の出・日の入り時刻を得る。
ソースコードに興味がある者は、このリポジトリーの中身をじっくり見まわすがよい。getsunrise.sh本体など、コメントや空行を除けばたかだか85行のシェルスクリプトだ。