RFCの基礎知識
皆さん、こんにちは。 雨宿りとWEBの小噺へようこそ。
ポッドキャスト配信者のkeethこと桑原です。
この番組は、日々降り注ぐ情報の中で、ちょっと雨宿りしながら、
様々なWEBテクノロジーの成り立ちや裏話を小噺としてお届けする番組です。
今回の話題は、RFCという技術メモについてお話しします。
WEB業界に私いるんですけど、この業界にいると、RFCという単語をちょいちょい目にすることがあります。
なんとなく知っていたりとか、これに準拠していればいいんだろうなというような雰囲気で使っていた人もいらっしゃるんじゃないかなと思います。
昔の私もそんな感じでした。
また、RFCという名前の響きだけを聞くと、難しい技術系のやつでしょうとか受け取り方がしますよね。
その通りではあるんですけど、ある意味でRFCというのはエンジニアにとってはもう絶対的な存在と言ってもいいんじゃないかなと思っていて、
これを理解しているかどうかで、いわゆるエンジニアとしての核的なものが一段上がる、そんなような存在だと個人的には感じています。
ただ、真面目な技術ドキュメントというだけではなくて、ちょっとくすっと笑ってしまうようなエピソードもあったりもします。
今回はGoogleで調べていただければ、何番千字なんだといろんな方が記事書かれているんですけど、そういうのを覚悟の上で今回改めてRFCってなんだっていうのを調べたのでお話ししたいなと思います。
ではまず最初に、RFCってそもそも何ぞやっていうところからお話しますと、
RFC、正式名称はRequest for Comments。
直訳するとコメントくださいってことになるんですけど、ただ意見くださいというわけではなくて、これこそがインターネットを作っている基盤と言えます。
技術的な仕様を決めるための晴天のようなものというふうに受け取ってもいいかもないって感じです。
世界中の技術者たちがこのRFCを通じてインターネットの進化を築いてきたというわけですね。
しかもその歴史なんと1969年から始まっています。
現代のインターネットって誰が作ってきたの?と聞かれたらRFCの文化が作ったと言っても過言じゃないんじゃないかなというふうに思いますね。
RFCがなければ今我々が普通に使っているHTTPとかメールとかURLなどの使用も
全部RFCが元になっておりまして、RFCがなければこれらは生まれてこなかったと言ってもいいんじゃないかなと勝手に思っています。
時間の問題で生まれた可能性はもちろんありますけども、ここまできっちりとした仕様になったというのはもう間違いなくRFCだなと。
エンジニアの世界ではRFCに準拠するということは、すなわちインターネットに関する技術の国際標準に適合しているというようなことを意味することになります。
これがなければ世の中の技術基盤というものはもしかしたらバラバラだったかもしれないですね。
ある意味RFCというのは技術者の共通言語、公式なルールブックみたいな立ち位置になっています。
RFCに関わる著名な技術者たち
もちろん直接的にインターネットやその先駆けとなるものを作ってきたような方々もいらっしゃいます。
名前だけ挙げさせていただくと、ちょっと継承は略しますが、
バネバー・ブッシュ、JCR・リックライダー、ビン・トン・サーフ、ロバート・カーン、
レイ・トム・リンソン、ティム・バーナーズ・リー、ポール・モカ・ペトリスなどなどの方々がいらっしゃると。
この方々がどんなことをしたのかっていうのはちょっとこの放送では割愛します。
皆さんの方で興味あったらググってみていただければと思いますが。
一番有名なの、もしくは一番身近、と僕は勝手にそう思ってますけど、
そういう方だと思われるのはティム・バーナーズ・リー氏だと思います。
この方はですね、ワールドワイドウェブの原案というか、最初にWWWというものを考案した方ですね。
他にもURLとかHTTP、HTMLなど、最初に設計をしたとされています。
それだけ聞くと、今毎日我々が使っているもの、日頃からずっとお世話になっているものの原案的なものを作ったと。
ティム・バーナーズ・リーさんはすごく身近に感じるなって僕は思いました。
また今回改めて調べたんですけど、ティム・バーナーズ・リーってアクセシビリティに関して重要性に触れた言葉を発言されてて、
これがW3Cに載ってたんで一応引用してみます。
ちょっと英語は読めないんで日本語で。
ウェブが優れているところはその普遍性、皆が使えるということにある。
障害があるか否かに関わらず誰でもアクセスできるということはウェブの本質的なあり方なのであるというふうに語っております。
まさにアクセシビリティのことを言っているなというところで。
とてもいい言葉だし、原文も載ってますので興味ある人はW3C見てみてください。
エイプリルフールRFCの楽しさ
後で概要欄にも載せておきます。
この辺でとどめておいて、実際どんな感じで作られるのっていうところも研究しようと思います。
これ面白いのはですね、RSEってただの指示書とかメモではなくて、
これ皆がですね、例えばこういうテーマについてこうやったらどうとか、こうしたらどうっていうふうに意見を出し合ってそれを改良して作られていくものなんですね。
だからこそ名前の通りリクエストフォーコメントなんですね。
世界中のトップエンジニアたちが合議制で作り上げていったこの文化、なかなかすごくないですかね。
全世界いろんな文化とか考え方思想の方々が集まって、ああだこうだ言って作っていくっていう文化ですね。
これを全世界規模でやっているっていう話を聞くと、やっぱすごいなっていうふうに。
身近で合議制で何か作っているものとしては本当に感心しますね。
しかもこれですね、RFCってただ一個人としてのエンジニアでも提案することができるんですね。
この点がまた素晴らしいなと思います。
そう私もですし、これを聞いていらっしゃる皆様もRFCの提案者には実は慣れるんですね。
例えば僕が新しいWebフロントエンドのJavaScriptの振る舞いについての仕様を考えて提出するということもできるんじゃないかと。
JSの振る舞いについての仕様はここじゃなくて別のところに投げるべきでしょうって話はありますけど、
例えばそんな感じで思ったことを考えて提出しても良いと。
それが本当に良いなっていうふうに思われれば、それが仕様として最多く固まりまして全世界のエンジニアに影響を与えるみたいなことも可能ですと。
もちろんそんな簡単ではないってのは想像に難くないと思いますが。
こんなオープンな仕組みなかなかないんじゃないかなと思っていて、でもそれがこのWeb業界とかエンジニアの世界では一般的なんですね。
この辺までがRFCの真面目なお話というか紹介になりますけど、ここからRFCの面白さというか小話の話をしていきたいと思います。
RFCのお話といえば、もう想像通りだと思いますけど、ジョークRFCと言われるものですね。
実はRFCにはですね、エイプリルフールRFCというジョーク版がありまして、しかもこれ一つじゃなくて本当たくさんあるんですよ。
もちろん毎年毎年出てるわけでは確かなかったはずですけど、エイプリルフールっていう名前の通り、4月1日に技術者たちが上端半分でありえないプロトコル、手続きのことですね。
これをルールとしてRFCにして発表していますと。ルールとして定まっちゃってるんですね。
それいくつか紹介しようかなと思っています。先ほど言いました、インターネットとか技術の晴天と言われているようなものにジョークが勝るっていうところがなかなか面白いんですけど、エンジニアってそういう遊びをするんですよね。
一つ目はRFC-1149ですね。こちらは1990年に発表された英語の方のタイトルはIP over avian carriers。ちょっと読み方間違ったすいません。
つまり日本語で訳すと、鳩でIPパケットを運ぶというようなプロトコルですね。
いやいや本当にこれマジでやったらすごいパケットロスするでしょ。まさにありえんだろうって感じなんですけど、
鳩がIPパケットを背中に乗せて飛ぶって、見たことも聞いたこともない。
しかもですね、これ何が面白いかというと2001年には続編が出てまして、RFC-2549ですね。ちょっと時間が経ちましたね。
IP over avian carriers with quality of serviceって出て、鳩にQoS、品質保証の機能を追加しますってジョークも書かれてます。
もう本当なんのこっちゃねって感じの状態ですね。まあそういう遊びをするのは結構なんですけど、
しかもこれですね、単なる冗談だと思っていたら、ノルウェーの研究者が
本当に鳩でIPパケットを運ぶ実験してたらしいんですよ。結果は想像通り、鳩のペース次第で
そもそも遅れる遅れないもあるし、時間通りに送ってくれるわけもないし、
なんならちゃんと予定したコース通りに飛ぶかすらも怪しいというので、すごく遅いし使い物にならなかった。
ただ仕様としてはネットワークプロトコルとして成立をしているって言うんですから、これすごいですよ。
まあ普通に考えて、普通に考えたらやらないと思いますけど、まあ一つ目RFC1149でした。
2つ目はRFC2324ですね。こちらはもう名作と言ってもいいプロトコルですね。
RFC2324、HTCPCP 1.0っていう名前がついてます。
それだけ聞くとわかんないですけど、通称コーヒーポッドをインターネットで制御するためのプロトコルですね。
ユーモアのあるエラーメッセージ
これがすごく有名で、たぶん一番有名なのこれなんじゃないかと。これでコーヒーポッドにお湯を沸かしてとか命令できるようになるんですけど、
エラーが出たらじゃあどうするのっていうと、あいまいティーポッドって返してくるんですよ。
ここが結構皆さん知ってるものですね。コーヒーポッドを制御するっていう名前のプロトコルでティーポッドっていう
返しが来るっていうのが突っ込みどころですね。知ってる人は知ってると思いますけど、このエラーメッセージを418エラーと言ったりします。
開発者の間では伝説的なネタで非常にまだに418エラーっていうのは生き残ってます。
そのエラー自体はまたジョークというか遊び要素で加えられたものですね。
418エラーとかこういうものを知らないよっていう方にためにちょっと余談をすると、
これエラーのカテゴライズをしててですね、いわゆる200系、300系、400系、500系って、そのうちの400系と言われるものの一つです。
似たものとして404エラーとか皆さんも見たことあるんじゃないかなと思ったりします。
ウェブページとかウェブサイト行ってて、存在しないページとかURLにアクセスするとたまにノットファウンドとか出たりすると思いますね。
画面上、もしくはもうすでに404っていうものが装飾とかをされて画面に表示されたりする。
もちろんノットファウンド、そんな存在しないよっていうところのページにアクセスした時に表示されるもので、そのエラーと同じというか仲間のエラーですね、418エラーっていうの。
こんなふざけたプロトコル誰が使うんだいと思いきや、実際に本当に使ってるサイトもあるかもしれない。
一応ジョークとして残ってるだけなんですけどね、このエラーメッセージは。
でもまだ生きてるし、使うことができます。 以上2つ目でした。RFC2324ですね。
無限の猿定理とエンジニア文化
ラスト、RFC2795と言われるものです。 タイトルはThe Infinite Monkey Protocol Suitsですね。
こちらも名前通りで、猿、もしくはチンパンジーという説もありますね。 一旦今回猿として紹介しますけど、
猿が十分に長い時間タイプライターのキーを無作為に叩くと、最終的にシェイクスピアの全作品が生み出される。
別にシェイクスピアじゃなくてもいいけど、今回はシェイクスピアというような引用がされています。
こういうものが生み出されるという表現がされている無限の猿定理というものがあって、こちらを元にしたプロトコル群ですね。
本来は十分に長い時間をかけてランダムに文字列を作っていけば、どんな文字列だろうとほぼ確実に作れるというようなものですね。
とにかくこれは無限の可能性と混乱をテーマにしていて、名前に定理ってついているようにちゃんと数学的に証明されているんですよ。
詳しく僕はちょっとわからなかったんですけど、ボレル・カンテリーの補題とか、エルゴート理論、大数の法則みたいないくつかの武器を使って証明されているらしいですね。
端的に結論だけ触れると、任意の有限の文字列が生成される確率は絶対ゼロより大きいでしょう。
で、無限界の試行を行うと確率がゼロより大きい事象は必ず発生する。
したがって無限の時間があれば、任意の有限の文字列、今回の例だとシェイクスペアの作品っていうのが必ず生成されるという証明だそうですね。
ゼロじゃなければ必ず生成されるって言われたら、まあそうだでしょうねっていうのはなんとなくは思いますけど。
にわかには信じがたいお話です。まあそんなカラクリです。
で、これは現実世界ではもちろん証明は不可能なんで、試行実験に近いところです。
まあさておきこんな感じで、他にもたくさんジョークRFCっていうのは存在していてすごく面白いです。
なんか8000万9000万くらいだったかな?あるんで、たくさんあるのでぜひぜひ興味ある人は皆さんでも検索してみてください。
世界中のエンジニアたちがこんな遊びしてんやっていうものが見えてなかなか面白いですね。
はい今回はちょっと短いですけど、RFCという技術メモのお話でしたが、
ただの技術文書じゃなくて、ほんと冗談も楽しむ自由なネット文化の一部なんだなというふうに改めて僕も感じましたね。
また今回触れてないんですけど、RFCだけじゃなくて、例えばTC39、読み方39なのか39なのかわからないんですけど、
こういう団体とかグループがあって、こちらはJavaScriptの統一仕様である
ECMAと書いてエクマスクリプトというものを日々考えて実装メンテナンスしているグループがありました。
こちらにもですね世界中のエンジニアが日々いろんなものを考えて、JavaScriptってこういうふうにやっていきましょう
というような統一的な仕様を考えてくださってますね。
こんな感じで世界のエンジニアって知識の交通整理をしてくれる団体とかあるんですね。
本当こういう団体には心から感謝をしつつ、そういう試験だったり、こう作るといいよっていうような標準仕様というのを考えてくれているのはすごくありがたいなというふうに思った次第ですね。
はい。
And now, a short commercial break.
エンジニアの価値は世界が決める。
転職ドラフトは年収アップ率94%。
平均年収アップ額148万円と圧倒的な実績を誇るITエンジニア限定の転職サービスです。
今までのエンジニア経験を登録することで、厳選された企業から年収提示付きのスカウトが届き、リアルな市場価値が測れます。
気になる方は転職ドラフトで検索してお気軽にご参加ください。
では、そのところで今回もエンディングトークに入っていきたいなと思います。
この番組面白かったよーという方、ぜひチャンネル登録もお願いします。
もし聞いていて気になることや話してほしいトピック、感想などがありましたら概要欄のフォームやXでハッシュタグウェブ小話でつぶやいてください。
ウェブはアルファベット、小話は漢字でもひらがなでも大丈夫です。
また、兄弟チャンネル予断ですがFMという番組をスタンドFMというプラットフォームで配信しておりまして、
こちらではタイトル通り、明日誰かに予断ですがーと話したくなるかもしれないお話を配備しにしております。
もし聞いてくださると嬉しいです。それではまた雨宿りしに来てください。
今回もお聞きくださりありがとうございました。
雨宿りとウェブの小話、お相手はピースでした。さようなら。