だいです。
# なんか爆発してますな(笑)

  以下返信はまつもとさんのメール 3つを混ぜちゃってます。
  [ruby-ext: 01571]
  [ruby-ext: 01569]
  [ruby-ext: 01566]


Re the message of ``[ruby-ext:01569] Re: require 'dir/...'?''...

matz / zetabits.com (Yukihiro Matsumoto):
> まつもと ゆきひろです
> 
> In message "[ruby-ext:01564] Re: require 'dir/...'?"
>     on 01/03/01, Hiroyuki ARAKI <Hiroyuki.Araki / msdw.com> writes:

> foo/*を擁護する人は 「foo ディレクトリ以下の全部のファイルに
> よって構成されるなにか」を提供しようとしている(ように見える
> のに対して)、私は「なにを提供するかどうかはライブラリ設計者
> が決めるべき」と考えているのです。

  「全部」、というか「基本環境」を提供したいでもいいと思うんですが…?
  all.rb なりで明示しないのが気にいらないのかな?
  ディレクトリ指定でデフォルト、を宣言してるわけですし、この省略はそんな不自然
でもないと思います。
  foo/* はワイルドカード使って全部のファイルを指定してるように見えますが、その
実は foo/all.rb を指定するのと僕としては変わらないです。どうせ all.rb に全部
書くんだし(だから管理が大変、と)。


> あと、foo/* を使うかどうかは require する側に任されているの
> もちょっと気に入りません。foo/* されることを想定してないライ
> ブラリもありえるわけですから。

  net/http は net/http として呼ばれたいんであって、net/ で呼ばれちゃ嫌だ、
ってことですね? その可能性も嫌だと。

  よく分かんない人に、安易に、
    require 'net/*'
  と書かれるのが嫌ってことかな?

  これは僕はあまり心配しないなぁ。
  他所のスクリプトと同居できないような排他的なライブラリ書く方が悪い;-P
# この辺他所と衝突しないことに敏感なところ出てますな。

  まぁそれはいいとして、うーん、オプションで require net/* を許可するっていう
手もあるけれど、そこまで制限するのも何だかなぁ。
  となると話は戻って all.rb の名前を決めるか、上のディレクトリに書くかかな。


> all.rbなりなんなりを提供したいって思うってことはなにか標準的
> な機能セットを提供したい(が、実装などの都合上複数ファイルに
> 分割した)ってことですよね。個人的には、その複数ファイルのう
> ちどれが標準的なセットに含まれるかどうかはライブラリ作成者の
> 意図によって制御されるべきだと考えます。ですから、制御もなに
> もなく「全部require」というスタンスの foo/* は私の趣味に合い
> ません。

  foo/ 直下に置くことで制御するわけです。


> |  foo/* で require するのは、あくまでライブラリの基本的なもの、デフォルトの
> |環境というイメージです。
> 
> よく分かんないんですが、foo/* で「基本的なもの」をロードするっ
> てことは、「基本的でないもの」はそのサブディレクトリに置くっ
> てことですか?
> 
>   foo/bar.rb            基本的なもの
>   foo/baz.rb            基本的なもの
>   foo/debug/debug.rb    基本的でないもの?

  上に書いたところの反復になりますが、そういうことです。

# ひとつのディレクトリにメールを5000通もためる某氏とは意見違うかも(笑)


> foo.rb と foo/* が違うディレクトリなのはイヤで、分離したいファ
> イルをサブディレクトリに置くのはOKなんですか?

  foo.rb が嫌なのは自分の管理するディレクトリじゃないからです。
  あと二つ並ぶのが嫌だというところ。
  foo/bar は結局 foo/ 配下ですからね。


> |  debug.rb の場合なら
> |    require 'foo/debug' if $DEBUG 
> |  というコードを、foo/config.rb あたりに書くでしょう僕は。
> 
> でも foo/* なら foo/debug も require しちゃいませんか?

  foo/debug はディレクトリなんで、foo/* では require しません。
  foo/*.rb であって、foo/**/*.rb じゃないということ。


> |> それに foo/* は美しくないってのはいぜん残ってます。
> |
> |  これは require 'foo' で .rb .so に続いて foo/ を探せば問題ないですよね?
> 
> これはイヤです。foo/* されることを仮定していないライブラリが
> ありえる以上、いきなり require 'foo' でfoo/* をrequireするの
> は乱暴過ぎます。foo/__init__.rb 案ならまだ受け入れられます。

  あれ。__init__.rb の方がよいとは意外だった^^;
  ワイルドカードの方がいいんですが、こっちでもよいので、名前決めですかね?


> |ところで、foo/* を擁護するヒト(青木さん Dai さん)対まつもとさん
> |という構図になっていますが、他の人達のお考えはどうなんでしょう?
> 
> いろいろな人の意見は聴きたいですね。もともと私に一方的に有利
> な議論ではあるのですが。(笑)

  いやいや、今回はそうでもなかったりして。
  だって、foo/all.rb 使いましょー! と心配症なライブラリ開発者たちで合意すれ
ばいいんだし;-P