とりあえず日本の祝日のデータのyamlのみを含んだ holiday-jp/holiday_jp リポジトリを作りました。

https://github.com/holiday-jp/holiday_jp

従来のgemのreposは holiday-jp/holiday_jp-ruby になります。

holiday-jp/holiday_jp-ruby: Japanese holiday.

holiday_jp-rubyとかholiday_jp-phpとか作ってgit submoduleでyamlのrepoを取り込む感じで。

wootheeを見習って他reposからgit submoduleしやすいように祝日データをrubyからyamlにしました。(organization化と言語非依存にrepos化はちょっとしたholiday_jpのようなライブラリではやり過ぎかなと思ってやってません。submodule使えば祝日データの一元管理という要は足りるしね。)

komagata/holiday_jp

僕がgemを作る時ってすごく画期的なアイデアが見つかったとかあんまりないので、ほとんどが仕事上で必要だけど既存のgemが存在しない=日本語やi18n関係ばっかりになっちゃうんですよね。

昔に使ったので我ながら設計が変ですが、テストが合ったのでテストに変更が無いように実装を変えただけです。あとはテストにshoulda-contextとか今日び使わないのでtest-unit3に変えたぐらい。

最近gem作る時ちょっと便利だなと思うのはgemspecとか自動生成系ファイルをコーディング規約に合わせるために手作業しなくても$ rubocop -aでほとんどいけちゃうところ。

日本の祝日が分かるgem、holiday_jp 0.3.1をリリースしました。

単純なgemなんですが、何故か@pwimさんが高速化してくれたり、@kakutaniさんがリファクタリングしてくれたりで、gemを介して遊んでるみたいな感じです。

今回はjewelerオワコンってことでbundlerにしたり、travis-ciしたり、rubygems-test対応したりしました。

僕も他のgemで新しいツールを使う前の実験台として使ったりしています。:-)

rubygems-testって面白いですね。僕はperl使ってた時に、「cpanの自動テストうっっっz」とか思ってましたが、良い物ですね。すいません。

特にrubygems-testをユーザーがインストールをしてるとプラットフォーム毎にテストが通ったかどうかを自動でhttp://test.rubygems.org/にアップしてくれるのがイカス。

Gem Testers

holiday_jpに幸あれ、rubygems-testに幸あれ。

@kakutaniさんからpull requestが来てたので改めて、holiday_jpについて。

2009年に仕事で必要になって作ったgemです。祝日が必要なソフトウェアは結構あると思いますが、こんな調査に時間を割くのは一人でいいんで共有できればと。

祝日は法律によって増えたり減ったりするので未来に渡って計算で算出することができません。

休日・祝日の定義について

休日は単に休みの日です。祝日は”国民の祝日を定める法律”で規定されるお祝いのための休日です (土日は祝日ではありません)。皇室の祭典を行った大祭日などが元になっています。

立春の日・秋分の日について

また厄介なのが立春の日と秋分の日です。基本的には国立天文台の算出する定気法による日(天体の動き)から決定されるため「ほぼこの日だろう」という日は分かりますが、実際には前年度の2月1日に閣議決定され、官報で告知されるまで確かなことはわかりません。(天文学に基づいて年毎に国家の祝日が決定されるのは世界的に見ても珍しいそうです。)

つまり、「現行法に置いては」という但し書きをつけても、日本の祝日は1年先までしかわからないということです。

「1年毎に誰かがメンテナンスする必要があるのであればgithubとかあるし100年分ぐらいgemの中に持っちゃえばいいじゃん。」

ということでholiday_jpができました。

関連:holiday_jp - 国民の祝日が分かるライブラリ - komagata