時にパソコン上でカレンダーを表示したい場合があります。私の場合は、テレビの録画予約システムを構築した時でした。とりあえず、カレンダーというか日付(グレゴリオ暦)を表示させる方法はいくらでもありますが、ここで「祝日」という壁にぶつかります。グレゴリオ暦は簡単に計算できても祝日の出現は計算できません。ネットを検索すると「祝日の計算」のような表現を見かけることがありますが、この表現は祝日の本質的な問題を無視していることが明らかです。祝日は、法律によって新設・改廃されるものであり、計算では対応できないのです。日本の現状の祝日に限っても、春分の日、秋分の日は国立天文台の観測によって決まるため祝日を算出するライブラリ関数を独立に内蔵するなどということは不可能です。つまり、祝日は算出するのではなく、祝日のデータそのものをなんらかの形で取得する必要があります。 では、どうするかですが、理想的には公的機関が既定のフォーマットで祝日データを公開し、祝日データを利用したいクライアントはその祝日データにアクセスし、祝日を判定することです。以前、IT関連の意見募集みたいなものがあった時にそのような主旨の問い合わせを総務省にしてみたことがあるのですが、祝日は法律に従って計算してほしい、春分の日、秋分の日は国立天文台の所定のページを見てほしい、というまったく私の主旨を理解していない回答が返ってきたことがありました。一応、内閣府の「国民の祝日」の公式サイトには、二年分の祝日データを持つCSVファイルが用意されていたりするものの、それは振替休日が含まれていなかったり、記述順がわかりにくかったり、そして、最も重要なフォーマットの普遍性が宣言されておらず(実際、何度か変わっています)では、正直、使えません。 実は、総務省でも内閣府でもない別な公的機関(農研機構)で祝日データの公開をしていたこともあったのですが、今年(2016年)の三月末でサービスを終了するそうです。このサービスは、途中でURLは変わるし、直感性も悪く、結局、一度も使うことはありませんでした。農研機構というところがどの程度のお役所なのか私はよく知りませんが、一般論としてお役所というものは法律がないとまったく信用できないものです。 それで、どうしたかですが、まずはGoogleのウェブAPIを利用することにしました。Googleなら下手な公共機関よりも信頼性は上でしょう。しかし、このウェブAPIはユーザーが外部で利用することを想定していないため出力データは祝日に特化しておらず、また、URLが変わったり、アクセス法が変わったり、そのたびにコマゴマ対応していたのですが、三度目でついに諦めました。ほぼ10年ぐらいタダで利用させてもらったワケで、一応感謝しかないとしか言えないのですが、いままで安定して使えていたものが、突然、使えなくなると、なにかの嫌がらせか?とかちょっと思ってしまいます。 そして、最終的に、GoogleのウェブAPIのような祝日データを返す祝日に特化したデータベースサーバを自分でやることにしました。本当は、こんなことは、きっと、どこかで、誰かが、知らないうちに、上手いことなんとかしてくれるだろう…、とずーーーっと思っていました。確かにサーバを永続的に管理運用するのは簡単なことではないのですが、しかし、コンセプト自体は平凡なものなのでどこかの情報系の大学とか学部とかが実験的にやっていてもいいでしょう、というか、やるべきです。実際、大学ではないものの農研機構はやっていたわけですし、どうして誰もやらないのか今でも不思議でしょうがないです。祝日を算出しようと思うのがプログラマの習性なのでしょうか?私は祝日を算出しようなどと思ったことは一度もありません。この感性の違い、自分はプログラマ・理系ではないのだとつくづく思います。 祝日データは最後は人の手で更新するしかない確かに面倒なものです。しかし、データ量は少量、データ更新の頻度も年に1、2回程度のもので、公開の手間やコストもたいしたものではありません。結局、たとえ単純でも、こういうサーバを永続的に管理運用すること自体が最大の難関なのです。というわけで、その難関に挑みます。私は基本的に身軽を旨とする人間なのですが、「人生、一つぐらい何かを抱え込んでもいいか」と、色々あって、そういう思いにいたりました。ただ、勝手なことを言えば、この私の愚行が奇貨となり、より優れたプロトコルが提唱され、それが一般化することこそが私の真の理想です。 よしのぶ
2016-03-30 |