最新版はReact 18
2022年3月29日に、React 18.0がリリースされました。その後のマイナーリリースにより、2023年2月時点での最新版は、React 18.2となっています。
【参考】:react/CHANGELOG.md at main · facebook/react · GitHub
並行レンダリングを中心としたReact 18
React 18の大きな特徴が、並行レンダリングです。従来のReactでは、これまで一度始まったレンダリングが完了するまで、別のレンダリングを始めることができませんでした。
React 18の並行レンダリングでは、レンダリングを実行中に別のレンダリングを始めたり、レンダリングを途中で停止して破棄できるようになりました。この並行レンダリングにより、React 18では数々の新機能が実現されています。
この並行レンダリング機能はオプトインで、並行処理機能を使う時のみ動作します。そのため、ユーザーは並行レンダリング機能を徐々に採用しながら、破壊的変更を考慮することなくReact 18にアップグレードすることができます。
【参考】:What happened to concurrent “mode“? · Discussion #64 · reactwg/react-18 · GitHub
React v18.0へのアップグレード
Reactの最新バージョンをインストールするには、npmかyarnを使用します。
コード:
npm install react react-dom
コード:
yarn add react react-dom
【参考】:React 18 アップグレードガイド – React Blog
または、Windowsに直接インストールします。
【参考】:Windows または Linux 用 Windows サブシステム (WSL) にインストールする必要がありますか | Microsoft Learn
React v18.0に追加された新機能
React 18で追加された新機能には、自動バッチ化、トランジションによる更新、サスペンスのサポートなどがあります。
自動バッチ化
React 18では、従来デフォルトではバッチ処理されていなかった、ネイティブのイベントハンドラやイベント内で起こる更新も自動バッチ処理されるようになりました。これによりレンダリングの作業が減ることで、アプリケーションのパフォーマンスの向上が期待できます。
【参考】:Automatic batching for fewer renders in React 18 · Discussion #21 · reactwg/react-18 · GitHub
トランジションによる更新
トランジションとは「段階的推移」を意味し、緊急性の高い更新と高くない更新を区別するもので、急ぐ必要のない再レンダリングを非同期で処理できる機能です。
トランジションを使用することで、タイピングやクリック、プレスなどのユーザに対して即座に反応する必要がある緊急性の高い更新を阻害しないで、重いレンダリングを裏側で処理することができ、ユーザにより違和感を感じさせない動作を行うことが可能です。
【参考】:React v18.0
サスペンスのサポート
React 17以前では、ページ内の一部のコンポーネントのレンダリングに時間がかかる場合、ページ全体の表示に時間がかかる場合がありました。
React 18では、例えばページ内の一部に、サーバ側でデータを取得してからレンダリングする重いコンポーネントがあれば、それを
【参考】:rfcs/0213-suspense-in-react-18.md at main · reactjs/rfcs · GitHub
Reactとは?
ここからは、Reactとはどういうものかについて詳しく解説します。Reactはどういう用途で使われているのか、フレームワークではなくライブラリの1種である理由などについてまとめました。
ReactはJavaScriptライブラリ
ReactはFacebookが開発したJavaScriptのライブラリであり、主にUIに関する機能を提供しています。UIとは「User Interface」の略であり、Webアプリの利便性の高さを表す言葉です。
たとえば、テキストボックスの配置を変更したりボタンのデザインを変えたりといったことができます。Reactを使うことでWebアプリの見た目の細かい部分を調整でき、ユーザーにとって使いやすいWebアプリに仕上げることができます。
ReactはFacebookをはじめとした多くの有名なサービスで活用されています。特に海外では人気が高いライブラリであり、今後日本でも主流になる可能性を秘めています。
【参考】:React – ユーザインターフェース構築のための JavaScript ライブラリ
JavaScriptとは?
JavaScriptは、Webアプリのフロントエンド開発で使われるプログラミング言語です。Webアプリにアラートが出せるようにしたりアニメーションを追加したりする際に使われます。
長年現役で活躍している言語であり、フロントエンドエンジニアを目指すなら習得必須の言語です。また、ライブラリも豊富なため、開発するWebアプリに合わせて柔軟に対応することができます。
ライブラリとは?
そもそもライブラリとは、プログラムの1部のみを切り離し、1つのまとまりにしたものを指します。ライブラリを使えばその部分の機能を自分で実装しなくて良いため、開発スピードを大幅に上げられるほか、テストにかかる時間も減らすことが可能です。
ライブラリには公式のものと他の企業が作成した非公式のものがあり、Reactは非公式ライブラリに分類されます。非公式ライブラリはデフォルトでJavaScriptに入っていないため、個別にインストールする必要があります。
Reactがフレームワークではない理由
Reactはフレームワークであると勘違いされやすいですが、公式サイトでは「ライブラリ」と書かれています。フレームワークとはアプリ開発で土台として使うプログラムを指し、開発に関する一通りの機能が備わっているもののことです。
Reactには多くの機能が備わっていますが、基本的にUI設計に限定したものとなっているため、フレームワークではなくライブラリに分類されます。
Reactと他のライブラリ・フレームワークとの違い
続いて、Reactと他のライブラリ・フレームワークとの違いについて解説します。jQuery・AngularJS、Vue.jsと比べてどういった点が優れているのか詳しくみていきましょう。
jQueryとの違い
jQueryは、Reactよりも有名なJavaScriptライブラリです。jQueryを使うことでスライドショーやアニメーションを短いコードで書くことができ、特に日本のWeb企業で人気があります。
ただしjQueryを使う場合、HTML側でクラスやIDを付与する必要があるため、HTMLファイル側も修正しなくてはいけません。それに対し、ReactはJavaScriptファイルのみの変更で対応が可能です。ソースコードの管理が簡単なのはReactの方と言えるでしょう。
AngularJSとの違い
AngularJSは、2009年にGoogleが開発したJavaScriptフレームワークです。日本では採用事例が少ないものの、アメリカやヨーロッパでは広く普及しています。
AngularJSはライブラリではなくフレームワークであるため、Webアプリ開発に必要な機能を一通り提供しているのが特徴です。
その分、Reactに比べ学習コストが高く、初心者にはややハードルが高いと言えるでしょう。そのかわり、AngularJSを使えば他のライブラリを使わずにAngularJSで全てまかなえるというメリットがあります。
Vue.jsとの違い
Vue.jsは、最近注目されているAngularJSを参考にして作られたJavaScriptライブラリです。Reactに比べ機能が限定されている分学習コストが低く、Webアプリ開発経験者ならすぐに習得できるでしょう。機能が少ない分、大規模開発よりも小規模開発に向いているライブラリです。
Reactの3つの特徴
ここでは、Reactを使用するなら知っておきたいReactの3つの特徴を解説します。Reactはこれら3つの方針を軸に作られていることを覚えておきましょう。
宣言的な View
Reactは宣言的であることを意識して作られており、「ここはこのように動く」という命令内容が、ソースコードを読めばすぐに分かるようになっています。そのためデバッグやテストがしやすく、バグの発生を防ぎやすくなっていると言えるでしょう。
コンポーネントベース
Reactは1つ1つの機能が「部品」として分かれており、アプリ開発ではそれを組み合わせて使います。部品を組み合わせて使うという考え方を「コンポーネント指向」と呼びます。
1つの機能が1つの部品としてまとまっているため管理がしやすい上に、ソースコードの修正をした結果関係ない箇所まで変わってしまうという事故が起きにくいのが特徴です。
1度学習すればどこでも使える
Reactを使ったWebアプリ開発のスキルを習得すると、他の分野の開発にも応用することが可能です。
React開発元のFacebookは、Reactから派生したライブラリやフレームワークもいくつか開発しており、それらはReactを習得済みの方なら理解がしやすい作りになっています。
たとえば、React Naticeというスマホアプリ開発するためのフレームワークや、React VRというVR開発で導入できるフレームワーク*があります。
Reactを開発で使うメリット
ここでは、Reactを開発で使うメリットについて解説します。Reactが海外で多く使われている理由についてみていきましょう。
ページの表示を早くできる
Reactを使うことで、Webページの表示速度が改善する可能性があります。Reactはページを更新する際、ページ全体を更新せずに変更箇所のみを更新する仕組みになっているためです。
Webページの表示速度の速さはUI/UXにおいて重要であり、少しでも速く表示されるよう改善することで離脱率を下げることに繋がります。
大規模アプリ開発に向いている
Reactは、Facebookをはじめとして大規模なWebアプリで多く活躍しています。大規模アプリはページ量が多く、1つのページを変更すると他も変更されてしまうことがよくあるため、その都度全体を通したテストを行わないといけません。
しかし、先程解説したようにReactは機能が部品ごとに分かれているため、他の箇所に影響を及ぼしにくく効率的に修正箇所をリリースすることが可能です。
また、Reactはカスタマイズ性が高いのも大規模アプリ開発に向いている理由です。自身でカスタマイズしたツールやビルドツール、フォルダ構造を最大限に活かすことができます。
学習コストが低い
Reactは学習コストが低く、JavaScriptの経験があるならすぐマスターできるのもメリットです。機能もそこまで多くなく構文もわかりやすいため、初心者でも覚えるのは難しくないでしょう。
学習コストが低い分、多くのエンジニアがReactでの開発に参入できるため、今後Reactは日本でも流行りやすいと推測されます。
SPAアプリ開発にも向いている
ReactはSPAアプリの開発にも適しています。SPAはシンブルページアプリケーションの略であり、1つのWebページによってWebアプリを構成する構造のことを指します。画面遷移の少なさやユーザーにとっての使いやすさが特徴です。
反面、1つのページにJavaScriptで様々な機能を追加する必要があるため、ページの読み込み速度が遅くなりがちなデメリットもあります。Reactなら速度が速いため、SPAアプリのデメリットを軽減させることが可能です。
信頼性が高い
Reactは開発元がGAFAの1つであるFacebookであるため、信頼性が高いのも特徴です。今後突然サービスを修正したりトラブルが発生したりする可能性が低いでしょう。
Reactは引き続き改良が続けられ、これから更にWebアプリ開発が楽になっていくはずです。また、セキュリティの面でも安心感があります。
React Nativeでスマホアプリも開発可能
Reactの派生として「React Native」というフレームワークがあり、こちらはReactを習得しているなら簡単にマスターすることができます。React Nativeはスマホアプリを開発できるツールで、iOSとAndroid両方で動かせるのが特徴です。
スマホアプリはiOSではSwift、AndroidならKotlinが使われることが多いですが、Reactなら両方の端末で動かせるため開発工数を削減できソースコードの管理も簡単になります。
今後はスマホアプリの需要が増していくことが予想されるため、Reactを覚えるだけでWebアプリ、スマホアプリ両方を作れるというのは大きなメリットと言えるでしょう。
Reactを開発で使うデメリット
続いて、Reactを開発で使うデメリットを解説します。Reactは優れたJavaScriptライブラリではあるものの、開発するWebアプリの種類によってはReactを使うべきではないこともあります。
日本語のドキュメントが少ない
Reactは日本語で書かれた情報が少ないため、学習コストこそ低いものの英語が読めないと難しい可能性もあります。React公式サイトも英語表記です。とはいえ、今後日本でReactが普及していけば日本語の情報も増えていくと推測されます。
メモリを多く消費する
Reactはメモリを多く消費してしまうデメリットがあります。Reactは変更箇所だけを更新するためにページの情報をメモリに保持しているため、どうしてもメモリを圧迫してしまいます。表示速度を上げるためにメモリを消費してしまうのはやむを得ないので、メモリ消費が致命的となるWebページでの使用は控えた方が良いでしょう。
また、更新が少ないWebページではメモリを犠牲にしてまで表示速度を上げる意味が薄いため、Reactの使用はおすすめできません。
現状日本では使っている企業が少ない
現状日本でReactを使用している企業が少ないため、求人数も比例して少ないのもデメリットの1つです。日本ではjQueryが根強い人気を誇っており、jQueryで書かれたソースコードを変更する労力を考えてReactに乗り換えない企業が多いと推測されます。
とはいえ、Reactの優秀性は海外で高く評価されており、日本も今後Reactを使う企業が増えるのは自然な流れであるため、今のうちにReactを習得しておきましょう。
Reactの将来性について
海外で人気の高いReactですが、日本での需要は今後どうなっていくか将来性について詳しくみていきましょう。
今後需要が高まることが予想される
Reactは現状日本では流行っていませんが、海外では導入企業が多いため今後日本でも需要が高まることが予想されます。
海外で流行った技術分野が日本で遅れて流行るのはよくあることです。たとえば、Pythonも以前は日本ではあまり人気がありませんでしたが、現在では多くのWebアプリ開発に使われています。
現状Reactを使えるエンジニアは少ない
現状ではReactを扱えるエンジニアはそこまで多くないでしょう。そのため、今のうちにReactの基礎スキルをみにつけておけばReactが日本でも主流になった際に活躍できます。
今後流行ると予想される技術を先回りして習得するのは、エンジニアが市場価値を高める方法の1つです。Reactに少しでも興味があるJavaScriptエンジニアは、今から少しずつReactを学んでいくことをおすすめします。
初心者がReactを勉強する方法
続いて、初心者がReactを勉強する方法を解説します。効率的に学べる方法を4つ厳選したので、これからReactでWebアプリ開発を行っていきたい方はぜひ参考にしてください。
Reactチュートリアルを活用する
Reactチュートリアルを活用するのは、もっとも王道の勉強法と言えるでしょう。公式サイトにある教材であるため内容も正確で、最新情報に随時アップデートされています。
Reactチュートリアルに従って学習することで、初心者でも「三目並べ」などのゲームを作れるレベルまで到達することが可能です。また、日本語版のチュートリアルも用意されているため、英語が苦手な方でもストレスなく学習を進められます。
【参考】:Tutorial: Intro to React – React 【参考】:チュートリアル:React の導入 – React
書籍を購入する
書籍を購入するのもおすすめの勉強法です。Reactは徐々に知名度が上がりつつあるため、日本語で書かれた参考書もいくつか販売されており、ネットショップなどで購入することができます。
特に、「React.js&Next.js超入門」や「モダンJavaScriptの基本から始める React実践の教科書」は入門者にもおすすめできる参考書です。
・React.js&Next.js超入門 第2版 こちらはReactを使ってのWebアプリ開発の手順を分かりやすく解説しています。第2版では新しいツールやデータベースサービスに対応しており、React関連の最新スキルを学ぶことが可能です。
また、入門書でも理解しやすいように、手順を省略せずに1Stepごとに丁寧に解説されているのも特徴です。
▪著者:掌田 津耶乃 ▪ページ数:460ページ ▪出版社:秀和システム ▪発売日:2021/02/27
・モダンJavaScriptの基本から始める React実践の教科書 (最新ReactHooks対応) こちらもReactを1から学びたい方におすすめの参考書です。フロントエンド開発の現場で役立つ実践的なスキルが網羅されており、現場のシチュエーションベースのストーリーで解説されているため分かりやすいのが特徴です。
▪著者:じゃけぇ(岡田 拓巳) ▪ページ数:272ページ ▪出版社:SBクリエイティブ ▪発売日:2021/09/17
【参考】:モダンJavaScriptの基本から始める React実践の教科書 (最新ReactHooks対応)
学習サイトを活用する
オンラインで学習できるサイトを活用するのもおすすめです。学習サイトなら動画やイラストつきのスライドで学べるため、Reactの複雑な箇所も理解しやすいです。また、空き時間にスマホで学習することも可能なため、仕事が忙しい方にも適していると言えるでしょう。
プログラミングスクールに通う
Reactも含めてJavaScript全般をこれから学びたいなら、プログラミングスクールに通うのも手です。プログラミングスクールでは、講師が1から教えてくれるため独学よりも挫折率が低く、確実に習得できます。
また、分からない箇所は講師に質問してすぐ解決できますし、学習スケジュールも講師が立ててくれる場合があります。JavaScript経験者の場合プログラミングスクールに通う意味は薄いかもしれませんが、未経験者にはおすすめです。
Reactのインストール方法
最後に、Reactのインストール方法について解説します。インストールする上で必要なツールやコマンドについてまとめたので、Reactの使い勝手を確かめたい方はぜひ参考にしてください。
Node.jsをインストールする
まずは、「Node.js」というJavaScriptの実行環境をインストールします。Node.jsはサーバサイドでJavaScriptを動かすためのツールですが、Reactのインストール時にも便利です。Node.jsを公式サイトからダウンロードし解答することでインストールが自動的にはじまります。
【参考】:Node.js
Create React AppでReactをインストールする
続いて、「Create React App」をインストールします。Create React AppはReactを簡単にインストールできるツールであり、特に細かい設定などにこだわらない人にはこちらをおすすめします。
次の3つのコマンドをコマンドプロンプトから入力すれば、Create React Appを使ってReactをインストールすることが可能です。
npx create-react-app my-appcd my-appnpm start
【参考】:GitHub - facebook/create-react-app: Set up a modern web app by running one command.
画面で確認する
最後は、Reactが正しくインストールされているか確認を行います。「http://localhost:3000/」にアクセスし、Reactの黒い画面が表示されればインストール成功です。
今すぐReactを試したい人はオンラインエディタもおすすめ
今すぐReactを試したいならオンラインエディタを使う方法もあります。オンラインエディタならローカルにファイルをインストールしなくても、ブラウザ上でコードを書いてReactの挙動を確認できます。
オンラインエディタの中でもCodeSandboxは機能が豊富であり、複数ファイルを管理できたりプロジェクトごとにダウンロードできたりするのでおすすめです。
【参考】:CodeSandbox
Reactは今のうちに勉強しておくのがおすすめ
本記事では、JavaScriptライブラリのReactについて解説しました。Reactの特徴やメリット・デメリット、将来性などがお分かりいただけたかと思います。Reactは、JavaScriptライブラリの中でも使い勝手が良く、特に大規模なWebアプリ開発で力を発揮するため、今後日本でも導入する企業が増えていくことが推測されます。
今のうちにReactを習得すれば市場価値の高いJavaScriptエンジニアになれる可能性が高いです。Reactに興味がある方はぜひ習得してみてください。
編集部オススメコンテンツ
アンドエンジニアへの取材依頼、情報提供などはこちらから