Meteor Fan (日本語情報)

JavaScriptフレームワークMeteorに関していろいろ紹介する日本語情報サイト

Meteor 1.3のリリース

Meteor 1.3がリリースされました。以前から噂され、やっとでたところです。

公式ブログのアナウンス文を紹介します。

Meteor 1.3のアナウンス - ES2015モジュール、アプリテスト、モバイル改善ほか

本日(2016/3/28)、Meteor JavaScriptアプリケーションフレームワークの最新版のMeteor 1.3が発表されました。このメジャリリースの狙いは、プロダクションアプリケーションを管理し、スケールさせ、テストし、 JavaScriptの最新技術を継続的に利用していく、これらを行う開発チームをサポートすることです。これまでのアプリをアップグレードするにはMeteor updateを実行してください。もしこれからMeteorを使い始めるのであれば、Meteor install pageを参照してください。

Meteor 1.3の狙いはこれまでいくつものMeteorのリリースを使ってプロダクションアプリを開発してきた顧客からのヒアリングをもとにしたものです。アプリケーションテストのサポートへの要望はその中でもおよそ一番強く、Meteor 1.3ではユニットテストとイングレーションテストがコアでサポートされるようになりました。ユニットテストはコードがきれいに分割されている場合に有効であり、Meteor 1.3でNode標準のNPMパッケージがサポートされたのもそれが理由の一つです。モバイル開発者にとっては、Meteor 1.3によってCordovaアプリでのより堅牢なホットコードプッシュが提供されます。MeteorのLivedataシステムでは、大規模アプリをスケールさせるためのtunable queriesがサポートされます。AngularやReactとの統合も改善し、これら有名なビューレイヤーを使ったフルスタックアプリケーションを開発する簡単な方法をMeteorは提供しています。

今回はじめて、リリースに合わせてMeteor Guideも発表します。このガイドはMeteorアプリを開発するためのベストプラクティスの推薦し、モジュール構成からUI抽象化のためのデータベーススキーマの設計まで幅広くカバーします。ガイドと一緒になったMeteorを使うと、すぐにより生産的にアプリを開発できるでしょう。ガイドの推薦を越えたものが必要な場合は、直接のベンダーサポートもあります。

ES2015の採用とコミュニティのnpmへの集結により、JavaScript開発者にはこれまでにないくらいよい時代になりました。Meteor 1.3をJavaScriptエコシステムのどこに位置付けるかを入念に検討し、将来のリリースの方法性を計画しました。例えば、Meteor 1.3は最新のES2015の機能を有効にしてすぐに使えるようにしています。また、source mapsを自動で生成し、開発者がES2015でデバッグできるようにしています。新しいnpm統合では、開発者がnpm installで簡単にパッケージをアプリのクライアントおよびサーバに簡単に追加できるようになりました。ReactやAngularのコンポーネントもnpmを用いてインストールできます。

これまで以上にコミュニティと顧客の目にかかるよう、この3か月必死でリリースに向けて準備してきました。16個のベ3タと13個のリリース候補を経て、世界中の開発者コミュニティにテストされ、Meteor 1.3はこれまでになく完成されたリリースになっています。その上で、もし1.3でバグを見つけた場合でも、次の公式リリースまで長く待つことはありません。1.3までのプレリリースサイクルで、すばやく頻繁にリリースすることの価値が見えており、従来の遅く単一なリリースサイクルに戻ることは想像できません。

下記にもう少し詳細に説明します。

ES2015モジュール

Meteor 1.2では多くの新しいECMAScript 2015の機能が導入されましたが、一つの大きな欠落としてES2015のimportとexportの文法がありました。Meteor 1.3は完全な標準モジュールシステムとのギャップを埋め、クライアントとサーバの両方で動くようにしました。複数の長期的な問題(ファイルのロード順など)を解決するとともに、これまでのMeteorのコードとの後方互換性も維持しました。

さらに、npm install(もしくはmeteor npm install)でnpmパッケージを直接Meteorアプリで使うことができるサポート追加しました。npmパッケージは、開発者がちゃんと設計していれば、クライアントとサーバの両方で動作します。この統合により、コアパッケージの一部をnpmに移し始めることができ、npmパッケージのラッパーパッケージをAtmosphereに作る必要がなくなりました。このニュースはnpmのエコシステムをそのまま使えるため、特にReactやAngularの開発者に歓迎されるはずです。

内蔵アプリケーションテスト

アプリケーションレベルでテストを実行する手段が追加されました。テストには、単体テストと統合テストの2種類があります。単体テストモード(meteor test)では、Meteorはテストモジュールとそこからインポートされるものだけロードし、他のコードと分離してテストできます。統合テスト(meteor test --full-app)では、テストコードに加えてアプリケーションコードすべてをロードし、全体が期待通りに動くかどうかを検証できます。

ES2015モジュールと合わせることで、新しいテストの仕組みでは、アプリのコードをテストだけのためにローカルパッケージに分割する必要がなくなります。また、特定のテストフレームワークでテストを動かすためのドライバーを書くこともできます。これまでのところ、コミュニティと協力してMochaのドライバーを作りました。今後、他のドライバーも出てくることを期待します。

新しいCordova実装

Meteor 1.3ではiOSとAndroidアプリを作るためのCordovaレイヤーが完全に書き直されました。新しい堅牢なiOSとAndroidラッパーは不完全なJavaScriptコードを検出し対処します。以前はアプリの再インストールでしか直せなかった、壊れたコードをホットコードプッシした状態から回復することができるようになりました。ホットコードプッシュはとても速くなり、逐次的かつ復元可能な更新によりネットワーク帯域とバッテリを節約します。Meteor 1.3はiOS(含iOS8)のWKWebViewをサポートし、アプリのパフォーマンスとフレームレートが大幅に改善されました。最後に、Cordovaは最新バージョンにアップグレードされました。(Cordova 6.0.0, Cordova iOS 4.1.0, Android 5.1.1)

さらに加えて

アプリのビルドパフォーマンスとminimongoの更新クエリを改善しました。Meteor GuideはMeteorのベストプラクティスで更新され、1.2からのアップグレードもサポートします。release notesにある改善一覧も参照してください。

次は何がくるか

いろいろあります。NodeとMongoのアップデート、npmへの移行、コアパッケージの分離。より詳しくは、Meteor Nightのトークを見て、Meteor forumsの議論に参加してください。