search
LoginSignup
111
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

posted at

updated at

フルスタックJSフレームワークMeteorのメリット&デメリット

Meteorでアプリケーションを作ってリリースしたので、その過程で出てきた良い点と悪い点をまとめておく。

Pros

1.インストールするだけで環境構築されている。一瞬でコードを書ける。(普通はDB、BE、FEそれぞれ構築しないといけないがその作業が皆無)

2.miniMongoと呼ばれるシステムがフロントで走っているのでサーバのMongoからとってきたデータをそのままフロントに呼び出せる。APIを叩く必要もない。全部Meteorがやってくれる。

3.ログイン処理がパッケージ化されていて、1行でログイン処理を実装できる。これはなんの誇張でもない。

4.Facebookログインだって5行くらい。

5.MVCではないのでテンプレート(いわゆるモジュール)毎にファイルを作ることが出来て管理しやすい。

6.デフォルトのフォルダ構成が明快でYomanいらず。(/client, /lib, /server, /publicなどなど)

7.Lessとかcoffeeの導入も簡単でpackageを追加するだけ。もちろんMeteorが分割して書いたLessファイルを1つにまとめてくれたりcoffeeのコンパイルもしてくれる。

8.それなりにリッチなUIも作れそう。

Cons

1.フルスタックということは何もかもMeteorに依存してしまう。(これはProsでもあるのだけど)

2.Mongo以外の選択肢が基本的にない。

3.ルーティングの時にURLのパスを使ってDBの処理をかけたい場合(タグの名前やIDがURLに含まれてて、それでDBに検索をかける場合とか)その辺りの処理をルーターに書かないといけない。いわゆるControllerの一部がRouter内に入り込んでしまう。これはIron-Routerの問題か。

4.画像や動画を動的に同一プロダクト内に追加できない。やりたければcollectionFSを使うかMongoにそのままつっこむかどっちか。developmentの段階ではpublic以下に画像なりをnodeのAPIで書き込んでそこからデータを取り出せたのでよかったが、デプロイしちゃうとそれができなくなる。Meteorが内部でシンボリックリンクを作っているため。このせいでAWS S3デビューすることに。(これがつらかった)

5.デプロイするにはプロジェクト全体をパッケージ化しないといけない。フロントのCSSだけ変えるとかHTML1行追加するだけでもデプロイ作業が必要。

6.FacebookのOGPタグに対応してない?おそらく。

7.miniMongoはあくまでminiなので、mongoで使えるのにminiでは使えないコマンドがある。例えばdistinct()。

結論

リリースが前提のプロダクトには二度と使わない。
最初はオールインワンのフルスタック型に魅力を感じていたが、あまりにMeteorに依存していて拡張性がない。

ただHackDayとかリリースしないものにはうってつけなフレームワーク。
Meteorが持つサーバにデプロイもできるし。URLはxxx.meteor.comとなる。CNAMEの設定で独自ドメインにも変更可能。これはすごい。

今後を考えてExpressで書き換えようか悩み中。

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
111
Help us understand the problem. What are the problem?