JavaScript

React か Vue か、どちらを学ぶか迷っています。という質問いただきました。

投稿日:

コメントで質問いただきました。

ありがたいことです。どなたも何か聞きたいことあったらコメントくださいね。

最近、JavaScriptを学び始めたのですが、ReactかVueで学ぶフレームワークを迷っています。

できる限り最短で使えるようになりたいためVue.jsを学習していますが、
最終的にWebアプリだけでなくモバイルのハイブリッドアプリも視野に入れております。

現在Vue Nativeなども出てきているので、
どちらでもできることは似てきているとは思いますが、あえてきくならどちらの方をオススメでしょうか?

ちなみにHTMLとCSSとJQueryでWebのデザインをしている者です。

こちらのリンクです。

迷いますよね。この選択。

お返事としてこの記事を書かせていただきます。

実はよく知らんぞ。Vue

Vue をあまり知らない私に聞かれても、
(;・∀・)

と、思ってしまうのですが、まあ JavaScript のレベルの高いエンジニアとして、お返事をしておきます。
期待どおりの返事かどうかはわかんないですけれども。私の視点です。

ReactとVue、どちらも流行っていますよね。

どちらもよいとは思っています。

最短で使えるという視点では Vue は確かに噂通りに使えると聞いています。

React は日常で使いこなしているというかこなしていないけど、仕事現場でバリバリと使っています。

バリバリと、バリバリと、バリバリと、、日々、どうにかこうにか使っている、というのが正しい表現でしょうか

正直いって、Reactが使いやすいとは思ってないです。

React の問題点はよくわかる。穴だらけのライブラリで話しにナンネ。って思う。

使いにくい所や様々な穴だらけで、実は全体的なことを考えられてないですよね。React。

イベントハンドラ的な仕組みがろくにないために、React単体では限界があるので Redux を使ったり Mobx を使ったりするハメになっており、それらを使うために更に技術的なハードルがあがったりしています。

今かかわっているお仕事プロジェクトでは素のReactで実装していますが、イベントハンドラ的なところをきれいに書くのは非常にいろんな場所に気を張り巡らせてきれいなプログラムに仕上げるのには高い技術力=「腕」がいります。Reactを補うところのライブラリは自分で作った方がいいんじゃないの?作れるじゃないの?とたまに思ったりします。

Redux は謎用語も多すぎて簡単なことを複雑に実現しようとしているので言っちゃわるいですが作者のライブラリ作成センスを疑っていますので全く使う気にはなりませんし、Mobx も Injection とかいう新しい概念的なものがなんか素直じゃなく使いにくいので、やっぱり使いたくありません。

もしかしたら React 全体にわたって違うライブラリを作った方がいいのかもなあ。とも考えたりします。もっとごてごてしてなくてわかりやすくシンプルにHTMLを出力したり状態を変えるようなもの。あったらいいなとか。

それが Vue なのかもしれませんが。

ともかくReactは理想形ではありません。

かといって、React のようなものを全部仕上げるのは労力のかかることですし、技術的に乗り越えることは多くあるでしょうし、私が簡単にそういうのを超えるものを作れるとも思ってはいません。そんなに突き抜けた実力があるわけじゃないですからね。

そんでもって、すでにあるもので選ばれているものを車輪の再発明的にやるのも迷うところがあるので React 的なライブラリを作るのに挑戦したい!という衝動が日に日に強くなる。みたいなこともないです。

React はつかいやすくないのです。自分が使いこなすのは十分にできるのでそう問題にはならないのですが、

Reactのようなそれほど使いやすくないライブラリを、自分ほどに実力がない他の人がコードかいたりすると、グダグダのすぐスパゲティコードになったりします。そしてそういうプロジェクトを引き継いで苦労させられてしまっていたりします。

今まさにね。

で、結局は React なのか Vue なのか。

とまあ React の問題点を愚痴愚痴と並び立ててみたのですが

それでもまあ、私としては React を学んでいて正解だったな、と思っています。

今の状況でどちらも知らなかったとしても React を選ぶと思います。

なぜか。

それは以前に書いた次の記事から通じるものがあります。

Vue はもしかして使いやすくて優れているかもしれません。

もしかすると最高に使いやすいものかもしれません。ですが、もしもある言語やライブラリが誰もが使えるような簡単なものであれば、それを使いこなす技術者の腕というものが高額で取引されるという状態は少し作りにくくなってしまいます。

非常に普及した技術が複雑なものだからこそ技術者の価値があがるのです。

C/C++ なんかは非常によい例です。

C/C++ はだいぶ古い言語ですがだいたいどのプラットホームでも動き、非常に普及しています。そしてそれを使いこなすのは相当な腕がいるものです。だからこそ相当古い言語にもかかわらず C/C++ 技術者というのは高い収入を得ますしまた、技術者の中でも尊敬の目で見られる領域です。

逆の方向でいうと VBA なんかも典型的な例です。

VBAも結構な言語としてわかりやすくて少し古くて機能は足りないものの、Excelと組み合わせたときのパワーはすごいものなので便利につかえば最高の生産性を生み出します。でも、VBAエンジニアがどんなの細かくVBAを知っていたとしても(ちなみに私はVBAをかなり極めているんですよ。)エンジニアとしての評価はかなり低いものだったりします。なぜか。簡単です。VBAを使える人が山程いるしVBA自体が難しいものではないのですぐにある程度の実力はつくから技術者としての希少価値が少ないのです。

次に React で仕事を得る場合、自分をどう売り込むか。

さて、そういうところをふまえていただくと、自分はReact エンジニアとして、いまのところ何ヶ月も React の仕事をしているところなのですが、また次の別の仕事場に行くタイミングもあるでしょう。

そういう時にReactでプロジェクトを運営している企業さんに呼ばれて自分が何をやれるのかをお伝えするわけです。

上で書いたようにReactを自分では作れるほどではないけどReactを熟知していて、良い点も弱点もわかった上でいろんなことを語ることができます。

JavaScript自体もそうですがReactも罠だらけなので他の人ならよくハマる問題を自分ははまらない技術力があること、さらには他の人が罠にはまらないようにわかりやすいコードの書き方を例としてみせてあげて、理解させて効率よくチーム開発をさせることができますよ。とか、完全に自信を持って言えるようになります。

Reactについてのイマイチな部分を知っているからこそ、それを乗り越えられる確かな技術をPRできるんですね。

そしたら React プロジェクトで非常に困っている方だったとしたら、私の腕は欲しくなるでしょう。ちょっとくらい高額な単価でも仕事をしてほしいと思ってもらえますかね。
(^o^)

React と Vue の普及の度合い

あとこれは単純に普及の度合いです。技術者人気という感覚的なものではなく、エンジニアならば正しい情報も得ておく必要があるでしょう。

ネットにはいろいろ情報があって全然信用おけないけどよく知られているものとかあります。例えばTIOBEの言語ランキングなんてほんとにひどい無意味な情報源ですがひろく知られています。

エンジニアとしてのセンスは正しい情報を見抜くというところにありますのでより正しい根拠のある情報源からの情報を信頼してみましょう。

JavaScriptのライブラリがどれほど人気なのかを数値的に把握できる信頼度の高い情報源として npm trends をおすすめします。

このあたりをみると、Reactがかなりリードしているのがわかるでしょう。

単純にこれをみて React の仕事が増えているというのは予測できることですし、その企業は React の使いにくさに苦しむことが容易にわかるわけです。

そうすると自分のような、そういう困った会社からヘルプの声がかかるような立場でお仕事している身としては、これはもう Vue より Angular よりも優先して React を使うということになります。

もうひとつ、信頼できる情報源としての StackOverFlow のアンケートをみてみましょう。

ありゃ、こちらをみると Angular も強いようです。これはちょっと迷いますね。だた、Vueはランク外です。

ちなみにさらに検索してみると

react vs redux vs mobx | npm trends
https://www.npmtrends.com/react-vs-redux-vs-mobx

このような結果になります。なので、私が学ぶのは Redux か Mobx かの選択になると Redux となります。

でも使いにくいので使いたくないですけどね。>>Redux

というわけで

私なら React ですが、違う立場なら違う選択があるでしょう。

ただ仕事をうまくやるというビジネスマン的な視点も持てるエンジニアならば、私と同じ選択をしておいたほうがいいと思います。

「Vue を学んでいるならぜひうちで働いて欲しい」
という可能性よりも
「React を学んでいるならぜひうちで働いて欲しい」
という可能性が少し高いだろうと思われるからです。

そういう理由をお伝えしてみました。

どちらも使えるともっといいと思いますので、適当にどっちも使えるようにしておくとよいのではないでしょうか。

結局のところ、React も Vue もまた次の技術の波がきたら淘汰されるかもしれません。

どちらも使えるのがエンジニアの腕の見せ所ということです。

そしてもっとよいエンジニアだとすると、それらを補佐するライブラリを作り出したり、それらを置き換えるライブラリを作り出せたりしていくということです。

腕を磨いて、仕事などの現場で活躍できるいいエンジニアになっていってくださいね。

といういことでお返事をさせていただきました。

質問くださってありがとうございます。
すんごく長くなってしまってごめん。

ちょっと追記

React とか Vue とかのライブラリに関するもやもやについて、基本的にはこういう考え方をもっているといいと思います。

結局のところどっちを選んだとしてもどっちも詳しくなっていくのが求められるものですから、どっちやってってもそんなに変わらないです。概念を理解して使いこなして何かを実現させていくわけですから。

ビジネスの側面を除けばどちらでも好きな方を学び使っていっていってください。そして飽きたりとか限界を感じたら、別の方を選べばいいと思うところです。React Native, Vue Native も同じようなもの。突き詰めれば自分が作れるほどになっていければいいわけですし、いつでも切り替えられるようなスタンスで双方使いこなすというのもエンジニアの腕をあげてくれるので、がんばってくださいな。

 

-JavaScript

Copyright© プログラミングアカデミー ゼロプラスワン , 2019 All Rights Reserved Powered by STINGER.