| |
「六曜を自作プログラムで表示したい」
意外にこういった方が多い。問い合わせもあるので、一度「実習」をしてみましょう。 実習に当たっては、こよみのページ内から手に入る情報をいくつか組み合わせますので、メモ帳を用意し、出来れば必要なページを印刷していただけると、じっくり考えることが出来て便利だと思います。
例として計算する西暦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/26 | 2000/12/21 | 十一月中 | | | |
| 12/26 | 2001/01/20 | 十二月中 | | | |
| 2001/01/24 | 02/18 | 正月中 | | 大の月 | 先勝 |
| 02/23 | 03/20 | 二月中 | | 大の月 | 友引 |
| 03/25 | 04/20 | 三月中 | | 大の月 | 先負 |
| 04/24 | 05/21 | 四月中 | | 小の月 | 仏滅 |
| 05/23 | | | 閏四月 | 小の月 | 仏滅 |
| 06/21 | 06/21 | 五月中 | | 大の月 | 大安 |
| 07/21 | 07/23 | 六月中 | | 小の月 | 赤口 |
| 08/19 | 08/23 | 七月中 | | 小の月 | 先勝 |
| 09/17 | 09/23 | 八月中 | | 大の月 | 友引 |
| 10/17 | 10/23 | 九月中 | | 小の月 | 先負 |
| 11/15 | 11/22 | 十月中 | | 大の月 | 仏滅 |
| 12/15 | 12/22 | 十一月中 | | 小の月 | 大安 |
| 2002/01/13 | 2002/01/20 | 十二月中 | | 大の月 | 赤口 |
| 02/12 | 02/19 | 正月中 | | | |
-
- 6.月の大小
- 大の月(30日)と小の月(29日)は、月の始まりの日が「朔」で決まりますので、朔から次の朔の前日までの日数を数えれば、自動的に決まります。ただし大小の順番は毎年変わります。
-
- 7.六曜を割り振る
- 現在、日の吉凶と言えば六曜(大安とか仏滅とか)と言うほど広がっている六曜ですが、旧暦の日付が決まれば機械的に割り振ることが出来ます。前出の表の最右の項目を御覧ください。そこに書かれた六曜は、その月の朔日の六曜です。
- 六曜は、「正月・七月の朔日は先勝、二月・八月の朔日は友引・・・」という決まりですので表のように朔日に自動的に割り振ることが出来、さらに順番も「先勝・友引・先負・仏滅・大安・赤口」の順で変化しませんのでなにも難しくありません。
もうお気づきのことと思いますがこの関係は、
(月+日)の6の剰余
と言うことも出来ます。剰余が0なら大安、1なら赤口と言った具合です。閏月に関しては「月」は前の月と同じ数値と考えればOKです。
-
と以上のような順に数字を埋めて行けば、めでたく旧暦の暦を作ることが出来ました。手間はかかるかもしれませんが意外に簡単でしょう?
さて、ここまで説明してきましたが、プログラムを自作なさろうというような方には重大な問題があります。そうです、月の朔の日付及び二十四節気の日付をどうして計算すればよいのか。
どうすればよいかと言えば、「月と太陽の位置計算をする」と言うことですが、これをするには、最低でも真面目に1冊くらいは位置天文学のテキストを読むのがいいのですが、そうも言っていられないという方には、「新こよみ便利帳」(暦計算研究会編)あるいは「天体の位置計算」(長沢工著)などの本の巻末に海上保安庁水路部の開発した略算式というのが載っておりますので、それを利用すると比較的簡単に計算することが出来るようになります(それでも、天文の知識がまるでないと言う方には厳しいかもしれませんが)。
こよみのページでも、上記略算式を用いた位置計算のスクリプトを公開したいと考えております(このページの主な朔や二十四節気の計算には、このスクリプトを使用しています)が、2001/04/22現在ではまだ、公開に至っておりません。なにぶん、全部一人で作っているためいろいろと手が回らなくて・・・。すみません。出来るだけ早めに何とかしたいのですが、ご容赦下さい。
と言うことで、いささか不満の残る終わり方でしたが、ひとまず今回の実習を終わります。
みなさん、お疲れさまでした。
- 余 談
- 旧暦はいつまで使われる?
- 旧暦のベース、天保壬寅暦が出来てからかれこれ150年。この長さは日本の歴史上、使われた正規の太陽太陰暦の中で2番目に長い(旧暦と言う暦は正規の暦とはいえないけど)。どこも責任を持たない非公認の暦なのに、まあなんと長く使われてきたことか。
- もうそろそろ、本当に「旧」の暦にしてあげましょうよ(私は、旧暦賛成派ではありません、悪しからず)。
|
|