VITALIFY.ASIA logo

React.js実装プロセス解説:Webpack・Babelの環境構築からJSX記法までの基礎ステップ

Author profile
Vitalify Asia Team2017/09/10
React.js実装プロセス解説:Webpack・Babelの環境構築からJSX記法までの基礎ステップ

前回はReact.jsの基礎概念について解説しました。今回は、実際にReact.jsを動かすための環境構築と、実装の基礎的な仕組みについて、初心者なりに学びながら実装した過程をまとめました。

React.js入門:仮想DOMとコンポーネント指向による開発の優位性 | バイタリフィ アジア
モダンなフロントエンド開発の主流であるReact.jsの基礎概念。SPA(シングルページアプリケーション)に適した仮想DOM(Virtual DOM)の仕組みと、Fluxアーキテクチャ/Reduxを用いた単方向データフローの利点について解説。

React.js実装のメリット:仮想DOMとSPA

React.jsの最も優れている点は、「仮想DOM(Virtual DOM)を用いて、ページ全体をリロードせずに必要なDOM(部品)だけを書き換えることができる」ことです。

例えば、Facebookのタイムラインを想像してください。

  • 誰かが投稿すれば、真ん中のコンテンツ領域だけが更新される。
  • 友達が「いいね」を押せば、右側の通知領域だけが更新される。

このように、コンポーネント(部品)ごとに状態を管理し、個別に書き換えることができるため、React.jsはSPA(シングルページアプリケーション)の構築に非常に適しています。さらに、状態管理ライブラリ(Reduxなど)を組み合わせることで、複雑なアプリケーションでもデータの流れを一方通行に保ち、保守性を高めることができます。

開発環境の準備(WebpackとBabelの役割)

初心者が最初につまずくポイントですが、React.js(JSX)のコードは、そのままHTMLファイルに書いてもブラウザは認識してくれません。(最初は見よう見まねでJSファイルに書いて「なぜ反映されないのか?」と疑問でした…)。

ブラウザで動かすためには、コードを変換(トランスパイル)し、一つにまとめるバンドル作業が必要です。そのために「Webpack」と「Babel」を使用します。何が裏側で動いているのかロジックを理解するため、ターミナルを使った基礎的な手順を追ってみます。

手順の概要

  1. プロジェクトディレクトリを作成し、package.jsonを初期化する。
  2. HTMLとJSのエントリファイルを作成する。
  3. npmを使用して、reactreact-domをインストールする。

※Webpackとは?

モジュールバンドラーと呼ばれるツールです。複数のJavaScriptファイルやCSS、画像などを、ブラウザで読み込みやすいように「1つのファイル(または少数のファイル)」にガッチャンコしてまとめる役割を持ちます。

  1. webpackをインストールする。
  2. .babelrcファイルを作成し、Babelの設定を行う。

※Babelとは?

ブラウザがまだ完全にサポートしていない次世代のJavaScript(ES6以降)や、React特有の「JSX」記法を、古いブラウザでも実行できる標準的なJavaScript(ES5)に変換(トランスパイル)してくれるツールです。

※Babel単体ではファイルを1つにまとめる機能がないため、Webpackとセットで使います。うーん。少し頭が混乱してきましたね。とりあえず次に行きましょう。

  1. webpack.config.jsを作成し、Babelのローダー設定を記述する。
  2. 開発中のコード変更を検知してブラウザを自動リロードさせるための設定(webpack-dev-server等)を行う。

もっと簡単な方法:Create React App

上記のような複雑な環境構築(設定ファイルの記述)を一つ一つ行うのは骨が折れます。「めんどくさいな…」と思ったら、公式が提供しているビルドツール『Create React App』を使用するのが現在のベストプラクティスです。(最初からこの方法でやりたかった…笑)

ターミナルで以下のコマンドを叩くだけで、Webpack、Babel、ESLintなどがすべて最適化された状態で搭載されたReact環境が一瞬で構築されます。

npx create-react-app my-app
cd my-app
npm start

これだけで、ローカルサーバーが立ち上がり、自動リロード環境が整います。ターミナルの使い方も着々と覚えてきました。

JSX記法とは?

実際にコードを書く前に、Reactの最大の特徴である「JSX」について押さえておきましょう。

JSXとは、「JavaScriptのコードの中に、HTMLのようなタグを直接書けるようにした拡張構文」です。一見するとHTMLに見えますが、内部的にはJavaScriptのオブジェクトを生成する関数(React.createElement)のシンタックスシュガーです。

JSXを使わずに純粋なJavaScriptだけで複雑なDOMツリーを構築しようとすると、記述が非常に冗長で読みにくくなります。JSXを使うことで、UIの構造を視覚的に分かりやすく記述できるのです。階層の深いリストやテーブルを表示するケースを考えると、どちらが保守しやすいかは明白です。

この「JSX」をブラウザが理解できる純粋なJavaScriptに変換するために、先ほどの「Babel」が存在しているわけですね。(なんとなく実装の流れを理解できました。JSX難しい...)。

まとめ

環境構築から簡単なSPAの挙動までを実装してみることで、React.jsのエコシステム(BabelやWebpackの役割)がなぜ必要なのかを体感することができました。

バイタリフィアジアでは、React.jsやVue.jsといったモダンなJavaScriptフレームワークを用いたフロントエンド開発(SPA構築)を多数手掛けております。ベトナムでのアジャイル・スクラム開発を活用した新規Webサービス立ち上げや、既存システムのリファクタリングをご検討の際は、ぜひお気軽にご相談ください。

1,000社以上の事業成長を支えた圧倒的な『スピードと柔軟性』で、御社のアイデアを最短で形にします。まずは無料で壁打ちしませんか?

無料相談はこちら
#Web & Cloud Infra

「Web & Cloud Infra」の関連記事

技術レポート:2026年におけるWebGPUの到達点

技術レポート:2026年におけるWebGPUの到達点

Toshihiko Nagaoka2026/02/11

全主要ブラウザで実用化されたWebGPU。WebGLからの性能向上やブラウザ上での機械学習など、最新の到達点をレポートします。

6週間でライブ配信サービスを開発【後編】スピード×品質を両立するアジャイル開発

6週間でライブ配信サービスを開発【後編】スピード×品質を両立するアジャイル開発

Aoi Yamashita2024/05/22

最新技術を用いたライブ配信アプリを、オフショアチームがわずか6週間で要件定義から実装まで完遂したアジャイル開発の裏側。

6週間で投げ銭ライブ配信サービスを開発【前編】LiveStreamアーキテクチャ

6週間で投げ銭ライブ配信サービスを開発【前編】LiveStreamアーキテクチャ

Aoi Yamashita2024/05/22

低遅延な動画配信基盤とスケーラブルなサーバーを用いた、投げ銭機能付き自社ライブ配信サービスのPoC開発事例(前編)。

ぼくはデューパー、なんでもきいてね!