ソースに絡まるエスカルゴ

貧弱プログラマの外部記憶装置です。

【Windows】Reactの環境を構築する

 今までWeb系の方には手を出していなかったのですが、そろそろ挑戦してもいいかもしれないと思うようになってきました。

 開発環境は色々ありますが、Reactを使ってみようと思ったのでその環境構築の備忘録です。
 ちなみにブラウザ上でReactのコードを書くこともできますが、ローカル環境構築になります。
 基本的には公式ページのチュートリアルのままなので、詳しいことを知りたい方はそちらを参照してください。


 では、始めます。


1:node.jsのインストール
 Reactを使うためにはNode.jsをインストールしておく必要があります。

 以下の公式のダウンロードページを開きます。

 環境に合ったインストーラを選択してクリックし、ファイルをダウンロードします(今回はLTSのWindows 64bit msiを選択しました)。
f:id:rikoubou:20201112135438p:plain

 ダウンロードしたインストーラを起動させると、インストールできるかどうかのチェックが走るので少し待ちます。
f:id:rikoubou:20201112135606p:plain

 チェックが終わるとインストールを進められるようになるので「Next」をクリックします。
f:id:rikoubou:20201112135643p:plain

 ライセンスが表示されるので読み、同意するのところにチェックを入れて「Next」をクリックします。
f:id:rikoubou:20201112135840p:plain

 インストール場所が表示されるので、デフォルトのままで「Next」をクリックします。
f:id:rikoubou:20201112140010p:plain

 カスタムインストールもデフォルトのままで「Next」をクリックします。
f:id:rikoubou:20201112140208p:plain

 Nativeモジュールの追加が尋ねられますが、デフォルトでチェックを外したままで「Next」をクリックします。
f:id:rikoubou:20201112140718p:plain

 インストールの準備ができたので「Install」をクリックします。
f:id:rikoubou:20201112140801p:plain

 PCに変更を加えるか尋ねられるので「はい」を選択します。

 インストールが始まるので終わるまで待ちます。
f:id:rikoubou:20201112140925p:plain

 インストールが終わったら「Finish」をクリックします。
f:id:rikoubou:20201112141120p:plain

 次にちゃんとNode.jsがインストールされているかを確認していきます。

 コマンドプロンプトPowerShellを起動させて以下のコマンドを実行します。

$ node --version

 以下のようにバージョンが表示されていればNode.jsのインストールは完了です。
f:id:rikoubou:20201112141712p:plain


2:Reactのチュートリアル
 Node.jsのインストールができたのでReactを使ってチュートリアルにある空の3×3のマスを表示させてみます。

 まずはどこでもいいのでReact用の空フォルダを作成します。自分はドキュメント配下に「react」という空フォルダを作成しました。

 コマンドプロンプトPowerShellを立ち上げて以下のコマンドでそのフォルダに移動します。

$ cd [React用空フォルダパス]

 フォルダに移動したら、以下のコマンドを実行します。

$ npx create-react-app my-app

 必要なパッケージのインストールやテンプレートのダウンロードが開始されるので、終わるまで待ちます。

 ちなみにコマンドが終了すると「my-app」というフォルダが作成されます。
f:id:rikoubou:20201112143445p:plain

 先ほどのコマンドが終了したら、以下の4つのコマンドを順に実行します。

$ cd my-app # my-appフォルダへ移動
$ cd src # srcフォルダへ移動
$ del * # 現在いるのフォルダ内をすべて削除
$ cd .. # my-appフォルダへ戻る

 srcフォルダ内をすべて削除したら、そのsrcフォルダ内に以下のファイルを新規作成します。

・index.css

body {
    font: 14px "Century Gothic", Futura, sans-serif;
    margin: 20px;
  }
  
  ol, ul {
    padding-left: 30px;
  }
  
  .board-row:after {
    clear: both;
    content: "";
    display: table;
  }
  
  .status {
    margin-bottom: 10px;
  }
  
  .square {
    background: #fff;
    border: 1px solid #999;
    float: left;
    font-size: 24px;
    font-weight: bold;
    line-height: 34px;
    height: 34px;
    margin-right: -1px;
    margin-top: -1px;
    padding: 0;
    text-align: center;
    width: 34px;
  }
  
  .square:focus {
    outline: none;
  }
  
  .kbd-navigation .square:focus {
    background: #ddd;
  }
  
  .game {
    display: flex;
    flex-direction: row;
  }
  
  .game-info {
    margin-left: 20px;
  }

・index.js

import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';

class Square extends React.Component {
  render() {
    return (
      <button className="square">
        {/* TODO */}
      </button>
    );
  }
}

class Board extends React.Component {
  renderSquare(i) {
    return <Square />;
  }

  render() {
    const status = 'Next player: X';

    return (
      <div>
        <div className="status">{status}</div>
        <div className="board-row">
          {this.renderSquare(0)}
          {this.renderSquare(1)}
          {this.renderSquare(2)}
        </div>
        <div className="board-row">
          {this.renderSquare(3)}
          {this.renderSquare(4)}
          {this.renderSquare(5)}
        </div>
        <div className="board-row">
          {this.renderSquare(6)}
          {this.renderSquare(7)}
          {this.renderSquare(8)}
        </div>
      </div>
    );
  }
}

class Game extends React.Component {
  render() {
    return (
      <div className="game">
        <div className="game-board">
          <Board />
        </div>
        <div className="game-info">
          <div>{/* status */}</div>
          <ol>{/* TODO */}</ol>
        </div>
      </div>
    );
  }
}

// ========================================

ReactDOM.render(
  <Game />,
  document.getElementById('root')
);

 この2つのファイルの作成ができたら以下のコマンドを実行して起動させます。

$ npm start

 ちなみに実行すると以下のようになります。
f:id:rikoubou:20201112145429p:plain

 起動後になんでも良いのでブラウザを開き「http://localhost:3000/」にアクセスすると、以下のような3×3のマス目が表示されます。
f:id:rikoubou:20201112145545p:plain

 終了させたい場合は、「npm start」コマンドを実行している画面で「Ctrl + C」を連打していると「バッチジョブを終了しますか (Y/N)?」と尋ねられるので「y」と入力してEnterキーを押下することで終了できます。
f:id:rikoubou:20201112150013p:plain

 終了させた状態で再度「http://localhost:3000/」にアクセスしても、マス目は表示されなくなります。
f:id:rikoubou:20201112150151p:plain


 以上がWindowsでのReactの環境構築方法になります。

 まだ環境を導入したというだけなので、これからちょっとずつでもReactを勉強していきたいですね…。


・参考資料