8. 第 1 回 TC39 会合

TC39 の第 1 回会合 (組織会合) は 1996 年 11 月 21–22 日にカリフォルニア州マウンテンビューの Netscape オフィスで開かれた。議事録 [TC39 1996] には 30 人の参加者が記録されている (図 11)。会合は Ecma を代表する Jan van den Beld と Netscape コアテクノロジ部門のバイスプレジデント David Stryker からの歓迎挨拶から始まった。Stryker は、委員会が現在使われている実装からの乖離が最小限の仕様を作成し、それ以上の言語拡張は将来に回すことを望むという意見を表明した。

仮議長 Mr. J. van den Beld
書記 Mr. J. van den Beld (SG ECMA)
参加者 Mr. Cargill (Netscape), Ms. Converse (Netscape), Mr. Eich (Netscape), Mr. Fisher (NIST), Mr. Gardner (Borland), Mr. Krull (Borland), Mr. Ksar (HP), Mr. Lenkov (HP), Mr. Lie (W3C), Mr. Luu (Mainsoft), Mr. Mathis (Pithecanthropus, JTC1/SC22), Mr. Matzke (Apple), Mr. Murarka (Spyglass), Ms. Nguyen (Netscape), Mr. Noorda (Nombas), Mr. Palay (Silicon Graphics), Mr. Reardon (Microsoft), Mr. Robinson (Sun), Mr. Singer (IBM), Mr. Smilonich (Unysis), Mr. Smith (Digital), Mr. Stryker (Netscape), Ms. Thompson (Unisys), Mr. Urquhart (Sun), Mr. Veale (Borland), Mr. Welland (Microsoft), Mr. White (AAC Group, Microsoft), Mr. Willingmyre (GTW Associates, Microsoft), Mr. Wiltamuth (Microsoft)
欠席者 Mr. Huffadine (Callscan)
図 11. 第 1 回 TC39 会合の参加者 ── 会合議事録 [TC39 1996] より。

Microsoft の Internet Explorer 開発チームのリーダー Thomas Reardon から、「二度手間を避ける」ために、この委員会では HTML オブジェクトモデルに対する組み込みライブラリに関しては議論しないようにして、この部分は W3C に回すべきだという提言があり、委員会はこの提言を受理した。これは初期の TC39 が成功する上で非常に重要だった。Netscape と Microsoft のコア言語機能は非常に似ていたのに対して、HTML の API は大きく異なっていたためである。TC39 がプラットフォームやホストから独立した規格だけを策定することを決定した判断は、現在まで続く TC39 の中心的な運営指針の一つとなった。Reardon は JScript を完全な Netscape 互換にするまでに Microsoft が経験した苦労を語り、言語仕様の定式化の必要性を強調した。しかし彼は、作成される仕様は競争し合う実装が価値を加えられるだけの余白を持つべきだとも主張した。

提案された議題には新しい Ecma 技術委員会を設立して標準言語仕様のドラフト作成に取り掛かるのに必要な組織的活動の他にも、Netscape, Sun, Microsoft, Nombas Inc. からの技術プレゼンテーションが含まれていた。しかし Sun は会合で見せたいものが無いとのことだったので、Borland International によるプレゼンテーションが議題に追加された。

会合の最初に、Netscape と Borland の両社が技術仕様のドラフトを配布した。Microsoft は配布しなかった。Thomas Reardon が Microsoft のプレゼンテーションを始めたとき、彼は Microsoft も参考仕様を作成したと言って文書を手に取り、ただ今日までにコピーする時間が無かったので明日までにはコピーしておくと述べた。そのため Microsoft による技術プレゼンテーションは会合の二日目に延期された。

Brendan Eich は出席していたものの、Netscape の技術プレゼンテーションは Anh Nguyen が行った。Eich と C. Rand McKinny が執筆した JavaScript 1.1 に対する JavaScript Language Specification の素案 [1996] が紹介された。この文書は標準化の取り組みで使う基礎文書として Netscape から Ecma に提供される。Nguyen は Netscape Navigator 3 に含まれる JavaScript 1.1 と Netscape 2 に含まれる初期バージョンの JavaScript には異なる点がいくつかあることを説明した。Netscape が作成したその仕様では言語の構文の記述に ANCI C の言語規格 [ANSI X3 1989] で使われるものに似た BNF 記法が使われる。また意味論の定義では形式的でない散文が使われ、言語の型強制規則は表を使った定式化で記述される。

Borland は JavaScript と JavaScript IDE のサーバー実装を作成していた [Lazar 1997]。Borland のプレゼンテーションは自社の実装で追加した言語拡張や追加予定の言語拡張に関する話題が中心だった [Borland International 1996]。主な言語拡張としてはクラスの定義、try/catch/finally による例外処理、C 風の switch 文、ファーストクラスの値として扱われるコードブロック、そして組み込みライブラリの拡充 (I/O 機能など) があった。さらに Borland は Netscape の実装との互換性を達成する上での困難についても説明し、相互運用可能な実装のためにより形式的な仕様が必要だと述べた。

Nombas Inc. の Brent Noorda はスクリプト言語としてマーケティングされた Cmm (「C マイナスマイナス」) という製品における経験を紹介した。Cmm の表層構文と一部の意味論は JavaScript 1.0 によく似ており、Nombas はその後 Cmm の実装を組み込みアプリケーション向け ECMAScript 実装に進化させた [Noorda 2012]。

会合の初日が休会したとき、Microsoft の Robert Welland にはすべきことがあった [Walland et al. 2018, +8:30]。Thomas Reardon が「参考仕様をコピーする時間がなかったので、明日配布する」と言ったのは、Welland が Microsoft の仕様に取り組む時間を稼ぐための引き延ばし戦術だった。会合のために仕様文書を作成するタスクは Microsoft のとあるテクニカルライターに割り当てられていたのだが、会合に出発する直前に渡された仕様文書を Welland が確認すると、それは言語の参考仕様としてさえ不十分な出来だった。そのため Welland はそれを委員会に提出したいとは思わなかった。しかし会合が始まる前に Netscape の文書を確認すると、それも不十分な出来に思え、その文書が規格作成における唯一の基礎文書になるのは避けたいと彼は考えた。そこで Welland と Reardon は会合二日目の冒頭までに改善された文書を準備できると見込んで提出を一日遅らせたのである。

会合の一日目が終わると、Robert Welland は Walter Smith の家に向かった。Smith は NewtonScript を開発していたときの Welland の同僚であり、当時は Microsoft に勤めていたものの、まだベイエリアに住んでいた。二人は徹夜で Microsoft の文書を JavaScript 言語の中心部の参考仕様としてもっともらしくする作業に取り組んだ。彼らの仕様も多くの部分が ANSI C 規格を真似て書かれ、型強制規則は表を使って説明された。しかし Welland は他の部分の意味論をより形式的に規定することを望んだ。彼は LISP 1.5 Programmer's Manual [McCarthy and Levin 1965] で Lisp インタープリタの意味論を記述するときに利用された、構文を示した直後に構文の評価方法を詳細に説明するというスタイルを覚えていた [Welland et al. 2018, +10:10]。この文書では意味論が疑似コードを使って示されることもあった1。Welland はこれと似たスタイルを採用し、JavaScript の評価意味論を番号の付いたステップからなる疑似コードで記述した。

Welland と Smith は当時の JScript 実装に基づいて文書に意味論を追加した。はっきりしない箇所が見つかったときは自分たちの Self と NewtonScript での経験を思い出し、その視点から考えて意味の通る意味論を採用した。この文書には Array のオブジェクト図が含まれており、これはプロパティ継承をモデル化する方法が Self に非常に良く似ている。文書は次の日の朝までに標準化のスタート地点として提出できるだけのクオリティを持つと彼らが納得できるまでになった。彼らはコピーを取り、会合二日目の冒頭で Welland がそれを配布した。この文書が The JScript Language Specification, Version 0.1 [Welland et al. 1996] であり、Ecma の活動に対して Microsoft が提供した基礎文書となった。

Robert Welland がプレゼンテーションを行ったとき、会合の参加者が彼の文書を気に入り、相互運用可能な実装を保証するにはより形式的な仕様が必要であるという合意が得られたことに彼は良い意味で驚いた。しかしもう一つのコンセンサスは、現時点でどんなものかが分からない仕様の形式的な執筆手法を決めるのに時間をかけることはせず、Netscape, Microsoft, Borland から提供された文書を組み合わせて規格の第 1 ドラフトを作成し、そうしてからドラフトを完全で正確なものにしていくことだった。委員会は最初の一歩として、最初のバージョンの規格で解決すべき問題および明確にすべき点のリスト [補遺 G] を作成した。基礎文書の提案が二つ提出されたので、委員会は文書を一つ選択してから編集を始める必要があった。Netscape の文書は FrameMaker を使って執筆されており、Microsoft の文書は Word を使って執筆されていた。Ecma の代表者は Ecma 内部の編集プロセスでは Word が使われているので、と説明し、Welland にとって意外なことに、委員会は Microsoft が提供した文書を基礎文書として利用することに合意した。

議長 Mr. G. Robinson (Sun)
副議長 Mr. C. Cargill (Netscape)
副議長 Mr. S. Wiltamuth (Microsoft)
編集主任 Mr. M. Gardner (Borland) (予定)
編集補助 Mr. A. Murarka (Spyglass) (予定)
図 12. 第 1 回 TC39 会合で選出された役員 [TC39 1996]

委員会は役員を選出 (図 12) し、1997 年 1 月の次回会合までの第 1 ドラフトの完成と 1997 年 4 月までの最終ドラフトの完成、そして 1997 年 6 月の Ecma 総会における規格の承認を目指すという非常に意欲的な目標を立てた。委員会は以降の会合を約六週間ごとに開催するスケジュールを立て、プライベートなメーリングリストと ftp サーバーを設置するための手続きを開始した2

TC39 の第 2 回会合 [1997e] は 1997 年 1 月 14–15 日に開催された。参加者は Ecma 会員ではない 5 人のゲストを含む 22 人だった。Jan van den Beld は TC39 の設立が Ecma 総会で承認されたことを発表した。また彼は TC39 が会員と参加者に関する Ecma の規則に可能な限り早く従う必要があると強調した。Ecma 規格の作成に関わる人物は Ecma の会員である組織の代表でなくてはならない規則がある。

会合の技術的な内容は主に規格の第 1 ドラフト [TC39 1997c] に対するレビューと議論だった。Borland の Michael Gardner と Randy Solton が Netscape, Microsoft, Borland から提供された文書を組み合わせることで第 1 ドラフトを作成していた。Spyglass は Ecma の会員ではなかったので、Anup Murarka は第 1 ドラフトの作成に参加していない。三つの実装全てに共通する機能に議論は必要ないとされ、実装が食い違う部分には調整が必要ということになった。

各実装に特有な機能は補遺の「Proposed Extensions」にまとめられている。TC39 は言語拡張の扱いを議論し、当時の実装に共通する中心的な機能を言語拡張より優先することで合意した。また既存のアプリケーションに変更が必要になるような変更を規格に盛り込まないことに関しても合意があった。これは最終的に将来の規格改訂で大きな意味を持つ設計指針となる。

タイトなスケジュールに間に合わせるために、TC39 はアドホックな技術的ワーキンググループを設立した。このグループは仕様に欠けている記述の追加や未解決になっている技術的問題の解決を編集者と共に行うために存在する。コミュニケーションは電子的に行い、週ごとに対面会合と電話会議を交互に開催することになった。報告者 (rapporteur) は Scott Wiltamuth が務めた。TC39 会合は 1 月 15 日の午前 10:30 に延期され、その日の残りはアドホックな技術的ワーキンググループのために使われた。

会合の後 Borland が Ecma に参加しないことを決定したので、Michael Gardner は編集者を続けられなくなった。Sun は Guy Steele の手を空けさせ、1997 年 1 月の後半からは彼が編集者を務めた。Steele は 1997 年 9 月に規格の第 1 版が公開されるまで編集者を続けた。


  1. Welland の念頭には McCarthy が Appendix B で PROG feature を説明するのに使ったスタイルがあった可能性がある。 ↩︎

  2. 著者らはこれらのチャンネルのアーカイブを見つけられていない。 ↩︎

関連書籍 (Amazon アソシエイト)
プロを目指す人のためのTypeScript入門 安全なコードの書き方から高度な型の使い方まで
JavaScript Primer 迷わないための入門書
JavaScript 第7版
「ものづくり」の科学史 世界を変えた《標準革命》