>私が作るかどうかはともかく、資料がある程度まとまったらまた出します。

今、なんだか妙な気分なんです。どういったら、この気分をいいあらわすこと
ができるのかしら... (済みません。ちょっと長いです)。

僕は lib/date.rb の仕様に疑問があったのですが、 そこをハッキリさせて、
よりよくできたらいいなと思っていましたが、ひょっとすると、何故そういう
仕様になっているのか訊いて納得できたら、それだけで済んだことなのかもし
れないのです。僕は、誰か lib/date.rbについての疑問に答えられる人がいる
いて、 その人はその気になれば (僕の提案をもっともだと思ってくれたら)、
すぐさま (すぐにでなくても比較的簡単に) 修正できるものだと思っていまし
た。それだけのことだと思っていました。しかし、そうではなかったようです。
そうでないなら、べつにムリすることはないなと思いました。この話はもう終っ
たようなものだという気がしていました (べつに終らせたいというわけではな
いです)。

まったく反応がなかったので、みんな気付いていないと思いますが、すでに僕
は ruby のための暦計算モジュールをつくっています。 これは、ある Lispコー
ドを元にしたもので、 インターフェイスも含めてみんな C で書いてあります。
もともと、 これは暦計算のテスト環境構築のためのものなので OOしてないし、
C で書いてあるし、大袈裟すぎるので、よくないのかもしれません。なんだか、
宣伝みたいなんですが、これから暦について調べてコードを書こうかという人
までいるというのに、話のきっかけを作った奴はすでに、それなりにつかえる
(筈だと思っている) コードをもっていわけですから。 べつに隠しているわけ
じゃないんだけど、なんだかおかしいんで、あらためてちゃんといっておきた
いと思います。

僕はちょっと修正すれば、lib/date.rb はより魅力的になり、そうして、それ
はそれで済む話しだと思っていたので、この展開にちょっととまどっています。
だって、僕はつかえるはずのコードをもっているのに、結果的に黙って他人に
コードを書かせようとしているのかもしれないんですからね! べつに僕のため
に書こうというわけじゃないのだろうけれど...。

ところで、僕はここしばらく、暦やら、そういうものをあつかうソフトウェア
を若干ながら調べてきました  (あまり成果はあがっていないが)。自分でもそ
ういうコードを書いたりしていますが、他によさそうなコードがいくつかある
こともわかりました。もし、置き換えを考えているのなら、すでにあるものを
移植するという手もあります。これは検討する価値があります。

もし、 本当に lib/date.rb を置き換えるものをつくろうとしているのなら、
ほかにも参考になりそうなものはありますし、よければ、そういうものを紹介
しましょう。

ところで、木村さんのあげた式は、封筒裏の計算にはいいのかもしれませんが、
もし、今現在の lib/date.rb で、ユリウス日 (JD)、MJD を求めるのなら、お
そらく、つぎのメソッドをつけ加えるだけで充分なはずです。それに、ユリウ
ス暦のことも考えればこうしたほうがいいでしょう。

  def jd
    return period + 1721423
  end

  def mjd
    return jd - 2400000.5
  end

ところで、day_of_week はもっと簡単でいいはずです。おそらく、それぞれ別々
にアルゴリズムを調達してきて、そのまま嵌めこんだだけなので、必要以上に
複雑になってしまっているのじゃないでしょうか。そういうのは厄介です。

  def day_of_week
    return (period + 5) % 7
  end

--Tadayoshi Funaba