From: Tadayoshi Funaba Date: 1998-02-03T13:33:42+09:00 Subject: [ruby-list:6200] Re: lib/date.rb (Re: man/date/time) >私が作るかどうかはともかく、資料がある程度まとまったらまた出します。 今、なんだか妙な気分なんです。どういったら、この気分をいいあらわすこと ができるのかしら... (済みません。ちょっと長いです)。 僕は 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