/
941.txt
194 lines (141 loc) · 10.1 KB
/
941.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
[12] [DFN[[SHOULD[SHOULD]]]] ([DFN[[SHOULD[するべき]]]]) や
[DFN[[SHOULD[RECOMMENDED]]]] ([DFN[[SHOULD[推奨]]]]) は、
原則として従わなければならないものの、
正当な理由がある場合に限っては従わなくても良いことを表す[[助動詞]]です。
[13] そのような条件に違反した場合、十分正当な理由がなければ、[[不適合]]となります。
[14] 日常語としての「するべき」や「推奨」は“どちらでも良いがした方が良い”
程度の弱い意味のこともありますが、
[[適合性]]の記述の用語としての「するべき」や「推奨」は、 [['''MUST''']] にかなり近い強い意味を持っています。
* 仕様書
[REFS[
- [9] [CITE@en[RFC 2119 - Base Encodings]] ([TIME[2014-06-11 10:38:58 +09:00]] 版) <http://tools.ietf.org/html/rfc2119#section-3>
- [16] [CITE[RFC Errata Report]] ([TIME[2014-06-26 14:06:10 +09:00]] 版) <http://www.rfc-editor.org/errata_search.php?rfc=2119>
]REFS]
* RFC 2119 の定義
[10] [['''SHOULD''']] や [['''RECOMMENDED''']] は、
特定の状況においては当該事項を無視する正当な理由が存在するかもしれないものの、
その場合には予め何が起こるか十分理解し注意を払わなければならないことを表します [SRC[>>9]]。
[11] [['''SHOULD NOT''']] や [['''NOT RECOMMENDED''']] は、
特定の状況においては当該事項が認められたり、
有用でさえあるような正当な理由が存在するかもしれないものの、
その場合には予め何が起こるか十分理解し注意を払うべきであることを表します [SRC[>>9]]。
;; [20] この定義では、 >>10 は注意を払わなければならない (must) となっているのに、
>>11 は注意を払うべきである (should) となっています。この使い分けに意図があるのかどうかは不明です。
SHOULD と SHOULD NOT で意味が変わるのでは使いにくく、意図的でないように思えます。
[[正誤表]] >>16 には両者を「should」に統一する (SHOULD なので。) という修正案が提出されていますが、
「should」ではなく「must」である!と却下されています。 (却下した人は SHOULD と
SHOULD NOT で違う[[助動詞]]になっていることに気づいていないのかもしれません。
本来は両方 must にするべきでしょう。)
* 誤解
[23] 日常語としての「するべき」や「推奨」は
「どちらでも良いがした方が良い」、「できればやる」、
「やれたら良いが現実には難しいかもしれない」程度の弱い意味のこともありますが、
[[適合性]]の記述の用語としての「するべき」や「推奨」は、 [MUST[MUST]] にかなり近い強い意味を持っています。
[24] [SHOULD[SHOULD]] [[要件]]には、原則として従わなければなりません。
違反しても良いのは、違反が正当化される十分な理由が存在する場合に限ります。
[25] [[RFC 2119]] を参照している[[仕様書]]を参照していても、 [[RFC 2119]]
自体は読んでおらず、 [SHOULD[SHOULD]] の意味を軽く見ている人もいるので、
注意が必要です。
[36] 逆に[[標準化]]以外の場面 ([[技術ブログ]]など) では、
[[RFC 2119]] を参照して書いているくせにまともに読んでいないのか、
弱い意味で [SHOULD[SHOULD]] が使われることがあり、
意思疎通に支障をきたすことがあります。
* [SHOULD[SHOULD]] を使う場面
[26] 一般に、[[実装]]に[[任意選択]]の余地を与えるのは[[相互運用性]]の低下を招き、
好ましくないと現代的な [[Web標準化]]の場面では考えられています。
(他の分野では必ずしもこの考え方は普及していませんが。)
[27] [[仕様書]]はできるだけ [SHOULD[SHOULD]] ではなく [MUST[MUST]]
を使う[SHOULD[べき]]ですし、それが過度に[[実装]]を拘束して好ましくないと考えられるなら、
そもそもそれを[[要件]]として挙げる意味があるのかどうか自体を再考する方が良いかもしれません。
[28] それでもなお [SHOULD[SHOULD]] が使われる場面の例としては、
次のようなものがあります。
[FIG(list)[
- [29] [[セキュリティー]]に関わる[[表示]]上の[[要件]]
(一般に[[利用者インターフェイス]]に関わる事項は[[仕様書]]の[[適用範囲]]外と考えられていますが、
その大原則への例外で限定的な[[要件]]を設けるために使われています。)
- [30] 新規に用いるべきではない従前の方式について、
[[後方互換性]]のため例外的に継続利用することを認める場合
]FIG]
* 他の定義
[3]
>
:"SHOULD":This word or the adjective "RECOMMENDED" means that there
may exist valid reasons in particular circumstances to
ignore this item, but the full implications should be
understood and the case carefully weighed before choosing
a different course.
;; [CITE@en[RFC 1123 - Requirements for Internet Hosts - Application and Support]] ([TIME[2010-07-22 04:07:59 +09:00]] 版) <http://tools.ietf.org/html/rfc1123#page-11>
[8]
>
:[RUBYB[するべき][should]]:
[Q[するべき]]という語は、[[実装]]に関しては、
実装の推奨ではあるものの要件ではないと解釈します。
[[文書]]に関しては、[[文書]]のプログラム化する時の推奨であり、
[[厳密適合XHTML文書]]では要件であると解釈します。
[REFS[
- [[XHTML 1.0]]
--[CITE[2.1. Terminology]] <IW:XHTML10:"terms">
]REFS]
[FIG[
[FIGCAPTION[
[17] [CITE@en[Conformance: requirements and recommendations]]
<http://www.w3.org/TR/CSS2/conform.html#defs>
]FIGCAPTION]
>At times, this specification recommends good practice for authors and user agents. These recommendations are not normative and conformance with this specification does not depend on their realization. These recommendations contain the expression "We recommend ...", "This specification recommends ...", or some similar wording.
]FIG]
[39] [CITE@en[specifications/unified-test-format.rst at master · mongodb/specifications · GitHub]], [TIME[2023-04-17T05:30:00.000Z]] <https://github.com/mongodb/specifications/blob/master/source/unified-test-format/unified-test-format.rst#meta>
[[RFC 2119]]、しかし
>This document tends to use "SHOULD" more frequently than other specifications, but mainly in the context of providing guidance on writing test files. This is discussed in more detail in [ASIS[Design Rationale][リンク]].
* [SHOULD[RECOMMENDED]]
[15] 「recommended」は [[RFC 2026]] の適応性に関する用語と衝突するため、
削除が提案されています [SRC[>>16]]。
;; [37] ただ提案されているだけでずっと放置されています。
[18] [[RFC 2119]] の[[助動詞]]を採用する仕様書でも、 >>17 のように
「recommended」はより弱い意味で使っていることがよくあります。
[38] [CITE[Infra Standard]] は [SHOULD[SHOULD]] を使うことを推奨しています。
[SEE[ [[助動詞]] ]]
* 関連
[19] [[RFC 2119]] の意味との衝突を防ぐため、より弱い[[推奨]]を表すために
「[[encouraged]]」、「[[discouraged]]」、「[[ought to]]」、
「[[good practice]]」、「[[preferred]]」といった語句が用いられることがあります。
* メモ
[1]
[CITE@en[XML Query (XQuery) Requirements]] ([CODE[2007-03-17 06:39:09 +09:00]] 版) <http://www.w3.org/TR/2007/NOTE-xquery-requirements-20070323/#terminology-should>
[2]
[CITE@en[XML Query (XQuery) 1.1 Requirements]] ([TIME[2007-03-16 09:42:40 +09:00]] 版) <http://www.w3.org/TR/2007/WD-xquery-11-requirements-20070323/#terminology-should>
[4] [CITE@en[RFC 4835 - Cryptographic Algorithm Implementation Requirements for Encapsulating Security Payload (ESP) and Authentication Header (AH)]]
( ([TIME[2011-02-03 22:05:20 +09:00]] 版))
<http://tools.ietf.org/html/rfc4835#page-4>
[5] [CITE@en[RFC 4305 - Cryptographic Algorithm Implementation Requirements for Encapsulating Security Payload (ESP) and Authentication Header (AH)]]
( ([TIME[2011-01-08 12:17:45 +09:00]] 版))
<http://tools.ietf.org/html/rfc4305#section-2>
[6] [CITE@EN[W3C XML Schema Definition Language (XSD) 1.1 Part 2: Datatypes]]
( ([TIME[2012-04-05 06:34:51 +09:00]] 版))
<http://www.w3.org/TR/2012/REC-xmlschema11-2-20120405/#dt-should>
[7] [CITE@EN[W3C XML Schema Definition Language (XSD) 1.1 Part 1: Structures]]
( ([TIME[2012-04-05 06:34:07 +09:00]] 版))
<http://www.w3.org/TR/2012/REC-xmlschema11-1-20120405/#intro-terminology>
[21] [CITE@en[RFC 5280 - Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile]] ([TIME[2015-02-22 15:44:10 +09:00]] 版) <http://tools.ietf.org/html/rfc5280>
[22] >>21 は [[RFC 2119]] を参照しつつ、特に説明なく [['''RECOMMENDS''']]
を多用しています。
[FIG(quote)[
[FIGCAPTION[
[31] [CITE@en[Requirements for the Evaluation and Report Language (EARL) 1.0]]
([TIME[2017-02-01 07:17:48 +09:00]])
<https://www.w3.org/TR/2017/NOTE-EARL10-Requirements-20170202/>
]FIGCAPTION]
> SHOULD
> The collection of specifications and technical notes that comprise the EARL 1.0 vocabulary produced by the Working Group must address this requirement.
]FIG]
[32] [CITE@en[Editorial: fix grammar and avoid "recommended" in note]]
([[zcorpan]]著, [TIME[2017-03-08 21:49:10 +09:00]])
<https://github.com/whatwg/html/commit/f4c4f386e55e24a7bfc7d48abbee3aa62ac56449>
[33] [CITE@EN[XQuery 3.1: An XML Query Language]]
([TIME[2017-03-20 09:23:33 +09:00]])
<https://www.w3.org/TR/2017/REC-xquery-31-20170321/#id-conformance>
[34] [CITE@EN[XPath and XQuery Functions and Operators 3.1]]
([TIME[2017-03-21 16:02:06 +09:00]])
<https://www.w3.org/TR/2017/REC-xpath-functions-31-20170321/#conformance-terminology>
[35] [CITE@en[Infra Standard]]
([TIME[2018-09-13 23:21:15 +09:00]])
<https://infra.spec.whatwg.org/#conformance>