<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>React  |  React入門</title>
	<atom:link href="https://react-js.jp/tag/react/feed" rel="self" type="application/rss+xml" />
	<link>https://react-js.jp</link>
	<description>WebアプリUI構築のためのJavaScriptライブラリ</description>
	<lastBuildDate>Fri, 09 Dec 2022 01:32:42 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.1.1</generator>

<image>
	<url>https://react-js.jp/wp-content/uploads/cropped-React_logo_logotype_emblem_512-32x32.png</url>
	<title>React  |  React入門</title>
	<link>https://react-js.jp</link>
	<width>32</width>
	<height>32</height>
</image> 
<atom:link rel="hub" href="https://pubsubhubbub.appspot.com"/><atom:link rel="hub" href="https://pubsubhubbub.superfeedr.com"/><atom:link rel="hub" href="https://websubhub.com/hub"/>	<item>
		<title>モダンJavaScriptの変数宣言(let, const)</title>
		<link>https://react-js.jp/let-const</link>
					<comments>https://react-js.jp/let-const#respond</comments>
		
		<dc:creator><![CDATA[りあぴ]]></dc:creator>
		<pubDate>Thu, 08 Dec 2022 07:39:22 +0000</pubDate>
				<category><![CDATA[React]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[モダンJavaScript]]></category>
		<category><![CDATA[変数]]></category>
		<guid isPermaLink="false">https://react-js.jp/?p=46</guid>

					<description><![CDATA[近年、いわゆるモダンJavaScriptと呼ばれるものは2015年に改定されたES6(ES2015)以降を指していることが多いようです。そこで特に大きく変わったのが変数宣言です。 目次 これまでのJavaScriptの変 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>近年、いわゆるモダンJavaScriptと呼ばれるものは2015年に改定されたES6(ES2015)以降を指していることが多いようです。<br>そこで特に大きく変わったのが変数宣言です。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-2" checked><label class="toc-title" for="toc-checkbox-2">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">これまでのJavaScriptの変数宣言</a><ol><ol><li><a href="#toc2" tabindex="0">var で変数宣言する問題点</a><ol><ol><li><a href="#toc3" tabindex="0">・内容を上書きできてしまう</a></li><li><a href="#toc4" tabindex="0">・すでに宣言されていても宣言できてしまう</a></li></ol></li></ol></li></ol></li></ol></li><li><a href="#toc5" tabindex="0">モダンJavaScriptの変数宣言</a><ol><ol><li><a href="#toc6" tabindex="0">letを使った変数宣言</a></li><li><a href="#toc7" tabindex="0">const を使った変数宣言</a></li></ol></li></ol></li><li><a href="#toc8" tabindex="0">constの注意点</a><ol><ol><li><a href="#toc9" tabindex="0">constで配列を宣言して内容を上書きする例</a><ol><ol><li><a href="#toc10" tabindex="0">constで宣言された配列要素の内容を書き換える例</a></li><li><a href="#toc11" tabindex="0">constで宣言された配列に要素を追加する例</a></li><li><a href="#toc12" tabindex="0">constでオブジェクトを宣言して内容を上書きする例</a></li></ol></li></ol></li></ol></li></ol></li></ol>
    </div>
  </div>

<h2><span id="toc1">これまでのJavaScriptの変数宣言</span></h2>



<p>これまでJavaScriptで変数を宣言する時は var を使っていました。<br>var での宣言には問題があり、バグが出やすくなるため現在ではほぼ使われていません。</p>



<h4><span id="toc2">var で変数宣言する問題点</span></h4>



<h6><span id="toc3">・内容を上書きできてしまう</span></h6>



<pre class="wp-block-code javascript"><code>var a = 1;
a = 2; // 内容を上書き

console.log(a); // 2が表示される</code></pre>



<h6><span id="toc4">・すでに宣言されていても宣言できてしまう</span></h6>



<pre class="wp-block-code javascript"><code>var b = 1;<br>var b = 2; // エラーにならない</code></pre>



<p>これらの特徴はコードが小さいうちは良いのですが、大きくなってくるにつれてバグを生み出しやすくなってしまいます。</p>



<p>そこで現在のJavaScriptでは var の代わりに ES6(ES2015) から導入された <span class="red">let</span> と <span class="red">const</span> が使われるようになりました。</p>



<h2><span id="toc5">モダンJavaScriptの変数宣言</span></h2>



<h4><span id="toc6">letを使った変数宣言</span></h4>



<p>letは内容を上書きできるので、ほぼvarと同じように使うことができます。</p>



<pre class="wp-block-code javascript"><code>let a = 1;
a = 2; // 内容を上書き

console.log(a); // 2が表示される</code></pre>



<p>ただし var と違って再宣言しようとするとエラーになります。</p>



<pre class="wp-block-code javascript"><code>let b = 1;<br>let b = 2; // エラーになる</code></pre>



<h4><span id="toc7">const を使った変数宣言</span></h4>



<p>constで変数を宣言すると、内容を上書きできません。<br>もちろん再宣言もできません。</p>



<pre class="wp-block-code javascript"><code>const a = 1;<br>a = 2; // エラーになる</code></pre>



<p>これらの特徴によって、var で変数宣言するよりも比較的安全になるので、現在では let と const で変数を宣言することが標準的になっています。</p>



<h2><span id="toc8">constの注意点</span></h2>



<p>constで宣言した変数は内容を上書きできないと言いましたが、実は種類によっては上書きできてしまうケースがあります。<br>それが配列とオブジェクトです。</p>



<h4><span id="toc9">constで配列を宣言して内容を上書きする例</span></h4>



<h6><span id="toc10">constで宣言された配列要素の内容を書き換える例</span></h6>



<pre class="wp-block-code javascript"><code>const array = &#91;'x', 'y', 'z']; // 配列を宣言
array&#91;2] = 'a'; // 最後の要素の中身を書き換える
console.log(array);
&#91;'x', 'y', 'a'] // 内容が書き換わっている</code></pre>



<h6><span id="toc11">constで宣言された配列に要素を追加する例</span></h6>



<pre class="wp-block-code javascript"><code>array.push('b');<br>console.log(array);<br>&#91;'x', 'y', 'a', 'b'] // 要素が追加されている</code></pre>



<h6><span id="toc12">constでオブジェクトを宣言して内容を上書きする例</span></h6>



<p>まずは const でオブジェクトを宣言します。</p>



<pre class="wp-block-code javascript"><code>const obj = {
  a: 1,
  b: 2
}</code></pre>



<p>constで宣言されたオブジェクトのプロパティを変更してみます。</p>



<pre class="wp-block-code javascript"><code>obj.b = 5;
console.log(obj);
{ a:1, b:5 }</code></pre>



<p>プロパティの中身を書き換えてしまうことができました。<br>さらに新しいプロパティを追加してみます。</p>



<pre class="wp-block-code javascript"><code>obj.c = 3;<br>console.log(obj);<br>{ a:1, b:5, c:3 }</code></pre>



<p>このように新しいプロパティを追加することもできます。</p>



<pre class="wp-block-code javascript"><code>delete obj.b; // プロパティを削除

console.log(obj);
{ a:1, c:3 }</code></pre>



<p>プロパティの削除もできます。</p>



<p>しかし以下のように Object.freeze を使うことでオブジェクトの内容を変更できないようにすることもできます。</p>



<pre class="wp-block-code javascript"><code>const obj2 = {
  a: 1,
  b: 2
};
Object.freeze(obj2); // オブジェクトを凍結

obj2.a = 3; //エラーが出るわけではない
obj2.b = 4; //同上

console.log(obj2);
{ a:1, b:2 } // 上書きする前の値のままになっている</code></pre>



<p>ただし Object.freeze を使っても<span class="bold-red">孫プロパティは変更できてしまう</span>ので注意が必要です。</p>



<pre class="wp-block-code javascript"><code>const obj3 = {
  a: 1,
  b: 2,
  c: {
    d: 3
  }
};
Object.freeze(obj3);

obj3.c.d = 9; // 孫プロパティdの内容を上書き

console.log(obj3);
{ a:1, b:2, c:{ d:9 } } // freezeしたのに上書きできてしまう</code></pre>



<p>以上のようにオブジェクトの場合は const でも中身を書き換えることができるので、Reactでオブジェクトを宣言する場合には基本的に const を使うのが良さそうです。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://react-js.jp/let-const/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>SPAとは</title>
		<link>https://react-js.jp/spa</link>
					<comments>https://react-js.jp/spa#respond</comments>
		
		<dc:creator><![CDATA[りあぴ]]></dc:creator>
		<pubDate>Thu, 08 Dec 2022 05:02:35 +0000</pubDate>
				<category><![CDATA[React]]></category>
		<category><![CDATA[SPA]]></category>
		<guid isPermaLink="false">https://react-js.jp/?p=40</guid>

					<description><![CDATA[ReactやVue.jsなどのモダンなJavaScriptフレームワークで作るWebアプリケーションは基本的にSPA(Single Page Application)の構成になっています。 目次 これまでのWebとSPA [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>ReactやVue.jsなどのモダンなJavaScriptフレームワークで作るWebアプリケーションは基本的にSPA(Single Page Application)の構成になっています。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-4" checked><label class="toc-title" for="toc-checkbox-4">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">これまでのWebとSPAの違い</a><ol><ol><li><a href="#toc2" tabindex="0">これまでのWeb</a></li><li><a href="#toc3" tabindex="0">SPAのWebアプリケーション</a></li></ol></li></ol></li><li><a href="#toc4" tabindex="0">SPAのメリット</a><ol><ol><li><a href="#toc5" tabindex="0">高速な動作が実現できる</a></li><li><a href="#toc6" tabindex="0">チームで開発しやすくなる</a></li><li><a href="#toc7" tabindex="0">変更・修正がやりやすくなる</a></li></ol></li></ol></li></ol>
    </div>
  </div>

<h2><span id="toc1">これまでのWebとSPAの違い</span></h2>



<p>これまでのWebサイトやWebアプリケーションとの違いとしては、SPAはHTMLが1つしかなく、JavaScriptで画面の要素を変更して、通信や画面の書き換えなどの動作を実現している点です。</p>



<h4><span id="toc2">これまでのWeb</span></h4>



<ol>
<li>ユーザーがリンクをクリックする</li>



<li>ブラウザがURLをリクエストする</li>



<li>Webサーバーからページ全体のデータが送られてくる</li>



<li>ブラウザがページを表示する</li>



<li>ユーザーがリンクをクリックする</li>



<li>Webサーバーからページ全体のデータが送られてくる</li>



<li>ブラウザが<span class="bold-red">違うページを表示し直す</span></li>
</ol>



<p>といった流れでページにアクセスしていました。<br>そのため、リンクをクリックした後に、次の画面が表示されるまで待たされることがしばしばありました。</p>



<h4><span id="toc3">SPAのWebアプリケーション</span></h4>



<ol>
<li>ユーザーがリンクをクリックする</li>



<li>ブラウザがURLをリクエストする</li>



<li>Webサーバーからページ全体のデータが送られてくる</li>



<li>ブラウザがページを表示する</li>



<li>ユーザーがリンクをクリックする</li>



<li>Webサーバーから<span class="bold-red">ページの差分データが送られてくる</span></li>



<li>ブラウザが現在の<span class="bold-red">ページを部分的に書き換える</span></li>
</ol>



<p>現在のページと、次のページの差分データのみを更新するので、通信も画面描画も高速に実現される仕組みになっています。</p>



<h2><span id="toc4">SPAのメリット</span></h2>



<h4><span id="toc5">高速な動作が実現できる</span></h4>



<p>特に通常のWebサイトと違い、Webアプリケーションの場合はUIに対するレスポンスの速さでユーザー体験がずいぶんと違って感じますので重要です。</p>



<h4><span id="toc6">チームで開発しやすくなる</span></h4>



<p>上の例で出てきた差分、つまりUIコンポーネントごとに別々に開発できるので、チームで分担して開発しやすくなります。</p>



<h4><span id="toc7">変更・修正がやりやすくなる</span></h4>



<p>デザインや挙動を変更する場合も、全体を修正する必要がなく、UIコンポーネントを修正すれば良いので開発やサービス運用がやりやすくなります。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://react-js.jp/spa/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>仮想DOMとは</title>
		<link>https://react-js.jp/virtual-dom</link>
					<comments>https://react-js.jp/virtual-dom#respond</comments>
		
		<dc:creator><![CDATA[りあぴ]]></dc:creator>
		<pubDate>Thu, 08 Dec 2022 03:09:29 +0000</pubDate>
				<category><![CDATA[React]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[仮想DOM]]></category>
		<guid isPermaLink="false">https://react-js.jp/?p=36</guid>

					<description><![CDATA[目次 モダンJavaScript以前仮想DOMで高速化 モダンJavaScript以前 従来のJavaScriptでは以下のようにしてDOM(Document Object Model)の操作、つまり画面の更新をしていま [&#8230;]]]></description>
										<content:encoded><![CDATA[

  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-6" checked><label class="toc-title" for="toc-checkbox-6">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">モダンJavaScript以前</a></li><li><a href="#toc2" tabindex="0">仮想DOMで高速化</a></li></ol>
    </div>
  </div>

<h2><span id="toc1">モダンJavaScript以前</span></h2>



<p>従来のJavaScriptでは以下のようにしてDOM(Document Object Model)の操作、つまり画面の更新をしていました。<br>以下のコードはブラウザの開発コンソールでもそのまま実行できます。</p>



<pre class="wp-block-code javascript"><code>var elm = document.createElement('div'); //div要素を生成
var text = document.createTextNode('Hello!'); //テキストノード生成
elm.appendChild(text); // divの子要素にテキストノードを設定
document.body.appendChild(elm); // body要素の末尾にdiv要素を追加</code></pre>



<p>上のコード例は生のJavaScriptによるやや冗長な書き方で、jQueryなどのライブラリを使えばもっと簡潔に書けますが、内部的な処理としてはいずれも同様になります。<br>実行結果は以下のようになります。</p>



<pre class="wp-block-code html"><code>&lt;html>
&lt;body>
...
&lt;div>Hello&lt;/div>
&lt;/body></code></pre>



<p>しかし、この方法はレンダリングに時間がかかるため、Webアプリケーションで頻繁に行うと重くなってしまいます。<br>また、システムが大きくなるにつれ、JavaScriptのコードの見通しが悪くなりがちになってしまう問題がありました。</p>



<h2><span id="toc2">仮想DOMで高速化</span></h2>



<p>そういった問題を解決するのが仮想DOMという技術で、ReactやVue、Angularなどの、モダンなJavaScriptフレームワークで使われています。</p>



<p>仮想DOMは、実際のWebページを表す<span class="bold-green">DOMとは別に</span>、React内部でJavaScriptオブジェクトのデータ構造として扱われます。実体のDOMよりも軽量です。</p>



<p>Reactで画面を更新する際には、仮想DOMとの差分を実体のDOMに反映するようにしています。<br>それによってReactは高速に動作し、スムーズな画面の更新を実現しています。</p>



<p>少し難しそうに思えるかもしれませんが、Reactが内部で自動的にやってくれるので、最初のうちは開発する上で仮想DOMを意識する必要はありません。そういった仕組みがあるんだくらいに知っておくと良いと思います。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://react-js.jp/virtual-dom/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Reactをセットアップ(環境構築)する</title>
		<link>https://react-js.jp/setup</link>
					<comments>https://react-js.jp/setup#respond</comments>
		
		<dc:creator><![CDATA[りあぴ]]></dc:creator>
		<pubDate>Wed, 07 Dec 2022 10:23:08 +0000</pubDate>
				<category><![CDATA[React]]></category>
		<category><![CDATA[環境構築]]></category>
		<category><![CDATA[設定]]></category>
		<guid isPermaLink="false">https://react-js.jp/?p=20</guid>

					<description><![CDATA[目次 Reactをセットアップする手順nvmのインストールnvmとは？nvmをインストールnvmが正常にインストールされたか確認するWindowsにnvmをインストールするには？Node.jsのインストールNode.js [&#8230;]]]></description>
										<content:encoded><![CDATA[

  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-8" checked><label class="toc-title" for="toc-checkbox-8">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">Reactをセットアップする手順</a></li><li><a href="#toc2" tabindex="0">nvmのインストール</a><ol><ol><ol><li><a href="#toc3" tabindex="0">nvmとは？</a></li><li><a href="#toc4" tabindex="0">nvmをインストール</a></li><li><a href="#toc5" tabindex="0">nvmが正常にインストールされたか確認する</a></li><li><a href="#toc6" tabindex="0">Windowsにnvmをインストールするには？</a></li></ol></li></ol></li></ol></li><li><a href="#toc7" tabindex="0">Node.jsのインストール</a><ol><ol><ol><li><a href="#toc8" tabindex="0">Node.jsとは？</a></li><li><a href="#toc9" tabindex="0">nvmでNode.jsをインストール</a></li></ol></li></ol></li></ol></li><li><a href="#toc10" tabindex="0">Create React Appについて</a><ol><ol><ol><li><a href="#toc11" tabindex="0">Create React Appとは？</a></li><li><a href="#toc12" tabindex="0">Create React Appのインストール方法は？</a></li></ol></li></ol></li></ol></li><li><a href="#toc13" tabindex="0">Create React Appでサンプルアプリ(Hello, world)を作る</a></li></ol>
    </div>
  </div>

<h2><span id="toc1">Reactをセットアップする手順</span></h2>



<p>この記事ではReactの簡単な始め方について、セットアップ、環境構築の方法を解説します。<br>Reactの開発環境はMacやLinuxはもちろん、Windowsでもセットアップできます。<br>手順は大まかには下記の3点です。</p>



<ol>
<li>nvmのインストール <span class="fz-14px">※Node.jsのバージョンを管理するツール</span></li>



<li>Node.jsのインストール <span class="fz-14px">※サーバサイドJavaScript環境</span></li>



<li>Create React Appの実行 <span class="fz-14px">※Reactアプリの雛形を生成するツール</span></li>
</ol>



<h2><span id="toc2">nvmのインストール</span></h2>



<h5><span id="toc3">nvmとは？</span></h5>



<p>nvm（Node Version Manager）とは、Node.jsのバージョンを管理するツールです。</p>



<p>Node.jsは頻繁にバージョンアップが行われており、バージョンが進むにつれて新しい機能が追加されたり、既存の機能が削除されたりします。そのため、Node.jsを利用する上で、<span class="bold-red">使用するバージョンを簡単に選択して切り替えられるようにしておいた方が後々便利</span>に使えます。</p>



<p>nvmを使うことで、複数のNode.jsのバージョンをインストールし、それらのバージョンを切り替えることができます。これにより、Node.jsを使用する上でのバージョン管理を容易にすることができます。</p>



<p>また、nvmを使うことで、Node.jsのインストールやアンインストールが容易になります。nvmを使わずにNode.jsをインストールする場合、Node.jsをアンインストールするには、手動でファイルを削除する必要がありますが、nvmを使う場合は、そのような作業が不要になります。</p>



<p>nvmを使うことで、Node.jsを簡単かつ効率的に管理することができます。</p>



<h5><span id="toc4">nvmをインストール</span></h5>



<p>nvmをインストールするには、インストール スクリプトを実行する必要があります。これを行うには、次の cURL または Wget コマンドを使用します。</p>



<pre class="wp-block-code bash"><code>curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/<span class="green">v0.39.2</span>/install.sh | bash</code></pre>



<p>もしくは</p>



<pre class="wp-block-code bash"><code>wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/<span class="green">v0.39.2</span>/install.sh | bash</code></pre>



<p>上記のコマンドのいずれかを実行すると、スクリプトがダウンロードされて実行されます。<br>バージョン番号の部分が変わるかもしれませんので、公式のgithub <a rel="noopener" href="https://github.com/nvm-sh/nvm#install--update-script" target="_blank">https://github.com/nvm-sh/nvm#install&#8211;update-script<span class="fa fa-external-link external-icon anchor-icon"></span></a> を確認するようにしてください。</p>



<h5><span id="toc5">nvmが正常にインストールされたか確認する</span></h5>



<pre class="wp-block-code bash"><code>$ command -v nvm
nvm</code></pre>



<p>nvmと表示されたら成功です。もしくは</p>



<pre class="wp-block-code bash"><code>$ nvm v
1.1.8</code></pre>



<p>このようにnvmのバージョン番号を表示して確認できます。<br>もし上記がうまく動かない場合は、一旦コンソール画面を閉じて、新しくコンソールを開き直すことを試すとうまくいくかもしれません。</p>



<h5><span id="toc6">Windowsにnvmをインストールするには？</span></h5>



<p><a rel="noopener" href="https://github.com/coreybutler/nvm-windows" target="_blank">Windows用のnvm<span class="fa fa-external-link external-icon anchor-icon"></span></a> がインストーラー付きで提供されていますので、ダウンロードページから最新バージョンを確認してダウンロード・インストールしてください。</p>



<h2><span id="toc7">Node.jsのインストール</span></h2>



<h5><span id="toc8">Node.jsとは？</span></h5>



<p>Node.jsとは、JavaScriptをサーバーサイドで実行するためのプラットフォームです。Node.jsでは、JavaScriptを用いてサーバーサイドのアプリケーションを構築することができます。Node.jsには、非同期 I/O（入出力）やイベント駆動、単一スレッドでの並行処理などの機能が提供されており、これらの機能を用いることで、高速かつスケーラブルなサーバーサイドアプリケーションを構築することができます。</p>



<p>また、Node.jsでは、様々なモジュールが用意されており、それらのモジュールを用いることで、サーバーサイドアプリケーションの構築を容易にします。これらのモジュールは、Node.jsのパッケージ管理システムであるnpm（Node Package Manager）を使って管理されます。</p>



<p>Node.jsは、JavaScriptを用いてサーバーサイドアプリケーションを構築するためのプラットフォームであり、Webフロントエンド開発者にとっても重要な存在です。</p>



<h5><span id="toc9">nvmでNode.jsをインストール</span></h5>



<p>Node.jsは普通にインストールすることもできますが、nvmのようなバージョン管理ツールを使うことでNode.js自体のバージョンを簡単に切り替えることができるようになります。</p>



<p>プログラミング言語の実行環境は「バージョンを上げたら今までのアプリが動かなくなった」といったことがしばしば起こるので、最初にnvmのような管理ツールを入れておくと安心です。</p>



<p>nvmでNode.jsの最新バージョンをインストールするには以下のコマンドを使います。</p>



<pre class="wp-block-code bash"><code>$ nvm install node</code></pre>



<p>特定のバージョンのNode.jsをインストールするには以下のコマンドを使います。</p>



<pre class="wp-block-code bash"><code>$ nvm install <span class="green">16.13.1</span></code></pre>



<p>nvmでインストールしたNode.jsの一覧を見るには以下のコマンドを使います。</p>



<pre class="wp-block-code bash"><code>$ nvm list
16.13.1</code></pre>



<p>使用するNode.jsを選ぶには以下のコマンドを使います。</p>



<pre class="wp-block-code bash"><code>$ nvm use 16.13.1</code></pre>



<p>(注意) Windows版のnvmを使っている場合はコマンドプロンプト（またはPowerShell）を管理者モードで起動する必要があります。Windowsメニューから「管理者として実行」を選ぶと管理者権限で実行できます。</p>



<p>nvmを使ってNode.jsをインストールすると、パッケージ管理ツールであるnpmもインストールされています。以下のコマンドでnodeとnpmのバージョンを確認することができます。</p>



<pre class="wp-block-code bash"><code>$ node -v
v16.13.1
$ npm -v
8.1.2</code></pre>



<h2><span id="toc10">Create React Appについて</span></h2>



<h5><span id="toc11">Create React Appとは？</span></h5>



<p>Create React Appとは、Reactの開発環境を構築するためのツールです。Create React Appを使うことで、Reactの開発環境を簡単かつ迅速に構築することができます。</p>



<p>Create React Appを使うと、以下のようなことができます。</p>



<ul>
<li>Reactのプロジェクトを作成する</li>



<li>プロジェクトに必要な依存モジュールをインストールする</li>



<li>WebpackやBabelなどのビルドツールを用いて、開発したコードをトランスパイルし、実行可能なJavaScriptに変換する</li>



<li>開発サーバーを起動し、ブラウザ上で実行結果を確認する</li>
</ul>



<p>また、Create React Appを使うと、Reactプロジェクトの設定ファイルを手動で作成する必要がなくなります。Create React Appは、プロジェクトの設定を自動的に行います。これにより、Reactの開発環境を構築する際の設定手順が減少し、開発を迅速に進めることができます。</p>



<p>Reactを使ってWebアプリケーションを開発する際には、WebpackやBabelなどのビルドツールを用いることが必要です。また、WebpackやBabelを用いる際には、設定ファイルを用意する必要があります。</p>



<p>これらの作業は、Reactを使い始める開発者にとっては煩雑であり、時間を要するものです。Create React Appは、これらの作業を簡略化するためのフレームワークです。Create React Appを用いることで、煩雑な設定作業を省略し、Reactの開発環境を簡単かつ迅速に構築することができます。</p>



<h5><span id="toc12">Create React Appのインストール方法は？</span></h5>



<p>Create React Appは後述するnpxというツールを使って実行できるので、<span class="bold-red">インストールの必要はありません</span>。<br>時々、Reactの開発環境構築について書かれた記事に「Yarnを使ってインストールしましょう」といった情報がありますが、Yarnもインストールも必要ありません。<br>ちなみにYarnとは、さきほどNode.jsとともにインストールされたnpmの互換ツールです。特に必要なければnpmのままで大丈夫です。</p>



<p>インストールするツール類が増えると複雑になります。わからないことが起こった時に調べることが増えます。<br>最初のうちはできるだけシンプルな環境で進めることを心がけましょう。</p>



<h2><span id="toc13">Create React Appでサンプルアプリ(Hello, world)を作る</span></h2>



<p>Create React Appを使うと簡単にアプリの雛形を生成することができます。<br>さっそく最初のアプリを作ってみましょう。</p>



<pre class="wp-block-code bash"><code>$ npx create-react-app <span class="green">react-test</span>
Need to install the following packages:
  create-react-app@5.0.1
Ok to proceed? (y) <span class="green">y</span></code></pre>



<p>最初の「npx」というのは打ち間違いではありません。npm 5.2から利用できるパッケージランナーというものでnpmと同時にインストールされています。</p>



<p>npmとnpxの違いは、npmはパッケージを管理するのに対して、<strong>npxはパッケージを管理せずに実行する</strong>という違いがあります。xがexecuteという訳ですね。</p>



<p>ですのでパッケージをインストールせずに1回だけ使いたい場合や、たまにだけ使いたい場合にnpxの使用が向いていると思います。</p>



<p>上のコマンドを実行後、react-testというディレクトリが作られてReactの環境が生成されるので数分間ほど時間がかかります。<br>成功すると下記のメッセージが表示されます。</p>



<pre class="wp-block-code"><code>Success! Created react-test1 at react-test
Inside that directory, you can run several commands:

  npm start
    Starts the development server.

  npm run build
    Bundles the app into static files for production.

  npm test
    Starts the test runner.

  npm run eject
    Removes this tool and copies build dependencies, configuration files
    and scripts into the app directory. If you do this, you can’t go back!

We suggest that you begin by typing:

<span class="green">  cd react-test</span><span class="green">
  npm start</span>

Happy hacking!</code></pre>



<p>ReactによるWebアプリの雛形が生成されました。表示された通りに実行してみます。</p>



<pre class="wp-block-code"><code>$ cd react-test
$ npm start</code></pre>



<p>Reactアプリがコンパイルされるため、数分間ほど待たされますが、成功すると下記のメッセージとともにブラウザが起動し、http://localhost:3000 を開いて Reactのロゴが回転するページが表示されます。</p>



<pre class="wp-block-code"><code><span class="green">Compiled successfully!</span>

You can now view react-test1 in the browser.

  Local:            http://localhost:3000
  On Your Network:  http://192.168.1.2:3000

Note that the development build is not optimized.
To create a production build, use npm run build.

webpack compiled successfully</code></pre>



<figure class="wp-block-image size-full"><img decoding="async" width="487" height="461" src="https://react-js.jp/wp-content/uploads/create_react_app.webp" alt="Create React App" class="wp-image-27" srcset="https://react-js.jp/wp-content/uploads/create_react_app.webp 487w, https://react-js.jp/wp-content/uploads/create_react_app-300x284.webp 300w" sizes="(max-width: 487px) 100vw, 487px" /><figcaption class="wp-element-caption">Create React App によって生成されたWebアプリケーション</figcaption></figure>



<p>ブラウザ画面に表示されている通り react-test/src/App.js をエディタで開いて、試しに文字を追加してみます。</p>



<pre class="wp-block-code html"><code>&lt;p&gt;
  Edit &lt;code&gt;src/App.js&lt;/code&gt; and save to reload.
  <span class="green">&lt;br&gt;こんにちは？</span>
 &lt;/p&gt;</code></pre>



<p>ファイルを保存すると即座にコンパイルされて自動的にブラウザがリロードされて画面に反映されます。<br>しかしエラーが発生しました。</p>



<pre class="wp-block-code"><code><span class="red">ERROR</span> in &#91;eslint]
src\App.js
  Line 12:8:  Parsing error: Expected corresponding JSX closing tag for &lt;br&gt;. (12:8)</code></pre>



<p>文法チェックツールである eslint がエラーだと言っているようです。<br>エラー内容を読むと <code>&lt;br&gt;</code>タグは閉じる必要があるようですので、コードを以下のように修正します。</p>



<pre class="wp-block-code html"><code>&lt;p&gt;
  Edit &lt;code&gt;src/App.js&lt;/code&gt; and save to reload.
  <span class="green">&lt;br/&gt;こんにちはこんにちはこんにちは！！</span>
&lt;/p&gt;</code></pre>



<p><code>&lt;br&gt;</code>を<code>&lt;br/&gt;</code>に修正しました。</p>



<figure class="wp-block-image size-full"><img decoding="async" loading="lazy" width="487" height="502" src="https://react-js.jp/wp-content/uploads/create_react_app2.webp" alt="" class="wp-image-29" srcset="https://react-js.jp/wp-content/uploads/create_react_app2.webp 487w, https://react-js.jp/wp-content/uploads/create_react_app2-291x300.webp 291w" sizes="(max-width: 487px) 100vw, 487px" /><figcaption class="wp-element-caption">Create React App の雛形を書き換えて元気な挨拶を入れました</figcaption></figure>



<p>無事に元気な挨拶を入れることができました。<br>停止するにはコンソール画面で Ctrl+c で止めることができます。</p>



<p>あとはこのApp.jsを書き換えながら進めていくのがReactでの開発のスタートになります。</p>



<p>Reactの開発環境構築はこれにて完了です。意外と簡単だったのではないでしょうか。<br>どんなプログラミング言語やフレームワークも、まずは実際に触ってみることが大事だと思います。<br>ここから一緒にReactを学んでいきましょう。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://react-js.jp/setup/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Reactとは何か</title>
		<link>https://react-js.jp/react-features</link>
					<comments>https://react-js.jp/react-features#respond</comments>
		
		<dc:creator><![CDATA[りあぴ]]></dc:creator>
		<pubDate>Wed, 07 Dec 2022 04:24:07 +0000</pubDate>
				<category><![CDATA[React]]></category>
		<guid isPermaLink="false">https://react-js.jp/?p=7</guid>

					<description><![CDATA[目次 ReactとはReactの特徴やメリットは？Reactは何を作ることに向いてるの？Reactに向いていないものやデメリットは？Reactの学習方法は？ Reactとは Reactは、Webアプリケーションを構築する [&#8230;]]]></description>
										<content:encoded><![CDATA[

  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-10" checked><label class="toc-title" for="toc-checkbox-10">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">Reactとは</a></li><li><a href="#toc2" tabindex="0">Reactの特徴やメリットは？</a></li><li><a href="#toc3" tabindex="0">Reactは何を作ることに向いてるの？</a></li><li><a href="#toc4" tabindex="0">Reactに向いていないものやデメリットは？</a></li><li><a href="#toc5" tabindex="0">Reactの学習方法は？</a></li></ol>
    </div>
  </div>

<h2><span id="toc1">Reactとは</span></h2>



<p>Reactは、Webアプリケーションを構築するためのJavaScriptライブラリです。<br>WebアプリケーションのUIを効率的かつ迅速に構築することができます。</p>



<p>Reactでは、UIを構成するための「コンポーネント」という概念が用いられます。各コンポーネントは、それ自体が完結した機能を持っており、複数のコンポーネントを組み合わせることで、複雑なUIを構築することができます。</p>



<p>Reactは、Facebookが開発したもので、現在では多くのWebアプリケーションで採用されています。</p>



<h2><span id="toc2">Reactの特徴やメリットは？</span></h2>



<p><strong>コンポーネント指向</strong>: Reactでは、UIを構成するための「コンポーネント」という概念が用いられます。各コンポーネントは、それ自体が完結した機能を持っており、複数のコンポーネントを組み合わせることで、複雑なUIを構築することができます。これにより、UIの構築が容易になり、再利用性の高いUIを構築することができます。</p>



<p><strong>データフローが単方向</strong>: Reactでは、データフローが単方向であることが特徴です。これにより、データがどのようにUIに反映されるかが明確になり、状態の管理が容易になります。</p>



<p><strong>Virtual DOM</strong>: Reactでは、UIを構成する要素を仮想的なドキュメントオブジェクトモデル（Virtual DOM）上で管理します。これにより、UIの更新を効率的に行うことができます。</p>



<p><strong>JSX</strong>: Reactでは、JavaScriptとHTMLを混在させることができる独自の構文が用いられます。これをJSXと呼びます。JSXを用いることで、HTMLのような見た目でJavaScriptのコードを書くことができます。これにより、JavaScriptのコードが見やすくなり、コードの可読性が向上します。</p>



<p><strong>サーバーサイドレンダリング</strong>: Reactは、サーバーサイドレンダリング（SSR）に対応しており、サーバーでレンダリングされたHTMLをクライアントに送信することができます。これにより、Webアプリケーションのパフォーマンスが向上し、SEOに優れたWebアプリケーションを構築することができます。</p>



<h2><span id="toc3">Reactは何を作ることに向いてるの？</span></h2>



<p>Reactは、WebアプリケーションのUIを構築するために特に向いています。</p>



<p>Reactは、現在では多くのWebアプリケーションで採用されています。また、<strong>React Native</strong>というフレームワークを用いることで、<strong>モバイルアプリケーション</strong>のUIを構築することもできます。</p>



<p>Reactは、そのわかりやすい構文や、豊富なコンポーネントライブラリなどから、Webフロントエンド開発者の間で人気が高いフレームワークです。したがって、Webフロントエンド開発においてReactが適していると言えます。</p>



<h2><span id="toc4">Reactに向いていないものやデメリットは？</span></h2>



<p>Reactは、Webフロントエンド開発に特化したフレームワークであり、その他の分野では特に向いていません。</p>



<p>また、Reactは、JavaScriptを用いるフレームワークであるため、JavaScriptに詳しくない開発者が使いこなすのが難しいことが挙げられます。Reactでは、独自の構文であるJSXが用いられますが、この構文はJavaScriptとHTMLを混在させるものです。これは、JavaScriptを理解していない開発者にとっては理解しづらいかもしれません。</p>



<p>また、Reactは、UIを構成するためのコンポーネント指向のアーキテクチャを採用していますが、このアーキテクチャは複雑なUIを構築する上で有用ですが、慣れていない開発者にとっては理解しづらいかもしれません。</p>



<h2><span id="toc5">Reactの学習方法は？</span></h2>



<ol>
<li><strong>ドキュメントやチュートリアルを読む</strong>: Reactの公式サイトには、Reactを学ぶためのドキュメントやチュートリアルが用意されています。これらを読むことで、Reactの基本的な仕組みや使い方を学ぶことができます。</li>



<li><strong>実際にReactを使ってWebアプリケーションを作る</strong>: 実際にReactを使ってWebアプリケーションを作ることで、Reactを学ぶことができます。まずは、Reactの公式サイトにあるチュートリアルを参考にして、簡単なWebアプリケーションを作成してみましょう。これらを繰り返すことで、Reactを使いこなすことができるようになります。</li>



<li><strong>Reactのコミュニティに参加する</strong>: Reactを使ってWebアプリケーションを作る上で、問題や疑問が生じることもあるでしょう。そんな時は、Reactのコミュニティに参加してみましょう。Reactのコミュニティには、多くのReactを使った開発経験のある開発者が参加しており、そのような疑問や問題に対する解決方法を共有し合うことができます。</li>
</ol>
]]></content:encoded>
					
					<wfw:commentRss>https://react-js.jp/react-features/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
