このページの本文へ

2006年03月16日更新

RFCの文中で出会う「MUST NOT」と「SHOULD NOT」の違いは?

 今週も引き続いて、RFC(Request For Comments)の話。前回紹介したMUSTやSHOULDに否定を表す「NOT」が付いた場合、どのような意味になるのか。実際のRFCを参照しながら理解しよう。

This termination sequence is denoted as <CRLF> in this document.Conforming implementations MUST NOT recognize or generate any other character or character sequence as a line terminator.(この文書では、終了シーケンスを<CRLF>で示している。正しい実装においては、行末をほかの文字や文字列で認識したり、生成したりしてはならない)

 さて、このRFCに登場する「MUST NOT」は、どういう意味の言葉なのか。RFCのTerminology(用語法)には次のように定義されている。

MUST NOT
This phrase, or the phrase "SHALL NOT", mean that the definition is an absolute prohibition of the specification.
(この成句や「SHALL NOT」といった成句は、定義として指定したものについての完全な禁止を意味する)

 つまり、上記のRFCが「100%の禁止」を意味するMUST NOTを用いて言わんとしていることは、「メールを送る際は、<CRLF>以外を終端を示すことに使用してはならない」ということだ。たとえ使えたとしても、<CR>も<LF>も<LFCR>もすべて使用禁止であるとしている。

 次に、「SHOULD NOT」が登場するRFCを読んでみよう。

A message-originating SMTP system SHOULD NOT send a message that already contains a Return-path header. (メッセージを送信するSMTPシステムは、すでに「Return-path」(注1)ヘッダが含まれているメッセージを送信するべきではない)

注1:Return-path
メールが届かなかった場合に、そのメールが送り返されるメールアドレス

 SHOULD NOTは、同じくRFCのTerminologyにこう定義されている。

SHOULD NOT
This phrase, or the phrase "NOT RECOMMENDED" mean that there may exist valid reasons in particular circumstances when the particular behavior is acceptable or even useful, but the full implications should be understood and the case carefully weighed before implementing any behavior described with this label.(この成句や「NOT RECOMMENDED」は、ある特定の行為が、特定の環境においては容認され、有益だということを意味している。しかし、この成句で何らかの行為を実装する前には、全体の意図を理解するべきであり、またその状況を注意深く考慮すべきである)

 つまり、SHOULD NOTは「100%否定はしないものの、十分な検討と理解がないのであればすべきではない」ということを意味しているのだ。

 RFCやIT英文に登場する大文字のMUST NOTは「~してはならない」という絶対的な禁止、SHOULD NOTは「~しないほうがいい」という否定を示唆する言葉と理解しておこう。

RFCの文中で出会う「MUST NOT」と「SHOULD NOT」の違いは?

Illustration:Aiko Yamamoto

キャリア連載バックナンバー
今さら聞けないIT英語

記事一覧へ >>

採用を勝ち取る転職必勝マニュアルバナー

おすすめ連載

組み込み系エンジニア特集

今さら聞けないIT英語

エンジニアライフ

資格試験対策

プロマネ・スキル

ビジネススキル

独立起業事例集

キャリア・コーナー紹介