宗教戦争!そうです!プログラミングの世界では宗教戦争の世界です!笑。Railsなのかこの記事で話すJavaScriptのフレームワークももちろん例外ないです!(これから、明示的な説明がない限り、この記事ではJavaScriptフレームワークというのはフロントエンド用のJavaScriptフレームワークと言います。)Angular.jsなのか、React.jsなのか、Vue.jsなのか(1つお断りですが、私は、限られている時間とリソースの中で、可能な限り調べていますが、決して3つのフレームワークあるいはライブラリーに精通して、隅々まで全部把握しきている訳ではなく、仮にマスターしたとしても、JavaScriptフレームワークのエコシステムがものすごいスピードで進化していますので、少し時間が立つと、色々内容が変わってしまいます。私の現段階の体験や理解の内容が多かったりします。その前提でご参考程度でお読みいただければと思います。etc.それぞれ性質が微妙に違ったりもします。フレームワークよりのものがあれば、ライブラリー寄りのものもあります。)今日は、2018年です。ファイナルアンサーを出したいと思います!(というより、ファイナルアンサーを出していただくための、参考材料を少し私的にご提供できればと思います。全て正しい、あるいは絶対だというものではなく、あくまでも私の角度から見た一面にすぎません。)一体、JavaScriptのフレームワークはどれがいいのか?特に、これから、JavaScriptフレームワークを選定するIT担当者や、CTOにとってどういった理由で、選ぶのかがとても重要でいったん選んだら、しばらくそのフレームワークの上で、実装を展開しなければなりませんし途中で切り替えるのが膨大はコストがかかりますし、そもそも納品日もありますから、そんな簡単に舵を切ることはできないはずです。選定の段階では、じっくり吟味したいですね。この記事では、その選定の際に、少しでも有益な情報を提供できたらと思います。この記事も、書いたら終わりではなく、常に最新の情報、知見を盛り込んで、内容の鮮度を更新していきたいと思います。(この記事というよりは、このブログサイト全体がそういうポリシーで運用しています。全ての記事を定期的に更新しています。)知らないと始まらないまずそれぞれのフレームワークを見て行きましょう。JavaScript界隈ですと、最近のトレンドにすごく感心しているはずです。Railsというウェブアプリケーションフレームワークで開発するものが多かったです。(もちろん、今も大きいなシェアになっています。)JavaScriptと言えば、よく耳にするのはjQueryだという時代も過去になっています!(厳密に言えばライブラリーで、他のJavaScriptフレームワークと同じカテゴリーではありませんが、ここで比較のために、取り上げます。Application)です!笑(SEOに弱いのを置いといて。大体のことはみんな知っているはずですが、比較のために一回整理して行きましょう。https://angularjs.org/とその後の2.x系があります。https://angular.io/記述の仕方も変更があったり、色々変わったことが多く、まるで別のフレームワークになっているようだという意見もあります。Angularという言葉を聞くときに、それは1.x系なのか、2.x系なのかをご留意ください。私が、JavaScriptフレームワークの中で一番最初に覚えた・たっぷり使ったものです。最初にAngular.js(1.x)を使ってウェブアプリ開発するのが楽しくて、喜びの連続でした!双方向データバインディングが感動でした!双方向データバインディングとは、データの変更があればUIの表示を更新し、UIの変更があればデータの更新を自動的に行う機能を指します。更新のロジックを書かなくてもいいです。今は当たり前ですが、同時最初にウェブの開発でこれができるのは魔法のように見えました!笑。開発の主体:Google及びコミュニティー。他にPolymer、Dart言語などもありますが、この記事では割愛します。学習コスト:大(v1.xとv2.x-互換性がないため、さらにアップグレードのハードルも高くなっています。今から勉強するなら、v1.x系をやる必要がないかもしれません。Nativeに比べると発展途上でまだ歴史が浅いです。Universal(v2.x-系から)メリット:フルスタックなのでライブラリを調べたり追加しなくても最初から機能全部入って、ほとんどことは実現できます。デメリット:新言語TypeScipt学習コスト高いです。理解するものが多いです。React.jsFacebookが相当注力しているJavaScriptのフレームワークです!開発主体はFacebook及びコミュニティ。開始:2011年、私が触ったのは、2016年ごろgithub星の数:94,595(2018/04/28)データバインディング:データ→HTMLの片方向(逆はイベントを拾いsetState()が必要)学習コスト:中、Angularほどではないですね。Nativeが最も有名で弊社もこれを使っています!サーバーサイドレンダリング:Next.jsメリット:Angularより導入コストが低く、スモールスタートが可能、本体はView特化のライブラリなので手軽に導入できます。デメリット:JSX記法だとJSの中にHTMLを書くことになっており、慣れの問題だがこれを嫌がる人が多いです。私は、割としばらくやって見たら、慣れました。Nativeとは何か?Vue.jsアリババのが採用しているJavaScriptフレームワークです。軽量で、APIがAngular.js(1.x)から影響を受けたものが多いです。双方向データバインディングのところがAngular.js(1.x)と似ています。Angular.js(1.x)に馴れ親しんだ私にとっては、Vue.jsもとっつきやすいです。Youさん及びコミュニティ開始:2014年(最近ですね。)最近気になって、触り始まった。github星の数:92,484(2018/04/28)ほぼReactと互角ですね。データバインディング:データ←→HTMLの双方向(Angularと同じですね。)学習コスト:中ぐらいですが、Angularを触ったことがあれば、少し手取り早くなりますね。2.0.0が出ました!メリット:軽量、学習コストが低いです。デメリット:大企業がバックアップしていなくて、ややサポート体制には不安が残ります。いってもとても人気なフレームワークで、Laravelがスポンサーになっています。https://risingstars.js.org/2017/ja/#section-frameworkvueの人気ぶりがすごいですね。大企業がバックアップしていなくてもこんなにコミュニティーの支持と人気を得られましたね。結論なかなか、どれが一番だということは言えませんが、皆さんのプロジェクトの状況に合わせてお選びいただければと思います。どれが一番優れているとか、どれが一番人気とかいうよりはどれが一番今度のプロジェクトの適しているかが一番の重要なポイントかと思います。プログラミング言語やフレームワークに私は特にこだわりがなく、どの言語も、どのフレームワークも、ユースケースに合えば、バリューの提供ができると思います。JavaScriptフレームワークに限らず、世のかなの全てのものがどれも、一長一短があります。短所ばかりのものもなければ、長所ばかりのものもありません。何か1つのプログラミング言語を極めると、他の言語の長所や短所が見えてきます。同時に「短所しか無い言語」は存在しないと気付く筈です。言い換えると、特定の言語を「糞だ!」と言い放つ者は、「たった1つの言語すら極めれなかった自分」を誤魔化しているに過ぎないのです。適材適所で選びましょう。(私個人的には勉強のために、vue.jsをこれから試してみたいと思います。)弊社のところでは、一部React.js、ReactNativeがっつりやっております。Angular.js(1.x)も使っています。Nativeで開発しているアプリは、こちらで公開しています。https://hojokinreach.com/landing/また、弊社が制作している数多くのサービスとウェブサイトがAngular.js(1.x)で書いています。最近、SEOの重要性を痛感しまして、一部のサービスを学習を兼ねて、書き直そうかなと考えております。しようかなと考えております。nuxt.js簡単に試せる!(ページを作るまで)超簡単手順JavaScriptの世界の素晴らしさとサーバーサイドレンダーリングのパワーを手に入れたら、最高じゃないですか!笑。私個人にとって、Angular.js(1.x)の双方向バインディングの「感覚」がそのまま「使える」のが大きいなメリットですね。あと、軽量のところも注目しています。今後、nuxt.jsを使った感想とかもここで皆さんと共有して行きたいと思います。Commentコメントをキャンセルメールアドレスが公開されることはありません。this.Close。