MeteorJSとAngularJSは比較するものではない


著者の方から許可を得たので、こちらのMediumの記事を翻訳させて頂きました。

[MeteorJS vs AngularJS ain't a thing
](https://medium.com/@benstr/meteorjs-vs-angularjs-aint-a-thing-3559b74d52cc)

MeteorとAngularのどっちをやろうみたいなことを考え、彷徨っていた時期に読んだ記事です。

また私の[会社のブログ](http://aimstogeek.hatenablog.com/entry/2016/05/10/144751)でも書いた内容なのですが、Qiitaへの移行を見据えて転載します。
もし不都合があれば、どちらかを削除しますので教えて下さい。

***

しばしばこんな質問を聞くことがあるでしょう：

*MeteorとAngularのどちらを学べば良いのでしょうか？*

この質問は根本的に間違っています。これから私が出した答えをお話しします。

結論： Angularはどのスタックにも搭載できます。一方、Meteorはそれ自体がスタックです。この質問は、オレンジとオレンジの木を比較しているようなものです。

# Meteorに対する私の意見

MeteorはNodeJSを拡張したもので、サーバーサイドで動作します。Meteorはウェブまたはモバイルアプリにおいて必要な全てのものを提供してくれます。

Meteorプラットフォームには、多数の別のフレームワークを追加することができます。Meteorには最初から多数のフレームワークが入っています。そのうちの一つはBlazeというAngularに相当するビューのフレームワークです。
Meteorにビルトインされたフレームワークは、別のフレームワークで置き換えることができます。もしBlazeをAngularで置き換えたいのなら、シンプルに以下のコマンドを実行しましょう：

`meteor add urigo:angular`

*おお、あなたはJiffyにCheetosを入れたのです。*

※訳注：健康食品にスナック菓子を入れたという比喩

上記のコマンドは、コミュニティのパッケージを使っています。MeteorはAtomosphereやNPM、Bowerさえからもパッケージを追加できるので、容易に拡張できます。Meteorがスタートアップのスタンダードに急速になりつつあることは、[多くの人が賛同](https://twitter.com/hashtag/meteorjs?src=hash)しています。

# Angularに対する私の意見

Angularはモダンなフロントエンドのフレームワークの王者の類です。バックエンドの処理は行いませんが、フロントエンドのほぼ全てをコントロールできるという長所を持っています。Angularはその優れた処理制御の思想により、ソフトウェアの歴史において確固たる地位を築いてきました。[Famo.us](https://famo.us/integrations/angular/#/intro)とのコラボレーションは近年の好例です。

もしあなたが冒険せず、フロントエンドの開発を枯れた環境で行いたいのであれば、AngularJSは現場での実績がある有力な選択肢と言えるでしょう。

# なぜ人々が混乱するのか

新人はどうして本当は全く別物であるMeteorとAngularを混同するのでしょうか。

- Real-time UI:AngularはHTML要素間のデータのやり取り（データバインディング）を、リアルタイムに行えるようにします。パッと見ではMeteorも同様に見えるかもしれませんが、深い視点で見るとMeteorはバックエンドとフロントエンド**共に**リアクティブであることが分かるでしょう。

- *JS: どちらもJavaScript言語で書かれているため、JSという名前で終わっています。そう、この2つは共通の言語で書かれていますが、Angularはブラウザで動作し、Meteorはサーバーとブラウザ双方で動作します。この2つを混同することは、JavaScriptとJavaを混同するようなものです。

- Community References: Angularは非常に人気があります。その人気によって、ブログやTwitterでAngularについて言及しトラフィックを稼げば、良く参照されバズワードになります。しかし、この記事で言及しているように、AngularとMeteorの比較は正確ではありません。人々がこのようにブログのタイトルをつけるのは、正にEmotional Marketingに成功するためです。


※訳注：
`Emotional Marketing`は、ある商品を持っていることが即ちステータスになる、と消費者に思わせるマーケティング手法のことらしいです。この文章で言うと、Angularは流行しているから、Angularについて調べていると俺イケてるわーって思えるってことですかね。勉強になりました。

参考：http://602communications.com/what-is-emotional-marketing


*有名になりたいのなら、遊び場で最も大きくて人気のある子供に勝ちなさい*


# 本当の比較

AngularはUIをコントロールしたい。Meteorはアプリ全体をコントロールしたい。

では、これらのJavaScript界の巨人と張り合えるのはどんな競争相手でしょうか。

### Angular (UI Framework) への有力な対抗馬

- [React](http://facebook.github.io/react/) by Facebook
- [Ember](http://emberjs.com/)
- [Blaze](http://meteor.github.io/blaze/) by Meteor

### Meteor (Node Platform) への有力な対抗馬

- [MEAN.io](http://mean.io/) with [Socket.io](http://socket.io/)
- [Derby](http://derbyjs.com/)


# 兄貴、じゃあ何を学んだらいいのか教えてくれよ


まず、JavaScriptとjQuery、そして恐らくNodeです。

次は、あなたが何を最終的な目的とするのかによります。

- <b>Facebookで働きたいですか？React、Flux、PHPを学びましょう。</b>
- <b>Googleで働きたいですか？Angular、Dart、Polymer、Pythonを学びましょう。</b>
- <b>2年から4年のスタートアップで働きたいですか？M-E-A-Nを学びましょう。</b>
- <b>5年から10年のスタートアップで働きたいですか？AngularとRubyOnRailsを学びましょう。</b>
- <b>新しいスタートアップを立ち上げて、素早く新しい機能を追加して人々を感動させたいですか？Meteor（と好きなUIフレームワークどれでも）を学びましょう。</b>

最後にビギナーの方に向けて。新しいアプリを立ち上げようとするときには、様々なコンポーネントを扱うことになります。（サーバー、データベース、フレームワーク、前処理、パッケージ、テスト...）これら全てを使いこなすために、ビルドを自動化するGruntやGulpといったツールが作られました。結局、ウェブアプリを作ることは大変で複雑なビジネスなのです。それか、複雑にしているために大変に見えるのでしょうか？

もしあなたがこのような複雑なことに悩まされたくないと思うなら、Meteorを使いましょう。Meteorは全てを自動で魔法のように処理してくれるからです。

# より良い理解のための記事

- [Why Yahoo no longer maintains YUI](http://yahooeng.tumblr.com/post/96098168666/important-announcement-regarding-yui)
- [Wikipedia: Single-page application](http://en.wikipedia.org/wiki/Single-page_application)