≪ Today I learned.
RSS購読
    公開日
    タグ
    Knowledge , Web
    著者
    ダーシノ

    RFC文書を効率よく読むための基礎知識

    インターネット技術の多くはRFC(Request for Comments)によって仕様が定義されている。しかし、はじめて読む人にとっては要点がわかりづらい、キーワードの意味が曖昧、別のRFCの参照が大量にでてくるなど、RFCを読むのは難しい。

    実際にRFC 7807/RFC 9457 Problem Details for HTTP APIsを元にしたAPIエラーレスポンスの記事を書くために読んだときも苦労した。

    ただ、ドキュメントとして形式化されているのでコツさえ掴めば読みやすくなる。

    RFC(Request for Comments)とは

    RFCはRequest for Comments(コメント募集)の略で、インターネット技術に関する仕様や標準、運用方法、ベストプラクティス、研究的提案をまとめた文書シリーズのこと。

    すべてのドキュメントが最新で完璧なもの、というわけではなくアップデートが重ねられ別のRFCドキュメントとして公開されることもある。(例: RFC 7807RFC 9457

    古いドキュメントに注意

    RFCのヘッダーやサイドメニューにObsoletesという項目がある場合、現在見ているRFCが古くなっている可能性がある。 ObsoletesにはアップデートされたRFCドキュメントの番号があるため、新しいドキュメントから読むようにする。

    ただし、新しいドキュメントが古いドキュメントを完全に置き換えるわけではないため、必要に応じて古いドキュメントも参照する。

    BCP(Best Current Practice)

    RFCの中で、現時点で最適とされる運用方法やルールはBCP(Best Current Practice)としてまとめられている。 BCPの内容(参照しているRFC番号)は更新されるが、BCP自体の番号は変わらない。(例: BCP 14

    RFCドキュメントの構成

    構成を理解すれば、重要度なところ、読み飛ばして問題ないところがわかるようになる。

    仕様に関するセクションもあるが、「Abstract」「Status of This Memo」「仕様本体」「References: Normative References」、ドキュメントによっては「Appendix」も含めて読んでおけば十分理解できる。

    多くのドキュメントは以下のような構成になっている。

    1. Abstract(重要)
      • このドキュメントに何が書かれているか短く説明されている
      • まずはここを読んで全体像を把握する
    2. Status of This Memo(重要)
    3. Copyright Notice
      • 著作権に関する注意事項
      • 読まなくても大丈夫
    4. Introduction
      • 背景や目的、用語定義などが中心に書かれているため読み飛ばしても良い
      • ただし、RFCによっては前提条件が含まれている
    5. References(一部重要)
      • RFCが別のRFCを参照している
      • Normative References: 仕様理解するために必要な前提知識
      • Informative References: 補足説明なので重要度は低い
    6. Appendix(ドキュメントによっては重要)
      • サンプルコードや設計理由などの付録的な内容
      • 古いRFCでは、Appendixに後方互換性や実装例が置かれていることがある
    7. Acknowledgements
      • ドキュメント作成に協力した人の名前が列挙されている
      • 読まなくても大丈夫
    8. Author’s Address
      • ドキュメント作成者の連絡先
      • 読まなくても大丈夫

    要求レベルのキーワード

    仕様書内にでてくるMUST、SHOULD、MAYなどのキーワードは、RFC 2119 - Key words for use in RFCs to Indicate Requirement Levelsで定められている。また、RFC 8174 - Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Wordsでは、RFC 2119で定められたキーワードは大文字で書かれるべきとされている。

    これらのRFCはBCP 14としてまとめられている。

    それぞれの要求レベルは以下のとおり。

    キーワード意味強制力
    MUST必須絶対やる
    MUST NOT禁止絶対やらない
    REQUIREDMUSTと同義絶対やる
    SHALLMUSTに近いやるべき
    SHALL NOTMUST NOTに近いすべきでない
    SHOULD強く推奨原則やる
    SHOULD NOT非推奨原則やらない
    RECOMMENDEDSHOULDと同義原則やる
    NOT RECOMMENDEDSHOULD NOTと同義原則やらない
    MAY任意必要ならやる
    OPTIONALMAYと同義必要ならやる

    いくつかキーワードがあるが、MUST、MUST NOT、SHOULD、SHOULD NOT、MAYの5つを覚えておけば十分で、これらのキーワードを目印に読むことで重要な部分を見逃さずに済む。

    ただし、RFCの中では技術解説や歴史、設計理由、注意事項のみで要求レベルなしのドキュメントも混在しているため、MUSTやSHOULD、MAYでページ内検索してあたりをつけてから読み始めると良いだろう。

    RFCは全部読む必要はない

    以下のような手順で効率的にRFCを読むことができる。

    1. Abstractを読んで全体像を把握する
    2. Status of This Memoを読んでRFCの立場/状態を理解する
    3. MUSTやSHOULDで検索して重要な部分を見つける
    4. 重要な部分を中心に読む
    5. 必要に応じてNormative References、Appendixを読む