ReactとVueのどちらを採用するか

掲題について、とりとめもなくメリット・デメリットなどを考えているので、メモを残しておきます。

執筆時点ではReactは経験が非常に浅く、事実や経験というよりはほとんどが思い込みや予想です。

React

メリット

  • フロントエンドをうまく作るために頭が良い人たちが考えた設計や技法を効率良く学べそう
  • シェア一位のため事例が多く、かつFacebookTwitterといった大企業も採用しているため、大抵のことは解決方法が存在していそう
  • React NativeがあるのでNativeアプリ作りたくなったときにReactのノウハウを流用できるはず

デメリット

  • 位置づけがライブラリということもあり、react単体で実現できないことは別ライブラリと組み合わせて実現する必要があり、技術選定のための審美眼とどう組み合わせるかの設計スキルが必要(になりそう)
  • 正しい設計や技法を知らないうちはそれを学ぶまでの学習コストを払う必要があるため、とりあえず動かすまででも相当な時間がかかりそう

イメージ

  • フロントエンド専門あるいはフロントエンドからキャリアをスタートしているツヨツヨな人たちが好んで使ってる
  • 同じデザインかつコンポーネントの分割方針も同じだったらコードも似てくる気がしている
  • React書ける人ならVueとかAngularは楽にキャッチアップできそう
    • Reactを使いこなせる人はつよつよなフロントエンジニア

Vue

メリット

  • とりあえず一通り動かせるようになるまでの学習コストが低い
  • htmlベースベースでSFCを書けるため、HTML/CSS/JSの基本的な知識がある人には書きやすい
  • Vuex,Vue Routerといったコアライブラリを公式サポートしているので技術選定で迷いにくい
  • Nuxt.jsというたいていのアプリでは使われる(コア)ライブラリが全部入りになってる便利なフレームワークがあるので技術選定や設定に割く時間を節約できる
    • 本当にかなり使いやすい
    • RubyでいうRailsのような位置づけだと思ってる

デメリット

  • とりあえず動かせちゃう方法がたくさんあるせいで、正しい設計にたどり着くまでのコストが高い。またそれが故に設計スキルが身につくまでに時間がかかりそう。
  • TypeScriptとVuexの相性がイマイチ(らしい)
  • 事例は増えてきているが、まだシェアが低い
  • 個人(Evan You氏)がメインで進めているため、何らかの理由で彼が突然リタイアした場合に、その後のメンテが止まる可能性がある

イメージ

  • デザイナあるいはバックエンドといったような隣の領域からフロントエンドに手を伸ばしてきた人たちに好まれる
  • 同じ画面デザインかつコンポーネントの分割方針も同じでも、書く人によって全然違うコードになりそう
  • Vueの経験があるだけでは、ReactもAngularをすぐキャッチアップ出来るとは限らない
    • 意識的に設計スキルを磨いている人は別

どちらを採用するか

まず、大前提としてフロント開発自体の経験がない場合は、何を選んでも時間の試練に耐えうるものは作れないと思っています。

そのため、その状況だと何を選んだとしても割とすぐに捨てることになると思っています。

なので、敷居の低さを理由にまずはVueを採用するのがいいんじゃないかと考えています。

まずはVueで手早く価値を生み出せるものを作りつつ経験を積むべきな気がしています。

一通り作り終わればフロント開発の経験値がそれなりになっているはずなので、もう一度Vueで書き直した場合に今の課題を解決できるなら作り直すかどうかはおいといてVueを継続すればよいでしょう。

Reactでしか解決できないのであればReactで作り直すのが良いかと思います。

逆にフロント開発に強い人がチームにいるなら、好みで選んでしまって良いような気はしています。

価値を生み出すようになったアプリを、その後にフルスクラッチで書き直せる勇気や資金や時間が湧くかどうかはまた別のお話だと思ってます…

以上、私的メモでした。