5月1日だけじゃない!業務アプリが対応すべき2020年までのイレギュラーな祝日

いよいよ改元の日があと2ヶ月と迫ってきましたね。このブログでも新天皇即位日の2019年5月1日が祝日になると10連休になるかも!と話題に上げていましたが、先日可決した法案でこれが現実のものとなりました。

新しく公布されたこの祝日に関する法律では、新天皇即位日の2019年5月1日が祝日になるのはもちろんですが、実はそれ以外に「即位礼正殿の儀」が行われる2019年10月22日も、この年限りの祝日とすることが決定していたことをご存知でしたでしょうか?

参考:「天皇の即位の日及び即位礼正殿の儀の行われる日を休日とする法律」について

また、イレギュラーな祝日はこれだけに留まらず、2020年も東京オリンピックの影響で海の日、山の日、体育の日(スポーツの日)の日付が変更されることが決定しています。

参考:国民の祝日に関する法律(昭和23年法律第178号)の特例について

あとは天皇誕生日も新天皇即位に合わせ12月23日から2月23日に変更となりますね。

2019年から2020年にかけて発生する祝日に関する変更をまとめると以下のようになります。

※天皇誕生日以外はその年限りの変更

2019年
名称 日付 備考
休日 4月30日 「国民の祝日」に挟まれた平日は休日
休日(祝日扱い) 5月1日 天皇即位の日
休日 5月2日 「国民の祝日」に挟まれた平日は休日
休日(祝日扱い) 10月22日 即位礼正殿の儀の行われる日
2020年
名称 日付 備考
天皇誕生日 2月23日 2020年以降祝日
海の日 7月23日 本来は7月20日
スポーツの日 7月24日 旧体育の日。本来は10月12日
山の日 8月10日 本来は8月11日

参考:平成31年(2019年)及び平成32年(2020年)の「国民の祝日」

業務アプリなどでカレンダーを使用している場合、これらイレギュラーな休日を適切に反映させたいですよね。でもコーディングでゴリゴリ書くのはちょっと面倒・・・。

新しい祝日や新元号に対応したサービスパックを公開予定

4月中旬に弊社開発ツールを新元号に対応させるためのサービスパックを公開予定です。対象の製品は以下のページをご覧ください。

このサービスパックには、前述のイレギュラーな祝日に対応した「祝日定義ファイル」が含まれます。

※対象製品は上記リンクの「特記事項」を参照

祝日定義ファイルをインポートして使用することにより、複雑なコーディングをすることなく2020年までのイレギュラーな祝日に対応できます。

祝日定義ファイルをインポートするには?

祝日定義ファイルのインポート方法は製品によって異なりますが、今回は「InputMan for Windows Forms」の例をご説明します。

まずはツールボックスから日付時刻コントロール(GcDateTime)をフォーム上にドロップします。

日付時刻コントロールをドロップ

この時点でアプリケーションを実行してドロップダウンカレンダーを開くと、以下のように祝日も何も設定されていないプレーンな表記になります。

デフォルトのカレンダー

それでは祝日定義ファイルをインポートしてみましょう。 プロパティページからGUIで設定する方法と、コードで設定する方法があります。どちらもすごく簡単です。

プロパティページから設定する方法

プロパティページから設定する場合はノンコーディングで対応できます。

日付時刻コントロール右上のアイコンをクリックして表示されるスマートタグから、「プロパティページ」をクリックします。

スマートタグ

表示されたプロパティページの左側のツリーメニューから、「ドロップダウンカレンダー」 -> 「日付スタイル」 -> 「休日スタイル」を開き、「読み込み」をクリックします。

プロパティページ

「製品をインストールしたフォルダ」 -> 「Data」フォルダから、Holiday.xmlを読み込みます。

祝日定義ファイル

以上で休日スタイル定義のインポートは完了です。横のチェックボックスにチェックを入れ、スタイルを有効化します。

スタイルを有効化

コードから設定する方法

もちろんコードから祝日定義をインポートすることも可能です。この場合もわずか2行で設定完了です。

サンプルコード(C#)

// 祝日定義ファイルをインポート
gcDateTime1.DropDownCalendar.HolidayStyles = GrapeCity.Win.Editors.HolidayStyleCollection.Load(@"C:\Program Files (x86)\InputManWin10\Data\Holiday.xml");
// インポートした祝日定義ファイルを有効化
gcDateTime1.DropDownCalendar.ActiveHolidayStyles = new string[] { "NationalHoliday" };
実行結果

前述のいずれかの方法で祝日定義をインポートしてアプリケーションを実行すると、ドロップダウンカレンダーを表示したときに祝日がきちんと色付けされています。

祝日を色付けして表示

現在公開している祝日定義ファイルでは、上記のように5月1日の祝日などは反映されませんが、4月に公開予定のサービスパックには前述のイレギュラーな祝日にすべて対応した祝日定義ファイルが同梱されます。

おわりに

いかがでしたでしょうか。カレンダーをイレギュラーな祝日に対応させるには、年ごとに処理を分岐させるなど、複雑なコーディングが必要になりますが、弊社開発ツールと、同梱の祝日定義を使用すれば驚くほど簡単に対応ができると思います。

サービスパックは2019年4月中旬に公開する予定となっておりますので、今しばらくお待ちください。

Webサイトにて弊社製品の新元号対応や新しい祝日への対応についての情報をまとめて公開しておりますので、こちらもあわせてご覧ください。