RFCを読む
インターネットやウェブサービスに関わる仕事をしているのなら、一度はRFCを読んだことがあると思います。 でも、ちょっとRFCの番号をぐぐって日本語訳をみつけてそれらしき箇所を読んで理解したつもりになってませんか?
うわっ… 私のRFC、古すぎ…?
そんなふうにして見つけて読んでなんとなく理解した内容、ひょっとしたら、すでに古いものかもしれません。
具体例を上げましょう。みんな大好き電子メールのフォーマットは1982年にRFC 822で規定されました。僕と同い年です。 しかし、このRFC 822は2001年にRFC 2822でobsolete(廃止)されています。 さらに、RFC 2822は2008年にRFC 5322でobsoleteされています。
つまり、もしメールのフォーマットを読んだり書いたりするコードを書こうとしてRFC 822だけ読んで満足していると、新しいRFC 5322に則ってつくられたシステムとの対話で困ったことになるわけです。さすがにRFC 822は古すぎるのでそういうことにはならないと思いますが。
じゃあどのRFCが新しくてどれが古いのかっていうのをどうやって知るのよ、となるわけです。新しいRFCにはどのRFCをobsoleteするのか、あるいはupdateするのかが文頭に書かれています。たとえば、RFC 5322だとこんな感じ。
でも、当然古い方にはどれでobsoleted、updatedされたかは書かれていない。RFC 2822はこんな出だし。
そこで、一番簡単な方法は、RFCを標準化しているIETFのサイトで検索してみてどれが新しいのかを知る方法です。ぐぐってそれっぽいの探すとかやめましょう。 ここでRFCの番号を入力すると、詳細欄にどれがその文章をobsoleteしているのか、あるいはどの文章でupdateされているのかなどがすぐにわかります。
ところで、現実世界では
実際には新しいRFCに則って実装されているものばかりが世の中にあるわけでもないし、そもそもRFCを読まずにつくったと思われるシステムも普通に使われています。 なにか問題があったときは実務においては臨機応変に対応する必要がありますね。
You SHOULD
read RFC before coding.
ちなみに、RFCに登場するMUST
やSHOULD
などの表現は英語のmustやshouldとは違う特別な意味を持った単語です。MUST
やSHOULD
などの用語についてはRFC2119に解説されています。
自身の記述を規定するRFCがあるところに自己言及感があってグッときますね!