休日情報 Web サービス
エンドポイントと WSDL
サービス概要
日本の休日情報を提供する Web サービスです。
SOAP 1.1 および 1.2 に対応しています。REST にはサーバの都合により対応していません。
以下のようなサービスを提供しています:
- 指定された年月日が休日かどうかを判定します。
休日であれば true を返し、休日でなければ false を返します。
- 指定された休日の日本語名と英語名を取得します。
たとえば 2006 年 1 月 1 日なら "元日" および "New Year's Day" を返します。
休日でない日を指定されたら null を返します。
- 指定された年月の全ての休日の日付と名前を取得します。
たとえば 2006 年 1 月なら、1 日(元日)、2 日(振替休日)、9 日(成人の日)の情報をまとめて返します。
指定された年月に休日が含まれていない場合、null を返します。
- 指定された年の全ての休日の日付と名前を取得します。
サービスの制限事項
- 1948 年(休日法が施行された年)から 2050 年までにしか対応していません。
- 提供しているサービスは as-is です。プログラムのバグなどにより、休日の判定が間違っているかもしれません。
今すぐサービスを試してみる
プログラムからの使い方
サービス提供に至った経緯
現在、趣味でカレンダーソフトを作成中なのですが、「休日」の判定は意外と面倒だということがわかりました。
すぐに思いつくところでも「振替休日」があります。たとえば2006年の元日は日曜日だったので翌二日は振替休日でした。
また、昔は 4 月 29 日は「天皇誕生日」でしたが途中で「みどりの日」と名前が変わり、しかも 2007 年からは「昭和の日」です。
春分の日や秋分の日はそれぞれ「春分日」「秋分日」とされていますが、それは天文学的に求められますが数日の範囲で揺らぎます。さらに問題なことに、厳密には官報に公示される事によって初めて正式に休日となりますので、将来の「春分の日」および「秋分の日」はあくまで予測でしかありません。
また、以前は国民の休日は 5 月 3 日と 5 月 5 日に挟まれた 5 月 4 日だけでしたが、ハッピーマンデー休暇の導入などにより 9 月の敬老の日と秋分の日の間に挟まれて国民の休日になるということが稀に起こります。
ほかにも皇族関連のイベント(って失礼な書き方かもしれませんが)で臨時の休日があったりもします。
このあたりの詳しい情報は、以下のサイトが大変参考になります:
最初は安易な気持ちで「休日の判定くらいすぐできるだろう」と思っていたのですが、なかなか難しいということがわかりました。
そこで、上記 Aladin Box さんのサイトで公開されているアルゴリズムを自分のソフトにも搭載してしまおうかと思ったのですが、いくつかの点が気になったので見合わせました。
それは、
- 休日法が改正になったら、自分のカレンダーソフトも更新しなければならない
- 過去の休日はすでに確定していて今後変わることはないはずなのに、毎回判定ロジックを動かす必要もないのではないか
といったような理由からでした。
それに対して私が考えたのは、Aladin Box さんのアルゴリズムを使わせていただいてある範囲の年の休日情報をすべてあらかじめ判定しておき、その判定結果をプログラム内にデータとしてもっておいて、Web サービスのようなものを使ってそれを時々更新するようにすればよいのではないか?ということでした。
しかし、意外なことに休日情報を提供してくれる Web サービスのようなものが存在しなかった(発見できなかった)のです。
「無いものは作ってしまえ」ということで、Web サービスや ASP.NET の学習もかねて作ってみたのがこのサービスです。
懸案事項
- ライセンスをどうするか(できるかぎり自由に使用して欲しい)
- 休日判定に間違いがあったときの報告先をどうするか。また、一歩進めて、いわゆる "群集の知恵" で自動的に修正できる方法はないか?
- 比較的公共的なサービスなので、遠い将来(100年後とか)もサービスを提供し続けられるようにするにはどうしたらいいか?(考えすぎか?)
このページに寄せられたトラックバック
サービス概要
日本の休日情報を提供する Web サービスです。
SOAP 1.1 および 1.2 に対応しています。REST にはサーバの都合により対応していません。
bear.mini の実験室 「休日情報 Web サービス」
いや、それ
[平々毎々 (Hey hey, My my)] より
(2007/07/05
14:01:58 --05:00)
今日も完全なメモ書き。5/23に書いたとおり、Webサービスを利用する上で少々トラブルが発生したので、Webサービス提供者にも連絡を取って少し調べてみたのだが、どうやらリクエストヘッダに
Transfer-Encoding: chunked
が含まれていた
[傭兵のメモ帳] より
(2008/05/26
17:27:47 --05:00)
このページへのトラックバック Ping URL:
http://bearmini.net/trackback.aspx?~/publicholidays/default.aspx