1. progrhyme

    Posted

    progrhyme
Changes in title
+RFC標準を調べるための知識やツール
Changes in tags
Changes in body
Source | HTML | Preview
@@ -0,0 +1,131 @@
+# はじめに
+
+本記事では、[RFC (Request for Comments)](https://ja.wikipedia.org/wiki/Request_for_Comments) で提案・標準化された仕様を探して読むための基礎知識や、Web上で利用できるツール等について記します。
+
+想定読者は、Web技術に関わるエンジニアで、RFCを参照して標準仕様を調べる機会がある人です。
+
+## ここに書かないこと
+
+- Internet-Draft(I-D)段階の議論の追い方
+- I-Dから標準化に至るまでの細かいプロセス
+
+# 基礎知識
+
+## RFCの種類
+
+すべてのRFCが標準仕様というわけではありません。
+RFCは次のように、いくつかのCategoryに分類されます。
+
+| Category | 説明 |
+|--------|------|
+| INTERNET STANDARD | 国際標準とすべき仕様の最上位。 STD番号が割り振られる |
+| DRAFT STANDARD | Proposed Standardのうち、さらに広範囲で利用されているもの。現在はDraft Standardが実質上の標準化といえる |
+| PROPOSED STANDARD |複数の組織での独立な実装と、それらの相互接続性が確認されているもの |
+| EXPERIMENTAL | 標準化が目的ではない調査や検討などを含む文章。特定の企業が自社の仕様を公開する際にも用いられる。 |
+| INFORMATIONAL | 標準化が目的でない情報提供が目的の文章。公式度が低い前提。 HISTORICAL 標準化の過程がわかるよう、過去の議論を残すための文章。 |
+| BEST CURRENT PRACTICE | 現時点での最良の実践。IETFが支持する技術的関連情報を発行するためにRFC1818(BCP:1)で定められた。BCP番号が割り振られる。 |
+| UNKNOWN | 1990年以前のRFCのうち、未分類のもの |
+
+この内、標準化に関わるCategoryは上の3つです。
+この3つをまとめて、 `Standards Track` と記すこともあります。
+
+標準化のプロセスは、 `PROPOSED STANDARD` → `DRAFT STANDARD` → `INTERNET STANDARD` のように進行します。
+
+## 注意点:文書の状態
+
+古いRFCは後のRFCでUpdateされていたり、Obsolete(=廃止)されていることがあります。
+特に、古い技術系の記事などで言及されているRFCを素直に辿ると、out-of-dateなRFCであってもそれに気づけないことがあります。
+よって、そういった文書の状態がわかるツールを使うことが大事だと思います。
+
+## RFCの構成
+
+1つのRFC文書は概ね次のような構成になっています。
+
+```
+ヘッダ // RFC番号やCategory, Obsoletes, Updates情報など
+タイトル
+Abstract
+Status of This Memo // 定型文
+Copyright Notice // 定型文
+Table of Contents
+1. Introduction
+ 1.1. Conventions and Terminology // 助動詞の使い方(RFC2119 or 8174)を定義した定型文
+ :
+: // 本文
+Acknowledgements
+Author's Address
+```
+
+## RFC内での助動詞の使い方
+
+仕様の強制力を表すための助動詞の使い方がRFC2119で定められ、RFC8174で更新されました。
+
+| キーワード | 意味 |
+|-----------|-----|
+| "MUST", "REQUIRED", "SHALL" | 仕様の絶対的な要請事項 |
+| "MUST NOT", "SHALL NOT" | 仕様の絶対的な禁止事項 |
+| "SHOULD", "RECOMMENDED" | 特定の状況下では、特定の項目を無視する正当な理由が存在するかもしれないが、 異なる選択をする前に、当該項目の示唆するところを十分に理解し 慎重に重要性を判断しなければならない |
+| "SHOULD NOT", "NOT RECOMMENDED" | 特定の動作が容認できる、ないし、非常に有用である、というような特定の状況下では、正当な理由が存在するかもしれないが、このレベルの動作を実装する前に、当該項目の示唆するところを十分に理解し、慎重に重要性を判断しなければならない |
+| "MAY", "OPTIONAL" | 選択的。該当のオプションを含まない実装は、それを含む他の実装との相互運用に備えなければならない(MUST)。同様に、オプションを含む実装は、それを含まない他の実装との相互運用に備えなければならない(MUST)。 |
+
+# ツール
+
+いくつか知っているものを、オススメ順に挙げます。
+
+## RFC Editor
+
+https://www.rfc-editor.org/
+
+[検索コンソール](https://www.rfc-editor.org/search/rfc_search.php)がなかなか高機能で使いやすいです。
+
+- キーワード検索
+- Category (※ただし、このツール上は "Status" となっている) や公開日での絞り込み
+- 検索結果画面でのObsoletes, Updates, Errataの表示
+
+といった機能があります。
+
+その他、[全RFCの一覧ページ](https://www.rfc-editor.org/rfc-index.html)などもあります。
+
+## RFC Reader
+
+http://www.rfcreader.com/
+
+単一ページを読む際に、左サイドペインに目次が表示されます。RFCは長いものが多いので便利です。
+会員機能もあり、お気に入りやブックマーク機能もあるようです。
+
+検索結果一覧も見やすいのですが、RFC Editorと比べるとUpdates, Errata, Categoryといった情報が不足しています。
+
+## IETF Tools
+
+https://tools.ietf.org/
+
+いわば本家サイトです。
+[RFC一覧ページ](https://tools.ietf.org/rfc/index)はObsoletes, Updates, Statusの情報もあり、網羅性があります。
+
+https://tools.ietf.org/html/ には検索フォームがありますが、キーワード検索のみで、Internet Draft段階のものも結果に含まれるので、標準を調べたい人には使いづらいのではないでしょうか。
+
+このサイトには、他にも色々なツールがありますが、まだ試せていません。
+
+----
+
+他にも、「RFC Viewer」などで検索すると多数ヒットします。
+
+# 日本語訳について
+
+- [RFCの日本語訳リンク集 - JPNIC](https://www.nic.ad.jp/ja/tech/rfc-jp-links.html)
+ - IPAほか各種団体が訳したものへのリンク集になっています。JPNICで訳されたものも含まれています。
+- [セキュリティ関連 RFC:IPA 独立行政法人 情報処理推進機構](https://www.ipa.go.jp/security/rfc/RFC.html)
+- [JPRS DNS 関連技術情報#DNS関連のRFC](https://jprs.jp/tech/#dns-rfc-info)
+- [RFC « DNSSECジャパン](https://dnssec.jp/index.html?page_id=124) ... DNSSEC関連RFC
+
+その他、個人サイトなどでRFC訳を公開しているものもたくさん見られます。
+
+# 終わりに
+
+ここに掲載した以外に有益な情報がありましたら、お知らせ頂けると嬉しいです。
+コメントや編集リクエストを歓迎します。
+
+# 参考
+
+- [Request for Comments - Wikipedia](https://ja.wikipedia.org/wiki/Request_for_Comments)
+- [RFC/Internet-Draftの読み方 - ISOC-JP (PDF)](https://www.isoc.jp/wiki.cgi?page=PreIETF93&action=ATTACH&file=isocjp%2Dietf%2Dstudy%2D20150701%5Fhayashi%5Fnishizuka%2Epdf)