今回も小技ネタですが、一応サンプルWebアプリ公開までやったのでブログに書いておこうと思います。
背景
以前から国立天文台の公開データを手動でExcelに取り込んで可視化するということをやっていました。(※下図のイメージ:日の出&日の入の時刻の可視化.xlsx)
年に1回のことなので、自動化するまでもないと思っていたのですが、それすら面倒くさくなってしまったので Jupyter Notebook (Google Colab)で自動化することにしました。
課題
Jupyter Notebook (Google Colab)を使えば可視化まで実現できそうではありますが、次のような懸念点がありました。
結論
今回は、以下のソリューションを使って作成したノートブックをWebアプリとして公開することで前述の懸念点を解決しました。
- 天文計算ライブラリ PyEphem
- Webアプリ化ライブラリ: Mercury
- Webアプリ実行環境:Mercury Cloud
公開したWebアプリのURLは次のとおりです。
https://daytime.runmercury.com/app/sample
やったこと
今回やったことは以下のとおりです。
1.日の出、日の入の計算手段の選定
以下の候補を試してみて国立天文台の公開データとの日の出、日の入の時刻の差異が小さいものを採用することにしました。
- 天文計算ライブラリ Skyfield:精度【★★☆】
- 天文計算ライブラリ PyEphem:精度【★★★】 <= 今回はこちらを採用
- 公開Web API Sunrise-Sunset:精度【★☆☆】
厳密な比較をした訳ではありませんが、手元で実際に試してみて差異が小さい(※日の出入が概ね±1分以内)ものは PyEphem だったため、こちらのライブラリを採用することにしました。
2.Webアプリ化&公開の手段の選定
作成したノートブックをを いつでも・どこでも・だれでも 簡単に実行するためにはWebアプリ化して公開するのが一番手っ取り早い手段だと思ったので、Jupyter Notebook (Google Colab)をWebアプリ化する次のライブラリを試してみました。
-
Webアプリ化ライブラリ: Mercury <= 今回はこちらを採用
これが意外と簡単に導入でき、サクッとWebアプリ化できました。
最後にWebアプリ公開する環境が必要となります。もちろんできれば無料で、、、
ということで、今回は次の環境を試してみました。
-
Webアプリ実行環境:Mercury Cloud <= 今回はこちらを採用
いろいろと制限や制約がある(Webアプリは1つまで。Webアプリ構成ファイルは2つまで。など)ものの無事に 無料で Webアプリを公開することができました。
今回作成したサンプルWebアプリのソースコードをGithubに置いておきます。
おわりに
今回使用した天文計算ライブラリ PyEphem ですが、人工衛星なども含めた任意の天体の軌道計算など、もっと高度なこともできるようです。任意の時刻における人工衛星の位置を計算して地図にプロットしている人もいて天体マニアでない自分でも少しワクワクしてしました。 Jupyter Notebook (Google Colab)を使うと単に計算するだけに留まらず、簡単に可視化まで持っていけるので非常に良いですね。それでは
参考
今回は下記リンクの情報を参考にしました。