月齢を取得したいだけなのに

誰かが産まれた日からの月数の事ではない。月の満ち欠けの話である。

思うところがあって月相を通知してくれるアプリでも作ろうと思ったのが事の始まりである。探せば「月齢カレンダー」みたいなアプリはたくさんある。けどプッシュで通知してくれるアプリがほしかった。
カレンダーがこんなに世に溢れてるなら、きっと月齢なんて適当に計算できるかどっかが提供してくれてるんだろう。そう思っていた。 **その考えが甘甘の甘だった。**

厳密には「月齢」と「月相」は違うし微妙に対応していないのだが、まぁそのぐらいの違いは許容しようと思ったけど **そんなレベルの話じゃなかった** という記事である。

## 計算しようとしてみた

[Wikipedia : 月齢](https://ja.wikipedia.org/wiki/%E6%9C%88%E9%BD%A2)

 **「但し、最大2程度の誤差がある。」** 

後述するが確かに月相の計算を厳密にするのは現実的ではない。とはいえ2日という絶対値もさることながら月齢が30日あるところの2といったら6.7%である。これは流石に許容できない。

## 月相の計算はむずかしい

[Wikipedia : 月の軌道](https://ja.wikipedia.org/wiki/%E6%9C%88%E3%81%AE%E8%BB%8C%E9%81%93)
もっと詳しい事が載ってるページはあるのだが、要するに月だって楕円軌道してるしその長軸も少しずつずれてるしそもそも地球が太陽の回りを回ってるし周期のキリがいいなんてムシの良い話はなく、予測はともかく計算するのは現実的ではない。

## APIなんて無い。びっくりする程無い

とはいえ天文情報なんて世界中のどこでだって公的な機関が散々研究している筈である。別にプラネタリウムを作ろうとしている訳ではない。月齢か月相が知りたいだけなのだ。そのぐらいどっかで公開しているだろう。
もう一度言う。 **その考えが甘甘の甘だった。**

「月齢 API」で検索して出てくるサイトは「月齢を取得できるAPIを作ってみました」なんていう個人のサイトばかり。挙句の果てには **「でも、空を見上げればわかるよね」** なんてとても情緒的溢れる一文で締められているサイトがなんと複数存在する。これは……これは……なんなのか……

ともあれ、流石にアプリ作ろうってのに個人の作ったAPIに頼るのは色々とまずい。なんかこう、それっぽい団体を探す方向にシフトした。

## 天文情報が見れるサイト(日本)

[国立天文台](https://www.nao.ac.jp)
[国立天文台 暦計算室](https://eco.mtk.nao.ac.jp/koyomi/)

恐らくここが一番信頼性が高い。というかそれ以外は大学の天文研究サークルとかしかひっかからない。
この「[こよみの計算](https://eco.mtk.nao.ac.jp/cgi-bin/koyomi/koyomix.cgi)」というページに様々な場所と天文情報からその情報を表示できるフォームがある。素晴しい。これを見ればどの日のどの場所でどの月齢かがすぐに引ける。 **そう。WEBブラウザならね。**

いや、適当にpostリクエストかけてスクレイビングするっていう方法もあるけど明かに用途外の方法だからさすがにまずい。

## 天文情報が見れるサイト(海外)

[NASA Scientific Visualization Studio : Moon Phase and Libration, 2020](https://svs.gsfc.nasa.gov/index.html)

天下のNASAである。このサイトは様々な天文/気象情報を視覚的に表示してくれる。ここにあるページを見てるだけでもちょっとたのしい。

で、そんなサイトにこんなページがある。
[NASA Scientific Visualization Studio : Moon Phase and Libration, 2021](https://svs.gsfc.nasa.gov/4874)
適当に日付と時刻を入れればその時の月相どころか色々な情報を示してくれる。しかも **年間のデータをJSONで提供してくれる** という素晴しい処置までされている。ここから情報ひっぱってきて保存でもしておこう。カッコは悪いがなんかもうそれでもいいや。そう思い始めた。

https://svs.gsfc.nasa.gov/vis/a000000/a004700/a004768/mooninfo_2020.txt (2020年データ)
https://svs.gsfc.nasa.gov/vis/a000000/a004800/a004874/mooninfo_2021.txt (2021年データ)

:thinking:

URLに……規則性がないですね……
それもそのはず。推測するに記事の下にデータがぶら下がっているだけで別にこのデータを格納する専用の場所がある訳ではない。

いやそれでも天下のNASA様だ。なにかしら、なにかしらこう、観測データを広く人民に使ってもらう方法が用意されている筈。

## { NASA APIs }

[{ NASA APIs }](https://api.nasa.gov)

ページタイトルにご丁寧に中括弧がついている。ウィットである。
これか。これが私の探し求めていたものか。利用制限はあるもののちゃんと用意されているではないか。
下の方に「Browse APIs」ってちゃんとある。検索ができるみたいだ。どれ、「moon」とか「luna」とか入れて調べてみよう。

> Vesta/Moon/Mars Trek WMTS
>
> Here we have the collection of APIs that power the awesome Mars Trek and Vesta Trek NASA web-based portals for exploration and have newly added Moon Trek. These APIs can be leveraged using your favorite OGC RESTFul Web Map and Tile Service (WMTS) client. Please visit http://www.opengeospatial.org/standards/wmts for more information about WMTS. To help you get started, we've included some demos using the ESRI javascript client library for Mars and Vesta.
> 
> This API is maintained and provided by the NASA Solar System Exploration Research Virtual Institute (SSERVI) and the Jet Propulsion Lab (JPL) Trek team.

んーっと……うぇぶたいるまっぷさーびす……？

いや……そこまでおおげさなものじゃなくてさ……ちょこっと月齢知りたいだけなんだけどさ……

## 終わりに

つまり、なんというか、さくっと月齢だの月相だの取得できる方法はみつけられなかったって事です。
そりゃお天気サービスのAPIとかに月齢とかあるけど、ここまで公的な機関が出してないとは思わなかった。

先人たちが **「夜空を見あげればわかる」** なんて情緒に浸りたくなる気持ちがわかりました。これは、そうなる。