Slide 1

Slide 1 text

和暦を正しく扱うための 暦の話 Burikaigi 2023 @nagise なぎせゆうき

Slide 2

Slide 2 text

和暦クイズ 日本の暦における1年の日数は? ※692年~2023年

Slide 3

Slide 3 text

和暦クイズの答え 1年の日数もいろいろあります! 日本暦日原典の記述を基にnagiseが編集した

Slide 4

Slide 4 text

日本で用いられた暦法 国立天文台 暦Wiki より https://eco.mtk.nao.ac.jp/koyomi/wiki/CEF2BBCB2FC6FCCBDCA4CECEF1.html

Slide 5

Slide 5 text

年の区切り問題 《赤穂浪士の討ち入りの日を「元禄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

Slide 6

Slide 6 text

ISO 8601 • 日付と時刻の表記に関するISOの国際規格 • グレゴリオ暦で過去に遡って適用(先発グレゴリオ暦) • コンピュータ上での扱いはISO準拠が無難 • しかし表示上は利用者の文化にあわせて表示する必要がある • ISOでは紀元0年が存在するので史実のユリウス暦などとすり合 わせる際には気を付ける

Slide 7

Slide 7 text

太陽暦 • 地球が太陽のまわりを回る周期(太陽年)を基にしている • 太陽年は約365.2422日であるため、1年をおよそ365日とし、閏 年を設け端数を処理する方法が取られる • 月の満ち欠け → ガン無視 暦法 閏年 1年の長さ(平均) ユリウス暦 4年に1回 365.25日 グレゴリオ暦 400年に97回 365.2425日

Slide 8

Slide 8 text

ユリウス暦 • 日本では正式な暦として用いられたことはない • 古い時代の暦日の基準として用いられることがある • ガイウス・ユリウス・カエサルにより紀元前45年1月1日より ローマにて行用 • 初期に閏年が誤って3年に1回で運用されたりと混乱がみられる • java.util.GregorianCalendar は1582年10月15日より前はユリウ ス暦として動く

Slide 9

Slide 9 text

グレゴリオ暦 • ローマ教皇グレゴリウス13世がユリウス暦の改良を命じ、1582 年10月15日金曜日から行用 • 年が4で割り切れる年が閏年 • ただし、年が100で割り切れる場合は平年 • ただし、年が400で割り切れる場合は閏年 • 400年に97回の閏年 • 閏日2月29日はコンピュータシステム上、バグが生じやすい日 • 1582年以前に対して遡って適用するものを先発グレゴリオ暦と いう。ISO 8601も先発グレゴリオ暦

Slide 10

Slide 10 text

ユリウス暦とグレゴリオ暦の切り替わり • ユリウス暦1582年10月4日(木)の翌日がグレゴリオ暦1582年10 月15日(金) • また、史実として欧州全体で一斉に切り替わったわけではない 点に注意 • 現在でもユリウス暦を使い続けている教会などもある • コンピュータ上では1582年10月4日の翌日が1582年10月15日と なる実装がしばしば見られる

Slide 11

Slide 11 text

java.util.GregorianCalendar https://docs.oracle.com/javase/jp/17/docs/api/java.base/java/util/GregorianCalendar.html • グレゴリオ暦の実装だが、 1582年10月15日より前はユリウス 暦となる • setGregorianChangeでユリウス暦ないし先発グレゴリオ暦と して動かすこともできる

Slide 12

Slide 12 text

太陽太陰暦 • 地球が太陽の周りを回る周期と、月が地球の周りを回る周期の 両方を基にする • つまり、複雑 • 日本の古代の暦は中国の暦法の輸入 • 月の満ち欠けの周期は平均して約29.53日 • 1か月を30日の大の月と、29日の小の月をおいて調整する • 1日は新月の日で朔(さく)とも呼ばれる • 15日あたりが満月になるが、実際にはもっと複雑

Slide 13

Slide 13 text

閏月 • 1年を24等分したものが二十四節気 • うち、半分が節気、半分が中気と呼ばれる • 中気の「雨水」を含む月を一月といった風に月を定める • 基本的には中気を含まない月を閏月とする

Slide 14

Slide 14 text

UNDECIMBER • java.util.Calendar には 13番目の月をあらわすUNDECIMBER フィールドが宣言されている • 和暦の太陽太陰暦での閏月をあらわすには機能的に不足 • ユダヤ暦の閏月(アダル月)を念頭においたものか? • ユダヤ暦では12月アダル月を2回繰り返す形で閏月を挿入

Slide 15

Slide 15 text

和暦クイズ • 日本で最初に用いられた元号は

Slide 16

Slide 16 text

和暦クイズ • 日本で最初に用いられた元号は大化ですが、二番目に用いられ た元号は

Slide 17

Slide 17 text

和暦クイズ • 日本で最初に用いられた元号は大化ですが、二番目に用いられ た元号は白雉( はくち、びゃくち、しらきぎす )です。 • いずれの元号も孝徳天皇によるものですが、白雉5年に孝徳天 皇が崩御すると姉の斉明天皇(さいめいてんのう)が次代の天 皇となります。 • 白雉5年の翌年は何元年と呼ばれたでしょうか?

Slide 18

Slide 18 text

和暦クイズの正解 斉明天皇元年

Slide 19

Slide 19 text

紀年法 • 年の表し方のこと • 日本では元号の利用以前は即位紀元が用いら れていた • 《改天豊財重日足姫天皇四年、為大化元年》 • 天豊財重日足姫天皇(あめとよたからいかし ひたらしひめのすめらみこと)とは皇極(こ うぎょく)天皇の和風諡号(しごう) 日本書紀 巻第二十五

Slide 20

Slide 20 text

元号の停止と再開 • 大化(645年~650年) • 白雉(650年~655年) • 斉明(さいめい)天皇(655年~661年) • 天智(てんぢ)天皇(662年~672年) • 天武(てんむ)天皇(673年~686年) • 朱鳥(しゅちょう、すちょう、あかみとり)(686年~687年) • 持統(じとう)天皇(687年~697年) • 文武(もんむ)天皇(697年~701年) • 大宝(たいほう)(701年~704年)元年に大宝律令が完成 太字は元号。元号停止期間中は即位紀元が用いられていた

Slide 21

Slide 21 text

古代の和暦の紀年法をどうするか • 元号のみとすると「大宝」以前に元号停止期間があるので問題 が生じる • 大宝以降のみを扱う案 • 即位紀元を併用する案 • 即位紀元を併用すれば停止期間を含めて表現可能 • しかし最初の元号「大化」より以前の時代にすでに即位紀元が用いら れている • どこまで遡って対応するのか • 干支による年の表現をどうするか問題

Slide 22

Slide 22 text

干支による年の表現 • 中国や日本では古代より干支によって年をあらわすことがされ てきた • 十干(甲・乙・丙・丁・戊・己・庚・辛・壬・癸) • 十二支(子・丑・寅・卯・辰・巳・午・未・申・酉・戌・亥) • これを組み合わせるが、甲子→乙丑→丙寅…とするため偶奇が 組み合わさることがなく60通りとなる • 年をmod60したようなものと言える • 2023年は癸卯(みずのとう)で干支では40番目となる

Slide 23

Slide 23 text

干支による日の表現 • 年とは独立に、日も干支で順に数える習慣がある • 2023年1月21日は干支の16番目、己卯(つちのと う) • 前日の金曜は15番目の戊寅(つちのえとら) • 明日の日曜は17番目の庚辰(かのえたつ) • 神武天皇の即位日は《辛酉年春正月 庚辰朔》 • 辛酉年の正月の朔日(1日)が庚辰であるの意味 • 「癸卯年己卯、行鰤会議」といった記述で年月が分 かる仕組みとなっている • 使われている以上は算出したい

Slide 24

Slide 24 text

四文字の元号 • 四文字年号時代(749年 - 770年) • 四文字の元号はこの5種でかつ連続して用いられた • 元号欄の表示幅は2文字ではダメ

Slide 25

Slide 25 text

即位紀元 • 初期の元号利用の間にある即位紀元の表記方法をどうするか • (斉明)といった表記がされている例がある • 古代を扱うなら四文字元号もあるためいずれにせよ表示欄は漢 字二文字では足りない。「斉明天皇」といった表記でも良いか もしれない • 古代の天皇は複数の名前があることがあるのでどの表記を用い るかも考えどころではある

Slide 26

Slide 26 text

3桁の年号 古代の天皇はやたら長生き 1. 景行天皇(第12代): 143歳 2. 仁徳天皇(第16代): 143歳 3. 垂仁天皇(第11代): 139歳 4. 孝安天皇(第6代): 137歳 5. 孝霊天皇(第7代): 128歳 在位年数が最長なのは孝安天皇(第6代)で102年 年号が2桁だと足りない 孝安天皇102年の正月は戊戌(つちのえいぬ) 日本書紀暦日原典より

Slide 27

Slide 27 text

南北朝時代 南北朝時代には、持明院統(北朝)、 大覚寺統(南朝)が独自に元号を制定 したため、元徳3年/元弘元年(1331 年)から元中9年/明徳3年(1392年) まで2つの元号が並存した • 現代では宮内庁を始め天皇の代数は 南朝で数えるのが主流 • 西暦の年と和暦の年は1対多関係

Slide 28

Slide 28 text

元嘉暦 • 日本最古の暦法 • 『宋書十三 志第三』 (沈約 487~502 年ごろ?) に記載 • 元嘉暦は比較的原始的な暦でメトン周 期19太陽年 = 235朔望月 に基づく • 《章歳十九》《章月二百三十五》 • アルゴリズムの一次資料に当たりたけ れば漢文を読む必要がある 宋書十三 志第三

Slide 29

Slide 29 text

元嘉暦 • 元嘉暦とより新しい儀鳳暦とが併用して用いられた • 《奉勅始行元嘉暦與儀鳳暦》 • 中国では南朝の宋・斉・梁の諸王朝で、元嘉22年(445 年)から天監8年(509年)までの65年間用いられた。 • 百済では、宋における採用と同時に伝えられ、その滅亡 の661年まで行用 • 日本での暦の正式の採用は持統天皇6年(西暦692年) ※持 統天皇4年説も 日本書紀 巻30

Slide 30

Slide 30 text

平朔法 • 元嘉暦は原始的な暦法で、月 の満ち欠けの周期、朔望月を 単純に 22207/752 ≒ 29.53 日と置いている • 実際には平均29.53日で満ち 欠けするが29.3~29.8日と幅 がある • 平朔法ではこれを考慮しない

Slide 31

Slide 31 text

平気法 • 二十四節気も単純に1年を24等分している • 元嘉暦では1太陽年 = 222070 / 608 ≒ 365.2467日 • 実際には地球から見た太陽の動きは一定で はなく、冬に早く、夏は遅い • 地球の公転の楕円軌道の関係。近日点は1月 あたり

Slide 32

Slide 32 text

元嘉暦の計算の概要 • 月の朔日を求める • 二十四節気を求める • 中気を含む月を割り当てる • 中気を含まない月を閏月とする

Slide 33

Slide 33 text

元嘉暦の計算の概要 《上元庚辰甲子紀首 … 至元嘉二十年癸未五千七百三年》 元嘉二十年(西暦443)が上元(基準となるゼロ点)から5703年で ある。これを西暦0年からの値に直すと5260年 日本暦日原典の解説によれば西暦x年の正月朔は 1) (5260+x) × 235/19 = A …… 余り 2) A×22207/752 = B …… 余りが朔の小余 3) B÷60=C …… 余りが朔の大余

Slide 34

Slide 34 text

元嘉暦の計算の概要 • メトン周期 19太陽年 = 235朔望月 に基づく • 1太陽年あたりの朔望月は 235/19 • 1) で原点である上元からの年数にこれを掛ける • その端数が元旦での月の位置を表す • 1朔望月 = 22207/752 ≒ 29.53 日としている • 2)でこれを掛け、商が正月朔の日、余りが正月朔の時間となる • 3)で60で割って干支を求めている

Slide 35

Slide 35 text

元嘉暦の計算の概要 日本暦日原典の解説によれば正月中は 1)' (5260+x)×222070/608=A' …… 余りが中気の小余 2)' A'÷60=B' …… 余りが中気の大余 • 元嘉暦では1太陽年 = 222070 / 608 ≒ 365.2467日

Slide 36

Slide 36 text

儀鳳暦 • 元嘉暦とともに日本最古の暦法 • 持統天皇6年(西暦692年)より元嘉暦と儀鳳暦とが併用 • 《奉勅始行元嘉暦與儀鳳暦》 • 後に元嘉暦が廃され儀鳳暦が単独で用いられる • 中国では唐の麟徳二年(665)~開元十六年(728)の64年間 • 元嘉暦が445年の暦であることを鑑みると当時最新の暦 • 定朔法(月の満ち欠けの周期を考慮) • 破章法(メトン周期よりも精度を高める)

Slide 37

Slide 37 text

儀鳳暦の定気法 • 儀鳳暦では1年を489428 / 1340 ≒ 365.2447 としている • これを24で割って太陽表の躔差率を 加えて補正する • 日本ではこの補正を略して平気法で 計算を行っていたようだ 儀鳳暦の太陽表 日本暦日原典より

Slide 38

Slide 38 text

儀鳳暦の定朔法 • 月の満ち欠けの周期を表の値を用いて 補正する • 日本での計算は簡素化した方法であっ ただろうとされている

Slide 39

Slide 39 text

日本書紀暦日原典 • 日本書紀の暦日は5世紀なかばまでは儀鳳暦(但 し平朔法)以後は元嘉暦によるものであること が知られる。 • 日本書紀の暦日に就て 小川清彦(昭和21年) • 日本書紀暦日原典(内田正男 昭和53年)は日本書 紀に出てくる約900の朔干支を、コンピュータ で算出した暦と照らし合わせて異同を参照でき るようにした本 • 紀元前666年~紀元後697年まで

Slide 40

Slide 40 text

日本書紀の暦 • 5世紀なかばまでは儀鳳暦 • 以後は元嘉暦 • 古い時代に新しい暦が用いら れている? • 日本では皇紀元年に中国より 1300年進んだ暦を独自に開発 して使っていたんだ!🤥 • 紀元前433年のアテナイの数学 者・メトンより早く(以下略

Slide 41

Slide 41 text

和暦ライブラリ • そんなあれこれに対応できる和暦の ライブラリを細々と書いています • Araragi (仮称) • グレゴリオ暦の実装 – 済 • ユリウス暦の実装 – 済 • 元嘉暦の実装 – 済 • 儀鳳暦の実装 – 仕掛中 • その他7暦法対応予定