復活祭の日取りの計算

(この文は, 1993 年 1 月に数回に分けて PC-VAN サイエンス SIG の 「計算機と算法」ボードに 書いた文章をまとめたものです)

キリスト復活の日付は以下のとおり。(括弧内はヨハネ福音書での日付)

Nisan14(13) THU最後の晩餐

15(14) FRI聖金曜日(キリスト没)

16(15) SAT安息日

17(16) SUNキリスト復活

暦は当時のユダヤ暦(大陰太陽暦)で, ニサンというのは春分を含む月のことです。 ユダヤ暦では, ニサン月15日の前の夜が過ぎ越しの祭(ヘブライ語 pesah) になります。 ギリシャ語の πασχα, ラテン語の pascha は ヘブライ語の音を写したものです。 フランス語で復活祭を Paques といい, その形容詞形は pascal となりますが, それぞれラテン語の pascha, paschalis に由来します。 過ぎ越しと復活祭の間で混同が起っているわけですね。

さて, ローマでは太陽暦が行われていたので, 初期のキリスト教会では復活祭の日取りの決め方に 混乱があったようですが, ニケーア宗教会議(325AD)で, 「春分(ユリウス暦 3/21)以降(その日を含む)の 最初の満月(大陰暦 15 日)より あと(その日を含まない)の 最初の日曜日」 という風に決められました。 また満月を決めるにあたっては アレキサンドリア方式をとることになりました。

この会議以後も復活祭の日の計算方法が安定しなかったようですが, 6世紀になり, Dionysius Exiguus の計算法が決定版となりました。

彼の方法を, 文献[1]と 説明の仕方は少し違いますが, 下に説明します。

  1. 春分はユリウス暦 3/21 とする。
  2. 復活祭の計算には完全な大陰暦は必要なく, 3/21 の月齢がわかればそれでよい。 3/22 (春分の翌日)の月齢の新月からのずれをエパクトと呼ぶ。 1BC のエパクトを 0 とする。
  3. 閏月を除くと大陰暦 12 か月の日数は 大の月と小の月が交互にくると考えるので) (29+30)*6 = 354 日。 よって年に 365 - 354 = 11 日ずつエパクトが増えると考える。 ユリウス暦の4年に一回の閏日は無視する。
    ずれが 29 日以上になったら, 閏月を置いたと考え, 30 日(ただしずれが 29 日ちょうどなら 29 日)を引く。すなわち,
    { 0,11,22, 3,14,25, 6,17,28, 9,20, 1,12,23, 4,15,26, 7,18}
    という風に 19 年周期(=メトン周期)でエパクトは 変化する。
  4. 満月(15 日)の日付は, 上のエパクトから 下のように 直ちに 求められる。
    春分の次の満月の日 = 3/21 日の (45 - エパクト) MOD 30 日後。
    やはり19 年分の表にすると, 下のようになる。
    {4/5, 3/25,4/13,4/2, 3/22,4/10,3/30,4/18,4/7, 3/27,
    4/15,4/4, 3/24,4/12,4/1, 3/21,4/9, 3/29,4/17}
  5. このあとの日曜日は簡単に計算できるので省略。

Dionysius Exiguus の計算法は, 暦の上の春分と実際の春分が 10 日ずれて, グレ ゴリオ改暦が必要になるまで使われました。

グレゴリオ暦での復活祭の求め方も 前掲文献[1] に載っているのですが, ちょっと ごちゃごちゃしてるので, 私なりに modify した形で 書きます。

計算法は根本的にはユリウス暦の場合と同じで, それに補正を加える, というもの です。

具体的には, まず翌年の 3/21 を実際の春分にあわせるため, 日付を 10 日とばし, さらに 100 で割り切れて 400 で割り切れない年は平年とする, という処理をしました。 これはもう皆さん御存知なので詳しく書きません。 次に満月は暦の計算が 3日進んでいたので, これも戻し, さらに 2500 年に 8 回遅らせることにしました。 具体的には 1500AD から数えて 300 年ごとに 1 日遅らせ, ただし 2400 年目は遅らせずに 2500 年目を遅らせるということです。

これだけでも相当複雑ですが, さらに2つの補正を加えなければなりません。

第一に, 満月が春分の 29 日後にくる場合, その前日を満月とします。 これは, 復活祭は伝統的(つまりグレゴリオ暦以前)には 3/22..4/25 の 範囲内におさまっていたので, 4/26 に来るのを避ける処置だと思います。

第二に, 19 年周期のうちに, 満月が春分の 28 日後にくる年と 29 日後にくる年 (つまり第一の補正が必要な年)の両方がある場合, 前者も満月を 1 日前にずらし ます。これを第二エパクト補正と呼びます。


サンプルプログラム集

Java Script サンプル

以上のアルゴリズムに忠実に JavaScript で書いてみました。 JavaScript の使えるブラウザをお持ちの方は, 上を試して見てください。 いったんローカルにコピーしてから実行した方がいいかも しれません。

JDK 1.1 用 Java サンプル (ソース) Java Plug-in 用
JDK 1.0 用 Java サンプル (ソース)

同上, Java 版です。 Java の使えるブラウザを お持ちの方は, 上を試してください。

NetScape Navigator 4.04 または 4.05 では, DevEdge OnlineJava Developer Centralから JDK 1.1 Support をダウンロード(サイズ: 約3MB)することによって, JDK 1.1 用アプレットが利用できるようになります。

それ以外の JDK 1.1 非対応ブラウザでも, Java Plug-in (Activator)を使うことによって, JDK 1.1 のアプレットを動かすことのできるものがあります。 Internet Explorer 3.02 以上および NetScape Navigator 3.0 以上では, 上の「Java Plug-in 用」と書いたページを選んでください。 Java Plug-in がなければ自動的にダウンロードページにジャンプするはずです(サイズ: 約8MB)。 詳しくは, Sun の Java Plug-in のページを参照してください。

PC-VAN で Bugmanさんは, 復活祭を 計算する 別のやり方を 紹介してくださいました。 "カントの公式" といい, もとは BASIC のプログラムだそうです。 この公式はグレゴリオ暦にしか対応していませんが, 1583 年から 6553 年まで 私の 方式と 同じ結果を返すことを 確認しています。


参考文献

  1. 土屋吉正(1982,1987) 暦とキリスト教(増補改訂版). オリエンス宗教研究所.
  2. 青木信仰(1982) 時と暦. 東京大学出版会.
  3. 前山仁郎(1964) "諸民族の暦" 薮内清編 天文学の歴史(新天文学講座12)第6章, 恒星社.

「ミサを読む」へ
暦関係のページへ