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

4.

  つらつらとコードを書くプログラマーの間で、時々、「バスファクター(bus factor)という語が使われます。それは、あるプロジェクトが危機に瀕するまでに、何人の人がバスに轢かれなければならないかということを意味しています。NTP、より広い意味で言うとインターネット上の時刻同期の問題に関して、バスファクターが何人であるかは明確には分かりません。特に、現在はグーグル社のような企業が、NTPから着想を得た独自のプログラムを開発していますので、なおさらです。しかし、NTPのバスファクターは非常に少人数であると言うのが妥当なようです。エグバールは著書「Working in Public(未邦訳)」の中で、コーディングとは「個々人に付随した知識」と表現しているのですが、NTP関連で言うと、そうした知識を持っている人はごくわずかしか居ないのです。ステンは、長い間、NTPのコードを大幅に変更することには抵抗があったと言っていました。大幅な変更をするということで、NPTがミルズが元々意図したものと大きく乖離してしまうような気がしたからです。ミルズは現在84歳で、記憶力は衰えていませんが不安定なところもあります。キッチンのイスに座って彼は私に言いました、「私の脳は加齢とともに衰えつつある。」と。

 NTPの完全な新バージョンは、2010年に発行された第4版以降はリリースされていません。現在、インターネットの主要な標準化団体であるインターネット・エンジニアリング・タスクフォース(Internet Engineering Task ForceI:略号IETF)では20人の人員を投入して、第5版のリリースに向けて作業を行っています。第5版は、現在存在するものから劇的な変更が加えられている可能性があります。数十年前にIETFが設立された時、ミルズは初期の時刻同期に関する作業部会で議長を務めていました。ですので、IETFには、今でも彼の影響が残っています。しかし、NTP関連のコミュニティにおける彼の役割と影響力は弱まりつつあるようです。2020年の秋にミルズは第5版の開発に取り組んでいるチームに電子メールでアドバイスを送りました。しかし、何カ月経っても返信はありませんでした。しかし、彼は驚きませんでした。ミルズは言いました、「私は既に過去の人間だと思われているようですね。私が教授だった頃、20代の頃の話になりますが、学生たちは友人のような感じで私と接していました。次の20年間では、学生たちは私を父親のように感じていたと思います。とはいえ、少し疎まれている部分もあったかもしれません。さらに次の20年では、耄碌したジジイ扱いされることもあり、無視されることさえありました。」と。 ステンは第5版の開発チームの中で、ミルズの意をできるだけ汲むべく行動しようとしたのですが、そのために時々不快な思いをすることもありました。ある時、ミルズがまだ目を通していない提案についての賛否を問われた時、ステンはミルズの利益に反するからとして賛成しませんでした。しかし、1人のメンバーから「あなたはミルズ教授の権威を笠に着ている。」と非難されました。さらにそのメンバーは、「あなたの考えは必ずしもミルズ教授と一致しているわけでもありませんし、あなたの主張をミルズ教授の主張と認めることもできません。」と続けました。

 NTPの第5版を作っているチームは、意思決定の際にチームメンバー全員で納得するまで討議をすることを重視しています。しかし、ステンは、ミルズと同じようにコミュニケーションスキルが乏しく、社交的でもなく、説得することに熱心なわけでもありません。ステンは言いました、「私の目標は、最高品質の時刻同期のプロトコルを構築することです。ちんたら討議をして皆の同意を得ることではないのです。」と。ステンは、自分の時刻同期に関する見識はミルズの水準と同等ではないと主張しながらも、何十年にもわたって研究してきた経験から、プロトコルの詳細や構造、そして人々が実際にどのようにそれを利用する(時として誤用する)のかについて、独自の見識を持つようになったと信じています。しかし、チームのメンバーの中には、ステンの見識に懐疑的な人物も少なからずいるようです。ステンが何十年もかけて維持してきたコードを、NTPの唯一の参照実装と見なすべきではないと考える者もいるようです。そのチームの多くのメンバーが、チームが第5版をリリースする際に自分のアイデアが少しでも反映されることを望んでいます。もっとNTPをモジュール化して柔軟にし、もっと頻繁に改良できるようにすべきだという意見も少なくありません。チームのメンバーの誰もがミルズへの尊敬の念を抱いているのは間違いないのですが、彼が作ったものが本当に最適のものだったのか、という懐疑の念も皆無ではありません。チームの1人が言っていました、「ミルズが書いたコードの中には、『魔法のコード』があり、かつてはそれを改変してはいけないという不文律が存在していました。ミルズは『それを変更すると世界が崩壊する 』と主張していたような記憶があります。」と。

 NTPのコーディングに関与する者の数が多くなってより大きなコミュニティとなることは、メリットが大きいのか、それともデメリットのほうが大きいのかということは良く分かりません。他のオープンソースシステムのコーディングも含めて当てはまることなのですが、これほど特定のオープンソースシステムのコミュニティが大きくなることは、これまで全く無かったのです。ステンは、第5版の行く末に確信が持てないので、第4版のままで改善を加えていくほうが得策だと主張しています。一方、第5版の主要な骨格部分は、NTPの競合となるクロニー(Chrony)をコーディングした天才チェコ人プログラマーのミロスラフ・リフヴァルがコーディングしています。NTPのコミュニティの中でも、リフヴァルのことをよく知る者は少なく、関係者の1人は、彼のことを「非常に物静かで、誰も彼のことを知らない。」と評していました。

 リフヴァルがNTPに関わるようになったのは、15年ほど前のことで、オープンソースのソフトウェアを開発しているレッドハット社(Red Hat:IBMの子会社)のNTPパッケージの保守を引き受けたのがきっかけでした。彼は、直ぐにミルズにいくつかの修正提案と改善策を送信しました。しかし、いずれも却下されました。彼は私に言いました、「あれはガッカリしました。ミルズは当時の状況に満足していたようで、大きな変更を加えることに興味がないようでした。」と。リフヴァルは、クロニー(Chrony)のコーディングに何年も関わったわけですが、その中でミルズの残した功績を再認識するようになったのですが、同時に、新たな時刻同期アルゴリズムを一から作った方がより有効に機能するに違いない確信しつつありました。リフヴァルが感じていたのは、NTPは特定の時刻同期アルゴリズムを使わなければならないという縛り無しで運用すべきであるということです。彼は言いました、「クロニー(Chrony)はさまざまなアルゴリズムを持っており、ほとんどの条件下でより効果的に機能すると思います。しかし、私はそれを使うことを強制したいとは思いません。もっと優れたアルゴリズムが実装されている可能性があるわけで、その時はそれを使ってもらうべきだと考えます。」と。ステンを含む複数の者が、リフヴァルはIETFの第5版開発チームで最も尊敬されている人物だと言っていました。しかし、リフヴァルはそのチームはリーダー的存在がいない組織であると言っていました。彼は、「このチームは、無作為に選ばれた者たちの集まりで、通常はなかなか合意に達することができない組織である。」と言っていました。

 インターネット上の時刻同期アルゴリズムは、厳密にテストされたもので、何十年も使い続けられてきたもので、しかもちょっと難解で、コードの記述が膨大なものでなければならないのでしょうか?。それとも、より軽快で、何がベストであるかという意見を一致させることもできない者を寄せ集めたチームが設計した衒学的でないアルゴリズムにすべきなのでしょうか?それに対する、正解は無いようです。というのは、オープンソースのコーディングをする者は、企業やシステム管理者が何を選んで導入するかについて、強制力を持っていません。(実際、ステンによれば、多くのインターネットは、1992年に発表されたNTPの第3版をまだ利用しているそうです)。どれか1つに絞って統一するということは、生半可なことではできなさそうです。一方、現在、時刻同期システムは新たな用途で使われることが多くなっており、さらなる技術革新が求められています。2000年初頭に発表されたプレシジョン・タイム・プロトコル(Precision Time Protocol:略号PTP、コンピュータネットワーク全体でクロックを同期させるために使用される通信プロトコル)は、主にロボットを導入した自動工場のために設計されたもので、ネットワークで緊密に機器類を繋げた環境下で常に時刻同期ができるようにするためのものでした。それが、今では金融取引システムでも時刻同期システムを日常的に使用するようになりました。数年にわたる研究開発の末、2019年にIETFはネットワーク・タイム・セキュリティ(Network Time Security)という基準を発表しました。これは、NTPに機能を追加するもので、より安全性を増すことを目的としたメカニズムでした。時刻同期は、インターネットの暗号化インフラストラクチャの根底にあるもので、安全性が常に担保されていなければならないのです。いわゆる、モノのインターネット(Internet of Things)の拡大により、時刻同期の重要性はますます高まっています。ボストン大学教授でコンピューター科学者で、Network Time Securityの取り組みに携わったシャロン・ゴールドバーグ(Sharon Goldberg)は、時刻同期には暗号通貨のような話題性が必要だと考えているそうです。理想的なのは何の問題も発生せず論争が巻き起こらないことなのですが、あまりにも関心を持たれることが少なすぎると嘆いていました。彼女が言っていたのですが、時刻同期のためのコーディングをしている人たちはもっと称賛されるべきです。コンピューターを使う人は誰でもその恩恵を受けているのですから。しかし、残念なことに、ミルズの名前を知っている者はほとんどいません。ビットコインの開発者の仮名を知っている人が多いのと比べると驚きです。

 現在、ミルズはビッグバンやエジプト、ギリシャ、ローマ、イギリス、ユダヤ、ソ連の歴史に関する本や論文に耳を傾け、子供たちと過ごし、妻と一緒にテレビを聴き、ラジオを聴いて楽しんでいます。数カ月毎にステンはミルズに電話して、NTPに関する件で話し合ったりしています。ミルズは、加齢による衰えを痛切に感じるようになりました。歩くたびにつまずきそうになります。先日、私はミルズと電話で話したのですが、「老いぼれ指数(geezer quotient)」が気になると言っていました。彼は、数学的な発想や表現が難しくなりつつあります。彼は言っていました、「文章の意味を読み取るのに精一杯ですよ。」と。

 それでも、彼は1日に2時間ほどNTPの骨格を作り直すための論文を書いています。彼の目的は、NTP の基本モデルを改訂および改善し、単純化することです。今日のプログラミング文化は、驚くほど拡張主義的です。ミルズが感じているのは、最近のコードを書くプログラマーたちは、機能を追加したり、セキュリティを向上させたり、余計なことをやりたがる傾向があるということです。そもそも当初はプロトコルに期待されていなかった機能を後になって付け加えていくことは、良いことなのか否かと考えることが多くなったそうです。ミルズは、書いている最中の論文の編集を手伝ってくれる人が見つからないかもしれないと考えています。彼は、ステンは例のチームに加わったままで業務に忙殺されているのでNTPの基本原則を再考する論文を書くのを手伝うことができないのではないかと懸念しています。同時に、NTPに関与している者たちのほとんどがこの論文を読んでくれないのではないかという懸念も持っています。彼は、「この論文も無視されると思う。」と言いました。私は、読まれない論文を書き続ける理由は何かと聞いてみました。すると彼は言いました、「理由があるかって?ありますよ。私は自分の作ったものを改善し続けることが好きなんです。」と。♦

以上