Exploring ES6: 書籍紹介と著者インタビュー

Axel Rauschmayer氏の“Exploring ES6”は,JavaScriptの最新機能を詳細に調査した書籍である。この記事では,著者との簡単なインタビューを紹介する。

Axel Rauschmayer博士の著書“Exploring ES6: Upgrade to the next version of JavaScript”は,ECMAScript 2015で導入された新機能をコードサンプル付きで紹介した,総合的なガイドだ。読者は前提としてJavaScriptに精通しているか,あるいはES5までを対象とした別著“Speaking JavaScript”を学習してJavaScrptを短期間に習得することを,著者は期待している。

Exploring ES6”は,JavaScriptの簡単な歴史の紹介から始まって,標準化団体による活動,設計のプロセス,そして現在の目標である言語としてのJavaScriptの改善,以前のバージョンとの互換性向上などが説明されている。その中で著者は,Ecmaが“Webの損傷”を回避するため,JavaSrciptの完全な後方互換性を確保する決定を続けてきたこと,関連するすべてのパーティに対して,旧コードが実行可能なように要請していること,以前の機能と競合しないように新機能を導入していること,などを紹介する。さらにはES6からES5へのトランスパイル(コンパイル)やパッケージ管理,モジュール管理,linter,shim,polyfill,パーザ,REPLといった重要なJavaScriptツールを取り上げている。

一通りの説明を終えた後にRauschmayer博士は,ES6の新機能を紹介する。機能の簡単な説明に続いて,コードサンプルや各機能の詳細,時にはEcmaがその機能を言語設計に選択した理由なども含まれている。これら機能の中には,すでにクラスやモジュールの形でライブラリとして提供されていたものもあるが,その他の機能,具体的にはPromiseやGenerator,Proxyなどは完全な新機能だ。ここで著者が取り上げている機能は(すべてではない),次のようなものだ。

  • データ: 数値リテラル,数学メソッド,文字列メソッド,テンプレートリテラル,シンボル,スコープ,非構造化(destructuring)
  • モジュール性: アロー関数,クラス,モジュール
  • コレクション: 新しい配列機能,マップ,セット,ジェネレータ
  • その他: 非同期プログラミング,ユニコード,プロキシ

書籍では最後に,多数のコードスタイルティップスを紹介している – const, let, あるいはアロー関数をいつ使うのか,デフォルトのエクスポートと名前付きエクスポートの混用を避けるには,ジェネレータのフォーマッティング,クラス利用の勧め,といったものだ。

私たちは著者にインタビューして,関連するトピックに対する意見を聞くことにした。

InfoQ: 主要なJavaSciptエージェントが実装を完了しているES5に対して,ES6の全機能を実装したエージェントはまだありません。あるエージェントが実装した機能を,別のエージェントが実装していないという状況です。すべての主要エージェントが実装している機能が何もない状況で,Web開発者は何を前提としてES6を使えばいいのでしょう?推奨できる方法はありますか?

AR: ECMAScript 6を完全にサポートする最初のJavaScriptエンジンは,2016年まで待たなくてはならないかも知れません。それまでは,ES6をES5にコンパイルして,そのコードをデプロイするというのが,唯一の現実的な方法でしょう。2016年になれば,それぞれのエンジンでES6(あるいは使用している機能)をサポートしているか確認した上で,コードのネイティブバージョンか,あるいはコンパイルしたES5バージョンをロードすることが可能になります。

InfoQ: ES5の過去の採用を前提として考えた場合,主要なブラウザでES6が完全にサポートされるまでの,合理的なタイムラインはどのようなものでしょう?1年,2年,あるいは5年でしょうか?

AR: MicrosoftやAppleのアジェンダが分からないので,答えるのは難しいですね。Microsoftはいくつかのコア項目について,“status.modern.ie”では,まだ“検討中”としていますし,Appleはいつでも少し不可解な行動を取りますから。ですが,MozillaとGoogleについては,2015年末と2016年初めのES6完全サポートに向かって,それぞれが開発を進めています。

InfoQ: One JavaScriptについてはどうでしょう?よりクリーンな言語が期待できるという意味で,バージョン管理を行うよりもWebにとって好都合なのでしょうか?

AR: “One JavaScript”は,ES6のバージョン管理を回避するためのアプローチで,David Hermanが名付けました。基本的にES6は,ES5のスーパーセットという位置付けです。つまり,ES6には100%の下位互換性があるので,JavaScriptをES5(以前)とES6(以降)にフォークする必要はない,という意味です。結果的にエンジンはよりシンプルになりますし,ES5コードをES6ベースに移行することも – すでにES6として有効ですから – 簡単です。One JavaScriptの唯一の欠点は,言語をクリーンアップするという観点で制限を受けることです。機能を加えることはできても,削除することはできないのです。

InfoQ: ES6に望んでいた機能で,まだ存在していないものはありますか?あるいは,違う方法での標準化を希望していたものは?

AR: ES6は十分に大規模です。 私だったらクラスをもう少し違う方法で実現していたと思いますが,ES6にクラスがあることで満足しています。もう少し長期的に言うなら,トレイト(あるいはミックスイン)と,もっと包括的な標準ライブラリ(特に反復可能オブジェクトに関する使い勝手)が欲しいところですね。

InfoQ: いくつかの章に“未完了”というマークが付けられていますが,それらを完成させるためのロードマップはありますか?

AR: 重要と思う部分に関しては,すべて完了しています。今後数ヶ月で,残りについても仕上げたいと思っています。

Exploring ES6は,HTML版については無償で,PDF/ePub/MOBIは希望価格で提供されている。

ES6は本日,Ecma Internationalによって票決されている。詳細はInfoQの記事 “EMCAScript 2015は承認された”を参照して欲しい。