[PHP-dev 1330] Re: [PHP-doc 649] mbstring の新関数のマニュアルについて

Seiji Masugata s.masugata @ digicom.dnp.co.jp
2006年 9月 19日 (火) 19:13:12 JST


桝形です。

まず、mb_list_encodings関数の件ですが。

現状の仕様はともかく、まず第一に一つの関数内で色々やらせようとする
事は、最近読んだ文書から引用させて頂きますと、UNIX的では無い、と
いう事です。

http://d.hatena.ne.jp/asin/4274064069

一つの事を上手くやらせる、という行為から徐々に脱線している感じが
しています。



次に、mb_list_encodings関数のエンコーディング・リスト一覧取得には
全く興味が無くて、

mb_list_encodings関数の引数有りの機能(エイリアスを実体に丸める)
mb_list_encodings_alias_names関数

にしか興味がありません。

なので、mb_list_encodings関数でエンコーディング・リスト一覧を何処
まで返すべきか?という事には、実は、まーーーったく興味がありません。

そもそも、そういう機能を利用していないので、mb_list_encodings関数の
エンコーディング・リスト一覧の結果がどうなるべきか、という事には
興味が薄いです。

個人的には、一つの事を上手くやらせる、という行為から徐々に脱線して
きている感じがするので、どちからというと反対派なんですけど。



更に、別関数にしたのは、UNIX的では無い、という考え方の他に、あさかわ
さんが指摘しているように、当初の設計者を尊重、したのもそうですが、
改修した事になって起こりえる影響範囲が想像できなかった、という事も
あります。

中途半端に実装して、変なリスクは負いたくないし、実体エンコーディング
しか返さない仕様は、何かの意味があったんだろう、と思っているので。



最後にですが、mb_list_encodings関数で全てのエンコーディングを返す
ようになった場合、現時点では、そこからエイリアスになっている情報を
取り除く事がシステマッチックには出来ません。

更に言うと、どのエイリアス・エンコーディングが、どの実体エンコーディング
と対になっているのかでさえ、システマッチックには分かりません。

それに対応する為に、mb_list_encodings関数の引数を増やしたりする等して
機能を拡張していく事になると思いますが、どんどん柔軟性に欠如していき、
最終的には自分自身の重さで身動きが取れなくなってしまう事が想像できます。
流石に、それは阻止したいんですけど。



そういう事もあって、追加した新機能に関してはdisableにするつもりは
全くありません。



現状、mb_list_encodings関数の(実体エンコーディングの一覧を返す)
仕様は全く変更していないので、別に、現状から更に悪くなる、という訳
ではありません。良くも悪くも、変わらず。

関数が追加された分だけ、今よりも良くなる可能性はありますが。

興味がある方で、mb_list_encodings関数で全ての一覧を返す実装を検討
すればよいのでは、と思います。デフォルトを全ての一覧を返す事にする
のも全然構いません。


良くも悪くも、それがオープンソースなのだと(個人的には)思います。
別に、取り込むのが嫌だ、と言っている訳では無いので悪しからず。

というか、途中から忙しくなって全部のページを見ていないので、既に
どこかにパッチが転がっているという事?

であれば、取り込みたいと思うので、URLを教えて下さい。



個人的には自分自身、もっと別の作業に注力したいという事もあります。
現時点で足りていない機能、mbstringには、まだまだ沢山ありますね。

個人的な読みではPHP_5_3 Branchはできると睨んでいるので、それまでに
自分が思っている全ての事を実現したいと思っています。


後「実装の都合で 1 個の関数でやるのが面倒」という文面がありましたが
何かを作業する(新規で作成する事も含めて)という事は、何であれ、必ず
面倒な作業が発生します。

作成する手間であったり、テストする手間であったり、と。

なので、面倒だから実装したくない、という事よりは、実装するにあっての
動機が自分には無いので興味が非常に薄い、というのが大半を占めています。


この辺は考え方の違いもあるので、折衷するのが難しいんでしょうけど。


仮にmb_list_encodings関数が全ての機能を満たした場合、
mb_list_encodings_alias_names関数は必要なくなるので、その時には
「this function is not recommended. do not use.」みたいにマニュアルに
記述すればよいのではないでしょうか。


そんな事より、他に作業したい・すべき事が沢山あるので、自分が明示的に
mb_list_encodings関数で全ての一覧を返すよう実装しようとした場合には、
かなり後の作業になると思います。

その辺はお互いに協力できれば、と思っていますが。ヘルプ・ミー。


他にも書きたい事は色々とありますが、全てに対して反応していてもキリが
無いので、取り急ぎ、こんなところで。他にも書くかもしれませんけど。

-- 
Seiji Masugata <s.masugata @ digicom.dnp.co.jp>




PHP-dev メーリングリストの案内