Home » 社員日記 » Systematic Holiday
10月
5

先日のニュースで「9月22日が秋分の日になるのは116年ぶり」というものがありました。9月23日以外になるのも1979年9月24日以来、33年ぶりだそうです。

 

さて、この秋分の日と春分の日ですが、実は天文学的な日付と法律上の日付は必ずしも一致しないということをご存知でしょうか?
一般的には「昼と夜の長さが同じ日」と言われていますが、正確に言えば「黄道(太陽の見かけの通り道)と天の赤道(地球の赤道の真上)が交わる点(春分点・秋分点という)を太陽が通る日」だそうです。……この辺りの詳しい解説はもっと専門的なサイトに任せるとして。
一方、法律では「国民の祝日に関する法律(祝日法)」によって定められていますが、他の祝日はたいてい具体的な日付が記載されているのに対し、春分の日は「春分日」、秋分の日は「秋分日」としか記載されていません。
そしてこれらの日付は、前年の2月1日の官報で初めて発表されるそうです。すなわち、再来年の春分・秋分の日は今のところ確定していませんし、この発表如何では思いもよらない日が春分・秋分の日になる可能性があるわけです。
……とはいえ、実際には今まで天文学的な日付から外れたことはないそうです。今後もよほどのことがない限り異なることはない、と信じましょう。

 

 

という訳で、天文学的な日付と法律上の日付が変わらないことを大前提とすれば、将来の春分・秋分の日はある程度計算で求めることができます。こちらの詳細も専門的なサイトに譲りますが……。
他の祝日の日付はもっと簡単に判定できるので、これらを利用すれば「ある日付が祝日であるかどうか」を判別するプログラムを作ることができます。例えば万年カレンダーなどに用いることができますね。

 

実際にどう考えるか、少しやってみましょう。
ある日付(関数に対する引数)を取得して、その日が祝日であれば祝日の名称を返す(関数の戻り値)という仕組みで作ることにします。

 

 1月の場合
   ⇒1日の場合
     ⇒【元旦】
   ⇒15日の場合
     ⇒【成人の日】
 2月の場合
   ⇒11日の場合
     ⇒【建国記念の日】
 3月の場合
   ⇒計算による春分の日と一致する場合
     ⇒【春分の日】
 4月の場合
 (以下略)

 

……お気づきの方もいらっしゃるかと思いますが、上記のプログラムにはおかしい点があります。それは、いわゆるハッピーマンデー制度により、現在の成人の日は15日ではなく「1月の第2月曜日」だということです。
だからと言って単純に第2月曜日に書き換えてしまうと、法改正前の15日だった頃の成人の日が必要な場合でも表現できなくなってしまいます。そこで、1月の部分を次のように書き換えます。

 

 1月の場合
   ⇒1日の場合
     ⇒【元旦】
   ⇒1999年以前の場合
     ⇒15日の場合
       ⇒【成人の日】
   ⇒2000年以降の場合
     ⇒第2月曜日の場合
       ⇒【成人の日】

 

年まで考慮に入れることによって、ようやく正確に表現することができます。
(※実は、より正確を期するなら祝日法の施行年から、という条件も必要になるのですが、煩雑になるのでここでは割愛しました。)

 

 

このような感じで日付から祝日を算出していけば、カレンダーを作ることができる……と言いたいところですが、これだけではまだ足りません。
まず、祝日法第三条第二項【「国民の祝日」が日曜日にあたるときは、その翌日を休日とする。】、いわゆる振替休日です。
これは「前日が日曜日でかつ祝日」という条件で求めれば大丈夫……と思いきや、実は2007年から少し事情が変わりました。
この年から4月29日が昭和の日になり、みどりの日が5月4日に移動しました。この場合の振替休日をどうするか定めるために、この規定も改正されました。
【「国民の祝日」が日曜日に当たるときは、その日後においてその日に最も近い「国民の祝日」でない日を休日とする。】と長くなりましたが、わかりやすく言えば「5月の3~5日のいずれかが日曜日の場合は6日が振替休日になる」ということです。
他に祝日が連続する例はないので、今のところ5月だけの特別な規定と言えそうです。

 

さらにもう一つ、第三条第三項【その前日及び翌日が「国民の祝日」である日(日曜日にあたる日及び前項に規定する休日にあたる日を除く。)は、休日とする。】というものもあります。こちらは一般的に国民の休日と呼ばれています。
こちらは「祝日が1日おきで、かつその日が日曜でない場合は休日にする」と言えば分かりやすいでしょうか。従来は5月4日を公式に休みにするために規定されたものです。
上記のとおり現在では5月4日もみどりの日として祝日になり、この規定は必要なくなった……かと思いきや、実は別の時期にこの国民の休日が出現しました。
ハッピーマンデー制度により9月第3月曜日に変更になった敬老の日と、最初に書いたように不定日である秋分の日が近接するようになり、2009年には21日の敬老の日と23日の秋分の日の間の22日が休日になりました。当時は秋にできた大型連休「シルバーウィーク」として話題になりましたので記憶している方も多いかと思います。
今後は計算上では2015年、2026年などに出現する予定です。こちらもとりあえずは9月だけの特別な規定と考えていいでしょう。

 

 

……長々と書いてきましたが、「祝日をシステム化するとどうなるか」ということを私自身の経験をもとに表現したらこうなりました。
考え方は人それぞれだとは思いますが、システム開発をしている際の頭の中はこんな感じ……とでも思っていただければ幸いです。

 

また、祝日法の規定に基づいて作っているということは、法改正があれば当然修正が必要になるということでもあります。
これは他のシステムにも言えることですし、税法などお金絡みの方が影響度は大きいのですが、祝日法でも単に祝日が増えるだけならともかく、上で挙げたような規定によって複雑な変更が発生することもあるのです。
「秋の祝日を集約して大型連休にしよう」とか、「地域ごとに休みをずらそう」とかそんな話もありましたが、実際にそうなったらカレンダー上はどう表現するのかな……とちょっとだけ不安に思うのでありました。

 

 

余談ですが、先日実家の片付けをしていた際に、食器をくるむのに使っていた昭和60年の新聞を見つけました。
その中の記事に「秋に大型連休を作ろう」という、何やら最近も聞いた話題が……内容も「秋の祝日を移動して云々」と大体同じでした。
少なくとも30年近く前から同じような議論がなされてるんだなと思ったのと同時に、「議論だけ」が未だに続いてるのであれば不安に思う必要はないのかも……と少し考え直してしまいました。

 

……最後に写真を添えておきます。秋分の日らしい、というよりは秋の彼岸らしいイメージで。
 

 

 

 

 

 

 

 

 

 

 

システMAX