[この記事は Seth Thompson、プロダクト マネージャーおよび ECMAScript ESsayist(ES エッセイスト)による Chromium Blog の記事 "ES6 & ES7 in the browser" を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。]

JavaScript は進化し続けるプログラミング言語で、ブラウザ ベンダー、デベロッパー、コミュニティ メンバーからなる委員会によって時間をかけて標準化されています。ここ 2 年間で、この委員会は JavaScript 史上最大のアップデートとなる ES6 と、更新頻度が年次になって初めてのアップデートとなる ES7 を発表しました。この 2 つのバージョンには合計で何百もの新機能が追加されており、デベロッパーは豊かな表現力を持つ簡潔で高速なアプリケーションを書けるようになります。V8 JavaScript チームは長い間、設計、仕様の策定、実装という作業に協力して取り組んできました。その結果、言語サポートの大きなマイルストーンとなる地点に到達しました。今日現在の Chrome Canary では、ES6 と ES7 の両方が動作するようになっています。これは、Chrome 52 ですべてのユーザーに提供される予定です。

Chromium での ES6 と ES7 のサポートによって、JavaScript デベロッパーが長らく求めていた機能が提供されます。他のプログラミング言語には標準であっても、ウェブの世界には存在しなかったもので、具体的には、一般的なプログラミング パターンを簡略化する方法、コードを書きやすくする方法、JavaScript の動作を低レベルでカスタマイズする方法などです。たとえば、クラスによってオブジェクト指向プログラムの記述が簡単になり、JavaScript のビルトイン オブジェクトを安全に拡張できるようにもなります。アロー関数デフォルト パラメータ配列関連のユーティリティ メソッドによって慣用的なプログラムが簡単に書けるようになり、プロジェクト間でボイラープレート コードのコピー & ペーストを行う必要性が少なくなります。JavaScript の非同期実行フローやネストされたコールバックを読み解くのは非常に難しいことがあります。そのため、ES6 で Promise や、イテレータとジェネレータが導入されました。これによって非同期コードがシンプルになり、制御フローの表現力が向上して、バグのないコードを簡単に書けるようになっています。高度なデベロッパーは、Proxyよく使うシンボルのような強力な機能を活用して、言語の動作がアプリケーションのニーズに適したものになるようにカスタマイズすることもできます。

ウェブサイトでこのような JavaScript の新機能をフル活用するには、複数のブラウザが最新仕様をサポートする必要があります。幸いにも、クロスブラウザのサポートはここ数か月間で急速に改善されています。すべてのモダン ブラウザの最新の開発バージョンでは、ES6 の 90% 以上がサポートされています。Polyfill やトランスパイルによって古いブラウザをサポートすることもできます。最近、<script type="module"> タグによって HTML からの JavaScript モジュールの読み込みが標準化されたことを考えると、今後、採用は拡大し続けることでしょう。Chromium は既にこの新しいタグの実装に着手しており、モジュールのサポートは近日中に提供する予定です。これによって、ES6 や ES7 のコードでウェブサイトを記述し、稼働させることがさらに簡単になります。

JavaScript 標準プロセスについてや、適切な tail call などの検討中の新機能、仕様の適合性についての技術的な詳細を知りたい方は、V8 ブログをご覧ください。最新の JavaScript 機能や継続的に行われているパフォーマンスの最適化についても報告しますので、このページも随時ご確認ください。


Posted by Eiji Kitamura - Developer Relations Team