From: "NARUSE, Yui" Date: 2009-11-26T04:02:22+09:00 Subject: [ruby-dev:39785] Re: [Feature #973] EncDet again 成瀬です。 Akinori MUSHA wrote: >>> ライブラリ名は encoding でいいんじゃないですか? >> encoding.rb はちょっと時期尚早じゃないかなぁ。 > > その理由について何らかの材料をいただけないでしょうか。 > 私の主張はライブラリ名として今使っても問題ないだろうという点なので。 まず前提として、Ruby のエンコーディングの命名は、 IANA Charset の実際上の運用とは異なっています。 つまり、世間では Shift_JIS という名前を Windows-31J として使っているのに対し、 Ruby はその区別を厳格にする事を求め、ルーズにしていると Windows 環境では 例外が上がるように設計されています。 Encoding や、magic comment を読む EncDet はこの枠内で動いています。 ので、ここまでは Encoding に統合可能ではあるのですが、 Encoding をあまり肥大化させると、それ以外の実際上の IANA Charset 的な、 Ruby としては間違った世界のものも扱う必要が出てくるように思います。 その場合の判断は後述の理由から、現時点では避けたいと考えています。 つまり、Encoding の本質について今は判断を避けたいのです。 >>> APIは(少なくともアプリケーションは)Encoding以外のクラス名を使わなくて済むように >>> 工夫すればいいと思います。 >> その工夫が思いつかなくてたな晒しになっている現状、有効な案だとは思えません。 > > まずはライブラリ名や実装クラス名の問題を取り除いて、エンドユーザが使うAPIに > フォーカスすればこのissueはシンプルになるのではないでしょうか。 これは賛成です。 >> なお、open 等に detect をつっこめるほど EncDet について知見が集まっているとも考えがたいです。 > > ご自分が挙げられた IO::detect_open に即座の反対は寄せられていないし、 > 十分いい名前だと思いますよ。何をdetectするのかという問いは、Encoding自体を > 必ずしも文字コードだけに収まらない概念とすれば答えになるでしょう。 > (そこの方針を私は把握していないのですが) Encoding は文字コードのみを扱うべきだと、わたしは現時点で思っています。 > 私などは新しく書くコードにもNKFを使う有様ですし、Nokogiriなどを見ても、 > みんな同じなんだなあと思います。最終版でなくていいから、「いずれこんな感じで > できるようになるよ」というのを見せてほしいとみんな思っていますよ。 Nokogiri は前述の IANA Charset ベースの話なので、EncDet より話は悲惨です。 つまり、charset=Shift_JIS まわりで地雷を踏むことでしょう。 こっちがまともになるのはもうしばらくかかると思われます。 この辺について、IANA 側で動く気配があるので、そちらの動きが見えるまでは Ruby 側で対処するつもりはありません。 -- NARUSE, Yui