本記事は、Vue.js
コアチームメンバーである@antfu7
氏の以下ツイートに対する回答を個人的にまとめたものです。
https://twitter.com/antfu7/status/1567511783832961026
React ユーザーの皆さん、
好奇心で聞くのですが、Vue を使ったり試したりするのを妨げているブロッカーや欠点は何ですか?
対立煽りっぽいタイトルにはなっていますが、個人的な好奇心がモチベーションとなっており、特定の技術を贔屓、批判する意図はありません。
私自身は長らくVue
を愛用しており、業務でも大規模 Vue アプリのメンテに携わっている一方で、React
は小規模プロジェクトや個人開発でしか利用していません。そのため、理解度に差がある状態であるため、改めてVue
とReact
の対比やそれぞれの良さを実感したいと思い、一通りのツイートに目を通した次第です。
また、Vue.js
の生みの親であるEvan You
氏が以下のようにツイートしている通り、回答に含まれるVue
に対する不満点の多くは Vue 3 及びそのエコシステムで解決されているものを含んでいます。
https://twitter.com/youyuxi/status/1567700474912190464
素晴らしい文化的な議論です。とはいえ、Reactユーザーの中には、Vueを数年前にちょっと試したときの経験に基づく認識がまだ残っている人がたくさんいるような気がします。
私はまだ、「React開発者のためのVue 202x版」ブログ記事を完成させる必要があります。
さらに、いくつかの回答に対してはVue
ユーザーの方々からのフォローも入っているので、合わせてみてみるとVue
もイケるじゃんともなってくるのでオススメです。
本題です。すべてのリプライに目を通しつつ、いくつかの観点別に、代表的なツイートを抜き出しています。
Vue
が順当な進化を経て機能上の差異がなくなってきたことにより、これが大きな理由となるケースが多いようです。
React
はVue
と比べるとフレームワーク (Next.js
) やデータフェッチライブラリ (SWR
,tRPC
) などの成熟スピードに差があり、常に最善の選択ができることが理由としてあげられています。
特にVue
は Vue 3 への移行がエコシステム全体で追従しきれていないため、依然としてモダンな構成の選択が限られることが問題視されています。 (とはいえVue
はコアチームからVueRouter
VueI18n
などの主要なライブラリが出ているのが救いではある)
個人的にもReact
のエコシステムに対する安心感を羨ましいと思うことがあり、特にStorybook
のような開発支援系ツールはReact
を先行してサポートする傾向がある印象があります。
https://twitter.com/donutspree/status/1567523725091786759
https://twitter.com/EddyVinckk/status/1567516447336710144
https://twitter.com/NikhilVerma/status/1567533179652952065
https://twitter.com/songkeys/status/1567537487278637058
https://twitter.com/JoshWComeau/status/1567559618062082048
https://twitter.com/seanghay_yath/status/1567561042703822849
https://twitter.com/matijao_/status/1567544004819951622
React
はTypeScript
との相性が非常に良く、複雑なセットアップを行わずともすぐに型安全な開発を行えます。
一方でVue
は SFC (.vue
の拡張子を持った独自のファイル) を扱う都合にTypeScript
で扱うのが困難です。Vue 3
によって型サポートは大きく向上したものの、Volar
を主とする IDE とのインテグレーションの手間はまだまだ残っています。
Vue
でもvite
でスキャフォルドするなど、ベストプラクティスに則ったプロジェクト構成を採用すれば基本的には何とかなる印象ではありますが、やはりReact
は型安全の面でも先行しているように見えます。
https://twitter.com/sanxiaozhizi/status/1567529738230702083
https://twitter.com/Danny_H_W/status/1567519916156133376
https://twitter.com/NoWizardry/status/1567551925138395136
https://twitter.com/ragragg_/status/1567537229043572737
React
は Vanila JS により近いため多くのユーザーがReact
はコンポーネントを第一級オブジェクト(first-class citizens
) であることから、純粋なJavaScript
に近いことを理由にあげています。
対するVue
が SFC という、独自のコンパイラ (vue-template-compiler
/@vue/compiler-sfc
) を必要とする構成であることから、前述のエコシステムの成熟のしづらさにもつながっています。
また、JSX
に対する評価が高く、Vue
のtemplate
が DSL 寄りであるのに対し、JSX
はレンダー関数の糖衣構文に過ぎないという点が重要なようです。もちろんVue
でも SFC を使わずに、JSX
を使ってレンダー関数を定義するという選択肢はありますが、一般的には SFC が使われることが大半で、推奨もされている ことから区別して扱っています。
なお、回答に対する反応として、「JSX
が苦手で使いたくない」というテンプレート派や、「Vue
のテンプレートは HTML 構文にほんの少しのカスタムディレクティブを追加しただけで DSL ではない」という声もありました。
https://twitter.com/ryanflorence/status/1567701540366073857
https://twitter.com/viniciusflv1/status/1567514645950349313
https://twitter.com/hardfist_1/status/1567552547220779008
https://twitter.com/mzaien_/status/1567533304231993345
https://twitter.com/jon_dewitt_ts/status/1567539033315614721
https://twitter.com/TunkShif/status/1567566536679854081
https://twitter.com/mfbyrktr/status/1567696832146317312
意外と多かったのがこちらです。 Web 技術を用いてネイティブアプリを開発する上でReact Native
を採用することが多いからという理由です。
Vue
でもcapacitor
などのクロスプラットフォーム開発ツールを採用することでネイティブアプリを開発を行えますが、React Native
のシェアはまだまだ無視できないようです。
個人的にはクロスプラットフォーム開発のトレンドは移り変わりが激しいので、React
そのものを推す理由としては弱いかなと感じました。
https://twitter.com/lazminutes/status/1567512919071674370
https://twitter.com/a7medev/status/1567512972901203971
https://twitter.com/JofArnold/status/1567585671098863618
https://twitter.com/mabdullahsari/status/1567587383549231106
https://twitter.com/alexdotjs/status/1567631961417449475
技術に対する大きなこだわりがない場合の最大の理由がこちらでした。
日本国内ではVue
が一定のシェアを持っているため気づきにくいですが、React
一強となっている英語圏においてはそのシェア率の高さがシェア率をさらに高めているのでしょうか。
https://twitter.com/Moose_Said/status/1567521537242038272
https://twitter.com/Adib_Hanna/status/1567514505139159042
https://twitter.com/darkjeda/status/1567527051770593280
https://twitter.com/_teo_garcia/status/1567530331254685698
https://twitter.com/ebns1na/status/1567536884003540992
ツイートを読みながら思ったこと
React
を使うニーズの多くは、Vue 3 でも満たせるようになったから、今後の宣伝次第ではシェアを奪える可能性もある…?React
ユーザーにも刺さってはいるのか本記事では、React ユーザーが Vue を選ばない理由のツイートについて整理しました。
取り上げたツイートは全体のごく一部ですが、一通りのツイートに目を通した限りは概ね本記事のような傾向だったと思います。
私自身、React
にあってVue
に足りないものを改めて実感しながらも、それでもVue
のここが良いよねというポイントを再認識したり、今後のVue
の進化にさらなる期待を感じる点もあったので良い機会になりました。
そもそもVue
とReact
は根本の思想が異なる点が多くアプローチも全然違うため、優劣を付けるのではなく、それぞれの強みを伸ばして互いに刺激しあって成長していけば良いなと感じました。
バッジを受け取った著者にはZennから現金やAmazonギフトカードが還元されます。