3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめてのアドベントカレンダーAdvent Calendar 2024

Day 19

RFC における "MUST" "SHOULD" "MAY" の意味 ~ BCP 14 (RFC 2119・RFC 8174 )

Posted at

はじめに

RFC(Request for Comments) を読んでいると、 "MUST", "SHOULD", "MAY" などのキーワードをよく目にします。これらのキーワードは、RFC における要件レベルを示すために使用されており、仕様がどれほど厳密に守られるべきかを表しています。

これらのキーワードの意味を正しく理解していないと、誤解が生じ、仕様に準拠した実装ができない可能性もあります。

本記事では、BCP 14(RFC 2119 と RFC 8174 で構成)を基に、RFC における "MUST", "SHOULD", "MAY" などのキーワードの意味について解説します。

RFC(Request for Comments)とは、インターネット技術に関する文書です。技術的な仕様、研究論文、歴史的な文書など、さまざまな種類の文書が含まれます。RFC は、誰でも自由に閲覧することができます。

BCP(Best Current Practice)とは、インターネット技術におけるベストプラクティスをまとめたものです。RFC の中でも、特に重要度の高いものや、広く採用されているものが選定されます。

BCP 14 とは

BCP 14 は以下の 2 つの文書から構成されています。

  • RFC 2119 : MUST, SHOULD, MAY などのキーワードの意味を定義する文書
  • RFC 8174 RFC 2119 の曖昧な部分を明確にするための文書

これらの文書は、RFC を作成する際、および RFC を解釈する際に、一貫性のある要件レベルを表わすのに重要です。

RFC 2119

RFC2119 - Key words for use in RFCs to Indicate Requirement Levels要求レベルを示すために RFC で使用するキーワードについて書かれています。

概要

多くの標準化に関する文書では、仕様内の要求事項を示すために、いくつかの用語が用いられています。

  • これらの用語は、通常は大文字で表記されます。
  • RFC 2119 に沿って文書を作成する場合は、文書の冒頭付近に以下の文章を挿入する必要があります。

    The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119.

  • これらの用語は、注意深く、控えめに使用する必要があります。特に、相互運用性の観点から実際に必要とされる場合や、害を及ぼす可能性のある動作を制限する場合にのみ使用するようにしましょう。
  • 仕様書の作成者は、推奨事項や要求事項に従わない場合のセキュリティ上の影響について詳しく説明する時間を割くべきです。

要求レベル

キーワード 意味 詳細 同義語
MUST 必須 絶対に守らなければならない要件。 REQUIRED, SHALL
MUST NOT 禁止 絶対に行ってはならない禁止事項。 SHALL NOT
SHOULD 推奨 特定の状況で無視する正当な理由が存在するかもしれないが、慎重に検討する必要がある要件。 RECOMMENDED
SHOULD NOT 非推奨 特定の状況で許容されるかもしれないが、慎重に検討する必要がある非推奨事項。 NOT RECOMMENDED
MAY 任意 項目が本当に任意であり、含むかどうかは業者の選択に委ねられる。特定のオプションを含まない実装は、そのオプションを含む別の実装と相互運用できるようにしなければならない。 OPTIONAL

RFC 8174

RFC 8174 - Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words は RFC 2119 で定義されたキーワードにおける大文字と小文字の区別について明確にしています。

These words are often capitalized.

RFC 2119 の文書では、"MUST" や "SHOULD" などのキーワードについて、「通常は大文字で表記されます。」と書かれています。この記述は、一部または全部が小文字でも許容される解釈を許してしまう可能性があります。

RFC 8174 では、RFC 2119 で定義されたキーワードはすべて大文字で表記されると明確にしています。

また、RFC 8174 に沿って文書を作成する場合は、文書の冒頭付近に以下の文章を挿入する必要があります。

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.

まとめ

RFC における "MUST", "SHOULD", "MAY" などは、要件レベルを示す重要なキーワードです。これらのキーワードを正しく理解することで、RFC の内容をより正確に解釈することができます。

BCP 14RFC 2119RFC 8174)は、これらのキーワードの意味を明確に定義し、RFC 作成者と読者双方の理解を一致させるために役立ちます。

参考文献

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?