こちらは2019.05.01にMediumにアップされたAphinya DechalertさんのIs Angular dying because of React?を日本語訳したものです。
TL;DR
記事内において、「結論」では一つのフレームワークに固執することの危険性について言及されている一方、技術選定の際にReactとAngularで悩まれた場合に対するアドバイスとして、以下のように述べられています。
スピードが求められるプロジェクトや予算が厳しいプロジェクトにおいては、おそらく React がハマるだろう。
もし学習コストに変えてでも頑強でがっちりとした構造が欲しいのであれば、Angular が第一候補となる。
以下、日本語訳となります。よろしければ元記事と合わせてご覧ください。Vue.js についても述べられています。
AngularはReactに負けたのか?
Web開発の未来について
フロントエンド界隈での流行がReactに傾く中で、Angularの今後の需要についてが疑問視されている。
どちらを選ぶべきかという問題について、今まさに悩んでいる方にとってはとても大きな問題だろう。
Facebook が React のライセンスを BSD から MIT に変えたことで、React は世界中の開発者のあらゆる領域に広まった。
しかし、React は小さなアプリを素早くスケールさせることのできるコンポーネントベースのライブラリであって、完璧なフロントエンドシステムというわけではない。このことに多くの起業家やスタートアップは気づいていない。
React と Angular をめぐる論争
React が優れていることの証明として、 Facebook が典型的な成功例として取り上げられる。
しかし React は数多くある技術のうちの一つでしかなく、あくまでもJavaScript の UI "ライブラリ"の一つでしかないとも言える。
対する Angular に関して言えば、それは個々のユニットが密に連携をした、複数のライブラリの集合体である。
React には存在しない面を Angular が備えている一方で、React の理論的な実装は、Angular よりも優れているとも言える。
一般的に言って開発者は、自分自身が理解している技術に対して過大評価する傾向があり、より適したパラダイムの存在を受け入れることが困難である。こういった考え方は、開発者の思考を制限してしまい、結果的に成長を阻害してしまう。
React が人気であるにも関わらず Angular が強いサポートを保持しているのは、ひとえに Tech Giant である Google の力のおかげだ。これら2つのフロントエンドシステムにおいて、それぞれのカンファレンスや Debeloper Advocates の力 / 規模は、ほぼ同じ大きさであり、拮抗している。ただ、その一方で、Angular と React の間に立つ(現在においては)小人の存在を忘れてはならない…。
Vue について話そう
Vue は新進気鋭の新人として2つの間に割って入り、React を追い抜こうとしている。
Vue は 軽量であるだけでなく、Angular よりもシンプルであり、React よりも機能性の面において勝る。これらの利点から、コミュニティはまだ小さいにも関わらず支持者を着々と増やしていっている。
思うにVue の製作者は、AngularJS の利点・欠点をしっかり把握した上で、その根本的な主義・思想については Angular よりも React に近い影響を受けているのではないだろうか。
採用のし易さと開発者支援について
React は簡単にどう移入することができるし、ReactNative によってモバイルアプリへと変換もできることから、初級開発者の間で人気が高い。
一方Angure は Reactよりも、多少ヘビーであり初期学習コストが高い。Java の思想とコンセプトを持っているし、Google におけるバックエンド技術の思想が、コード全般にわたって散見される。
両者について比較し始めるとキリがないが、大事なことは、React も Angular も強いコミュニティの支えのおかげで、簡単に始められる点だ。
しかしスタートアップにおいては、いかに早く市場へローンチするかという点と、流行や要求に対する即座の対応を鑑みて、React にやや比率が傾いていると言える。
だが、React の低い参入障壁は、ソースコードの品質を落としてしまう可能性があることに気づいていない企業も多い。
開発者がそれぞれ、てんでバラバラに学習を進めてコードを書いてしまった場合、プロダクトの品質は目も当てられないものになってしまう。
この点においてAngular に分があると言いたいわけではないが、Angular にはそれを防ぐStructure が備わっていることは確かだ。
Vue は開発者にとって、これら React と Angular の論争には巻き込まれていないようだ。
Netflix は何を使っているか
Netflix は主にインフラやバックエンドの領域でReact を使用している。
Netflix の大規模なエコシステムにおいては、フロントエンドの React の比率は少ないと言える。
一方 PayPal は Angular を使用し HTML をレンダリングしている。
Netflix と PayPal は、両者とも同じくらいの規模の大企業(サービス)であるが、Netflix は Angular を全く使用していないし、PayPal も React を使用していない。
それぞれ、別のもう一方を採択している。
それぞれの企業において、コードのレガシー化などの問題はあるものの、問題解決を可能とする新たなエンジニアを採用するだけに十分な資金があるため、コードの運用において問題はないようだ。
Vue に関しても述べておくと、GitLab において、 2016 年から使用され続けている。
問題解決に適したツールを検討すべき
どちらのライブラリ / フレームワークが優れているかということばかりが論争の対象となっており、「どちらがプロジェクトにより適しているか」ということについては誰も問おうとしない。
スピードが求められるプロジェクトや予算が厳しいプロジェクトにおいては、おそらく React がハマるだろう。
もし学習コストに変えてでも頑強でがっちりとした構造が欲しいのであれば、Angular が第一候補となる。
もし両方欲しいなら....Vue が間違いなく両方を提供してくれる(とVue 信者の方はいうだろう)
Angular はまだまだ人気だ。
React がフロントにおけるエコシステムの覇権に手をかけていく一方で、着々と、地道に人気を獲得していっている。
また、これも気に留めておくべき事項ではあるが、Angular は AngularJS から移行する際において、コミュニティ内で大改革が起きた。
沢山の支持者がいたにも関わらず、彼らは再度 Angular 2 を学習し直さなければならなかったのだ…。
ただし新しいAngular は既存のものとは全く別物として生まれ変わったため、React よりも いい意味で3歳若いのだ。
結論
どの技術を採用しようか決められないのだとしたら…..あまり考え過ぎないようにしよう。
結局のところ、いずれもJavaScript であることに変わりはないのだから、とにかく手をつけるところから始めてしまおう。
例えどのフレームワーク / ライブラリを選んだとしても、後に別の技術を利用することになった場合には、先に学んだ技術の考え方がきっと役にたつだろう。
一つの技術に固執し過ぎないこと。様々なシステムについて精通した、いわゆる熟練のプログラマーになるためには、この考え方が大切だ。
アーキテクチャに対する深い理解、コンポーネントのデザイン / 開発、状態管理システムにおけるデータフローの理解….大切なことはたくさんある。
これらの技術を深く理解した上で実務へと活かすことができるかどうか、この点が初・中級者とベテランエンジニアの境目と言えるだろう。
感想と補足(訳者)
急遽Angularを触る機会がありまして、急ぎ情報を集めていた際にこちらの記事に出会いました。
Angularについては、日本国内では採用事例が比較的少ないように感じますが、StackOverflow のDeveloper Survey Results2019におけるMost Popular Technologiesでは、TOP3にランクインしています。(1位はjQuery, 2位はReact)
記事内の「結論」にて筆者が述べられていることは、エンジニアとして意識すべき大切なことですが、私はうっかり者ですので、時に忘れてしまいがちです。いつでもこの考え方に戻ってこられるように気を付けようと思い、今回訳させていただきました。
もし元記事の中におかしな点などございましたらご指摘いただけますと幸いです。