20年後といえば僕は51歳で、下の子がストレートなら学部を卒業して就職が決まってるかも知れない時期か。2038年問題、、、とか書いたけど、これは30年後だね。30年後にはCを扱える組込系プログラマが2000年問題の時のCobolプログラマのように方々で駆り出されてコードレビューとかやるんだろうか。

20年前といったら1988年、僕は11歳でEPSONのワープロで独自フロッピーとか50音キーボードを使ってた。調べてみるとHTMLはなかったけれどSGMLはあったし、TCP/IPもEthernetもあったんだね。ちょうどWIDEができた年か。

20年後、 HTMLは残っているか

HTTPは残っているか

TCP/IP は残っているか

上にレイヤーが追加されるか

下のレイヤーから入れ替わるか どういう時代が来るんだろうか、そのとき僕は 46 歳。

下のレイヤーが入れ替わるかって、10GbEの仕様とかみると最早CSMA/CDとかない訳で、それ名前だけEthernetだけどEthernetじゃないよね。経路制御もルーティング・プロトコルは生き残ったけれど、バックボーンではATMチックなラベルスイッチが増えているし。NGNなSIPの使い方みて「これ何てATM SVC」と考えさせられた。似た悩みを抱えて座礁しているが。

TCPも古式ゆかしきはスロースタートだったけど、それじゃパイプが埋まらないというんで、様々な拡張が施されている。お陰でWindows Vistaになって、超速ADSLとか入れなくても速くなったし、IPスタック周辺のレジストリを触っても大幅な性能向上はなくなったはずだ。

間違いなく20年後もTCP/IPは生き残っているだろうし、けれどもそれが今日のSNAみたいな過去の遺物なのかバリバリの現役なのか、アーキテクチャでみて換骨奪胎されているのか元々の思想が生き残っているのか、みたいなところは気になる。下位層では無線とか衛星通信で最適化しようとするとIPは厳しいし、上位層では遅延が大事になるとIPじゃないだろという気はする。

HTMLは十数年で換骨奪胎され尽くしているし、これからもRIAとか諸々で当分は換骨奪胎され続けるのだろう。けれどもSemantic WebにもObject Webにもならなかった。Web 2.0ってOpen Source以上に中身のないBuzz Wordだと思うよ。Tim O'ReillyがWeb 2.0とかいう前から、CGMもpeer reputationもAJAXもあった訳でさ。オブジェクト指向なLLも十数年前からあった。

20年前というとWindows 3.0の出る前で、やっと窓が重なるようになって、WindowsアプリとしてMacintosh Excelが移植された。Windowsの次はOS/2で、その後にUNIXの時代が来ると信じられていた。みんなDOSの上で直接ハードを叩くプログラムを書いていて、PCをリセットするために特定アドレスにジャンプするとか平気でやっていた。セグメントを超えるメモリをみるのは大変だったし、ネットとCD-ROMを同時に使おうとするとコンベンショナルメモリが足りなくなった。それは下々の話で研究室でSONY NEWSを使えれば今のPC-UNIXと似たような環境があったし、NeXT CubeではiPhoneのベースとなるプログラミング環境が既に使えた訳だ。

そういった意味で、この20年で何が最も大きな変化だったかというと恐らくテクノロジーの民主化で、20年前はカネで未来が買えたけれども、いまどきアキバの店頭に並んでいる環境と、恵まれた大学の金満研究室の環境とで大差ないのではないか。閑話休題。

まあ20年後も間違いなくWebは残っている。Web的な世界に関しては媒介するTCP/IPが今と似たようなかたちで残っている可能性が高い。いちばん変化が大きいのは最近だとAjaxみたいなプログラミングモデルのところだ。いまは強引にCometでやってるようなプッシュ通信は、もっと望ましい方法があるだろう。あとVoIPみたいな世界は本当にIPでやるべきかから疑問はあるんだけど、別のインフラに乗っている可能性がある。

いまTCP/IPで原理的に難しいのは恐らく低遅延とかマルチパスで、遅延を解こうとするとIPを捨てたくなるし、マルチパスしたければTCPを捨ててSCTPのようなTransport Protocolが欲しい。低遅延の話をすると、対戦ゲームとかロボット制御なんかで使い道がありそうだけど、それだけで新たな網を構築する投資がペイするほど大きな市場があるかは怪しい。けれどどちらも、Web的な世界の延長線上で欲しいかというと微妙だ。

IPは昔からマルチキャストとかQoSも苦手で、やるための規格は昔から山のように出てくるのだが、いつまで経っても安定しないしIPの良さが出てこない。NGNでもうまくできていないし、やっぱ難しいのかな、と。あと移動通信で電波や電池の有効利用を考えるとTCP/IP的にレイヤを切るだけでなく、上から下まで一気通貫で最適化したくなる。それがBWAとしてMobile WiMAXよりLTEが成功しそうな理由のひとつ。LTEも広い意味でコアネットワークをIP化してはいる。けれども移動通信屋さんのいうIPはアーキテクチャ的にIPなのか、単にIPヘッダのフォーマットを踏襲しているだけで、アーキテクチャとしては遠く離れたところにいるのではないかな。

どっちにしてもWebもIPもEthernetも最早ブランドであって設計思想としては気付かぬように換骨奪胎されており、これらはブランドとして20年後も生き残り続けるだろうけれども、別の領域では全く違った進歩とかもあるかも知れないね、けれどもそこは僕らWeb時代の住民が頑張って開拓するところなのか、それともその時代の若者からみてWeb世代は今日のCobolプログラマーみたいな扱いを受けるのか、気になるところではある。

20年前といえばi386命令セットが既にあった訳だけど、CISC/RISC論争とか諸々を乗り越えて、これが20年近く生き残ったのは本当に奇跡じゃないかな。NTの仕様書を読むとi860向けに開発してからi486に移植してるんだよね。i80x86よりMC680x0の命令セットの方がずっと奇麗だし、いま考えると信じられないけれど、あの時代は遠からずCISC 32bitなんか陳腐化して、RISCかVLIW、そして64bitに移行すると思われていたはず。1988年にタイムスリップして、2008年になってもPCがi386命令で動いていて、MacまでIntel CPUに移行したなんて話した日には、誰からも信じてもらえずフルボッコされるんじゃないかな。