Ember.js 1.xシリーズ最後のイテレーションとなる1.13が発表された。Ember 2.0の最初のベータ版も合わせて提供される。
Emberの共同開発者であるYehuda Katz氏は,コントリビュータのMathew Beale氏と連名で,最新バージョンのリリースをEmber.jsブログ上に発表した。今回のバージョン1.13では,“少なくとも43名のコントリビュータによる,680以上におよぶコミットの成果”であることが特に強調されている。
1.13リリースにはGlimmerレンダリングエンジンが添付されている。Ember 1.xシリーズでは3回目となるレンダリングの大幅なオーバーホールについて両氏は,効率面で粗さの目立った従来バージョンに比較すると,“共通的なシナリオの大部分において,再描画のパフォーマンスが劇的に改善されるはずだ”,と述べている。
氏らが挙げるメリットは次のようなものだ。
Glimmerでは,DOMのダイナミックな領域である仮想ツリーを利用して,差分を使った更新方法を採用しています。元々のデータ構造(例えば配列)が完全に置き換えられても,最終的にレンダリングされるコンテントが変更されるまで,DOMは更新を行いません。
ある配列を(サーバから配列を取得する,
.sort()
を使って新しい配列を生成するなどの理由で) 別の配列に更新する場合には,パフォーマンスの大幅な改善を体感すると同時に,この種の処理がEmberでは十分に実用的であると感じることができるでしょう。
さらに,Glimmerのハイブリッドモデルによって,“(set
を使った)明示的な変更が行われた場合には,必要に応じてその情報を活用することも可能”なため,データ構造全体の効率的な再描画と両立することができる。
バージョン1.13に合わせて,2.0シリーズ最初のベータ版も提供される。2.0ベータ版について氏らは,”開発モデルでの改善がすべて反映されている訳ではありませんが,その方向への重要なステップになるでしょう“,と述べている。”重要なステップ“には,each-in
やget
ヘルパの導入などの新機能も含まれている。前者は”オブジェクトプロパティのイテレーションを実行する“もので,後者のget
ヘルパは”オブジェクトから単一のプロパティを制限的に取得する手段“である。
Ember 2.0では,1.xシリーズで非推奨となっていた機能や公開APIの多くが削除されている。また,すでに報告したように,Emberコミュニティの投票での圧倒的支持を受けて,Internet Explorer 8のサポートが廃止される予定だ。
廃止されるAPIは次のようなものだ。
Ember.Handlebars.helper, Ember.Handlebars.makeBoundHelper, Ember.Handlebars.helper, Ember.Handlebars.compileなど,ハンドルバーAPIすべて
{{render "some-controller"}}, {{each item itemController="some-controller"}}
など,コントローラAPIの大部分Ember.CoreView, Ember.View, Ember.ContainerView, Ember.CollectionViewを始めとする,すべてのビューAPI
ただし,非推奨APIの多くはすでにコアサポート・アドオンに移動済であり,Deprecation Guideには明確なマイグレーションパスも用意されている。
JavaScriptコミュニティからの反応は良好だ。今回のリリースを取り上げたHacker Newsの議論では,Thomas Chen氏が次のようにコメントしている。“”
続いて氏は,不平ではない,と前置きした上で,Emberのコアチームにいくつか質問をしている。
Yehuda Katz氏はこれに答えて,“SEO専用の高速ブート”をカナリアリリースとして提供済であること,“最重要事項であるRehydration”の近日開始に向けて作業していること,などを説明した。initializer APIについて氏は,Emberチームが“いくつか前にリリースした分離形式のAPIの固執した結果”だったと説明している。また,最後の質問であるアクションバブリングの廃止については,“最初はもっと複雑な方法(サービスを逃がし弁として使う)を考えていたのですが,今は従来からの儀式的なコード記述を避けるアイデアをいくつか出しているところです。ご期待ください。(この種の問題に対処すべく,近いうちにRFCを発表するつもりです。)”
リリースの全情報については,Ember 1.13と2.0それぞれの変更ログを参照してほしい。
Ember.jsはMITライセンスでリリースされている。InfoQの読者は,GitHubプロジェクト経由でEmber.jsにコントリビュート可能だ。