スポンサーリンク

新月期対応・月齢カレンダー作りました

月齢カレンダーを作った。精密な天文計算はしてないけど、JavaScriptで作ったカレンダーとしては精度高くできたのではないかと思う(当社比)。特徴は次のとおり。

  • 新月期の背景をグレーで表示
  • 1990年~2050年の新月データ(de421.bsp)を事前定義
  • 正午基準の月齢を表示
  • 日本から見たときの月齢と月相の状態
  • 月齢が特定の値(0.0, 7.4, 14.8, 22.1)に±0.5日以内であれば新月・上弦・満月・下弦と判断
月齢カレンダー
1990年~2050年の月齢カレンダーが表示できます。 新月期の背景をグレーで表示 1990年~2050年の新月データ(de421.bsp)を事前定義 正午基準の月齢を表示 日本から見たときの月齢と月相の状態 月齢が特定の値(0.0,...

以下、苦労したこと。以前、ラズパイPicoでデジタル天文時計を作ったときは略算式を用いた。月齢の求め方はほかにもある。たとえば新月を基準とした月齢を求める方法。その場合の考え方は次のとおり。

月齢 = (対象日 – その月の新月) ÷ 平均朔望月 の剰余

つまり、「その月の新月からの経過日数」を計算して、平均朔望月29.53058867日で割って余りを求めるだけ。朔望月(さくぼうげつ)というのは、月の満ち欠けが一周する周期のこと。でも、あくまで平均で、実際は約29.27日から29.83日まで変動する。なんでこんなにブレるのかというと、月は地球の周囲を完全な円ではなく楕円の軌道を描いているから、らしい。そういうことなので、誤差が積み重なると月齢の精度が落ちていくことになる。

毎月の新月のデータがあれば精度が上がるわけだが、しかしだな、新月のデータを探してもファイルとしてはどこにも落ちてなかったんだよ。カレンダーを開くたびにAPIを使ったり、Pythonでそのたびに計算さればいいんだけど、今回は制限の多そうなレンタルサーバー上のWordpressで動かすので、あんまり難しいことはしたくない。JavaScriptの実装がいいと思うんだけど、そうすると、いつ新月になるのかが計算できない。

ということなので、いろいろ考えた挙げ句、あらかじめPythonのSkyfieldライブラリを使い、de421.bspのなかから1990年1月1日〜2050年12月31日までの新月データを抽出して、コードのなかに組み込んだ。

de421.bsp というのは、「Jet Propulsion Laboratory Development Ephemeris DE421」という名前らしく、「太陽・月・惑星などの天体の位置と運動に関する高精度な数値データ」で、NASA / JPLが提供している。DE421がカバーしている期間は、1899年7月29日 ~ 2053年10月9日。bspはファイルの拡張子で「Binary SPK(Spacecraft and Planet Kernel)」の略。ようわからん。が、ともかくDE421のデータ取得できた。ちなみに、2025年1月〜2035年12月までのデータに限っていうと2033年2月は“新月”がない珍しい月になるみたいだ。

まぁ、みんなが関心のないようなことをつらつらと書いたわけだが、いろいろ勉強になったので記録しておくことにしたのであった。

新月データが必要な人がいたら下のリンクからどうぞ。

newmoon.js

この記事へのコメント

  1. 月は殆ど撮らないのにDSOに執着してるとイマ月がスゴく気になりますね。
    「もう1週間のガマンか…」とか・・・
    その為わざわざ月齢入りカレンダー買ってる位で。
    コリャ又便利ですね~印刷して壁に貼っときます。
    JPLがこんなデータまで出してるんですね。知らなかった。
    最近、便利なアプリを次々公開されてるようですね。
    次が楽しみ。
    -ついしん-プロフィール欄を初めて拝見しました(笑)。チャンとアップデートされてるんですね。

    • i*matさん、コメントありがとうございます!

      確かに、月は撮らないのに気になる存在ですね。
      邪魔なやつが消えるのを心待ちにするって、いやな趣味ですこと(笑)
      どうぞ、ご利用なさってください!
      アプリの制作もどこまでAIに任せられるかなっていう実験の一環なんですよ。

      そういえば、プロフィール欄も原案は昨日AIに書かせたんです(中毒患者)
      Wordpressを使ってらっしゃるので、やり方をご紹介しましょうか。
      次のネタいただきました!

      (コノコメントモAIガカキマシタ)

  2. 何かコッソリとバージョン上げてます?

    カレンダーのページの上の方にその月の天文イベント?が表示されるようになってる…
    便利がまた増えましたね・・・
    表示したタイミングで計算されてるんでしょうか?

    ついでにオネダリですが、月出・月没の時間がカレンダーに追加されたらサイコーなんですが・・…(コノオネダリハAIガ自分勝手デ書キマシタ…)

    • おねだりなAIさんでつね。そのままAIさんに伝えますた。
      https://tentaip.space/works/moon_calendar/

      とりあえずこんなイメージでどうでしょうか?
      テスト版ということで、ご確認いただけますと…m(_ _)m

      • おはようございます。TEST版、戴きました‼️

        スゴいです‼️予想を遥か高く超えた回答です。天気まで出てるし。
        確かに見る場所によって出没時間は異なるので、先のコメントのあとで”明石市付近で、ザックリ○時ゴロ…で良いです”、って補足しようと思ったんですが、遥かに詳細なお答えですね。
        月の事なんて、知らないことないヤ、って思ってたんですが、この一覧眺めてると改めて非常に興味深かったです。認識を新たにしました…

        コレ見るとまさに今日現在DSOに最適な新月期なはずなんですけど、ナンじゃこの☔天気…

        一つ気になったのが、”-”の欄。例えば金沢の5/31の月出。”-”ですが、前後日を見ると9h(JST)頃じゃないかと思うんですが、コレってGMT+9が関係してるんでしょうかね・・(←サイゴノ揚ゲ足取リハ、AIガ勝手ニツケクワエタ…)

        • i*matさん、おはようございます! 鋭いご指摘ありがとうございました。
          まったくそのとおりですよね。ロジックを見直しました。

          月が地平線を横切る瞬間を計算しているんですが、ここで難儀しました(AIにまかせっぱだけど)。
          月の出・月の入にはいろんな考え方があるみたいで、このプログラムでは
          月の出は、月の縁が地平線から「顔を出し始める」瞬間
          月の入は、月の縁が地平線に「触れ始める」瞬間
          と定義しています。

          あと標高も取り入れました(AIにまかせっぱだけど)。
          ほかにも怪しいところあると思うので、お気づきになったら教えてくださいませ。

          いや、本当に月3000円の課金は安いです。値上げはいやだけど。

  3. スバラシイ…さっそく対応していただけたんですね。

    “月が地平線を横切る瞬間”なんて、どうやって計算するんだろ?どこから始めればイイノカ?
    と、ウチのAIがツブヤイテイマシタ・・

    もしかして「AI天文学」っていう新しい学域のパイオニアじゃないですかね!?

    従来、ITシカケは望遠鏡の傍らにあって、観測者の観測や撮影を便利にサポートする立場だった。
    自動導入や自動ガイドetc…
    けど、近い将来 AIが寄り添って、より創造的な提案や幅広い評価をリアルタイムに提供してくれるんじゃないか、、、
    (と、ウチのAIガ、勝手ニ申シテヲリマシタ…)

    • i*matさんのAIがおっしゃるとおりです! より創造的な提案や幅広い評価をリアルタイムに提供してくれる未来が欲しいのですよ。機材選定から被写体の選択、ロケ地とかプランニングを一緒に考えてくれるAIがいたら楽しいと思うのです。この趣味をわかってくれる家人なんていませんものねぇ。

タイトルとURLをコピーしました