LoginSignup
1
1

More than 3 years have passed since last update.

既存のRailsアプリケーションにのせるフロントのフレームワークを比較した話

Last updated at Posted at 2020-10-13

背景

既存のRailsのアプリケーションにフロントのフレームワークを導入する運びとなりまして、有名どころ3つをチェックポイントに沿って比較しましたのでその話を残しておきます。
今回はこういうやり方で比較したよ、という話なので、もしフレームワークを選ぶことになった際は参考程度に読んでいただき、その時々の状況やプロジェクトに応じて比較方法は変更すればよいと思います。なのでこれが正解というわけではないです。調査結果に誤りがある場合もあると思いますので、調査は自分で公式のものを見てちゃんと行った方がよいです。

比較したフレームワーク

今回比較、検討したフレームワークは以下の3つです。

  • Vue.Js
  • React
  • Angular

ちなみにAngularは、今回導入しようとしているアプリはそんなに大規模というわけではなかったので、ある程度のところでAngularの調査は切り上げ、VueとReactに絞りました。

チェックポイント

今回「まあこれが分かれば比較できそうかもしれない」と考えてチェックポイントをチーム内で相談し決めました。

  • フレームワークの概要(特徴)
  • 主なプログラミング言語
  • 最新バージョン
  • 学習難易度
  • パッケージサイズ
  • GUI
  • 既存機能の実装難易度
  • Heroku上の動作時における不具合等
  • コード管理のしやすさ
  • 開発手法
  • ドキュメント
  • 他フレームワークへの以降性
  • ローカル環境構築のしやすさ

比較方法

期間:2週間
調査人数:エンジニア3~4名

チームメンバーで上記のチェックポイントを分担し、確認を行っていきました。その際の情報共有はGoogleドキュメントを使用し、適宜必要に応じてHangoutを行いました。

比較結果

チェックポイント Vue React Angular
フレームワークの概要(特徴) OSSフレームワークでコミュニティにより開発・メンテ。GUIのコンポネントのみ提供。必要であれば他のライブラリをインストールする Facebook社により開発・メンテされている。GUIのコンポネントのみ提供する。必要であれば他のライブラリをインストールする Google社により開発・メンテ。フロントエンド用のMVCフレームワーク
主なプログラミング言語 EMACS6 EMACS6 Typescript
最新バージョン(調査当時) 2.6 16.13 10
学習難易度 容易:GUIのコンポネントとライフサイクルを理解すれば問題ない。CSSコードはコンポネントの中に記述してもいい 容易:GUIのコンポネントとライフサイクルを理解すれば問題ない。 難:GUIの作成方法以外、フレームワークのコンポネントを理解する必要がある
パッケージサイズ(約) 80KB 100KB 500KB
既存のサイドパーティ Vue Material Kit, Vuetify, Vue Material, Quasar, Bootstrap-Vue Raect Material Kit, Material UI, React Bootstrap, Ant Design, Semantic UI React mdbootstrap, material, ng-bootstrap
既存機能の実装難易度 APIを新たに作成する必要がある。 Vue同様
Heroku上の動作時における不具合等 deployして検証 deployして検証
コード管理のしやすさ コンポネントで分かれているためコード管理はしやすい Vue同様
開発手法 オブジェクト指向 コンポネント指向 コンポネント指向
ドキュメント 日本語あり 日本語バージョンは英語の直訳 日本語あり
他フレームワークへの以降性 独自フォーマットであるため、開発が進むと後戻りは困難 Vue同様 フルスタックなため代替は困難
ローカル環境構築のしやすさ 導入時の設定は少し困難だが、そこが完了していれば容易 Vue同様

比較結果

既存機能を実際に開発してみて検証をし、ドキュメントを読んで比較した結果今回はVue&Vuetifyになりました。チームメンバーにVueの経験がある人が多かったのも一つです。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1