嘘でしょ?インターネット上のあらゆるデバイスの時刻を同期するプロトコルはほぼ1人の手でコーディングされた!

2.

  ミルズは1938年、カリフォルニア州オークランドに生まれました。1938年は、クォーツ時計(quartz clock)が開発されてから11年後、トランジスタ(transistor)が開発される9年前にあたります。彼は、サンマテオにある視覚障害者のための学校に蒸気機関車で通い、それを走らせる機関士に感嘆しました。10代の頃には、鉄道模型やアマチュア無線に熱中していました。彼の父親はエンジニア兼セールスマンで、機械内部からのオイル漏れを防ぐ装置を製造するナショナル・オイル・シール(National Oil Seal)社の共同設立者でした。それは、回転軸における潤滑剤の漏れや異物の混入を防ぐ密封装置の一種ですが、車のエンジンの中には少なくとも2個は使われています。ミルズの母親は、トロント音楽院(Toronto Conservatory of Music)でピアノを学んだ後、結婚して出産してミルズと2人の弟を育てました。

 ミルズの家族は引っ越しを繰り返しました、ミルズを担任した教師は、時には視覚障害者への配慮に欠けた人物であることもありました。ミルズは、11年生(高校2年に該当)の時の担任から言われたことも今でも鮮明に覚えていると言っていました。「あなたは大学に進学すべきではありません。牛の前で旗を振っているようなもので、とても危険です。」と言われたそうです。しかし、ミルズは大学に進学し、1971年にはミシガン大学でコンピューター関連の博士号を取得しました。エディンバラ大学で2年間講義をした後、妻と2人の子供を伴って転居し、メリーランド大学に移りました。そこで5年勤めた時点で、在職延長を拒否されました。それを機に、彼はコムサット社で働くことになりました。そこでは、国防総省から資金援助を受けて専らアーパネットの研究をしました。ミルズは、後にインタビュアーを受けて語っていました、「コムサット社では、好きなことを思う存分研究できました。世の中のためになることを研究しろという指示があっただけでした。とにかく、電子メールの開発や時刻の同期のプロトコルを開発しろということだったようです。」と。彼が言っていたのですが、時刻の同期のプロトコルを研究するという仕事の魅力は、それをやっているのが自分一人しかいないことだったそうです。自分だけの 「小さな城」を持っているようだったそうです。

 ミルズがNTPのプロトコルを構築しましたが、無限に手を加えて修正できるシステムを構築しました。そして、修正を繰り返し最適化していくことが彼の楽しみでした。彼は当時を回想して言いました、「時刻同期の仕組みを実際に使うことには、私はそれほど興味が無かったのです。」と。インターネットはまだ黎明期にあり、時刻を同期する仕組みがほとんど存在していなかったのです。しかし、1980年代に入ると通信ネットワークが急速に整備され、1990年代にはパソコンが急激に普及しました。そのため、インターネット空間には、それを普及させようとしていた研究者たちが想定していたよりもたくさんのデバイスが存在するようになりました。あっという間に数百万台になりました。必要に迫られて、ユニックス(Unix)やウインドウズ(Windows)上で動作するNTPを作ったプログラマーがいました。また、NTPの「リファレンス実装」(refarence implementations:プロトコルの実行方法を示すオープンソースのコードベース)を作成し、ユーザーが自由に適用できるようにしたプログラマーもいました。やがて国立標準技術研究所(National Institute of Standards and Technology、略号NIST)や米国海軍天文台(U.S. Naval Observatory)などの政府機関が、NTPを使ってマスタークロックの時刻を配信し始めました。

 NTPサーバーは、世界のいたるところでさまざまな者によって立ち上げられています。それらはすべて連携していてNPTのプロトコルに従って時刻の同期に関与している形になっています。2000年には、あるNTPサーバーは数百万台のコンピュータから180億回の時刻同期要求を受けていました。その後数年の間にブロードバンドの普及とともに、最も稼働率の高いNTPサーバーへの時刻同期要求回数はその10倍にもなりました。ミルズが2003年に発表した論文に記しています、「NTPサーバーは、かつては米国とヨーロッパにあるものは稼働率が非常に高く、南米、アフリカ、環太平洋地域では稼働率は高くありませんでした。今日では、どの地域に設置されたNTPサーバーも非常に稼働率が高くなっています。低いところはありません。」と。世界中のプログラマーが、NPTプロトコルが存在していることを前提にコーディングするようになりました。彼らにとって、時刻の同期が確実で簡単にできることは当然のこととなっています。ミルズが独自に開発したプロトコルが、世界中で使われているのです。

 NTPの仕組みは、タイムスタンプ付きの小さなメッセージを、コンピューターが階層的に上位のタイムチェック・デバイスに送信するよう指示することで機能しています。その階層の最上位にあるサーバーは、協定世界時(Coördinated Universal Time)と厳密に同期している高精度時計に密接に接続されています。そして、その時刻が、階層から階層へと下っていき、最下層にあるノートパソコンなどの端末にまで伝わっていきます。時刻をチェックするメッセージが送信され、受信され、返信され、元の送信者によって再び受信されるまでの経過時間を、NPTプロトコルは追跡しています。その間、「ポップコーン・スパイク・サプレッサー(popcorn spike suppressor)」や「ハフン・パフ・フィルター(huff-n’-puff filter)」といったアルゴリズムがデータを分析し、ファルスティッカー(falseticker:誤っている時刻)とトゥルーチャイマー(truechimer:信頼できる時刻)を識別し、タイムスタンプ付きメッセージに基づいて時刻合わせをするよう全ての時計に指示を出しています。

 エンジニアリングの世界では、完璧を求めるのは簡単ではありません。ミルズのもとには、NTPの不具合に対する苦情が寄せられることもありましたし、対応策や改善案も次々と寄せられました。前代未聞の問題もたびたび発生しました。NTPを自分のデバイスに組み込んだハードウェア設計者の中には、その設定が不適切だったために、ウィスコンシンやデンマークなどにあるNTPサーバーに迷惑なほど大量のメッセージを送信してしまった者もいました。それは設定ミスだったわけですが、NTPのプロトコル自体に問題があると考えたプログラマーも少なからずいたようです。ミルズは言いました、「心外でした。というのは、私の作ったプロトコルが混乱を引き起こしているという誤った認識をしている人がいたからです。」と。ミルズと何人かの研究者で、不必要なほど頻繁に時刻同期要求がなされる問題を解決すべく、対応策を考え出しました。”kiss-o’-death” パケット(packet)が送信され余計なクエリが少なくなるようにコーディングしたりしたのです。それで問題は解決したわけですが、NTPのプロトコルの改良に関与している者の中には、ミルズの強引なやり方に腹を立てている人もいました。中には、ミルズのコーディングはおかしいという意見もありました。ミルズは、その時期には批判を気にはしていませんでしたが、少しは落ち込んでいました。

 ソフトウェア開発者のエリック・S・レイモンド(Eric S. Raymond)は、2000年に書いた論文で、オープンソース・コーディングにおいて特定の人物に頼ってしまった場合に弊害が起こりがちであることを示す例として、「慈悲深い独裁者(benevolent dictator)」と呼ばれる事象について記していました。例として挙げられていたのは、さまざまな人が考えた改良のための提案が1人の決定者にのみ届く場合でした。まさしくミルズが該当するわけですが、さまざまな提案を受けたミルズは、開かれた心の持ち主で情熱的な人物であると同時に、頑固なところもあり人を見下したような態度をとることもありました。ミルズは2005年にNTPのメーリングリストに宛てた電子メールに記していました。「私は、多くの人からちょっと頑固者だと思われていました。しかし、同時に、NPTのプロトコルの根幹に関わることを本当に理解できていたのは、その頑固者1人だけだったんです。」と主張していました。

 デンマークのNTPサーバーを運営していた開発者のポールヘニング・カンプ(Poul-Henning Kamp)が私に言ったのですが、ミルズはNTPの核心的でない要素への改善提案は歓迎する一方で、提案者がNTPプロトコルの重要な時刻同期アルゴリズムの核心部分に関する提案をすると剥き出しの敵意を示したそうです。1990年代後半にカンプが初めてNTPの小さなコミュニティーに参加した時、ミルズは「陽気な妖精で、多くの知恵と面白い話をたくさん持っている」人物のように思えたと言っています。しかし、カンプは、ミルズに対して疲労感や苛立ちを感じている人が少なからずいることも理解しました。カンプは言いました、「デイブ(ミルズのこと)と一緒に何かをすることには、とても困難が伴いました。」と。カンプがミルズと一緒に居て困ったことが実際にあったそうです。プロトコルに何か問題が発生したのですが、ミルズはその際にその問題を解決するパッチを作るだけでは納得せず、全てのケースで問題が無いことを証明する数学的な分析を求めてきたそうです。改善提案をしてくる者に、これほどの厳密さを求める「慈悲深い独裁者」は、他にはいないかもしれません。そうした状況でしたので、NTPのプロトコルの根幹を理解し、どのように機能するかを完全に理解した者は、ほとんどいませんでした。ミルズは、自分に非があるとは認識していないのかもしれません。彼は、当時の状況を振り返って言いました、「私自身は完全にNPTプロトコルをどうするべきかを十分に理解していました。しかし、複雑な内容でしたので、他の人が理解できる言語で説明しコミュニケーションをとることができなかったのです。」と。