見出し画像

202x年代のJS開発における複雑性との戦い

現代のソフトウェア開発は、複雑性との戦いであり、変化への対応が重要です。

その観点で、2020年にJavaScriptフレームワークをちゃんとはじめるために。という記事に反論します。

自分としての結論

React/Vueのどっちかをやっておけば潰しは大体効くので、ReactでもVueでも好きな方を選べばいいという点は間違いないとは思っています。ただ、Reactの方がミニマルなため、今後の時代には適合しやすいでしょう。

Angularを選ばない理由

僕ならばAngularを採用することもオススメすることもありません。

もちろん他の人の選択を止めることはありません。何かしらの理由があってそれを選択するならばそれは尊重されるべきです。

 では何故ぼくがAngularを選ばないのか?

そもそもフレームワークというものは、仮にその時点で80点を取れたとしても技術的負債になりがちです。特にガチガチなほど、その傾向があります。

これは次に新しい技術が来たときの移行コストが高すぎることが1つあります。未だに世界中にAngularJSのサイトが多く残されていることを思い出してください。

そして、複雑度が高くなるためです。

現代はビジネス環境自体が大きく変化しやすいため、ソフトウェア開発は複雑性との戦いであり変化への対応が不可欠です。

技術的負債や、ソフトウェア開発の複雑性というものは、すでに語り尽くされているため、ことさらここで語ることはしません。

複雑性との戦い、変化への対応が重要な現代で、しかも最もユーザーに近く最前線とされるウェブ開発においては、フレームワークの持つ複雑性は、それだけで技術的負債になりえます。

ソフトウェア開発は、問題解決が主体であり、そこにあるビジネスロジック・ユースケースが重要なのであり、ライブラリやフレームワークの選定は二の次です。なるべくならライブラリやフレームワークには依存しない方が望ましいくらいです。

AngularはAngularJSよりはマシかもしれませんが、それでもフレームワークであり、Vueよりもさらに大きく複雑なものです。

僕がAngularのようなフレームワークを良い選択肢だとは思えない理由は以上であり、Reactを選ぶのは、Reactがベストな選択肢であると考えているわけではなく、ミニマルに作られているため、ビジネス環境の変化に最も対応しやすいからベターだと考えているだけです。

HTMLとJSの関係について

・ Angularは、HTMLとJavaScript(TypeScript)を分割してかきます。
・ Reactは、JavaScriptの中にHTMLを書きます。
・ Vueは、HTMLにJavaScriptを書きます。

これに関しては、JSXが実はベターな解だったのではないか?という記事において、HTMLテンプレートをベースにした環境よりも、JS/TSの中に木構造の制御を取り入れたJSXの方が、ベターだと考えているということを述べておきました。

GitHubは指標足り得るのか?

GitHubのStar数は、新しくでたOSSより古くからあるOSSの方がStarは多くなります。DL数は短期的には話題になったOSSや、レガシーで多くの現場で使われてるOSSの方が多くなりがちです。

それぞれ最初のバージョンはReact(2013年)/Vue(2014年)/AngularJS(2009年)です。

スクリーンショット 2020-01-05 14.04.44

一斉を風靡してレガシーと化したAngularJSのStarは59.6kで、先日書いた記事では、Angularは56kで、Reactは142kで、Vueは155kです。長く使われているレガシーが多くなりがちというロジックでいうなら、AngularJSはもっとStarが多くてもいいのではないでしょうか?

技術選定で参考にできないなと思ってるのが、GitHubのStarの数であったり、DL数です。

そうでしょうか。StarやDL数は関心を持つ人の数を可視化したものであり、その数値はある程度以上は参考になるはずです。npmでも、VSCode拡張でもいいですが、多くの人が使っているものほど、多くの目にさらされ、使われ、情報も多く、利用例も多いでしょう。

もちろん、参考に過ぎないと考えるのは自由です。

自分が本当に求めているアーキテクチャなのか、機能なのか、性能なのかを検討する必要はありますが、大まかな世界の状況把握には使えるはずです。

この記事が気に入ったらサポートをしてみませんか?