-
Notifications
You must be signed in to change notification settings - Fork 4
/
238.txt
377 lines (275 loc) · 25.7 KB
/
238.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
[12] [DFN[IDNA2008]] は、 [[IDNA]] の2008年頃の改訂版です。
;; [13] 2008年「頃」というのは、この種の仕様の例に漏れず、仕様策定に時間がかかって2008年に完成していないからです。
[14] [[IDNA2008]] は [[IDNA2003]] を改訂して置き換えるものですが、非互換な変更を含んでいるため、
[[IDNA2003]] も引き続き実装されて残っています。
* 仕様書
[REFS[
- [6] [CITE@en[RFC 5890 - Internationalized Domain Names for Applications (IDNA): Definitions and Document Framework]] ([TIME[2010-08-05 01:32:35 +09:00]] 版) <http://tools.ietf.org/html/rfc5890>
- [7] [CITE@en[RFC 5891 - Internationalized Domain Names in Applications (IDNA): Protocol]] ([TIME[2010-08-05 01:32:40 +09:00]] 版) <http://tools.ietf.org/html/rfc5891>
- [8] [CITE@en[RFC 5892 - The Unicode Code Points and Internationalized Domain Names for Applications (IDNA)]] ([TIME[2010-08-05 01:32:32 +09:00]] 版) <http://tools.ietf.org/html/rfc5892>
- [9] [CITE@en[RFC 5893 - Right-to-Left Scripts for Internationalized Domain Names for Applications (IDNA)]] ([TIME[2010-08-05 01:32:45 +09:00]] 版) <http://tools.ietf.org/html/rfc5893>
- [10] [CITE@en[RFC 5894 - Internationalized Domain Names for Applications (IDNA): Background, Explanation, and Rationale]] ([TIME[2010-08-05 01:32:43 +09:00]] 版) <http://tools.ietf.org/html/rfc5894>
- [11] [CITE@en[RFC 5895 - Mapping Characters for Internationalized Domain Names in Applications (IDNA) 2008]] ([TIME[2010-09-15 04:55:59 +09:00]] 版) <http://tools.ietf.org/html/rfc5895>
- [15] [[IDNA2003]] のうち [[Punycode]] ([[RFC 3492]]) は [[IDNA2008]] でも使われています。
- [101] [CITE[IDNA Parameters]]
<http://www.iana.org/assignments/idnabis-tables/idnabis-tables.xml>
- [102] [CITE@en[RFC 6452 - The Unicode Code Points and Internationalized Domain Names for Applications (IDNA) - Unicode 6.0]] ([TIME[2011-11-13 16:13:22 +09:00]] 版) <http://tools.ietf.org/html/rfc6452>
]REFS]
* Unicode の版
[58] [[IDNA2008]] の [[RFC]] は [[Unicode]] 5.2 を引用していますが、特に版を限定はしておらず、
[[Unicode]] が更新されても使えることになっています。
[60] [[IDNA2008]] の実装は [[Unicode]] の[[特性]]などを利用して処理を行うこととなりますが、
この情報については [[Unicode]] の版はいずれか特定の版でなくてはならず、
部分的に新しい版になっているなどの齟齬が生じていてはいけません。
[SRC[>>10 7.1.2, 7.1.3]]
[59] [[登録]]に当たっては、[[レジストリー]]は新しい[[版]]で追加された[[文字]]を扱う必要がない限り、
[[Unicode]] の版を更新する必要はありません。 [SRC[>>10 7.1.2]]
** Unicode 6.0.0
[100] 2011年8月12日付けで (実際には9月21日に) [[Unicode]] 6.0.0 版の情報が登録されています。
それについての [DFN[[[RFC 6452]]]] (>>102) も発行されています。
[103] [[Unicode]] への[[文字]]の追加による [CODE(char)[[[UNASSIGNED]]]] から他の[[導出特性値]]への変更の他に、
3つの[[文字]]が [CODE(char)[[[GeneralCategory]]]] の変更に伴って[[導出特性値]]が非互換に変更されています [SRC[>>102]]。
- [CODE(char)[[[U+0CF1]]]] [CODE(charname)@en[[[KANNADA SIGN JIHVAMULIYA]]]] [CODE(char)[[[DISALLOWED]]]] -> [CODE(char)[[[PVALID]]]]
- [CODE(char)[[[U+0CF2]]]] [CODE(charname)@en[[[KANNADA SIGN UPADHMANIYA]]]] [CODE(char)[[[DISALLOWED]]]] -> [CODE(char)[[[PVALID]]]]
- [CODE(char)[[[U+19DA]]]] [CODE(charname)@en[[[NEW TAI LUE THAM DIGIT ONE]]]] [CODE(char)[[[PVALID]]]] -> [CODE(char)[[[DISALLOWED]]]]
* 処理モデル
[61] [[国際化ラベル]]の項を参照してください。
* IDNA2003 からの主要な変更点
[94] [[IDNA2008]] は [[IDNA2003]] から大きく変更されています。ほとんど別物です。
[REFS[
[36] [CITE@en[RFC 5891 - Internationalized Domain Names in Applications (IDNA): Protocol]]
<http://tools.ietf.org/html/rfc5891#appendix-A>
]REFS]
** 用語の整理
[19] 伝統的に[[ドメイン名]]関係の用語はバリエーションが多く定義が曖昧で混乱しており、
[[IDN]] 関連用語も例外ではありません。 [[IDNA2008]] では [[IDN]]
関連用語が整理され、 [[IDNA2003]] よりも体系的に説明されてわかりやすくなりました。
とはいえ、依然として不明瞭な部分や曖昧な用法も残っています (例えば[[未検証Aラベル]])。
[49] 詳しくは[[ラベル]]の項を参照してください。
[46] また、それまで妥当とされながらも実際には [[IDNAラベル]]でないものを[[非妥当]]とした [SRC[>>36]]
とあります。これが何を指すのか明確には記述されていませんが、用語の定義の明確化と同時に
[[R-LDHラベル]]であって[[Aラベル]]でないものの利用が禁止されたことを指しているのでしょう。
** 登録プロトコルと lookup プロトコルの分離
[37] [[ドメイン名]]の[[登録]]と [[lookup]] の手順が別々に定義されるようになりました [SRC[>>36]]。
[[IDNA2003]] でも [[AllowUnassigned]] のような[[フラグ]]があったとはいえ、基本的には[[登録]]も
[[lookup]] も共通の手続きとして規定されていました。これが [[IDNA2008]]
では完全に別々の手続きとして定義されています。
** Unicode の版の非依存化
[35] [[IDNA2003]] は [[Unicode 3.2]] という特定の[[版]]に依存していましたが、
[[IDNA2008]] は特定の[[版]]には依存しなくなったとされています [SRC[>>36, >>10 1.1, >>10 7.1]]。
[50] [[Unicode 3.2]] に束縛された [[Stringprep]]/[[Nameprep]] を廃し、
[[Unicode]] の[[特性]]から機械的に導かれる[[導出特性値]]による定義に切り替えられました。
このため、 [[Unicode]] の新しい版になってもほぼ自動的に対応できることになっています。
[51] ただし、[[導出特性値]]の変更については[[指定専門家]]が評価した上で[[IETF評価]]プロセスを経る必要があるとされており、
通常の [[IETF]] の完全な[[標準化過程]]よりは (おそらく) 高速に進められるのでしょうが、
(公式には) ただちに最新版に追随できるわけではなさそうです。
** 使用できる文字の決定方法の変更
[40] [[ラベル]]での使用を認める[[文字]]の決め方が「予めすべて手動で決める」から
「[[Unicode]] の[[特性]]に従い決める、ただし例外を除く」に変わりました [SRC[>>36]]。
[53] [[IDNA2003]] では [[Unicode 3.2]] のうち使用してはいけない[[文字]]のリストを決める形で使用可能な文字が定義されており、
これは「exclusion model」と呼ばれています。一方で [[IDNA2008]] では使用してよい[[文字]]のリストを決める形になっていて、
「inclusion model」 [SRC[>>10 3.]] と呼ばれています。
;; 実際には使用しても良い[[文字]]を決めるというよりは、すべての[[文字]]について使用しても良いか悪いかを決める形になっています。
[54] その決め方も、 [[IDNA2003]] では [[IETF]] で[[文字]]のリストを決めていましたが、
[[IDNA2008]] では[[文字]]のリストの導出方法を決めています。これにより [[Unicode]]
の新しい版に機械的に追随できるようになっています。詳しくは[[導出特性値]]の項をご覧ください。
;; [55] ただし新しい版と古い版の互換性のための調整を行うことが認められているために、
完全に機械的に新しい版に移行できるわけではありません。 [[BackwardCompatible]] を参照してください。
この作業には [[IETF評価]]が必要ですが、完全に仕様全体を改訂するよりは楽です。
十分な運用実績が蓄積された後にはその過程も簡易化されることが示唆されています [SRC[>>10 7.1]]。
[41] [[IDNA2003]] では原則的に[[ラベル]]で使える[[文字]]は[[ラベル]]のどこでも使えましたが、
[[IDNA2008]] では文脈依存で認められる[[文字]]が登場しました [SRC[>>36]]。
[[CONTEXT]] に分類される[[文字]]について、[[文脈的規則]]を満たす場所でのみ認められます。
** 正規化と大文字・小文字の区別のプロトコルからの分離
[39] [[文字]]の[[写像]]と[[正規化]]を[[プロトコル]]からは削除し、
[[アプリケーション]]が必要に応じて事前に行うこととされました [SRC[>>36]]。
[67] [[IDNA2003]] では [[Nameprep]] の一部として[[正規化]] ([[NFKC]]) を行っていましたが、
[[IDNA2008]] では入力が [[NFC]] であることを要請するに留まっています。
[52] [[IDNA2003]] では[[大文字・小文字の不区別]]が[[プロトコル]]に含まれていて、
[[小文字]]に[[正規化]]する方法が正確に規定されていました。しかし [[IDNA2008]]
では、[[大文字]]と[[小文字]]の対応は[[言語]]により異なることを理由に、
[[プロトコル]]の一部ではなく、[[アプリケーション]]側で事前に行っておくべき作業としています
[SRC[>>10 1.1]]。
その具体的な対応関係は規定から外されています。
[73] これによって[[Uラベル]]と[[Aラベル]]が完全に一意に変換可能となることが重要だと考えられているようです
[SRC[>>10 7.2.3]]。 [[IDNA2003]] では[[正規化]]が行われるために、同じ[[ACEラベル]]に変換されるような[[国際化ラベル]]が多数存在しました。
[84] [[IDNA2003]] では[[正規化]]すれば[[ACEラベル]]に対応付けられていた[[国際化ラベル]]であっても
[[IDNA2008]] ではそうでないものが多数存在することになりますが、[[プロトコル]]的文脈では
[[Uラベル]]と[[Aラベル]]だけを認める ([[正規化]]が必要であったバリエーションは認めない)
ことが[RUBYB[非常に好ましい]@en[strongly prefer]]とされています [SRC[>>10 7.3]]。
;; [85] そうは言っても、これまで正常に利用できていた [[URL]]
や[[メール・アドレス]]がある日突然使えなくなるのは困りますよね・・・。
結局のところこれが [[IDNA2008]] の普及を阻害するのではないでしょうか。
[[IDNA2008]] に移行するとしても、それぞれのアプリケーションで後方互換性のための変換が
([[プロトコル]]的文脈の中に) 組み込まれ続けることとなり、しかしそれは標準化されておらず、
[[相互運用性]]の問題を残すだけの結果になりそうでおそろしい。
*** 新たに利用できるようになった文字
[62] これらの変更により [[IDNA2003]] では[[正規化]]の結果直接利用できなかった[[文字]]が
[[IDNA2008]] では利用できることがあります。具体的には、
- [64] [CODE(char)[[[U+00DF]]]] [CODE(charname)@en[[[LATIN SMALL LETTER SHARP S]]]]
- [63] [CODE(char)[[[U+03C2]]]] [CODE(charname)@en[[[GREEK SMALL LETTER FINAL SIGMA]]]]
... が使えるようになりました。 [SRC[>>10 7.2.1]]
;; [65] [[大文字]]・[[小文字]]に関する非互換変更はこの2文字だけのようです。
[66] これらの[[文字]]に関しては、 [[IDNA2003]] と [[IDNA2008]] でどちらも正しい[[ドメイン名]]として
[[lookup]] でき、しかし異なる結果が得られる可能性があります。
[[レジストリー]]はそれによって混乱が生じないような方策を練るべきです [SRC[>>10 7.2.3]]。
;; [74] [[アプリケーション]]側で出来る対応もあるのでしょうが、多種多様な状況で一律に対策することが難しく、
[[レジストリー]]で対策するべき [SRC[>>10 7.2.3]] とされています。
[72] [[正書法]]的には利用できるべきであるものの、 [[IDNA2003]] と [[Aラベル]] ([[ACEラベル]])
レベルでの互換性が失われてしまうのですが、それが[[ACE接頭辞]]の変更を伴わずに済むなら、
ということで非互換変更を認めてでもこれらの[[文字]]を利用できるようにするべきと判断されました
[SRC[>>10 7.2.3]]。
** Join_controls の扱いの変更
[68] [CODE(charname)@en[[[ZERO WIDTH JOINER]]]] と [CODE(charname)@en[[[ZERO WIDTH NON-JOINER]]]]
は [[IDNA2003]] では除去されることになっていましたが、 [[IDNA2008]]
では文脈によっては[[ラベル]]を構成する[[文字]]として認められるようになりました。
[SRC[>>10 7.2.2]]
[69] これは特定の[[用字系]]においては [[mnemonics]] を構成し得る必要な[[文字]]であることが理由とされています。
[SRC[>>10 7.2.2]]
[70] これらの[[文字]]に関しては、 [[IDNA2003]] と [[IDNA2008]] でどちらも正しい[[ドメイン名]]として
[[lookup]] でき、しかし異なる結果が得られる可能性があります。
** 記号類の排除
[38] 原則として[[記号]]と[[句読点]]を認めないようになりました [SRC[>>36]]。
これまでも [[IESG]] や [[ICANN]] の指針で[[言語]]の表記に必要な狭義の[[文字]]以外認めないとされていましたが、
技術的に利用が制限されました。 [SRC[>>10 7.6]]
[86] その理由としては、[[ASCII]] の[[ドメイン名]]でも[[記号]]類は認めていなかったのと整合的であること、
[[記号]]の[[レンダリング]]には実装による差異が大きかったり、似た[[グリフ]]の異なる[[文字]]が多数存在したりすること、
[[記号]]類の読み方や通常の[[文字]]表記と[[記号]]による表記の使い分けが一定ではないために[[音声]]による伝達に障害が多いことなどが挙げられています [SRC[>>10 7.6]]。
** bidi 制約の変更
[42] [[IDNA2003]] の [[bidi]] に関する制約によれば、[[ラベル]]の末尾に[[結合文字]]を使うことができず
[SRC[>>10 4.5.]]、これが原因で [[Dhivehi]] や [[Yiddish]] の一般的な単語の表記 [SRC[>>36]]
に支障が生じていていましたが、規制の緩和によりこれが認められるようになりました。
[44] また、 [[bidi]] な[[ドメイン名]]が異常な感じで表示されにくくなった [SRC[>>36]]
とされています。
** ラベル分離子の廃止
[45] [[ラベル分離子]]という概念がプロトコルから削除されました [SRC[>>36]]。
[[IDNA2003]] では [CODE(char)[[[.]]]] などの「[[点]]」によって[[ドメイン名]]を分割して[[ラベル]]を取り出して処理することになっていましたが、
その部分は[[利用者インターフェイス]]の範疇であるとして削除されました。
** fallback
[20]
[[IDNA2003]] と [[IDNA2008]] の間の非互換変更により、 [[IDNA2003]] における解釈を期待していた[[ドメイン名]]が
[[IDNA2008]] では解釈できなくなる場合があります。その場合、 [[lookup]] は[[失敗]]としても構いませんし、
失敗したら [[IDNA2003]] で [[lookup]] し直しても構いませんし、最初から [[IDNA2003]]
と [[IDNA2008]] の両方で [[lookup]] しても構いません。ただし、
解釈の違いを突いた攻撃ができるかもしれないので注意が必要です。
[REFS[
-[99] [CITE@en[RFC 5890 - Internationalized Domain Names for Applications (IDNA): Definitions and Document Framework]]
<http://tools.ietf.org/html/rfc5890#section-4.6>
]REFS]
;; [21] [[IDNA2003]] 使っても良いとか本当にそんな姿勢でいいのか・・・?
** レジストリーにおける移行戦略
[75] >>62、>>68 では [[IDNA2003]] では他の[[文字列]]に[[正規化]]されてしまい厳密には表現できなかった[[ラベル]]が
[[IDNA2008]] で表現できることになり、 [[IDNA2003]] と [[IDNA2008]] のどちらで [[lookup]]
するかによって結果が変わってしまい混乱や保安上の問題の元となります。
そのため、[[レジストリー]]は何らかの移行戦略を練ることが要求されています [SRC[>>10 7.2.4]]。
[76] その具体例として、これまでの類似した状況を参考に、次のような対応策が挙げられています
[SRC[>>10 7.2.4]]。
- [77] 新たに利用できるようになった[[文字]]を使った[[登録]]を認めない。
-- [78] [[IDNA2003]] で [[lookup]] できていたものができなくなることはありますが、意図しないものに
[[lookup]] されてしまうのは防げます。
- [79] [["sunrise"-like arrangement]]: 複数の表現の片方を既に[[登録]]している人がいれば、
優先的に新しい表現を[[登録]]できるようにする。
- [80] "[[variant]]" approach その1: 両方の表現を[[登録者]]は取得できる。
- [81] "[[variant]]" approach その2: 一方の表現が[[登録]]されていれば、他方の表現では[[登録]]できないか、
もう一方の[[登録者]]に限って[[登録]]できる。
- [82] 何もせず、[[市場]]その他に委ねる。
;; [83] [[ノーガード戦法]]www
** UTS #46
[97] [[Unicode Consortium]] は [[UTS #46]] により [[IDNA2003]] と [[IDNA2008]]
の中間のどちらとも実用上互換性がある[[算法]]「[[Unicode IDNA互換性処理]]」を規定しています。
[[IDNA2003]] と [[IDNA2008]] の差異についてはそちらの項も参照してください。
;; [98] [[UTS #46]] や [[Unicode Consortium]] の [[IDN]] [[FAQ]] は [[RFC]]
よりかなり詳しく差異が説明されています。ネ申ですねwww
* ドメイン名の前処理
[87] [[IDNA2003]] は[[正規化]]や[[大文字]]から[[小文字]]への変換などを含めて規定していましたが、
[[IDNA2008]] はそれは[[利用者インターフェイス]]の範疇であった [SRC[>>11]]
として[[プロトコル]]から除外しています。これらの処理は[[利用者]]が使っている[[言語]]などの文脈によって何が適切かが変化するものであり、
画一的に[[プロトコル]]のレベルで行うべきではないと考えられています。
[88] [[IDNA2008]] は[[利用者]]が与えた[[ドメイン名]]をどう処理するかの例として次の手順を示していますが、
同時にこれは特定の場面でのみ意味のある例を示したに過ぎず、[[アプリケーション]]の実装者が十分に検討するべきであるともしています
[SRC[>>11]]。
;; [89] つまり丸投げですね。
[FIG(steps)[
= [90] [[大文字]]を[[小文字]]に変換します。
= [91] [[全角]]や[[半角]]を正規化します。
= [92] [[NFC]] にします。
= [93] [CODE(charname)@en[[[FULL STOP]]]] や [CODE(charname)@en[[[IDEOGRAPHIC FULL STOP]]]]
で[[ドメイン名]]を[[ラベル]]の列に分割します。
]FIG]
;; [43] はじめからそのように設計されていたなら良かったのですが、 [[IDNA2003]]
でこれらの処理を含めて規定していたり、そもそも大元の [[DNS]] [[ドメイン名]]が[[大文字・小文字不区別]]だったのに、
突然その規定が無くなって[[アプリケーション]]に丸投げでは、
互換性も相互運用性もあったものではありません。ここでいう[[アプリケーション]]が[[アプリケーションプロトコル]]のことなのか[[アプリケーションプログラム]]のことなのかも定かではありません
(どちらも含まれているのかもしれませんが)。例えば [[URL]] では[[正規化]]の一部として
[[IDNA2003]] の処理が行われているので、 [[IDNA2008]] に移行すると重要な規定が欠落した状態になるため、
どう対処するべきか仕様によっても対応が定まらず長年混乱しています。
* 歴史
[1] [CITE@en-us[UTS #46: Unicode IDNA Compatible Preprocessing]]
([TIME[2008-12-10 08:56:55 +09:00]] 版)
<http://www.unicode.org/reports/tr46/tr46-1.html>
[2] [CITE@en-us[Unicode IDNA Compatible Preprocesssing]]
([TIME[2009-09-30 06:24:51 +09:00]] 版)
<http://www.unicode.org/reports/tr46/tr46-2.html>
[3] [CITE@en[draft-ietf-idnabis-mappings-04 - Mapping Characters in IDNA]]
([TIME[2009-09-29 08:04:24 +09:00]] 版)
<http://tools.ietf.org/html/draft-ietf-idnabis-mappings>
[4] しかしなんで連中はこう、[[非互換変更]]が好きなのかねぇ。
[5] [CITE[Security Degradations with IDNA2008 (Macchiato)]]
([TIME[2010-01-29 03:18:08 +09:00]] 版)
<http://www.macchiato.com/unicode/idna/security-issues>
* 各種仕様書・実装の対応
[16] [[Web Applications 1.0]] は現在でも [[IDNA2003]] を採用しています。 [TIME[2011-03-19T10:39:25.300Z]]
[106] [[起源]]の定義は >>16 と [[RFC]] の2つがあり、それぞれ [[IDNA2003]] と [[IDNA2008]]
を採用していて微妙に異なっています。 ([[起源]>>120]参照。)
[95]
[[XMPP]] は [[JID]] で [[Nodeprep]] や [[Resourceprep]] も使用しているため、 [[IDN]]
だけ新版に移行するわけにもいかず、将来の改訂で [[IDNA2008]] に移行すると予告しつつも
[[IDNA2003]] を採用しています。
[105] [[Widgets]] も [[IDNA2003]] を採用しています [SRC[>>104]]。 [TIME[2012-02-10T14:10:22.700Z]]
[REFS[
- [96] [CITE@en[RFC 6122 - Extensible Messaging and Presence Protocol (XMPP): Address Format]] ([TIME[2011-03-31 08:23:44 +09:00]] 版) <http://tools.ietf.org/html/rfc6122>
- [104] [CITE[Widget Access Request Policy]] ([TIME[2012-02-04 04:00:27 +09:00]] 版) <http://dev.w3.org/2006/waf/widgets-access/#processing>
]REFS]
* メモ
[17] [[IDNA2008]] は [[IDNA2003]] からいくつかの[[文字]]の解釈を変更しているので、
[[ゾーン管理者]]は注意する[RUBYB[べき]@en[should]]です。
[REFS[
- [18] [CITE@en[RFC 5890 - Internationalized Domain Names for Applications (IDNA): Definitions and Document Framework]]
<http://tools.ietf.org/html/rfc5890#section-4.1>
]REFS]
[22] [[IDNA2008]] の [[RFC]] はすごく読みにくい。
- [23] 複数の [[RFC]] に分かれているせいで話題がまとまっていない
-- [47] 他の [[RFC]] を読まないとまったく理解できない話題が突然登場したりするので、なぜ分割されているのかわからない
-- [48] 内容がきっちり分離できるとか、どちらかが完全に部分集合になってるとかじゃないと複数に分割する意味はないんじゃないの
- [24] 同じ概念を表す用語と思われるもののぶれが大きく、わざわざ別の表現で言い直したり
-- [25] [[非妥当Uラベル]]などはわざわざ数種類の同じ意味の表現を導入している
-- [26] 定義されているのはまだましな方で、殆どの場合は本当に同じ意味なのかどうか文脈で推測するしかない
- [27] 他の場所への言及がわかりにくい
-- [28] 「第○節のチェック」というのはましな方で、「以降のチェック」とか「○○文書の一覧表」など曖昧なポインターを多用している
--- [34] しかもそのポインターが、同じとみられるものでも場所によって違う表現になっている
-- [29] せめて何か相互参照用の名前か数字でも付けて欲しいものだ
- [30] 手順の説明に補足説明や関連する話題が混じったり、手順内での条件分岐がよく読まないと気づかなかったりで、読んで容易に追えるようになっていない
- [71] 章節の構成が一貫しておらず、並列なものが並んでいるように見せかけて一部そうでないものが混じっていたりする
- [33] 何が要件でいつそれが満たされなければならないのか明確でない
-- [31] 実装依存の要件が多く、その要件に依存した要件や説明があったりして難解過ぎる
-- [32] [[RFC 2119]] の[[助動詞]]を使っていたり、[[小文字]]の[[助動詞]]を使ったりして、何に従えばいいのかわからない
- [56] 想定読者の種類が多すぎるにも関わらず誰に対する説明か不明瞭である
-- [57] [[登録]]作業を行う人、[[登録]]の手続きを決める人、[[IDNA]] 対応プロトコルを作る人、[[IDNA]] 対応プロトコルを実装する人、 [[IDNA]] 対応プロトコルに対応したアプリケーションを実装する人、...
[107] [CITE[IRC logs: freenode / #whatwg / 20120928]]
( ([TIME[2012-10-03 22:06:16 +09:00]] 版))
<http://krijnhoetmer.nl/irc-logs/whatwg/20120928#l-801>
[108] [CITE[IRC logs: freenode / #whatwg / 20121005]]
( ([TIME[2012-10-08 21:33:56 +09:00]] 版))
<http://krijnhoetmer.nl/irc-logs/whatwg/20121005#l-351>
[109] [CITE[Updating RFC 5890-5893 (IDNA 2008) to Full Standard]]
( ([TIME[2012-11-18 10:28:39 +09:00]] 版))
<http://www.alvestrand.no/pipermail/idna-update/2012-November/007465.html>
[110] [CITE[IRC logs: freenode / #whatwg / 20121116]]
( ([TIME[2012-12-02 12:20:05 +09:00]] 版))
<http://krijnhoetmer.nl/irc-logs/whatwg/20121116#l-141>
[111] [CITE[Updating RFC 5890-5893 (IDNA 2008) to Full Standard]]
( ([TIME[2012-11-18 10:28:39 +09:00]] 版))
<http://www.alvestrand.no/pipermail/idna-update/2012-November/007467.html>
[112] [CITE[IRC logs: freenode / #whatwg / 20121116]]
( ([TIME[2012-12-02 12:20:05 +09:00]] 版))
<http://krijnhoetmer.nl/irc-logs/whatwg/20121116#l-835>