Tanaka Akira wrote:
>> で、URI.build( .. ).to_s を基本とし、警告で誘導するとか。
>
> 個人的に URI.build を使った経験がないんですが、よくある用法
> に合ってるんですかねぇ?

現状ではあっていませんね。
host や path はエスケープ済みでなければいけませんし、
query も結合済みでないといけないので。

> とりあえず Google Code Search ではひとつ使っているところがあ
> りましたが、とても少ない気がします。

よくある用法では、protocol-host-path あたりまでは、
いきなり文字列として湧いて出て来ているような気がします。

今回の話はその否定から始まっているのでどうなんでしょうね。
この部分について一定の仮定を置けるならば、また別のAPIの余地がありますが。

> 私は、非ASCII な URI を使った覚えがあまりありません。
> (query 部分に使ったことは何回かある気がしますが。)
>
> そのため、用法を想像することが私には困難です。いきなりその二
> つが必要だといわれてもなんとも。

多言語ドメイン以外だと、実質的に query な気もしますが例えば Wikipedia とか。

IRI: http://ja.wikipedia.org/wiki/まつもとゆきひろ
URI:
http://ja.wikipedia.org/wiki/%E3%81%BE%E3%81%A4%E3%82%82%E3%81%A8%E3%82%86%E3%81%8D%E3%81%B2%E3%82%8D

これにアクセスしようと思ったり、a 要素の href 属性に使ったりするならば
URI の方を使うのでしょうが、
このアドレス自体を表示したい場合は IRI の方を使うとか。

まぁ、IRI をサポートしようと思うと NFC や Punycode が必要になるので、
現時点ではサポートしようよ!という話ではないです。

> % を変えないエスケープ、というアイデアがなくもないのですが、
> 用法がわからないので、うまく使えるかどうかは不明です。

IRI の話を持ち出したのは実はこちら向けで、URI っぽい文字列全体にかけるエ
スケープは、
基本的には IRI から URI への変換であるべきではないのか、と思うようになり
ました。
http://tools.ietf.org/html/rfc3987#section-3.1
こちらは US-ASCII の範囲外しかいじらないので、ご指摘の %-encode の過剰適
用問題がありません。

また、URL っぽいものを URI に変換する手続きを HTML 5 の人々が考えています。
http://www.w3.org/html/wg/href/draft
こちらは現状 %-encode の過剰適用の問題があるので、その点はつっついてみよ
うかなと。

-- 
NARUSE, Yui  <naruse / airemix.jp>