古い話で恐縮ですが、

ネストしたモジュール、クラスでもぜひ autoload が有効になって
欲しいので

  [ruby-dev:18185] Re: autoload patch for ruby-1.7 

で結論が出ないままになっていると思われる [ruby-dev:18181][ruby-dev:18184] のパッチを 1.8 に向けて再度検討して頂け
ないでしょうか?

きちんと追えてませんが、
  * 元スレッド   [ruby-dev:16156] [ruby-dev:18103] あたり
  * 関連スレッド [ruby-list:33482] [ruby-list:33483] あたり
僕自身は Ruby 内部の細かいことまでは理解していないのですが
パッチの採用に関して何が問題になっているのか教えて頂けるだけでも
参考になります。


背景:

RAA:bioruby は現在 80 ファイル 110 クラス 約 17000 行の .rb ファイルで
構成されていますが、最近は ruby -r bio -e 0 だけでも少し時間がかかる
ようになってきました。bio.rb に bio/ 以下のモジュールを全部読み込ませて
いるからですが、便利なので、できればこの方針は今後も変えたくありません。

# ruby 1.6.8 で require が高速化されたのはとても助かっています。
# 当社比で 3.5秒→0.5秒 くらいに短縮されました。:-)

Perl での先行プロジェクト BioPerl は BioRuby より遥かに機能が多く、
CPAN 中でも最大のライブラリだと聞いたことがあります(インストール
される .pm ファイルは現在 580 ファイル、230000 行くらいあるようです)。
さすがに彼らは個別に必要なモジュールを use する方針をとっています。

BioRuby も、今後さらにファイルが増えてくるると必要なモジュールだけ
ユーザに require させるべきかもしれませんが、
  * 用途毎にクラスを組み合わせて使うので require 文を並べないといけないが、
    必要なクラスがどのファイルで定義されているか調べるのは面倒
  * 想定されるユーザ層はバイオがしたいのであって Ruby は手段でしかない
といった理由から、簡単で遅くもない方法があれば、避けたいと思っています。

ということで、使うか使わないか分からない機能をロードする時間を
autoload で短縮できるのであれば、直感的で良いと思ったのですが
いかがでしょうか。

Regards,
Toshiaki Katayama
--
Kanehisa laboratory (Bioinformatics Center)
Institute for Chemical Research, Kyoto Univ.
Gokasho, Uji, Kyoto 611-0011, Japan
TEL +81 774 38 3272, FAX +81 774 38 3269
http://web.kuicr.kyoto-u.ac.jp/~katayama/
http://bioruby.org/ (k / bioruby.org)