BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Meteor 0.9リリースのパッケージシステムに賛否両論

Meteor 0.9リリースのパッケージシステムに賛否両論

原文(投稿日:2014/09/02)へのリンク

Meteorは今週,Meteorバージョン0.9と,その公式パッケージシステムであるIsobuildのリリースを発表した

"Isobuild: why Meteor created a new package system"と題した記事では,Geoff Schmidt氏 – Meteorの創業者のひとり – がIsobuildについて,"JavaScriptあるいは他の言語を対象とした,同形分散システム(isomorphic distributed system)のための完全なビルドシステム"だと説明している。 

Meteorバージョン0.9のリリースノートには,この新しいパッケージシステムが,さらに詳しく説明されている。

コミュニティのMeteoriteツールでの教訓を取り入れて,Meteor 0.9.0では,ユーザがMeteorパッケージを開発して,中央リポジトリで公開することが可能になっています。パッケージの公開には"meteor publish"コマンドを使用します。非コアパッケージは"meteor add"コマンドで追加できるようになりました。また,使用するパッケージにバージョン制約を設定することが可能です。

"meteor publish-for-arch"コマンドを使えば,別のアーキテクチャ用のバイナリパッケージを公開することも可能なので,クロスプラットフォームのデプロイやバンドリングを行うことができます。"meteor search"コマンドでパッケージを検索して"meteor show"で情報を表示したり,Percolate Studioの開発したAtmosphere web interfaceを使うことも可能です。

今回の発表に対して,開発コミュニティ,特にHacker Newsでの反応は分かれている。Schmit氏の記事についてのディスカッションでは,ユーザ名untogが,そのメリットの不明確さに対して慎重論を展開している。それによると

面白そうには思えますが,問題は細部に潜んでいます。彼らが例を使用するには,HTTP.get()がアプリ内ではなく,Web上でCORSを処理しなければなりません。"XのためにYを追加する必要がある"という状況が何十も連なってしまうならば,そんなユーティリティは使い物になりません。

それから,正直に言うと,ここで新しいパッケージが必要な理由がいまだに理解できません。npm(おそらくはユーティリティライブラリ付き)で,これらの機能のほとんどは実行可能なはずです。

他の意見は,氏ほど慎重ではなかった。Reddit上での,Shmidt氏の記事に関する同じような議論の中では,ユーザ名sigwhiteが次のように述べている

Browserifyのようなツールがあるおかげで,同形コードの作成には,npm上の多数のモジュールがすでに多数利用されています

npmを使って同形コードを記述できないのではありません(事実,Browserifyを使用すれば可能です)。npmに溢れる何千というMeteor固有のラッパが,誰の役にも立たないのです(特にMeteor外にメリットを提供しないコードが,非Meteorモジュールとは簡単に統合できないものである場合)。

Meteorが独自のパッケージシステムを持つ理由は,独自のビルドおよびプロジェクト管理ツールを持つのと同じ,すなわち(単なる"フレームワーク"に留まらず),完全な統合ソリューションであるためなのです。

このコメントに対して,ユーザ名mariasfatが次のようにコメントを返している

Meteorでは防御的な目的で,ファイバが多用されています。npmモジュールにパッキングしても,あまり意味がありません。コールバックを抽象化して,Meteorの処理に合うように非同期化したパッケージを作っておくべきです。

抽象化しなくても,npmエコシステム全体にアクセスすることは,Meteorに大きなメリットにはなるでしょう。ですがここでは,抽象化が重要です。MeteorはノードとクライアントAPIを統一しようとしているのです。

Isobuildの発表以外にも,Meteorのリリースノートには,バージョン0.9のさまざまな改良点がリストアップされている。

その中のひとつとして,最新リリースでは,アプリケーションをローカルの開発サーバで実行している場合,クライアントのみに影響を与えるような変更によってサーバの再起動が必要になるようなことはなくなっている。同じように,ローカル環境と実環境の一部においては,CSSのみに影響する変更によってブラウザでのページリフレッシュが必要になることはなくなった。

メジャーバージョンのリリースと合わせてappcacheパッケージもアップデートされて,ホワイトリストのブラウザだけでなく,AppCache APIをデフォルトでサポートするすべてのブラウザ上で動作するようになった。

これについては,リリースノートに詳しく説明されている。"この変更による影響のもっとも大きなものは,appcacheがFirefox上でデフォルトで有効になったことです。これは,Firefoxが紛らわしいポップアップを行わなくなったことが理由です。AppCache.configを使用して,ブラウザを個別に無効にすることも引き続き可能です。"

パッケージング関連を含むすべての変更点のリストがこちらに紹介されている。

0.9はMeteor 1.0リリース前の,最後の大きなマイルストーンになる。軽微な問題をいくつか修正したバージョン0.9.0.1が,近いうちにリリースされる予定だ。

この記事に星をつける

おすすめ度
スタイル

BT