1. uasi

    テーブルを修正

    uasi
Changes in body
Source | HTML | Preview
@@ -1,138 +1,139 @@
# はじめに
本記事では、[RFC (Request for Comments)](https://ja.wikipedia.org/wiki/Request_for_Comments) で提案・標準化された仕様を探して読むための基礎知識や、Web上で利用できるツール等について記します。
想定読者は、Web技術に関わるエンジニアで、RFCを参照して標準仕様を調べる機会がある人です。
## ここに書かないこと
- RFCとは何か
- Internet-Draft (I-D) 段階の議論の追い方
- I-Dから標準化のプロセスに乗るまでの細かい流れ
# 基礎知識
## RFCの種類
すべてのRFCが仕様として標準化されるというわけではありません。
RFCは次のように、いくつかのCategoryに分類されます。
| Category | 説明 |
|--------|------|
| `INTERNET STANDARD` | 国際標準とすべき仕様の最上位。STD番号が割り振られる |
| `PROPOSED STANDARD` |複数の組織での独立な実装と、それらの相互接続性が確認されているもの |
| `EXPERIMENTAL` | 標準化が目的ではない調査や検討などを含む文章。特定の企業が自社の仕様を公開する際にも用いられる。 |
-| `INFORMATIONAL` | 標準化が目的でない情報提供が目的の文章。公式度が低い前提。 HISTORICAL 標準化の過程がわかるよう、過去の議論を残すための文章。 |
+| `INFORMATIONAL` | 標準化が目的でない情報提供が目的の文章。公式度が低い前提。 |
+| `HISTORICAL` | 標準化の過程がわかるよう、過去の議論を残すための文章。 |
| `BEST CURRENT PRACTICE` | 現時点での最良の実践。IETFが支持する技術的関連情報を発行するためにRFC1818(BCP:1)で定められた。BCP番号が割り振られる。 |
| `UNKNOWN` | 1990年以前のRFCのうち、未分類のもの |
この内、仕様として標準化されるものは上の2つです。
この2つのCategoryをまとめて、 `Standards Track` と記すこともあります。
標準化のプロセスは、 `PROPOSED STANDARD` → `INTERNET STANDARD` のように進行します。
NOTE:
- RFC2026では `PROPOSED STANDARD` と `INTERNET STANDARD` の間に位置するものとして `DRAFT STANDARD` というCategoryも定められていましたが、RFC6410によって削減されました。
## 注意点:文書の状態
古いRFCは、後のRFCによって更新 (= Update) されたり、廃止 (= Obsolete) されることがあります。
特に、古い技術系の記事などで言及されているRFCを素直に辿ると、それがout-of-dateなものであっても気づけないことがあります。
従って、あるRFCを見るときに、それが後の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, Category (= 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) ... 本記事の「RFCの種類」の表や「RFC内での助動詞の使い方」に示したRFC2119の訳文を記す上で大いに参考にさせて頂きました。
- [RFC2119](https://tools.ietf.org/html/rfc2119)
- [RFC6410](https://tools.ietf.org/html/rfc6410)
- [RFC8174](https://tools.ietf.org/html/rfc8174)