From: Takahiro Kambe Date: 2008-09-04T09:41:55+09:00 Subject: [ruby-dev:36147] GNU iconv dependency こんにちは。 test/iconv/test_option.rbの中、というよりもtest/iconv/test_option.rb そのもので行っているテストですが、GNU iconvを前提とした内容となってい ます。 具体的には、エンコーディング名の後に、 //TARNSLIT 似た文字での置換 //IGNORE 切り捨てて処理を実行 といった、付加的な変換の指定の文字列を付けたときのテストしています。 残念ながら、これらはGNU iconvの独自拡張であり、すべてのiconvライブラリ で用意されているわけではありません。(iconv_open()の抱える機能不足とい うか、APIの欠陥と言える側面はありますが。) このため、GNU iconvをインストールして、それを使うようにコンパイルしな い限り、このテストはBSD系やOpenSolaris(?)で失敗します。GNU iconvをイン ストールして使えば済むと考える方はいらっしゃるかもしれませんが、その時 点で、RubyのパッケージはGPLのライセンスに限定されます。 さらに、RubyのテストにこのようなGNU iconv独自の機能のテストが含まれて いることで、これを見て積極的にこれらの独自機能をアプリケーションで使用 して、結果的にその移植性を損なうことになりかねる側面があるのではないで しょうか? 実際に、http://www.netbsd.org/cgi-bin/query-pr-single.pl?number=36474 と、いった事例もあったりします。 理想的には、これらが使用されているとウォーニングを出すような機能があっ ても良いような気がしています。 もっとも、PHPのiconvのマニュアルあたりが、恐らく何も考えずにこれらの拡 張機能を書いていたりする(実際はGNU iconvに投げてて使えているだけ)関係 で、これらを前提として動作しているアプリケーションはPHP方面でもときど き見かけます。 そういう意味では「事実上の標準のような機能」として広まってしまっている わけですが、やはり独自拡張の使用を推奨するようなことにつながるコードを (テストとは言え)含めるべきではないと思います。 まとめると、 1. GNU iconvにどっぷりと依存したコードは(テストと言えども)Ruby本体に 含めないで欲しい。含めるのであれば、GNU iconvに依存していることを よーくわかるようにして欲しい。 2. GNU iconvの独自の変換指定の文字列に対して、ウォーニングを出すような オプションか何かがあれば、なお良い。 となります。2.はさておき、1.は強く希望します。 -- 神戸 隆博(かんべ たかひろ) at 仕事場