来自北東、昴宿星団

北東より来たれ、プレアデス

[暦算] "zakuro" の所信

私はこのライブラリの作成者である。
github.com
一瞥して分かる通り、誰が使うのか分からない雰囲気に満ちている。
現状は2年かけて土台を整備し続けており、現状でも使えなくはないが、さらなる改良とドキュメント整備を必要としている。

展望

方向性

日本史研究に使用できるライブラリにしたい。現状、信頼できるサイトは下記の通りである。

  1. 国立天文台日本の暦日データベース - 国立天文台暦計算室
  2. 和暦(わごよみ)

私の見るところ、他のサイトの旧暦情報については、その計算結果を第三者的に検証しづらい。
目指すのは 1 のような実用性があり、2のように計算結果を第三者的に公開できている状態である。
さらに、この暦算自体がコードとして公開されているOSSにしたい。私ひとりが抱えこむことに何の意味もないからだ。

背景

西暦と和暦の変換なら上記サイトで問題ないが、それ以上のことを行いたい場合、暦算それ自体に意味が生じてくる。
例えば現代人に馴染みがある響きの「土用」(季節の変わり目)は計算値であり暦算を要する。

f:id:pldb:20210911124120p:plain
出典:土用のはなし(No.0420)

他にも計算を要する概念はある。

  • 没日(一日としてカウントしない日)
  • 滅日(縁起の悪い日)
  • 七曜(いわゆる曜日だが現代とは決め方が異なる)

これらは全て計算方法が分かっている。
問題はその計算結果がなかなか見当たらないことだ。見当たらないだけならまだしも、引用元によっては誤った記述さえある。
もちろん、計算結果がそのまま当時の頒暦(実際に市中に配られた暦)そのままとは限らない。当時の担当者が計算ミスをすることでズレる可能性もある。それでも計算結果がないよりはあったほうが良いだろう。

経緯

あまり興味は持たれないだろうが、これまでのことを書いておきたい。

きっかけ

2年前以上も前のこと、新元号「令和」の発表日だった。
会社の同僚がとある言語の元号ライブラリに「令和」が迅速に追加されたことを語っていた。それを横目に見ていた私はうっかり口を滑らせた。
「明治はじまりなんだ」(=「明治よりも前の元号はないんだ」)
同僚は「それなら〇〇(私)さんがやれば良いんじゃないですか」と返し、私は「太陰太陽暦なんか面倒ですよ」と流した。
そう、大変面倒なのだ。それはつまり、心を砕く甲斐があるようにも思えた。

出会い

f:id:pldb:20210911132717j:plain
『日本暦日原典』

わずかな興味があった私は調べるうちに、『日本暦日原典』の確かさを知った。
問題はどの図書館でも「禁帯出」(持ち出し禁止)扱いで、そうそう長くは閲覧できないことだった。
神保町の古書店を歩き回ること8軒目、ふと平積みの上にビニール紐で束になった本の塊を見た。
あまりにも無造作に『日本暦日原典』が挟まっており、店主に掛け合うと「仕入れたばかり」「特別に7500円で良いよ」と即決だった。
私は確かに喜んだのかもしれないが、それ以上にここで手に入れた意味を考えてしまった。本が私の資質を問うているように思えた。

f:id:pldb:20210912160004j:plain
『日本暦日原典』p.150-151

元号

f:id:pldb:20210911132824j:plain
『日本史年表』

『日本暦日原典』は元号を年単位で表記していた。
「令和」が5月1日から施行したように、本来は年月日で改元される。実用性を重んじるなら改元日が必要であり、『日本史年表』が必要であった。
このことは私ひとりでは気づけなかった。ことさらに個人を挙げるつもりはないが、ご指摘いただいた方には深く感謝したい。

f:id:pldb:20210912160144j:plain
『日本史年表』p.54-55

定数

f:id:pldb:20210911132702j:plain
『歴代天文律暦等志彙編』


『日本暦日原典』は主として計算方法が書かれている。
問題は計算に用いる定数値を網羅している訳ではないことだ。
特に元嘉暦/儀鳳暦/大衍暦は欠落が見られ、正しい値を知る必要がある。
『歴代天文律暦等志彙編』は繁体字でこれらを記載しており、計算時の大きな助けとなる。

f:id:pldb:20210912151334j:plain
『歴代天文律暦等志彙編 七』p.2228

技術的な経緯

Rubyを選択した。
www.ruby-lang.org

こちらの記事に書いたが、Rubyは過去日対応が優れている。
qiita.com

一般にプログラミング言語の開始日が 1970/01/01 であることを考えると、Rubyは行き届いた言語であると感じる。
ユリウス日なので開始日は紀元前4712年であり、允恭天皇34年(445年)から計算するためには都合が良い。
これは自分でも実装できなくはない話だが、わざわざ車輪の再発明をする必要はない。

結語

zakuro は今後も拡張し、より実用性の高いライブラリにしていきたい。
ライセンスをMITライセンス(無償頒布)にしている通り、何か金銭の見返りを求めてのことではない。
真に有用なものはどんな時代でも裏切らない。
先人の事業に敬意を表しつつ、そういうものを一つは残してみたいと考えている。