Glimmerレンダリングエンジンを備えたEmber.js 1.13が,2.0ベータ版とともにリリース

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-ingetヘルパの導入などの新機能も含まれている。前者は”オブジェクトプロパティのイテレーションを実行する“もので,後者の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.132.0それぞれの変更ログを参照してほしい。

Ember.jsはMITライセンスでリリースされている。InfoQの読者は,GitHubプロジェクト経由でEmber.jsにコントリビュート可能だ。