burikaigi 2023 の懇親会で発表したセッションの資料です。 日本では明治6年(1873)よりグレゴリオ暦が採用されましたが、それ以前の年代での和暦の扱いについて注意点をまとめたものです。
和暦を正しく扱うための暦の話Burikaigi 2023@nagise なぎせゆうき
View Slide
和暦クイズ日本の暦における1年の日数は? ※692年~2023年
和暦クイズの答え1年の日数もいろいろあります!日本暦日原典の記述を基にnagiseが編集した
日本で用いられた暦法国立天文台 暦Wiki よりhttps://eco.mtk.nao.ac.jp/koyomi/wiki/CEF2BBCB2FC6FCCBDCA4CECEF1.html
年の区切り問題《赤穂浪士の討ち入りの日を「元禄15年(1702年)12月14日」とするのを見ることがあるが、元禄15年12月はグレゴリオ暦では1703年の1月~2月に当たるので、1702年とするのは不適切である。またグレゴリオ暦の日付では元禄15年の12月14日は1月30日にあたるが、討ち入りしたとき既に深夜0時を過ぎていたので、討ち入りは「1月31日」の出来事になる[8]。よって赤穂浪士の討入りの日付を文献史料などに記載する場合には、「元禄15年12月14日(1703年1月31日未明)」とするのが最も適切である》https://ja.wikipedia.org/wiki/%E5%A4%AA%E9%99%B0%E5%A4%AA%E9%99%BD%E6%9A%A6
ISO 8601• 日付と時刻の表記に関するISOの国際規格• グレゴリオ暦で過去に遡って適用(先発グレゴリオ暦)• コンピュータ上での扱いはISO準拠が無難• しかし表示上は利用者の文化にあわせて表示する必要がある• ISOでは紀元0年が存在するので史実のユリウス暦などとすり合わせる際には気を付ける
太陽暦• 地球が太陽のまわりを回る周期(太陽年)を基にしている• 太陽年は約365.2422日であるため、1年をおよそ365日とし、閏年を設け端数を処理する方法が取られる• 月の満ち欠け → ガン無視暦法 閏年 1年の長さ(平均)ユリウス暦 4年に1回 365.25日グレゴリオ暦 400年に97回 365.2425日
ユリウス暦• 日本では正式な暦として用いられたことはない• 古い時代の暦日の基準として用いられることがある• ガイウス・ユリウス・カエサルにより紀元前45年1月1日よりローマにて行用• 初期に閏年が誤って3年に1回で運用されたりと混乱がみられる• java.util.GregorianCalendar は1582年10月15日より前はユリウス暦として動く
グレゴリオ暦• ローマ教皇グレゴリウス13世がユリウス暦の改良を命じ、1582年10月15日金曜日から行用• 年が4で割り切れる年が閏年• ただし、年が100で割り切れる場合は平年• ただし、年が400で割り切れる場合は閏年• 400年に97回の閏年• 閏日2月29日はコンピュータシステム上、バグが生じやすい日• 1582年以前に対して遡って適用するものを先発グレゴリオ暦という。ISO 8601も先発グレゴリオ暦
ユリウス暦とグレゴリオ暦の切り替わり• ユリウス暦1582年10月4日(木)の翌日がグレゴリオ暦1582年10月15日(金)• また、史実として欧州全体で一斉に切り替わったわけではない点に注意• 現在でもユリウス暦を使い続けている教会などもある• コンピュータ上では1582年10月4日の翌日が1582年10月15日となる実装がしばしば見られる
java.util.GregorianCalendarhttps://docs.oracle.com/javase/jp/17/docs/api/java.base/java/util/GregorianCalendar.html• グレゴリオ暦の実装だが、 1582年10月15日より前はユリウス暦となる• setGregorianChangeでユリウス暦ないし先発グレゴリオ暦として動かすこともできる
太陽太陰暦• 地球が太陽の周りを回る周期と、月が地球の周りを回る周期の両方を基にする• つまり、複雑• 日本の古代の暦は中国の暦法の輸入• 月の満ち欠けの周期は平均して約29.53日• 1か月を30日の大の月と、29日の小の月をおいて調整する• 1日は新月の日で朔(さく)とも呼ばれる• 15日あたりが満月になるが、実際にはもっと複雑
閏月• 1年を24等分したものが二十四節気• うち、半分が節気、半分が中気と呼ばれる• 中気の「雨水」を含む月を一月といった風に月を定める• 基本的には中気を含まない月を閏月とする
UNDECIMBER• java.util.Calendar には 13番目の月をあらわすUNDECIMBERフィールドが宣言されている• 和暦の太陽太陰暦での閏月をあらわすには機能的に不足• ユダヤ暦の閏月(アダル月)を念頭においたものか?• ユダヤ暦では12月アダル月を2回繰り返す形で閏月を挿入
和暦クイズ• 日本で最初に用いられた元号は
和暦クイズ• 日本で最初に用いられた元号は大化ですが、二番目に用いられた元号は
和暦クイズ• 日本で最初に用いられた元号は大化ですが、二番目に用いられた元号は白雉( はくち、びゃくち、しらきぎす )です。• いずれの元号も孝徳天皇によるものですが、白雉5年に孝徳天皇が崩御すると姉の斉明天皇(さいめいてんのう)が次代の天皇となります。• 白雉5年の翌年は何元年と呼ばれたでしょうか?
和暦クイズの正解斉明天皇元年
紀年法• 年の表し方のこと• 日本では元号の利用以前は即位紀元が用いられていた• 《改天豊財重日足姫天皇四年、為大化元年》• 天豊財重日足姫天皇(あめとよたからいかしひたらしひめのすめらみこと)とは皇極(こうぎょく)天皇の和風諡号(しごう) 日本書紀 巻第二十五
元号の停止と再開• 大化(645年~650年)• 白雉(650年~655年)• 斉明(さいめい)天皇(655年~661年)• 天智(てんぢ)天皇(662年~672年)• 天武(てんむ)天皇(673年~686年)• 朱鳥(しゅちょう、すちょう、あかみとり)(686年~687年)• 持統(じとう)天皇(687年~697年)• 文武(もんむ)天皇(697年~701年)• 大宝(たいほう)(701年~704年)元年に大宝律令が完成太字は元号。元号停止期間中は即位紀元が用いられていた
古代の和暦の紀年法をどうするか• 元号のみとすると「大宝」以前に元号停止期間があるので問題が生じる• 大宝以降のみを扱う案• 即位紀元を併用する案• 即位紀元を併用すれば停止期間を含めて表現可能• しかし最初の元号「大化」より以前の時代にすでに即位紀元が用いられている• どこまで遡って対応するのか• 干支による年の表現をどうするか問題
干支による年の表現• 中国や日本では古代より干支によって年をあらわすことがされてきた• 十干(甲・乙・丙・丁・戊・己・庚・辛・壬・癸)• 十二支(子・丑・寅・卯・辰・巳・午・未・申・酉・戌・亥)• これを組み合わせるが、甲子→乙丑→丙寅…とするため偶奇が組み合わさることがなく60通りとなる• 年をmod60したようなものと言える• 2023年は癸卯(みずのとう)で干支では40番目となる
干支による日の表現• 年とは独立に、日も干支で順に数える習慣がある• 2023年1月21日は干支の16番目、己卯(つちのとう)• 前日の金曜は15番目の戊寅(つちのえとら)• 明日の日曜は17番目の庚辰(かのえたつ)• 神武天皇の即位日は《辛酉年春正月 庚辰朔》• 辛酉年の正月の朔日(1日)が庚辰であるの意味• 「癸卯年己卯、行鰤会議」といった記述で年月が分かる仕組みとなっている• 使われている以上は算出したい
四文字の元号• 四文字年号時代(749年 - 770年)• 四文字の元号はこの5種でかつ連続して用いられた• 元号欄の表示幅は2文字ではダメ
即位紀元• 初期の元号利用の間にある即位紀元の表記方法をどうするか• (斉明)といった表記がされている例がある• 古代を扱うなら四文字元号もあるためいずれにせよ表示欄は漢字二文字では足りない。「斉明天皇」といった表記でも良いかもしれない• 古代の天皇は複数の名前があることがあるのでどの表記を用いるかも考えどころではある
3桁の年号古代の天皇はやたら長生き1. 景行天皇(第12代): 143歳2. 仁徳天皇(第16代): 143歳3. 垂仁天皇(第11代): 139歳4. 孝安天皇(第6代): 137歳5. 孝霊天皇(第7代): 128歳在位年数が最長なのは孝安天皇(第6代)で102年年号が2桁だと足りない孝安天皇102年の正月は戊戌(つちのえいぬ)日本書紀暦日原典より
南北朝時代南北朝時代には、持明院統(北朝)、大覚寺統(南朝)が独自に元号を制定したため、元徳3年/元弘元年(1331年)から元中9年/明徳3年(1392年)まで2つの元号が並存した• 現代では宮内庁を始め天皇の代数は南朝で数えるのが主流• 西暦の年と和暦の年は1対多関係
元嘉暦• 日本最古の暦法• 『宋書十三 志第三』 (沈約 487~502年ごろ?) に記載• 元嘉暦は比較的原始的な暦でメトン周期19太陽年 = 235朔望月 に基づく• 《章歳十九》《章月二百三十五》• アルゴリズムの一次資料に当たりたければ漢文を読む必要がある宋書十三 志第三
元嘉暦• 元嘉暦とより新しい儀鳳暦とが併用して用いられた• 《奉勅始行元嘉暦與儀鳳暦》• 中国では南朝の宋・斉・梁の諸王朝で、元嘉22年(445年)から天監8年(509年)までの65年間用いられた。• 百済では、宋における採用と同時に伝えられ、その滅亡の661年まで行用• 日本での暦の正式の採用は持統天皇6年(西暦692年) ※持統天皇4年説も日本書紀 巻30
平朔法• 元嘉暦は原始的な暦法で、月の満ち欠けの周期、朔望月を単純に 22207/752 ≒ 29.53日と置いている• 実際には平均29.53日で満ち欠けするが29.3~29.8日と幅がある• 平朔法ではこれを考慮しない
平気法• 二十四節気も単純に1年を24等分している• 元嘉暦では1太陽年 = 222070 / 608 ≒365.2467日• 実際には地球から見た太陽の動きは一定ではなく、冬に早く、夏は遅い• 地球の公転の楕円軌道の関係。近日点は1月あたり
元嘉暦の計算の概要• 月の朔日を求める• 二十四節気を求める• 中気を含む月を割り当てる• 中気を含まない月を閏月とする
元嘉暦の計算の概要《上元庚辰甲子紀首 … 至元嘉二十年癸未五千七百三年》元嘉二十年(西暦443)が上元(基準となるゼロ点)から5703年である。これを西暦0年からの値に直すと5260年日本暦日原典の解説によれば西暦x年の正月朔は1) (5260+x) × 235/19 = A …… 余り2) A×22207/752 = B …… 余りが朔の小余3) B÷60=C …… 余りが朔の大余
元嘉暦の計算の概要• メトン周期 19太陽年 = 235朔望月 に基づく• 1太陽年あたりの朔望月は 235/19• 1) で原点である上元からの年数にこれを掛ける• その端数が元旦での月の位置を表す• 1朔望月 = 22207/752 ≒ 29.53 日としている• 2)でこれを掛け、商が正月朔の日、余りが正月朔の時間となる• 3)で60で割って干支を求めている
元嘉暦の計算の概要日本暦日原典の解説によれば正月中は1)' (5260+x)×222070/608=A' …… 余りが中気の小余2)' A'÷60=B' …… 余りが中気の大余• 元嘉暦では1太陽年 = 222070 / 608 ≒ 365.2467日
儀鳳暦• 元嘉暦とともに日本最古の暦法• 持統天皇6年(西暦692年)より元嘉暦と儀鳳暦とが併用• 《奉勅始行元嘉暦與儀鳳暦》• 後に元嘉暦が廃され儀鳳暦が単独で用いられる• 中国では唐の麟徳二年(665)~開元十六年(728)の64年間• 元嘉暦が445年の暦であることを鑑みると当時最新の暦• 定朔法(月の満ち欠けの周期を考慮)• 破章法(メトン周期よりも精度を高める)
儀鳳暦の定気法• 儀鳳暦では1年を489428 / 1340 ≒365.2447 としている• これを24で割って太陽表の躔差率を加えて補正する• 日本ではこの補正を略して平気法で計算を行っていたようだ儀鳳暦の太陽表日本暦日原典より
儀鳳暦の定朔法• 月の満ち欠けの周期を表の値を用いて補正する• 日本での計算は簡素化した方法であっただろうとされている
日本書紀暦日原典• 日本書紀の暦日は5世紀なかばまでは儀鳳暦(但し平朔法)以後は元嘉暦によるものであることが知られる。• 日本書紀の暦日に就て 小川清彦(昭和21年)• 日本書紀暦日原典(内田正男 昭和53年)は日本書紀に出てくる約900の朔干支を、コンピュータで算出した暦と照らし合わせて異同を参照できるようにした本• 紀元前666年~紀元後697年まで
日本書紀の暦• 5世紀なかばまでは儀鳳暦• 以後は元嘉暦• 古い時代に新しい暦が用いられている?• 日本では皇紀元年に中国より1300年進んだ暦を独自に開発して使っていたんだ!🤥• 紀元前433年のアテナイの数学者・メトンより早く(以下略
和暦ライブラリ• そんなあれこれに対応できる和暦のライブラリを細々と書いています• Araragi (仮称)• グレゴリオ暦の実装 – 済• ユリウス暦の実装 – 済• 元嘉暦の実装 – 済• 儀鳳暦の実装 – 仕掛中• その他7暦法対応予定