<?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入門</title>
	<atom:link href="https://react-js.jp/author/react/feed" rel="self" type="application/rss+xml" />
	<link>https://react-js.jp</link>
	<description>WebアプリUI構築のためのJavaScriptライブラリ</description>
	<lastBuildDate>Mon, 12 Dec 2022 09:40:49 +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入門</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>HTMLCollectionとNodeListの違い</title>
		<link>https://react-js.jp/htmlcollection-nodelist</link>
					<comments>https://react-js.jp/htmlcollection-nodelist#respond</comments>
		
		<dc:creator><![CDATA[りあぴ]]></dc:creator>
		<pubDate>Mon, 12 Dec 2022 09:25:19 +0000</pubDate>
				<category><![CDATA[React]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[ループ]]></category>
		<category><![CDATA[変換]]></category>
		<category><![CDATA[配列]]></category>
		<guid isPermaLink="false">https://react-js.jp/?p=53</guid>

					<description><![CDATA[JavaScriptのHTMLCollectionとNodeListは、HTML文書内の要素を表すために使用される配列のようなオブジェクトです。「配列のような」というのは、どちらもlengthプロパティを持ち、インデック [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>JavaScriptのHTMLCollectionとNodeListは、HTML文書内の要素を表すために使用される配列のようなオブジェクトです。<br>「配列のような」というのは、どちらもlengthプロパティを持ち、インデックス番号（添字）でアクセスできるためです。</p>



<p>しかし実際には配列ではなく、また、HTMLCollectionとNodeListはそれぞれ似て非なる型のオブジェクトであるため、JavaScriptで扱う際には注意が必要です。</p>



<h2>複数のHTML要素を取得する方法</h2>



<p>JavaScriptでタグ名やクラス名などを指定して、複数の要素を取得する方法はいくつかあります。</p>



<h4>その1 「getElementsBy」でHTML要素を取得</h4>



<p>JavaScriptで複数のHTML要素を取得するには、下記の方法がよく使われます。<br>これは太古の昔からある方法です。<br>かつてはIE6に対応するために、これらの方法がよく使われていました。</p>



<pre class="wp-block-code javascript"><code>document.getElementsByClassName()<br>document.getElementsByTagName()<br>document.getElementsByName()</code></pre>



<p>ここで返されるのが <span class="bold-red">HTML Collection</span> というものです。<br>ブラウザの開発コンソールで以下のように試すと HTMLCollection と表示されます。</p>



<pre class="wp-block-code javascript"><code>document.getElementsByTagName('div')<br>▶ HTMLCollection(3)&nbsp;&#91;div, div, div]</code></pre>



<p>以下のように配列と同様にインデックス番号（添字）で取り出すことができます。</p>



<pre class="wp-block-code javascript"><code>const elms = document.getElementsByTagName('div');
console.log(elms&#91;0]);
▶ &lt;div&gt;...&lt;/div&gt;</code></pre>



<h4>その2 「querySelectorAll」でHTML要素を取得</h4>



<p>複数のHTML要素を取得する別の方法として <code><strong>querySelectorAll</strong></code> があります。<br>getElementsBy…よりも少し新しい方法です。といっても2008年頃からあります。<br>(参考) <a rel="noopener" href="https://amachang.hatenablog.com/entry/20080306/1204787459" target="_blank">IE8 で実装された Selectors API とは何か？ &#8211; IT戦記<span class="fa fa-external-link external-icon anchor-icon"></span></a></p>



<p>これはCSSセレクタと同じ書き方で要素を取得できて便利です。</p>



<pre class="wp-block-code javascript"><code>document.querySelectorAll('div')<br>▶ NodeList(3)&nbsp;&#91;div, div, div]</code></pre>



<p><span class="bold-red">getElementsByで取得した時と違って NodeList と表示されています</span>。<br>こちらもインデックス番号（添字）でアクセスできるのは同じです。</p>



<pre class="wp-block-code javascript"><code>const elms = document.querySelectorAll('div');
console.log(elms&#91;0]);
▶ &lt;div&gt;...&lt;/div&gt;</code></pre>



<h4>getElementsByとquerySelectorAllの使い分け</h4>



<p>querySelectorAllの方が便利で使いやすいですが、速度面ではgetElementsByの方が速いので、特に大量に要素がある場合などは、要素の指定が単純なもの（クラス名やタグ名など）はgetElementsByで取得して、指定が複雑なものはquerySelectorAllで取得するのが良いと思います。</p>



<h2>HTMLCollectionとNodeListの違い</h2>



<p>では HTMLCollectionとNodeListの違いは何でしょうか？大きく2つの違いがあります。</p>



<ul>
<li>要素が増減した時の挙動</li>



<li>メソッドの違い</li>
</ul>



<h4>要素が増減した時の挙動</h4>



<p>HTMLCollectionは後から要素の数が増減すると、動的に反映されます。<br>ライブオブジェクトと呼ばれる性質のオブジェクトです。</p>



<p>NodeListは要素の数が変わっても、後からそれが反映されません。</p>



<div class="wp-block-cocoon-blocks-icon-box common-icon-box block-box information-box">
<p>※より正確には「querySelectorAllで取得したNodeList」はライブオブジェクトではありません。<br>Node.childNodesでもNodeListを取得できますが、そちらはライブオブジェクトになります。</p>
</div>



<h4>メソッドの違い</h4>



<p>ブラウザの開発コンソールでNodeListのprototypeを展開するとわかりますが、NodeListにはforEachメソッドがありますが、HTML Collectionにはありません。</p>



<pre class="wp-block-code"><code>document.querySelectorAll('div')
▼ NodeList &#91;main]
	▶0: div
	length: 1
	▼ &#91;&#91;Prototype]]: NodeList
		▶entries: ƒ entries()
		▶<span class="bold-red">forEach: ƒ forEach()</span>
		▶item: ƒ item()
		▶keys: ƒ keys()
		　length: (...)
		▶values: ƒ values()
		▶constructor: ƒ NodeList()
		▶Symbol(Symbol.iterator): ƒ values()
		　Symbol(Symbol.toStringTag): "NodeList"
		▶get length: ƒ length()
		▶&#91;&#91;Prototype]]: Object
</code></pre>



<div class="wp-block-cocoon-blocks-icon-box common-icon-box block-box information-box">
<p>※以前はNodeListにもforEachメソッドがありませんでしたが、Chrome 51(2016年)で追加されたようです (参考) <a rel="noopener" href="https://developer.mozilla.org/en-US/docs/Web/API/NodeList/forEach#browser_compatibility" target="_blank">NodeList.prototype.forEach() &#8211; Web APIs | MDN<span class="fa fa-external-link external-icon anchor-icon"></span></a></p>
</div>



<h2>HTMLCollectionを配列のようにループさせるには？</h2>



<p>以下はlengthプロパティを使った昔ながらのforループです。昔からある定石のような方法です。</p>



<pre class="wp-block-code javascript"><code>const elms = document.getElementsByTagName('div'); // HTMLCollection
const len = elms.length;
for (let i=0; i&lt;len; i++) {
  console.log(elms&#91;i]);
}</code></pre>



<p>ちなみにlengthをあらかじめ変数に代入しているのは、ほぼ気持ちの問題ですがループごとに要素のlengthプロパティにアクセスするよりも速そうだからです。</p>



<p>ES6（ECMAScript 2015）以降であれば（IE を対象外にすれば）、for of 文を使って簡潔に記述することもできます。※for inではなくfor <span class="red">of</span>であることに注意してください</p>



<pre class="wp-block-code javascript"><code>const elms = document.getElementsByTagName('div'); // HTMLCollection
for (const e of elms) {
  console.log(e);
}</code></pre>



<div class="wp-block-cocoon-blocks-icon-box common-icon-box block-box information-box">
<p>for文の時は let i=0 だったのに、for of の時は constを使っていることに疑問を感じたかもしれません。これは for in や for of ではループごとにスコープが変わるためです。毎回違うブロックで実行されているイメージです。</p>
</div>



<p>HTML Collectionも配列に変換することで、配列と同じforEachやmapやfilterなどのメソッドが使えるようになります。</p>



<h4>Array.from で配列に変換してmapでループ</h4>



<pre class="wp-block-code javascript"><code>const elms = document.getElementsByTagName('div'); // HTML Collection
const elmsAry = Array.from(elms); // 配列に変換
elmsAry.map( (v) =&gt; { console.log(v); } ); // 配列なのでmapでループできる</code></pre>



<p>※Array.fromはIEは非対応です</p>



<h4>スプレッド構文[…array]で配列に変換してmapでループ</h4>



<pre class="wp-block-code javascript"><code>const elms = document.getElementsByTagName('div'); // HTML Collection
const elmsAry = &#91;...elms]; // 配列に変換
elmsAry.map( (v) =&gt; { console.log(v); } ); // 配列なのでmapでループできる</code></pre>



<p>配列と似ているので、ついうっかりmapを使おうとして「ん？」となりがちなHTMLCollectionとNodeListですが、しっかり違いを理解して、楽しく要素をループさせましょう。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://react-js.jp/htmlcollection-nodelist/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<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>



<h2>これまでのJavaScriptの変数宣言</h2>



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



<h4>var で変数宣言する問題点</h4>



<h6>・内容を上書きできてしまう</h6>



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

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



<h6>・すでに宣言されていても宣言できてしまう</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>モダンJavaScriptの変数宣言</h2>



<h4>letを使った変数宣言</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>const を使った変数宣言</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>constの注意点</h2>



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



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



<h6>constで宣言された配列要素の内容を書き換える例</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>constで宣言された配列に要素を追加する例</h6>



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



<h6>constでオブジェクトを宣言して内容を上書きする例</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>



<h2>これまでのWebとSPAの違い</h2>



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



<h4>これまでのWeb</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>SPAのWebアプリケーション</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>SPAのメリット</h2>



<h4>高速な動作が実現できる</h4>



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



<h4>チームで開発しやすくなる</h4>



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



<h4>変更・修正がやりやすくなる</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以前 従来のJavaScriptでは以下のようにしてDOM(Document Object Model)の操作、つまり画面の更新をしていました。以下のコードはブラウザの開発コンソールでもそのまま [&#8230;]]]></description>
										<content:encoded><![CDATA[
<h2>モダンJavaScript以前</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>仮想DOMで高速化</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をセットアップする手順 この記事ではReactの簡単な始め方について、セットアップ、環境構築の方法を解説します。Reactの開発環境はMacやLinuxはもちろん、Windowsでもセットアップできます。手順は [&#8230;]]]></description>
										<content:encoded><![CDATA[
<h2>Reactをセットアップする手順</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>nvmのインストール</h2>



<h5>nvmとは？</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>nvmをインストール</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>nvmが正常にインストールされたか確認する</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>Windowsにnvmをインストールするには？</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>Node.jsのインストール</h2>



<h5>Node.jsとは？</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>nvmでNode.jsをインストール</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>Create React Appについて</h2>



<h5>Create React Appとは？</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>Create React Appのインストール方法は？</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>Create React Appでサンプルアプリ(Hello, world)を作る</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は、Webアプリケーションを構築するためのJavaScriptライブラリです。WebアプリケーションのUIを効率的かつ迅速に構築することができます。 Reactでは、UIを構成するための「コンポ [&#8230;]]]></description>
										<content:encoded><![CDATA[
<h2>Reactとは</h2>



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



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



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



<h2>Reactの特徴やメリットは？</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>Reactは何を作ることに向いてるの？</h2>



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



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



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



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



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



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



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



<h2>Reactの学習方法は？</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>
