藤本です、こんにちは。

From: Wakou Aoyama <wakou / fsinet.or.jp>
Subject: [ruby-list:8018] Re: libwww-ruby 
Date: Wed, 20 May 1998 09:03:52 +0900

> 青山です。
> 
> やはり見やすい文字列としての相互変換は難しいでしょうね。とりあえず現状
> では require "a/b" が使われるようになると Mac 側ではその扱いが難しいと
> 思われます。require "a" + File::Separator + "b" とでも書くようにしない
> と...

  手間(実装の都合)と互換性を秤にかけて、以下のようにするのでどうでしょ
うか。

    基本的には、UNIX形式パス表現への変換は行わない(手間がかからない)

    例外としてrequireの引数に、$LOAD_PATHで検索するディレクトリに置い
    ているライブラリ、拡張モジュールを指定する場合には、UNIX形式パス表
    現を使う(互換性)

    $LOAD_PATHで検索するディレクトリ以下のファイル、フォルダ名には"/"
    を使ってはいけないことをユーザに強制する(手間がかからない)

    requireの引数中に":"が1文字でも見つかった場合、Mac形式として解釈
    (利便性)

  これはつまり、requireだけを特別扱いにして、その他はおおむね現状のま
まということになります。これなら、requireの引数をチェックするコードを
入れる以外、ほとんどいじらずに実現できるはずです。
  スクリプトのrequire以外の箇所で、パス名表現とOS間(Macとそれ以外)のポー
タビリティの両方が必要なケースというのは、わりと少ないように思うので、
当面はこれでどうでしょうか?

  require以外で、ポータビリティが必要な場合には、File::Separatorを使っ
て書くことを推奨するということになります。そういうときには直接文字列で
表現せずに、スクリプトを書く人がFileSpecifier的なクラスなどを作ってそ
れで扱えば、File::Separatorを使う場所を1、2箇所に集約することは可能
だと思います。

=============================================================
 藤本尚邦  FUJIMOTO Hisakuni                hisa / imasy.or.jp
=============================================================