質問: 今はPHP、RUBYがサーバサイトでは主流ですが、Node.jsはいつごろ実務で、十分に使えるようになりますか? また、jQueryを学んだのですが、 JSをガリガリ素で書くことが少なくなっているので、次に学ぶのであればJS自体でなく、 アンギュラJSにするのが、今は良いのでしょうか? その後フロントをやりながらNodejsの勉強をやり、将来サーバサイドにも参加するという形が良いのかなと思っています。 将来はネイティブアプリをハイブリットアプリが侵食していくと聞いているので、 JS関連を突き詰めていくのは、非常に将来性がありますよね。
回答: 単純に実務で使えるか否かで言えば、 Webエンジニアなら業務に取り入れるべきと言い切れる程度には実用的に使えます。 但し、単純なWebサーバーとしては日本国内では地位を築いているPHPやRubyより流行る事はなさそうです。 わかり易い使い方ですと、静的コンテンツのジェネレータですかね。 うちの職場ではCoffeeScript(LiveScript)、Jade、Stylusの環境で静的コンテンツを生成していますが、 これらに一度触ってしまうともう生のJS、HTML、CSSを書くのがかったるくてやってられません。 PHPやRunyのフレームワークを使う場合、 フレームワークに付いているテンプレートエンジンの関係でHTML部分を置き換える事は難しいですが、 Node.jsを使ってJSやCSSを生成して利用するというのが今後の主流になるでしょう。 AngularJSに関してですが、一番大きなメリットはオブザーバーパターンです。 例を交えて説明します。 jQueryは基本的には処理の流れを書くものです。 なのでAjax通信でユーザー一覧tableを書き換える時はこのようなフローになります 1.Ajax通信を行う 2.結果が帰ってきたらユーザー一覧table内の全tr要素を削除する 3.結果を解析し、tr要素を生成してユーザー一覧tableに差し込む 対してAngularJSはHTML上にオブジェクトを設置するというイメージで配置出来ます。 1.ユーザー一覧tableに「変数usersの値を参照してよしなにtrを生成しろ」と命令しておく 2.Ajax通信を行う 3.結果が帰ってきたら変数usersの値を更新する 4.変数usersを見張ってたユーザー一覧tableが「あ、変数usersが更新されてる!」と察知し、自分で勝手に配下のtr要素を書き換える これだけではオブザーバーパターンでやるメリットは分かりにくいかとは思いますが、 ユーザーは商品を幾つか購入しているから、購入履歴をDLする必要がある。 どんな商品を購入したかの情報も欲しいから商品マスタもDLしてくる...という風にロジックが肥大化してくると、 jQueryでは収集がつかなくなってきます。 このオブザーバーパターンを実現しているのがデータバインディングという技術で、 この概念や技術はAngularJS以外にも沢山のJSフレームワークで用いられています。 AngularJSの他にもReact.js等様々なJSのフレームワークが群雄割拠していますので、 今すぐにやる必要はありませんが、今後を考えると出来る、概念を知るに越したことはないでしょう。