Googleが中心となって開発しているオープンソースのJavaScriptライブラリ「Angular」のイベント「ng-conf 2017」が、4月5日から3日間、米国ユタ州ソルトレイクシティで開催されました。

3日目の基調講演に登壇したGoogleのエンジニアディレクター Brad Green氏は、TypeScriptがGoogle社内の標準言語に採用されたことを明らかにしました。

この記事では公開されている動画から、基調講演のその部分を中心にダイジェストでまとめました。

2年掛かりでTypeScriptがGoogle社内の標準言語に

Brad Green氏。Googleには社内の標準言語（Canonical Languages）としてC/C++、Java、JavaScript、Python、Goが設定されている。

なぜかというと、もし社内のプログラミング言語が15種類もあったら、プロジェクトを変わるごとに大変な思いをすることになるからだ。この5種類に絞ることで、大規模に関連ツールなどを開発、展開し、生産性を高められる。

Angularの開発を始めたとき、JavaScriptを拡張し、クラスなどを追加した独自言語「AtScript」を使っていた。その後、マイクロソフトの協力を得てTypeScriptを採用することになった。

しかしこれはGoogleの社内でTypeScriptを使うことを意味しない。

AngularはGoogle社外のオープンソースプロジェクトであり、Googleはそれに参加しているということになるので、TypeScriptを使ってもオーケーだ、ということなのだ。

しかしTypeScriptは、Google社内のClosure Compilerを用いたJavaScriptよりもずっと効率が良い。IDEの支援もある。

そして幸いなことに、Googleには標準言語を社内に追加するための承認プロセスがある。追加したい言語を申し込むと、何ページもあるチェックリストにかけられ、その後に会議で承認される。ただし問題は、過去にこれで承認された言語はひとつもなかったことだ（笑）。

しかも会議とチェックリストのあいだを何度も往復した結果、このプロセスには2年くらいかかった。

そして晴れて、初めてTypeScriptがGoogle社内のフロントエンドにおける標準言語に承認されたことをここに報告する。（会場から拍手）

GoogleにおけるTypeScriptの利点は、読みやすく書きやすいInline types、高速なコンパイル、Decorators、Closure互換、IDEのサポート。われわれは社内でクラウドベースの独自IDEを使っているが、それ以外にも幅広くサポートされている。

静的解析可能で自動ビルドが可能、Closureからの自動変換、そして活発なコミュニティがある。

ただしまだCLIは標準言語になっていない。なぜか。

ビルドツールや最適化ツールは数多くある。しかしわれわれも独自のツールを利用している「Blaze」と「Closure」だ。

社内ツール「Blaze」のオープンソース版は「Bazel」だ。Bazelは非常に高速でスケーラブル、Googleには大規模なプロジェクトがあちこちにある。ほかにも多くのメリットがある。

そしていま、Angularチームは「Angular With Bazel and Closure」に取り組んでいる。Closureはオプティマイザーとして利用する。

これをAngular Coreからはじめて、Angular Materialプロジェクトや、アーリーアダプターに広げていくつもりだ。

※ 参考：TypeScriptが標準言語になっても、Dartのことは忘れてませんよとGoogle担当者がフォロー

※ 参考：マイクロソフトがTypeScript 2.4をリリース。動的importでモジュールの遅延ロード実現。列挙型に文字列を指定可能など

ng-conf 2017