結論:JavaScriptの延長線上で気軽に始めたいならReact、最初からTypeScriptと構造がセットで用意された「型と規約に守られた開発」を体験したいならAngular。どちらもブラウザ内で無料で動かせるので、まずは両方の最初のレッスンだけ触って手触りを比べるのが一番早いです。
「React Angular どっち」で検索する人の多くは、フロントエンドの入門をこれから決めるところだと思います。どちらも実在するブラウザ実行つきの無料コースがあるので、ここでは特徴・学習コスト・用途の3点で整理します。
React と Angular はそもそも何が違うのか
一言でいうと、React は「UIを組み立てるためのライブラリ」、Angular は「アプリ全体を作るためのフレームワーク」です。
- React:見た目は「JavaScriptの関数」がベースです。コンポーネントは値を返す関数で、返す中身をHTMLに似た記法(JSX)で書きます。ルーティングや状態管理は含まれておらず、必要に応じて別のライブラリを組み合わせるスタイルです。素の書き方は はじめての React ― 画面に文字を出す を見るとイメージが掴めます。
- Angular:Googleが作るフルスタックなフレームワークで、コンポーネント・DI(依存性注入)・テンプレート構文などが最初から一式そろっています。TypeScriptが前提で、
@Componentのようなデコレータでクラスに見た目を紐づけます。最初の形は はじめての Angular ― コンポーネント で確認できます。
同じ「1 + 2 = {1 + 2}」のような値の埋め込みでも、Reactは波かっこ1つ { }(JSXに値を埋め込む)、Angularは波かっこ2つ {{ }}(テンプレートに値を出す ― 補間 {{ }})と書き方が違います。この最初の1行の差が、そのままそれぞれの設計思想の違いを表しています。
学習コストの違い
Reactは「JavaScriptの知識をそのまま使える」ことが強みです。 JSXは覚えることが少なく、useState で状態を持つ(useStateで状態を持つ ― カウンター)、map で一覧を作る(リストを描画する ― map)のように、素のJavaScriptの延長で書けます。まずは JavaScriptコース で console.log や配列・関数に慣れてから React に進むと、つまずきが少なくなります。
Angularは最初にTypeScriptと独自の構文をまとめて覚える必要があります。 [ ](プロパティバインディング)と ( )(イベントバインディング)の書き分け(プロパティバインディング ― [ ]、イベントバインディング ― ( ))、@Input/@Output での親子連携(@Input で親から子へ渡す、@Output で子から親へ知らせる)など、覚える語彙が最初から多めです。その代わり、型の恩恵で「何がどこから来るデータか」が構造として見えやすくなります。先にTypeScriptの型注釈に慣れておきたい人は TypeScriptコース の入り口である 型注釈 ― 変数に型をつける から始めるとスムーズです。
コースの実行範囲で比べると、Reactコース は全14レッスン中13レッスン(第1〜13回)がブラウザでそのまま実行でき、最後の1回(これからのReact ― エコシステム)だけが実務ツールの紹介の読み物です。Angularコース も全12レッスン中11レッスン(第1〜11回)がブラウザ実行で、最後の1回(これからのAngular ― 実務への橋渡し)が読み物という同じ構成になっています。どちらも登録不要・環境構築なしで、いますぐコードを書いて結果を確認できます。
用途で選ぶならどっち
- 個人開発・スタートアップ・とにかく早く動くものを作りたい:Reactが選ばれやすい傾向にあります。ライブラリなので必要なものだけ足していける自由度があり、状態を親で持って子に配る「状態を上げる」設計(状態を上げる ― 兄弟コンポーネントでstateを共有する)のような小さな単位から始められます。
- 大規模なチーム開発・エンタープライズ向けアプリ:Angularが選ばれやすい傾向にあります。ルーティングやDIなどが標準で規約化されているので、チームで書き方が揃いやすいのが利点です。DI(依存性注入)でロジックを共有する考え方は サービスと依存性注入(DI)― ロジックとデータを共有する で体験できます。
- 「まずUIを組む感覚を掴みたい」:どちらも 小さなTODOアプリ(React)/小さなTODOアプリ(Angular)というほぼ同じお題のレッスンがあります。同じアプリを両方の書き方で作ってみると、違いが一番わかりやすいです。
どちらが「優れている」ということはなく、Reactは自由度、Angularは規約という違う方向性の道具です。迷ったら、まずJavaScriptの感覚が生きるReactから触ってみて、型に守られた開発をもっと知りたくなったらAngular(とTypeScript)に進む、という順序が挫折しにくいです。
つまずきやすいところ
Reactでつまずきやすいのは、JSXの中に素のJavaScript式しか書けないルール(if 文はそのまま書けず、三項演算子や && を使う必要がある)や、useEffect の依存配列の扱いです。条件で表示を変えるやuseEffectで副作用を書くでこの感覚をつかめます。それでもコードが動かないときは、undefined のプロパティを読もうとするエラーなど、JavaScript自体のランタイムエラーであることも多いので、JavaScriptのエラー逆引きを確認してみてください。
Angularでつまずきやすいのは、*ngIf・*ngFor を使うために imports: [CommonModule] の登録が必要な点(条件と繰り返し ― *ngIf と *ngFor)や、TypeScriptの型エラーです。「宣言した型と違う値を代入した」といったエラーは、TypeScriptのエラー逆引きによくあるパターンと直し方がまとまっています。
次に読む
- Reactコース トップ ― 全14レッスン中13回がブラウザ実行。JSX・props・stateからuseEffectまで。
- Angularコース トップ ― 全12レッスン中11回がブラウザ実行。テンプレート構文・DIまで。
- JavaScriptコース ― Reactの前提になる素のJavaScriptを、
console.logから一通り学べます。 - TypeScriptコース ― Angularの前提になる型注釈を、ブラウザでTS→JS変換しながら学べます。
- JavaScriptのエラー逆引き ―
undefinedのプロパティアクセスなど、実行時エラーの読み方と直し方。 - TypeScriptのエラー逆引き ― 型が合わないなど、コンパイルエラーの読み方と直し方。
- 手を動かして比べたい人は はじめての React ― 画面に文字を出す と はじめての Angular ― コンポーネント を両方開いて、同じ「Hello, World」の書き方の違いを見比べてみてください。