Ember.jsチームは今週,JavaScriptフレームワークのバージョン1.6をリリースした。AMDローダを追加したことによって,予定より遅れてのリリースとなった。
コアチームのメンバであるRobert Jackson氏は公式発表の中で,1.6+ビルドがes6-module-transpilerによって,AMDにトランスパイル(transpile)される方法について説明している。トランスパイルされたモジュールを扱う小さなAMDローダを追加したことにより,旧型のモバイルクライアントでの起動スピードにパフォーマンス的な影響があったということだ。氏によれば,(訳注:トランスパイル - ある言語から他言語へのコンパイル処理)
このリグレッションに気付いたのが1.6.0の出荷直前(5月下旬)であったので,修正が完了するまでリリースを延期する決定をしました。
今になって思えば,これはまったく間違った決定でした。修正には当初の予想よりもはるかに時間が掛かり,その間,ユーザを1.5.1に留まらせることになってしまいました。ユーザの大多数にとって,このリグレッションは影響しないか,あるいは気にならないものであったにも関わらず,すでに完了したバグフィックス用のベータ版,あるいはカナリアチャネルを使用せざるを得ない状況です。
ユーザのXtian氏はこの発表に対して,“最初の部分がよく分からないのですが。ブートパフォーマンスのリグレッションは解決されたのでしょうか,それとも未解決なのですか?” と質問している。
Jackson氏の返答は,“まだフィックスしていません。完了次第,1.7ベータブランチにバックポートする予定です。” というものだった。
チームメンバのStefan Penner氏が詳しく説明している。
フィックスの内容は,Brian Donovan氏による,square/es6-module-transpiler用の新しいバンドルフォーマットです。AMDローダを完全に取り除くため,ビルド全体も小さくなりますし,このブロックが改善されることで,Emberのコア内にある無効なサイクルも削除されます。
ちなみにこのブートの問題は,デスクトップブラウザではそれほど問題ではなく,Androidブラウザで遅延が大きくなっているようです。
しかしながら,この起動時間の遅延に付いて,バージョン1.6の新機能と1.7の予定で盛り上がっていたEmberのコミュニティはほとんど気が付いていなかった。
最新リリースで注目に値する変更点としては,Ember.computed.emptyのアップデート,キャッシュ参照スループットの向上,テスト性の向上したpromise,多数のバグフィックスなどがある。Jackson氏によると,Ember.computed.emptyがアップデートされたことで,依存キーとしてarray.[]の使用を強制されることなく,自動的に配列を認識できるようになったということだ。
promiseのテスト性の向上については,次のような説明がある。
1.5.1では,テストの実施中,Ember.runループ内のPromiseのresolveあるいはrejectコールをラップする必要がありましたが,通常の操作では,同じコードでもrunループ内でのラップの必要はありませんでした。1.6では,単なるテスト目的で,このようなrunループ内のラッピングを行う必要はありません。
1.6リリースの発表と合わせて,バージョン1.7のベータ版がリリースされた。1.7ではクエリパラメータがサポートされ,デフォルトで有効になっている。この発表は,コミュニティのユーザから暖かく迎えられた。NetNamesのソフトウェアエンジニアであるAdrian Meredith氏は,次のようにコメントしている。
最新のクエリパラメータを使ってアプリケーションを更新しましたが,(必要な変更を行った上でですが,)ちゃんと動きました!1ヶ月ほど前にカナリアバージョンを使用したときよりも,ずっとよくなっています。 素晴らしいですね。
その他Ember 1.7では,次のような改善点がある。
- ember-routing-consistent-resources
- uuidがプロジェクト全体で一貫して使用されるようになった。
- Ember.uuidがEmber自身のプロパティから内部関数に変更された。
Ember.jsはMITライセンスでリリースされている。InfoQの読者は,GitHubプロジェクト経由でEmber.jsにコントリビュート可能だ。バージョン1.7はスケジュール通りのリリースが予定されている。