#6858

組み上げるための選択


web制作

水面下で少しずつ動いている新サイト制作プロジェクトですが、相変わらず難航しています。
現在の悩みはフレームワークをどれにするか。
これまでのサイトは(WordPressを除いて)基本的にベタ打ちで作ってきました。
つまり、まっさらの状態から必要な機能をすべて手作りしていたわけです。
しかし2022年現在、そのような手法はもはや時代遅れと言われて久しく、
なんらかのフレームワークを利用して制作することがもはやスタンダードになっています。
フレームワークを使う主な利点は開発コストの低減です。
たとえばどんなwebサービスにもたいてい備わっているログイン&サインアップ機能。
フレームワークはこういう機能に対してテンプレートを用意していて、
ユーザーはそのテンプレートを導入するだけで実装できるようになります。
そのほうが明らかに時短になるし、また素人の自分が作るよりも明らかにセキュアです。

ただ、フレームワークにはそれぞれに独自の決まりごとがあり、
ベタ打ちのように俺ルールでゴリ押しすることはできません。
つまり、開発言語そのものの知識に加えてフレームワークのルールを覚える必要があります。
そのハードルの高さはそれぞれですが、少なからずベタ打ちより参入は難しいです。
あとは、フレームワークはその時々によってトレンドというものがあり、
流行のフレームワークはサポートが充実する一方、そうでないフレームワークは知見も少なく、
トラブルシューティングが難しくなるケースもあります。
そういった事情から、フレームワーク選びは多少慎重にならざるを得ないところがあります。

今回のプロジェクトで悩んでいるのはフロントエンドフレームワーク、
つまり内部処理をする方ではなくて実際にブラウザに表示する処理を担う技術です。
要するにjavascriptのフレームワークで、これについてはVue.jsで行こうと思っています。
競合相手にReactやAngularがありますが、技術的ハードルの低さからこれを選びました。

問題は、そのVue.js自身を包括、あるいは補助するフレームワークをどれにするかです。
つまり、フレームワークのフレームワークということですね。
今春時点ではこれはNuxt.jsにしようと思っていました。
これは別に確固たる理由があるわけではなく、
確か東京都の新型コロナ対策サイトがこれを利用していると話題になったのがきっかけでした。
しかし最近になってIonicやQuasarなど魅力的なフレームワークを発見し、
いまはこの2つのうちどちらにするべきかで散々悩んでいます。

Nuxt.jsはVue.jsをサーバーサイドレンダリングしたりルート管理をしやすくしたりするもので、
それ自体は見た目に関与しません。見た目の部分は別のフレームワークが担当します。
IonicやQuasarは、見た目に関与するコンポーネントパーツを多数提供するとともに、
作成したサイト(アプリ)をクロスプラットフォームに対応させる機能を持っています。
つまり、サイトが完成したらそれをそのままiOSアプリ、Androidアプリにもできるわけです。
また、同時にNuxt.jsが提供するサーバーサイドレンダリングなどの機能も提供します。

IonicとQuasarの最大の相違点は、Ionicがさまざまなフレームワークに対応するのに対し、
QuasarはあくまでもVue.jsに特化して開発が進められているということです。
対応範囲が広い分、Ionicの方がユーザーが多くサポートは明らかに充実しています。
ただし、これはちゃんとした引用情報があるわけではないのですが、
どうもIonicは「webの技術でモバイルアプリを作ること」が主なコンセプトとなっているため、
それだけでwebサイトを作るのはむしろコスパが悪いといううわさがあります。
一方、Quasarはモバイルアプリのみならずwebサイトも作れることを標榜しています。

Ionicは日本語ドキュメントもあってハードルが低いのは間違いありません。
またユーザー数も相当多くユーザー制作のコンポーネントを利用することもできるため、
UI設計で困ることはなさそうです。
ただ、上述の通りそもそもモバイルアプリを作ることが主目的という思想があるので、
Webサイトを作ろうとしている自分にとっては本末転倒になってしまう危険性が少なからずあります。

Quasarは最大の難点としてまず日本語ドキュメントがありません。翻訳して頑張るしかない。
また、Ionicと比べるとマイナーであることは間違いないので、
今後Ionicに株を奪われていくと開発そのものが下火になってしまう危険性は否定できません。
さらにVue.jsに依存しているので、同じことがVue.jsとReactの関係でも言えます。
この業界では流行らなかったフレームワークは次に活かすことも難しくなってしまうので、
その意味ではかなり大きなリスクと言えます。
今回はQuasarで作ったけど、次回までに廃れたら次回は結局Ionicで作ることになるかもしれない。
そうなったら2つ分の学習コストがかかることになってしまいます。
まあ、そこまで考えたらキリがないのですが……。

あとは第三の選択肢として「Flutter」というものもあります。
これもクロスプラットフォームアプリを作るためのフレームワークですが、
Googleがバックアップしているため近年急速に流行っていて、すでに上記2つを凌駕しています。
ただ、プログラミング言語にDartを使うためハードルの高さは他の比ではありません。
その代わりUIコンポーネントは豊富でwebサイトを含むあらゆるプラットフォームに対応しており、
さらに急成長中ということで明らかにメリットは多いです。
最初に学習コストを払うことを飲み込めればFlutterを選ぶのが無難なような気がします。

結局どれを選ぶべきか。悩ましいですが、現時点ではQuasarが優勢です。
Flutterが一番良いような気はしますが、リリースまでの道のりを考えると挫折してしまうかも。
そもそも今回は来秋には是が非でもリリースしなければならないプロジェクトなので、
その時間のなさを考慮するとプログラミング言語の習得から始めるのは厳しいのかなと。
ただ、Quasarにする場合はそれはそれで問題解決の難しさを覚悟しなければなりません。
英語文献が見つかればまだマシで、それすら無いパターンも十分あり得るわけですからね……。
最悪、どちらも厳しいのであればもっとハードルの低いフレームワークを探さなければなりません。
それもダメならベタ打ちということになりますが、さすがにそれは避けたい。

果たして新プロジェクトの命運を預けるに値するフレームワークは見つかるのでしょうか。
もう少し悩んでみたいと思います。

コメントを残す