📅

TAIANで大安通知してみた (準備編)

に公開

株式会社TAIAN でバックエンドエンジニアとして働いています
こばさん(noko1024) です

はじまり

TAIANでは,メンバーを積極的に採用しており,
直近1年間でフルコミットしているメンバーも10人ほど増えています.

オフィスの移転なども重なり,以前よりも社内で交流会や飲み会をする回数が減り
人が遠いなという声を良く聞くようになりました.

突然ですが,株式会社TAIANのTAIANは,六曜の大安から取られています.
そこで,金曜かつ大安のとき,交流会の動機づけになる仕組みがあれば良いなと考えています.

本テックブログでは,大安の導出に始まり,Slackへ通知
を目指してアプリケーションを1つ作ることを目的として連載していきます.

大安がいつか知る

六曜は暦注と呼ばれるものの1つで,
先勝,友引,先負,仏滅,大安,赤口が存在します.
旧暦における各月の朔(1日)を基準日として順番に割り当てていきます.
例えば,旧暦5月と11月の朔日は必ず大安になるというものです.

後述しますが,閏月が発生した場合でもこのルールは変わらず
閏6月の朔は,通常の6月の朔と同様に赤口になります.

つまり,大安ひいては六曜の決定には旧暦を求める必要があります.

旧暦

現在旧暦として用いられているのは太陰太陽暦と呼ばれるもので
月の満ち欠けで日を数えつつ
うるう月を挿入することで1年の長さを1太陽年に近づけた暦です.

太陰太陽暦は,月が新月になる日を月の始まりと考え,各月の1日としました。
それから翌日を2日,3日と数えます.
そして,次の新月の日がやってくると、次の月の1日としました.

しかし,新月から次の新月までは約29.53日のため,12ヶ月間では約354日になります.
現在採用されているグレゴリオ暦(西暦)と比較して約11日短いため,
四季と月が年を追うごとに,だんだんズレてしまいます.
そこで,差分がひと月分に近くなると,閏月を挿入し1年を13ヶ月として修正していました.
閏月は19年に7回程度の割合で挿入されます.

閏月

四季と1ヶ月ズレたとき,単純に12月の後ろに1つ月を追加すれば良いというわけではなく
特定のルールに従って,閏月を挿入するタイミングを決定します.
ここで用いられるのが二十四節気です.

二十四節気

1年を春夏秋冬の4つに分け,さらにそれぞれを6つに分けたもので
節気(せっき)と中気(ちゅうき)が交互に来るのが特徴です.
例えば,立春や立冬は節気,春分や冬至は中気の1つです.

暦よりも,より細かな季節の移ろいを反映していることから
農作業の目安としても用いられてきました.

現在の二十四節気は太陽軌道を15度ごとに24分割し
0°の春分から節気と中気を交互に配置していく定気法が用いられています.


二十四節気の定め方 定気法 (国立天文台)より

閏月の決定

二十四節気を導出できたことで,閏月を決定できます.
月の数は12個のため,判定には中気を用います.
中気を含まない月がうるう月となります.

言い換えれば,中気が月の始まりや終わりに来るような状況
すなわち,季節と月の関係に大きくズレが発生しているところに閏月が挿入されます.

月名(1月,2月)はどの中気を含むかによってその名前が決まります.
うるう月はその前の月に閏をつけ,閏6月のように呼びます.

国立天文台-暦Wiki
二十四節気を用いた置閏法 (国立天文台)より

閏月の例外

中気の間隔は,およそ29.5から31.5日
月の満ち欠けは,およそ29.3から29.8日のため,
中気の間隔が月の満ち欠けを下回るケースが時々発生します.
このような場合
ひと月の間に中気が2つ入ったり,中気がない月が複数になる場合が発生します.
日本最後の太陰太陽暦として運用された天保暦では
冬至を含む月は11月,春分を含む月は2月,夏至を含む月は5月,秋分を含む月は8月
というルールを定め,月名が不定になるケースに対処しています.

大安を導く

これで大安を導出するすべての準備が整いました🎉🎉🎉

国立天文台はiCal方式で二十四節気や各月の朔を提供しているため,
このデータを元に実装していきます
それでは次回をお楽しみに

参考文献

https://eco.mtk.nao.ac.jp/koyomi/wiki/C2C0B1A2C2C0CDDBCEF1.html
https://eco.mtk.nao.ac.jp/koyomi/wiki/C2C0B1A2C2C0CDDBCEF12FC3D6B1BCCBA1.html

We are hiring!

TAIANでは、このような開発・技術・思想に向き合い、未来をつくる仲間を一人でも多く探しています。少しでも興味を持っていただいた方は弊社の紹介ページをご覧ください。

https://taian-inc.notion.site/Entrance-Book-for-Engineer-1829555d9582804cad9ff48ad6cc3605

TAIANテックブログ

Discussion