ターミナルに雨が降るまで後何秒か表示させた話


成果物

https://gist.github.com/Goryudyuma/e9b856366c457799d0a4c0c71ced54ff#file-zshrc

スクリーンショット 2019-01-04 5.58.04.png

雨が降りそうになると、

スクリーンショット 2019-01-04 6.03.02.png

なんとなく便利そうって感じてくれたら、読んでってください。


使い方

今回、天気のAPIに、Yahoo!Japan様のものを用いているので、

https://developer.yahoo.co.jp/start/

これを読んで登録する。

アプリケーションの種類は「クライアントサイド」で。

スクリーンショット 2019-01-04 6.19.23.png

次に、知りたい地点の座標を出す。

「Yahoo!地図」でも「Googleマップ」でも、URLに座標情報が入っているので、適当に取り出してやる。

その後、gistのコードを.zshrcに貼って、APIクライアントIDと座標を入れて、RPROMPTなりを調整してあげれば完成する。


やってること

指定座標で、今から1時間後まで、5分間隔で、どのくらい雨が降るのかを予測取得するAPIを使っている

そこから、今から一時間後までに雨が降るかどうかを調べ、降るならそれは何秒後なのかを計算しています。

APIはとりあえず1分おきに叩いていますが、お好みで調整してください。


作ったきっかけ

世の中の天気予報は難しすぎるから。

毎日毎朝天気予報を確認して、雨に逢わないように避けるのは至難の技。

こうやってターミナルで、あと何秒後に雨が降るのか教えてくれた方が、直感的でわかりやすい。


なんか技術的なメモ



  • RPROMPTのなかに絵文字を入れていると、次にzle reset-promptが走るまで少しズレる。絵文字で天気出した方がわかりやすそうだったんだけどなあ。

  • ShellScript初心者なので、直した方が良いポイントなどがあれば教えて欲しいです。


    • 無理やりやった感が・・・




最後に


  • Yahoo様、便利なAPIをありがとうございます。

  • 今晩は日本は全国的に雨は降ってませんでした。なのでデバッグにものすごく苦労しました。唯一少し降っていた新潟県の座標でデバッグしました。

  • 変数名とか、全然考えずに作ったので、色々と酷いですね。

  • 「とある魔術の禁書目録」の中で、"あと何秒後に雨が降ります"的なことが飛行船かなんかが放送してるシーン、ありませんでしたっけ?少しは近づけたかな?

  • シェルスクリプト難しい・・・