その中でもうまく使えばだいぶコーディングを省けるパッケージを紹介します。autoformはフォームを生成するためのパッケージです。collection2とも使えます。今回はsimple-schemaで説明します。バリデーション用のcheckパッケージも入れました。毎日の体重を記録するアプリを想定しましょう。Mongo.Collection('Records');となります。}});のようにします。この例は単純ですので直感的と思いますが、より詳しくはsimple-schemaのドキュメントを参照ください。meteormethod="/records/insert"}}</template>とします。これにより、このような感じでフォームが完成しました。このフォームはtypeに合わせて適切なコンポーネントが使用されている上、値が入力されていなかったり不適切な場合はアラートメッセージを表示してくれます。methodsが呼び出されます。この実装は例えば下記のようになります。}});このcheckが重要で、これがないと不正なデータを登録できてしまいます。フォームのバリデーションはクライアントサイドだけの話なので。このcheckすら冗長だと考える方はcollection2を使ってみるとよいでしょう。autoformの最も簡単な紹介でした。これ以外にも色々柔軟な使い方ができるので、おすすめのパッケージです。最後に全体のコードを載せておきます。これだけですので、まずは試してみるとよいでしょう。1.2からはAngularとReactのサポートも追加されましたが、Blazeも根強い人気があります。今回はそんなBlazeをちょっと使いやすくするパッケージを二つ紹介します。初めに紹介するパッケージは、Handlebar-helpersです。raix:handlebar-helpersです。10}}のようなことが書けるようになります。実は本来テンプレートにはロジックを書くのはよろしくないので、これはあまり好まれない場合があります。isCounterLargerThanTen}}のようになりヘルパー関数を用意する必要があります。よって、小規模プロジェクトなどでは原則を破ってロジックを書いてしまった方が効率がよい場合もあると思います。次に紹介するパッケージは、blaze-magic-eventsです。themeteorites:blaze-magic-eventsです。これも好みが分かれるところですが、イベントハンドラを書きやすくするものです。これも微妙にロジックを書いてしまっているので美しくないのですが、jQueryに慣れている人は分かりやすいかもしれません。最後にせっかくなので、自分のパッケージも紹介しておきます。blaze-showhideです。これもテンプレートに簡単なロジックを書いて表示・非表示を切り替えるようにするものです。以上、テンプレートにはロジックを書かないという原則を破ってちょっと便利にするパッケージの紹介でした。これのMeteor版があったら面白いだろうなと思っていました。Meteor版だとfrontendも含まれるので、単にsocial-cmsと呼ぶものになるかなとか。似たようなものが既にあったので紹介します。自分で作る手間は省けたものの、作ってみたかったという気持ちもあったりします。(GitHub)です。なんとiron-routerとflow-router両方に対応しているということです。単体で動かそうと思うと、意外とパッケージ導入に手間がかかりました。参考までに手順をまとめておきます。runその後、htmlにログインボタンを設置すれば一応動きます。デフォルトでは全員管理者になってしまうので、ロール管理しようとするともう少し複雑になります。使うとよさそうですが、初期の管理者を手動で設定する必要があったりと多少導入にハードルを感じます。簡単にスタンドアローンで動かすための整備は、まだ残件かなと思いました。UIはいろいろカスタマイズできるようになっているようですが、コメント機能がないのは不完全な感じがします。DISQUSを使う方法が説明されていますが、スタンドアローンで機能拡張できるとよいです。いう意味では、ライブラリとして使うものなのか、すぐに使えるようにするものなのかが曖昧に感じてきました。このあたりもう少しいじってみたいような気もします。ついでにもう一つのパッケージを紹介します。(GitHub)です。Manualで実際に使われているアプリのパッケージのようです。こちらにデモサイトがあるので様子が分かります。表示のカスタマイズやロールの設定もできるようです。試してはいませんが、スタンドアローンで動くアプリを作るのが目的であればこちらの方が楽かもしれません。感想ですが、だいぶ便利なものが作られているなと思う一方で、まだまだ色々登場しそうですし、何か作ってみたいなと思います。有名なようですが、使ってみたところちょっと気に入りませんでした。Blazeがシンプルな設計になっているのに、全然お手軽な感じがしません。リアクティブにするためのサンプルが載っていますが、アプリ開発者の仕事になってしまっています。慣れている人はいいですが、Blaze初心者にはつらい感じです。ないものは作ろうということで、作りました。https://atmospherejs.com/daishi/blaze-google-maps全部のAPIをサポートしているわけではないので、ライブラリとして置き換えられるようなものではありません。マーカーをコレクションから読み込んで表示することに限れば、素直に使えるのではないかと思います。リアクティブに動作します。APIをMeteorから使ってみようと思う方はぜひお試しください。10/6追記なぜか「ライブラリ」と書いていましたが「パッケージ」と書くつもりでした。dai-shiMeteorの標準テンプレートであるBlazeはシンプルで割と気に入っています。最低限の機能が用意されていて、あとは自分でがんばってねという感じが悪くないです。Angularに慣れてしまうとこんなことはできないのかなどと思うことがあります。その一つが、ng-showみたいなこと。ng-clickと合わせて表示を切り替えることがしばしばあります。Blazeでは{{#if}}を使うと似たようなことができます。これはおそらくng-if相当です。具体的には次のようになります。}});さらに表示を切り替えるボタンは例えば次のようになります。}});ちなみに、AngularだとHTML内にロジックを書いてしまえば次のように書けます。!hello">Toggle</button>そこで、Blazeでも簡単に書けるようにするパッケージを作ってみました。{{/toggleShowHide}}</div>こんな感じで書けるようになります。Sessionはアプリで共通なので実際に使う場合は他のtemplateと競合しないように注意する必要があります。ng-ifやng-showを使いたいのならangular-meteorを使えばよいのではないかという意見もありますが、それはそれとしてBlazeでもパッケージでこういうやり方ができるということが分かりました。余力があればやってみたいことは、ng-show相当の機能や設定のカスタマイズなどです。余力というかモチベーションですが。ところで、既に似たような機能を持つパッケージがないか探したのですが、見つかりませんでした。したら、探し方が不十分であるパッケージの一機能として実現されているものもあるかもしれません。いずれにしてもパッケージ作りの勉強になりました。dai-shi最近、Meteorの勉強中です。何かパッケージを作ってみたいと思ったのですが、多くのものはすでに誰かがやっています。MeteorのパッケージはAtmosphereで探します。今回、自分が使おうと思ったものにぴったりのものが見つからなかったので、作ってみました。探したものはFacebookのAPIを呼び出すライブラリです。partyのものを探しことになります。見つけたのはこれらです。mrt時代からあるパッケージでインストール数も多いです。ドキュメントを見るとクライアントライブラリのようです。fbgraphをラップしたパッケージです。サーバサイドのみで動きます。これがオリジナルっぽいですね。趣向が変わった感じでおもしろそうです。クライアントから使うことがメイン。ドキュメントがないのでどういうものか分からず。あるように見えますが、facebook-node-sdkはGitHubを見るとforkしているのが分かります。https://github.com/hugesuccess/facebook-sdkネットワーク図を見てもいいかもしれません。全部は表示されていないようですが。今回はサーバサイドのライブラリを探していたのでfbgraphとgraph-apiが候補なのですが、過去の検討で使っていたライブラリを使いたいという要求もありました。そこで、そのライブラリをMeteorパッケージにラップしました。ソースコードは、GitHubにあります。中身はなんと2行だけです。一応、新規にFB.mapiというAPIを用意しました。Meteor流のfibersを使った同期的APIです。fibersはあまり好まないのですが、Meteorでやっていくには仕方ないかと諦め気味です。integrationの動画がありました。そのような記事もどこかで読んだ気がします。Meteorの恩恵をあまり受けられないかと思っていました。ところが、Angular-Meteorはそれなりにうまく作られているようです。見てみるとよいでしょう。話が脱線しますが、このチュートリアルとてもやりやすいです。アプリを作っています。ベストプラクティスがたまってきていますね。自分でもうまく活用できればいいと思います。これができるということは、AngularFireの代替になるのではないでしょうか。なにか作ってみたくなりました。逆に一番気になったのは、getReactively周りの処理です。手動でunsubscribeしなければいけないのは面倒です。events.とあるので、解決されることを期待します。2015にありました。https://www.youtube.com/watch?v=4nD5fjpIeskこちらは、本家本流なのですごいですね。v1.0がリリースされたそうです。bindingの名付け親です、たぶん。Meteorはとても魅力的なのですが、自分が本当に気に入るか分からずちょっと悩んでいます。その理由は、Fiberを使っていることと、jQueryを使っていること。callbackは結構好きなのでFiberに魅力をあまり感じません。プロジェクトのコーディング規約で気をつければいいのですが。完全に非依存になるには時間がかかりそうです。https://groups.google.com/forum/?fromgroups=#!topic/meteor-talk/21y9NbM9v90別に、jQuery依存だからといって困ることはないのですが、単に気分の問題です。いずれにしても、Angualr-Meteorにはちょっと興味を持ちました。dai-shiMeteorのお話です。Node.jsではExpressでよくjadeを使っています。http://jade-lang.com/なぜかjadeは好きです。RubyでHamlは使ったことがありますが、それほど好感を持った覚えはありません。%があると見栄えが悪いからでしょうか。Meteorにもjadeのパッケージを作った人がいるようです。https://atmospherejs.com/mquandalle/jadeこれが思いのほか出来がよくて、気に入りました。jadeの変換を再現しただけではなくて、Meteor用にチューンされている感じです。mquandalle:jadeとするだけで、*.jadeファイルで書けばあとはよろしくやってくれます。上記ページに使い方は書いてありますが、いくつか転記します。hello}}は、+helloになります。最初はちょっと分かりにくいと思いました。