旧暦と六曜を作りましょう
旧暦と六曜を作りましょう
 「六曜を自作プログラムで表示したい」
 意外にこういった方が多い。問い合わせもあるので、一度「実習」をしてみましょう。 実習に当たっては、こよみのページ内から手に入る情報をいくつか組み合わせますので、メモ帳を用意し、出来れば必要なページを印刷していただけると、じっくり考えることが出来て便利だと思います。

 例として計算する西暦2001年の旧暦については、このページだけでわかるようにデータを転記しますので、ひとまず「計算の流れ」はこのページだけでわかると思います。

実習に当たって
 六曜は旧暦の日付が計算できれば、あとは自動的に決まりますので、ひとまず旧暦の日付を求めます。
1.2001年の旧暦を作るために準備するもの
 次のものが必要。
  • 2000年の冬至から2002年の雨水までの二十四節気の日付(春分と二十四節気から入手可)。
  • 2000年から2002年までの新月(朔)の日付(その他の暦日計算の月の朔望一覧から入手可)。
なぜ、前年の冬至から・・と思うかもしれませんが、これはあとで説明しますので深く考えずにデータを集めましょう。
必要なデータは以上です(なんだ、簡単だ)。

2.旧暦の月の始まり(朔日:ついたち)を決める
 旧暦の月は新月を含む日から始まります。新月を天文学や、暦学では「朔」と呼びますので「朔(の)日」と書いて「ついたち」と読むようになりました。
 計算例で言えば、2000年の冬至は2000/12/21。2002年の雨水は2002/02/19ですから、月の朔望一覧から上記期間を包含する期間の朔の日付を拾い出します。拾い出した結果は、最後の表に月の始まりの項目としてまとめておきましたので、その表を御覧ください(その表を御覧戴いているとして話を進めます)。
 拾い出した朔の日付は2000/11/26〜2002/02/12の16個です。

3.月に正規の月名を割り当てる
 2で月の始まりが求まりましたので、それぞれの月に名前を付けます。旧暦の月名は「睦月・如月・・・」が正しいのでしょうが、順番がわかりにくいので「1月・2月・・・」と書き込みます。月の名前は二十四節気の「中」で決まります。
 「春分と二十四節気」に表示される表の中に「正月中・二月中・・・」と書かれている項目の日付を拾い出して、2で使った表の月に含まれる中の日付と名前に書き込みます。書き込んだの前についている「×月」がその月の名前になります。

4.閏月の挿入
 現在の暦にはなく、旧暦にあるものとして「閏月」があります。だいたい19年間に7回の閏月が挿入されます。2001年には、閏月が入ります(閏年)。
 3で月に名前をつけましたが、「中」を含まない月が1つ出来てしまいました。中が含まれないので正規の月名が決定出来ません。この月が閏月となります。閏月は月名が決まらないため、直前の月名に「閏」をつけて呼びます。今回は「閏四月」となります。

5.その他特殊な問題
 ほとんどの旧暦計算は、1−4だけで計算できますが、現在「旧暦」と呼ばれる暦のベースである天保壬寅暦が「定気法」という、実際の月・太陽の位置によって朔や節気の日時を定める暦であったため、困った問題が発生することがあります。
 こまった問題とは、「1月に2つの中が存在する場合がある」ことです。
 「平気法」と呼ばれる暦法を用いていた暦ではこんなことは起こらなかったのですが、しかたがありません。そこで、この問題回避のために天保暦には次の2条が付け加えられています。
その1
 暦月で冬至・春分・夏至・秋分はそれぞれ十一月・二月・五月・八月とする。
その2
 中気を含まない月がすべて閏月とはならない。
今回の例では、この規則のお世話になる必要はありませんでしたが、たまにこんな年がありますので、そんな年の月名決定は注意して下さい。
規則的であるべき暦法にあって、情けない決まりです(とくに「その2」あたりは)。

 1で前年の冬至(十一月中)から計算を始める理由は、実はこの特殊な例の「その1」と関係がありました。冬至を含む月は必ず十一月ですから、ずれないのですが、十二月、正月はそれだけを見て一意に定めることが出来ないため、十一月から計算を始める必要があるのです。何とも不便ですよね(天保壬寅暦の定義については、旧暦のはなしを参照のこと)。

1−5までをまとめた表(2001年の旧暦決定表)
 
月の始まり月に含まれる
中の日付と名前
閏月月の大小朔日
六曜
2000/11/262000/12/21十一月中   
12/262001/01/20十二月中   
2001/01/2402/18正月中 大の月先勝
02/2303/20二月中 大の月友引
03/2504/20三月中 大の月先負
04/2405/21四月中 小の月仏滅
05/23  閏四月小の月仏滅
06/2106/21五月中 大の月大安
07/2107/23六月中 小の月赤口
08/1908/23七月中 小の月先勝
09/1709/23八月中 大の月友引
10/1710/23九月中 小の月先負
11/1511/22十月中 大の月仏滅
12/1512/22十一月中 小の月大安
2002/01/132002/01/20十二月中 大の月赤口
02/1202/19正月中   

6.月の大小
 大の月(30日)と小の月(29日)は、月の始まりの日が「朔」で決まりますので、朔から次の朔の前日までの日数を数えれば、自動的に決まります。ただし大小の順番は毎年変わります。

7.六曜を割り振る
 現在、日の吉凶と言えば六曜(大安とか仏滅とか)と言うほど広がっている六曜ですが、旧暦の日付が決まれば機械的に割り振ることが出来ます。前出の表の最右の項目を御覧ください。そこに書かれた六曜は、その月の朔日の六曜です。
 六曜は、「正月・七月の朔日は先勝、二月・八月の朔日は友引・・・」という決まりですので表のように朔日に自動的に割り振ることが出来、さらに順番も「先勝・友引・先負・仏滅・大安・赤口」の順で変化しませんのでなにも難しくありません。
もうお気づきのことと思いますがこの関係は、
 (月+日)の6の剰余 
と言うことも出来ます。剰余と六曜の関係は次の表の通りです。
剰余と六曜の関係
剰余012345
六曜大安赤口先勝友引先負仏滅

閏月に関しては「月」は前の月と同じ数値と考えればOKです。
以上のような手順に数字を埋めて行けば、めでたく旧暦の暦を作ることが出来ました。手間はかかるかもしれませんが意外に簡単でしょう?

 さて、ここまで説明してきましたが、プログラムを自作なさろうというような方には重大な問題があります。そうです、月の朔の日付及び二十四節気の日付をどうして計算すればよいのか。

 どうすればよいかと言えば、「月と太陽の位置計算をする」と言うことですが、これをするには、最低でも真面目に1冊くらいは位置天文学のテキストを読むのがいいのですが、そうも言っていられないという方には、「新こよみ便利帳」(暦計算研究会編)あるいは「天体の位置計算」(長沢工著)などの本の巻末に海上保安庁水路部の開発した略算式というのが載っておりますので、それを利用すると比較的簡単に計算することが出来るようになります。

 それでも天文の知識がまるでないと言う方には厳しいかもしれませんが、何をするにも一定の基礎知識は必要ですから、ここは「頑張ってください」というしかありません。と言うことで、いささか不満の残る終わり方でしたが、ひとまず今回の実習はこれで終わります。みなさん、お疲れさまでした。
余談
旧暦はいつまで使われる?
 旧暦のベース、天保壬寅暦が使用され始めたのが1844年ですから、かれこれ200年近く使われていることになります。この長さは日本の歴史上、使われた正規の太陽太陰暦の中で2番目に長い(旧暦と言う暦は正規の暦とはいえないけど)。どこも責任を持たない非公認の暦なのに、まあなんと長く使われてきたことか。
 もうそろそろ、本当に「旧」の暦にしてあげましょうよ(私は、旧暦賛成派ではありません、悪しからず)。
初出 2001/06/17
更新 2023/01/22 画像追加・文章の小修正
■この記事を評価してください(最高5 〜 最低1)
  • 良→
  • やや良→
  • 普通→
  • やや悪→
  • 悪→

※2010.6.1〜の記事の評価   , 閲覧数 
http://koyomi8.com/reki_doc/doc_0190.html
暦と天文の雑学
http://koyomi8.com/
こよみのページ