見出し画像

RFCという素晴らしき技術メモと遊び

こんにちは.株式会社カミナシで EM をしております Keeth こと桑原です.

Web 業界にいると RFC という単語を良く目にします.なんとなく知っていたり,これに準拠していれば良いんだろうなーと雰囲気で使っていた人もいるのではないでしょうか?かく言う私も以前はそうでした😂

「RFC」と聞くと『なんか難しい技術系のやつでしょ?』となりますよね.確かにその通りではあるんですが,ある意味で RFC は エンジニアにとっては絶対的な存在 と言っても過言ではありません.これを理解してるかどうかで、エンジニアとしての格が一段上がる,そんな重要な存在(と個人的には感じています).ただ,真面目な技術ドキュメントというだけではなく,クスッと笑ってしまうようなエピソードもあります.今回は改めて RFC ってなんだ?を調べたので,何番煎じなんだ!と言われるのを覚悟の上でまとめてみました.

音声で聴きたい方はこちら💁



RFC って何?

RFCの正式名称は Request for Comments、直訳すると『コメントください』となりますが,ただの『意見ください』ではなく,これこそがインターネットを作る基盤であり,技術仕様を決めるための聖典のようなものです.世界中の技術者たちがこの RFC を通じてインターネットの進化を導いてきたわけです.その歴史は古く,なんと1969年から始まっています.

このことから『現代のインターネットって誰が作ってきたの?』って聞かれたら,答えは『RFCの文化が作った』と言えると思います.RFCがなければ,今我々が普段使っている HTTP,メール,URL 等の仕様も,全部 RFC が元になっており,RFC がなければこれらは生まれなかったんじゃないかなと.

エンジニアの世界では RFC に準拠する = インターネットに関する技術の国際標準に適合している ということを意味しますRFC がなければ,世の中の技術基盤はバラバラだったかもしれない.ある意味 RFC は技術者の共通言語,公式なルールブックのような存在なんですね.

※もちろん,直接的にインターネットやその先駆けとなるものを作ってきた方々もいらっしゃいます.名前だけ挙げさせていただく(敬称は略します)と,ヴァネヴァー・ブッシュ,J・C・R・リックライダー,ヴィントン・サーフ,ロバート・カーン,レイ・トムリンソン,ティム・バーナーズ=リー,ポール・モカペトリス

どんなことをしたのかは皆さんでググっていただけると助かります🙇一番有名?身近?なのは World Wide Web を考案し,URL・HTTP・HTML などの最初の設計をしたとされるティム・バーナーズ=リー氏だと思います.知らなかったんですが,ティムはアクセシビリティの重要性に触れた素晴らしい言葉がありましたので,W3C から引用します.

The power of the Web is in its universality.
Access by everyone regardless of disability is an essential aspect.

ウェブが優れているところは、その普遍性 (みんなが使えること) である。

障害があるか否かに関わらず、誰でもアクセスできるということは、ウェブの本質的な在りかたなのである。

https://www.w3.org/mission/accessibility/

RFC の作成プロセス

閑話休題.さらに面白いのが,RFC は世界中のエンジニアたちが 『これ、こうやったらどう?』と言った感じで意見を出し合って,改良していくものなんです.だからこそ『Request for Comments』なんですね.世界中のトップエンジニアたちが合議制で作り上げる文化.私もスタートアップでプロダクトの仕様などを議論してたりしますが,全世界規模で作っていく RFC のプロセスには本当に感心します.

しかも,RFC はどんなエンジニアでも提案できる,という点が素晴らしい.そう,あなたも私も RFCの提案者 になれます.たとえば,私が新しい Web フロントエンドの HTML の振る舞いについての仕様を考えて提出.それが良いと思われれば,全世界のエンジニアに影響を与えることも可能 です(そんな簡単ではないことも想像に固くないですがw).こんなオープンな仕組み,なかなかないなぁと思いますが.それがエンジニアの世界では一般的ではあります.



ジョークRFC

さてさて,RFC の存在についてはご紹介しましたが,ここからは RFC の面白い小噺のターンです!実は,RFC には エイプリルフールRFC というジョーク版があります.しかも一つだけでなくいくつも(笑)毎年ではないんですが,4月1日に技術者たちが冗談半分でありえないプロトコル(手続きのことです)とかルールをRFCにして発表します😂

RFC 1149

1990年に発表された RFC 1149.これは 『IP over Avian Carriers』.つまり『鳩でIPパケットを運ぶ』というプロトコルです.

いやいや,どんだけパケットロスするんだよ,ありえないだろ!って感じじゃないですか?鳩がIPパケットを背中に載せて飛ぶって,そんなの見たことないですよね.しかも,2001年には続編が出ていまして,RFC 2549『IP over Avian Carriers with Quality of Service』.つまり『鳩にQoS(品質保証)機能を追加します』というジョークも書かれてます.もうナンノコッチャ状態(笑)

しかもこれ,単なる冗談だと思ったら,ノルウェーの研究者が 本当に鳩でIPパケットを運ぶ実験 をしたらしいんです.結果は…まぁ,想像通り鳩のペース次第で遅い遅い.それでもネットワークプロトコルとしては成立した というからすごいですね!

RFC 2324

次に紹介するのは,もう一つの名作 RFC 2324『HTCPCP/1.0』です.これは『コーヒーポットをインターネットで制御する』ためのプロトコルです.

そう,これでコーヒーポットに『お湯沸かして~』って命令できるんですけど,エラーが出たらなんと『I'm a teapot(私はティーポットです)』って返してくるんです.いや,コーヒーポットなのにティーポットという点がツッコミたくなりますね(笑)このエラーメッセージを 418 エラー って言ったりしますが,開発者の間では伝説的なネタです.

余談ですが,418 エラーというのはエラーのカテゴライズで,似たものとして 404 エラーを皆さんも見たことあるのではないでしょうか.Not Found と言ったりしますが,その名の通り,そんなページないよ,というページにアクセスした時に表示されるものです.418 エラーはその仲間ですね.

こんなふざけたプロトコル誰が使うんだい!と思いきや,実際に使われてるんですよ,このエラーメッセージ.まぁジョークとして残ってるだけなんですけど(笑)詳しくはこちらの記事がとても良くまとまっておりましたので,興味ある方は見てみてください💁

RFC 2795

今回最後に紹介するのは RFC 2795『The Infinite Monkey Protocol Suite』です.サル(チンパンジーという説もある)が十分に長い時間タイプライターのキーを無作為に叩くと,最終的にシェイクスピアの全作品が生み出される(他の作品でも良い)という表現がされている『無限の猿定理』を元にしたプロトコル群です.この定理は正確には,十分に長い時間をかけてランダムに文字列を作り続ければどんな文字列もほぼ確実に作れる,というものですが,上記の名前のほうが認知されているようですね.とにかく無限の可能性と混乱をテーマにしています.

ちなみにこちらの定理は,名前に「定理」とついているように証明がされているようです.詳しく理解してはいませんが『ボレル-カンテリの補題』『エルゴード理論』『大数の法則』を用いて証明されているとか.端的に結論だけ触れると

任意の有限の文字列が生成される確率は0より大きい。
無限回の試行を行うと、確率が0より大きい事象は必ず発生する。
したがって、無限の時間があれば、任意の有限の文字列(例:シェイクスピアの作品)が必ず生成される。

というカラクリ.まぁ現実世界では証明は不可能ですが,数学的には証明されています.

このような感じで,まだたくさんのジョークRFCが存在していまして,是非皆さんでも検索してみてください!世界中のエンジニアたちの遊びが見れて面白いです😂

まとめ

というわけで,今回は RFC のお話でした!ただの技術文書じゃなくて、冗談も楽しむ自由なネット文化の一部なんだなと,改めて感じました.また,今回は触れていないですが RFC だけでなく,TC39 という,JavaScript の統一仕様である「ECMAScript」を日々考えて実装・メンテナンスしているグループもあり,世界のエンジニアが知識の交通整理をしてくれていることに,心から感謝を申し上げたい気持ちにもなりました!

ではでは(=゚ω゚)ノ

いいなと思ったら応援しよう!