メインコンテンツへ
基礎知識

暦の歴史と種類 - ユリウス暦からグレゴリオ暦への改暦と世界の暦法

暦の 3 類型 - 太陽暦、太陰暦、太陰太陽暦

暦法は天体の周期に基づいて大きく 3 つに分類されます。太陽暦は地球の公転周期 (約 365.2422 日) を基準とし、季節と日付の対応が安定します。太陰暦は月の朔望周期 (約 29.5306 日) を基準とし、12 か月で約 354 日となるため季節とずれていきます。太陰太陽暦は月の周期で月を定めつつ、閏月を挿入して太陽年との整合を保つ折衷方式です。

現在の国際標準であるグレゴリオ暦は太陽暦です。イスラム暦 (ヒジュラ暦) は純粋な太陰暦であり、ラマダンの時期が毎年約 11 日ずつ早まるのはこのためです。日本の旧暦や中国の農暦は太陰太陽暦であり、旧正月の日付が毎年変動するのは閏月の挿入パターンによります。

ユリウス暦 - シーザーの改革と蓄積した誤差

紀元前 46 年、ユリウス・カエサルはエジプトの天文学者ソシゲネスの助言を受け、ローマ暦を改革しました。ユリウス暦は 1 年を 365.25 日とし、4 年に 1 回の閏年を設けることで太陽年に近似しました。それ以前のローマ暦は政治的な操作で月が追加・削除されており、暦と季節が 3 か月近くずれていたため、この改革は画期的でした。

しかし、実際の太陽年は 365.2422 日であり、ユリウス暦の 365.25 日とは 0.0078 日 (約 11 分 14 秒) の差があります。この微小な誤差が 128 年で 1 日、1600 年で約 12.5 日に蓄積しました。16 世紀には春分の日が 3 月 21 日から 3 月 11 日にずれており、復活祭の日付計算に深刻な影響を与えていました。

グレゴリオ暦改暦 - 10 日間の消失

1582 年、教皇グレゴリウス 13 世は暦の改革を布告しました。まず蓄積した誤差を解消するため、1582 年 10 月 4 日の翌日を 10 月 15 日とし、10 日間を「消去」しました。さらに閏年の規則を修正し、「100 で割り切れる年は閏年としない。ただし 400 で割り切れる年は閏年とする」というルールを追加しました。

この修正により、400 年間の平均年長は 365.2425 日となり、太陽年との誤差は 3236 年に 1 日まで縮小されました。カトリック諸国 (イタリア、スペイン、ポルトガル) は即座に採用しましたが、プロテスタント諸国は「教皇の暦」への反発から採用が遅れ、イギリスは 1752 年、ロシアは 1918 年 (ロシア革命後)、ギリシャは 1923 年まで旧暦を使い続けました。

現在も使われる多様な暦法

グレゴリオ暦が国際標準となった現在でも、宗教的・文化的な目的で多くの暦法が並行して使われています。イスラム暦は純粋な太陰暦で、ラマダン (断食月) やハッジ (巡礼) の時期を決定します。ユダヤ暦は太陰太陽暦で、19 年に 7 回の閏月を挿入するメトン周期に基づいています。

エチオピア暦はグレゴリオ暦と 7〜8 年のずれがあり (エチオピアでは 2026 年が 2018/2019 年)、13 か月制 (12 か月×30 日 + 1 か月×5 or 6 日) を採用しています。タイでは仏暦 (仏滅紀元) が公式に使われ、西暦に 543 を加えた年号です。これらの暦法の存在は、ソフトウェアの国際化において日付表示のローカライズが単純な翻訳では済まないことを意味します。

暦法の多様性がソフトウェアに与える影響

プログラミングにおいて、日付処理は見かけ以上に複雑です。JavaScript の Intl.DateTimeFormat は calendar オプションで 'islamic', 'hebrew', 'chinese', 'japanese' (和暦) などを指定でき、同じ Date オブジェクトを異なる暦法で表示できます。Java の java.time パッケージも HijrahChronology, JapaneseChronology などを提供しています。

注意すべきは、暦法によって「月の長さ」「年の長さ」「閏の規則」が異なるため、日付の加減算ロジックが暦法ごとに異なることです。「1 か月後」の計算結果は、グレゴリオ暦では 28〜31 日後ですが、イスラム暦では 29〜30 日後、エチオピア暦では常に 30 日後です。多暦法対応のアプリケーションでは、日付演算を暦法に依存しない抽象レイヤーで行う設計が求められます。

XB!LINE

この記事は役に立ちましたか?

関連記事