Home » 社員日記 » Systematic Holiday 2019
4月
15

皆様ご存知の通り、2019年5月1日から始まる新しい元号が「令和」になると発表されました。
会社的には元号に関しても語ることはいろいろありますが……5月1日と言えばもう一つ、即位の日に当たるこの日が祝日になることで、ゴールデンウィークが10連休になるという話題がありました。
今年は即位に伴う祝日の変更がいくつか発生し、さらに来年には東京オリンピックに伴う祝日の変更がまた発生します。
……そういえばずいぶん前にも祝日の話題を取り上げたようなと思い出したので、その時の話の続編的なものとして祝日の変更を見ていきたいと思います。

まず、今後予定されている祝日等の変更を改めて挙げていきます。

(1)2019年限りで適用されるもの
・5月1日は「即位の日」として祝日扱いの休日になる
・10月22日は「即位礼正殿の儀の行われる日」として祝日扱いの休日になる
・4月30日は「昭和の日(4月29日)」「即位の日(5月1日)」に挟まれるため休日になる
・5月2日は「即位の日(5月1日)」「憲法記念日(5月3日)」に挟まれるため休日になる
(2)2019年以降ずっと適用されるもの
・12月23日は「天皇誕生日」ではなくなり平日になる
(3)2020年限りで適用されるもの
・7月23日は「海の日」として祝日になり、7月第3月曜日(20日)は平日になる
・7月24日は「スポーツの日(旧・体育の日)」として祝日になり、10月第2月曜日(12日)は平日になる
・8月10日は「山の日」として祝日になり、8月11日は平日になる
(4)2020年以降ずっと適用されるもの
・2月23日は「天皇誕生日」として祝日になる
(5)2021年以降ずっと適用されるもの
・10月第2月曜日は「スポーツの日」として祝日になる(名称変更のみ)

羅列してみると、約2年間の変更としてはずいぶん多いですね……。

この中で、前回も取り上げた祝日法第三条第三項【その前日及び翌日が「国民の祝日」である日(日曜日にあたる日及び前項に規定する休日にあたる日を除く。)は、休日とする。】に該当するのが4月30日5月2日です。
即位の日について「祝日扱いの休日」とあえて書いたように、5月1日が祝日であればこの項が適用され、単に休日であれば適用されなくなります。そのためこの日の扱いをどうするかが議論されていました。
最終的に祝日扱いとすることが決まり、既存の土日祝と含めて最大10連休となった訳ですが、元々は祝日でなかった5月4日を休日にするために作られた規定がこんな形で適用されるとは……という思いです。

さて、前回同様「ある日付が祝日であるかどうか」を判別するプログラムを考えるとどうなるでしょうか。
仕組みは前回と同じくある日付(関数に対する引数)を取得して、その日が祝日であれば祝日の名称を返す(関数の戻り値)という仕様です。

4~5月については次の通りになります。赤字の箇所が今回の祝日変更に対応した部分です。

4月の場合
⇒29日の場合
⇒1988年以前の場合
【天皇誕生日】
⇒1989年以降で2006年以前の場合
【みどりの日】
⇒2007年以降の場合
【昭和の日】
⇒30日の場合
⇒2019年の場合
【国民の休日】
5月の場合
⇒1日の場合
⇒2019年の場合
【即位の日】
⇒2日の場合
⇒2019年の場合
【国民の休日】
⇒3日の場合
【憲法記念日】
⇒4日の場合
⇒1986年以降で2006年以前の場合
【国民の休日】
⇒2007年以降の場合
【みどりの日】
⇒5日の場合
【こどもの日】

4月30日から5月2日に関しては、いずれも2019年限りで適用されます。そのため2019年の場合は祝日または休日の名称を返し、それ以外の年は何も返さない(=平日である)という動作をすればいいことになります。
(余談ですが、5月1日はメーデーにあたり、祝日として扱う国も多いそうです。日本でも祝日化すべきという意見もあり、仮に実現したら「20XX年以降の場合」という条件を新たに付け加えることになります。)

また、7~8月については次の通りになります。

7月の場合
⇒20日の場合
⇒1996年以降で2002年以前の場合
【海の日】
⇒第3月曜日の場合
⇒2003年以降で2019年以前の場合、または2021年以降の場合
【海の日】
⇒23日の場合
⇒2020年の場合
【海の日】
⇒24日の場合
⇒2020年の場合
【スポーツの日】
8月の場合
⇒10日の場合
⇒2020年の場合
【山の日】
⇒11日の場合
⇒2016年以降で2019年以前の場合、または2021年以降の場合
【山の日】

「海の日」と「山の日」が複数回出てきてしまいました。これは4~5月のパターンと違って「既存の祝日の日付を1年限りで変更した」がゆえに区別しなければならないからです。
特に海の日は当初の固定日からハッピーマンデー対応で変更したのもあり、「1996年~2002年」「2003年~2019年」「2020年」「2021年~」という4回の変更が生じています。

ついでに10月については次の通りになります。分量は少ないですが若干注意が必要です。

10月の場合
⇒10日の場合
⇒1966年以降で1999年以前の場合
【体育の日】
⇒第2月曜日の場合
⇒2000年以降で2019年以前の場合
【体育の日】
⇒2021年以降の場合
【スポーツの日】

いつの間にそんな議論がなされていたのかと思っているのですが、2020年から「体育の日」「スポーツの日」と名称変更されることになりました。
2020年は上記の通りオリンピック対応で7月に移動していますので、10月分について見れば2021年から適用されることになります。同じ第2月曜日でも「2019年以前」「2021年以降」で返す結果が別々になってしまうわけです。

ちなみに前回の最後の方でこんなことを書いていました。

また、祝日法の規定に基づいて作っているということは、法改正があれば当然修正が必要になるということでもあります。
これは他のシステムにも言えることですし、税法などお金絡みの方が影響度は大きいのですが、祝日法でも単に祝日が増えるだけならともかく、上で挙げたような規定によって複雑な変更が発生することもあるのです。

予言したわけではもちろんないですが、まさしく複雑な変更になってしまったように思います。特にオリンピック関連でここまで露骨な変更をするとは……とは正直思いました。
働く立場とすれば休みが増えるのは個人的感情としては嬉しいのですが、システムを担当する立場とすれば必要な変更ならともかく恣意的な変更はいかがなものかという気持ちです。もちろん対応はいたしますが。

勢至公園の桜

秋田でもそろそろ桜の便りが聞こえ始めた頃です。
世間的には「平成最後の花見」と言われていますが、東北以北の一部は「令和最初の花見」になるかもですね。

システMAX

2019年度 » »