はじめに
Androidを専従しており、今も一応はその形をとっているのですが、スタートアップ特有の人手不足によりフロントサイドも着手することにしました。ちなみに既存の管理画面のリプレイス目的です。
なぜAngularJS?
もともとAngularJSに興味があったのが第一。あとTwitterのタイムラインを見ている限り、他と比較してAngularJSのほうが良い流れがある感じがしました(よく話題になっているという意味で、困った時なんとかなりそう感)。ぶっちゃけBackbone.js使おうが何を使おうが、とにかくフレームワークに載せているだけ既存のやつよりはるかに良いという感触はあります。
AngularJSの問題点としては以下の記事が的確だと思いました。実際にその通りだと思います。ただ僕自身の能力がそんなに高くないので、AngularJSの重力に吸われている方が安定したコード書けるかもしれないと思いました。
最初にしたこと
AngularJSの公式サイトにあるチュートリアルを1日かけて制覇してみました。
なんとなく動きはつかめましたが、問題点として全部コントローラーにぶち込む書き方をしやがるのでコントローラーに機能集中してしまいます。このあたりは以下の記事を読んでどうすべきか考えてみる必要はあります。
あとDeferred
とPromise
についてよく理解をするのも大事です。これは別にAngularJSに限りませんが、非同期プログラミングをするうえでコールバック地獄とかの諸問題を解決するアプローチを取るための現状最善の方法だと思います。
※ なおjQuery.Deferred
とAngularJSの$q
実装では微妙にメソッド名が違うので注意!詳しくは→ AngularJS: ng.$q を見てください。不正解ながら簡単に書くと、then(successCallback)
で成功をつないで、catch(errorCallback)
でエラーを記述して、finally(callback)
で終了処理を書く、みたいな。
これだけ理解したとしても、イマイチ正解が見えない部分があったりします(定数どこ置けばいいねん、等)。このあたり僕もよくわかりません。何か参考になるような大規模アプリとかあればいいんですがね。。。
まとめ
mizchiさんのブログにある文章を引用します:
最近Angularの検索数が跳ね上がってて一番人気です!っていう紹介をたくさんみるようになったんだけど、正直「ググらなければわからないこと」が多すぎて他のフレームワークより検索という行為に高度に依存しているというのを感じている。この場合の検索数は、人気ではなく複雑さに依存している。この辺railsに似ている。
これはAngularJSをやるうえでの重要なポイントです。本当に検索しないとわからない。しかしながらこれはもともとJavaっぽい言語のAndroidでも経験してきたことだった(そもそもJavaのUtilクラスとかライブラリとかググらんと気が付かん)ので、IDEとかでコード補完されたり、ググってクソ便利なDirectivesとか見つけてウヒョー俺TUEEE!みたいなのが好きな人にはAngularJS向いてると思います。逆に、既にある程度コーディングスキルが高くてフレームワークの裏でやってる挙動にイラつくタイプの人は薄いフレームワーク(それがBackbone.jsなのかどうかは僕にはわかりかねますが)のほうが適しているのでしょう。
結論。好きなの使え。楽しくコーディングせよ。
次回予告
AngularJSの最終兵器(?)、$rootScope.$broadcast()
およびそれをキャッチする$scope.$on()
について。
(もし2014年になっても次回作が投稿されてなかったら @pside に圧力かけてください・・・)