Windows+WSL2+nodebrewでReactの開発環境を作った

Jul 25, 2021 08:35 · 2017 words · 5 minute read react Windows WSL Node.js

今月の目標として、Yuki Sonodaさん(Yuguiさん)がQuoraに記載していた学習方法を実践してみることを掲げています。

2021年6月の振り返りと2021年7月の目標 · kapieciiのブログ

出来るプログラマーやエンジニアの方でも「何をやっているか分からない」「何が分からないか分からない」状態に陥りますか?その時は、どの様にして対処・解決しますか?に対するYuki Sonodaさんの回答 - Quora

今回学習の題材にしたのはReact。
Reactのチュートリアルは以前やったことがあるのですが、「とりあえずやってはみたが、わかったようなわからないような?」というモヤッとした感想が残っています。

チュートリアル:React の導入 – React (reactjs.org)

公式チュートリアルよりも腹落ち感の良さそうな教材を探したところ、トラハックさんのYouTube動画を見つけたので、今回はこちらで学習しました。


トラハックさんが公開してくれている「新・日本一わかりやすいReact入門」の動画では、Yuguiさんの学習ステップの内

  • 動かしてみる
  • 概念理解
  • 実例(+実際の開発案件で役立ちそうなTipなど)

あたりを学ぶことができます。

というわけで、動画を一通り見たのでローカルに環境構築をしてみました。

目次

TL;DR

  • Windows + WSL2(Ubuntu) + nodebrewでReactの環境を作ってみたが、開発サーバの起動とホットリロードが非常に遅く、実用的ではなかった。
  • 次はMicrosoftのドキュメントで使われていたnvmを使ってみる。

後日追記。
こちらの記事に、nvm、とdockerをを試した結果と、速度が遅かった原因について書きました。

(続き)Windows+WSL2でReactの開発環境を作った · kapieciiのブログ

環境

  • Windows10 Pro 21H1
  • WSL2
  • Ubuntu 18.04

Node.jsインストール

これまでNode.jsは少し触ったことがある程度で、ほとんど経験がありません。
Ubuntu標準のパッケージマネージャーであるaptではNode.jsのバージョンが古かったりするらしいので、今回はトラハックさんも使っていたnodebrewを使ってみます。

hokaccha/nodebrew: Node.js version manager (github.com)

nodebrewインストール

今回の環境では、Node.jsは入っていない状態です。
すでにNode.jsがインストールされている場合は、インストール済みのNode.jsは削除します。

$ nodejs
Command 'nodejs' not found, but can be installed with:
sudo apt install nodejs

nodebrewはコマンド一発でインストールできます。

$ curl -L git.io/nodebrew | perl - setup

ダウンロードが終わったら、bash_profileにパスを通しておきます。

export PATH=$HOME/.nodebrew/current/bin:$PATH

Terminalを再起動して動作を確認。

$ nodebrew help
nodebrew 1.1.0

Usage:
    nodebrew help                         Show this message
    nodebrew install <version>            Download and install <version> (from binary)
    nodebrew compile <version>            Download and install <version> (from source)
    nodebrew install-binary <version>     Alias of `install` (For backward compatibility)
    nodebrew uninstall <version>          Uninstall <version>
    nodebrew use <version>                Use <version>
    nodebrew list                         List installed versions
    nodebrew ls                           Alias for `list`
    nodebrew ls-remote                    List remote versions
    nodebrew ls-all                       List remote and installed versions
    nodebrew alias <key> <value>          Set alias
    nodebrew unalias <key>                Remove alias
    nodebrew clean <version> | all        Remove source file
    nodebrew selfupdate                   Update nodebrew
    nodebrew migrate-package <version>    Install global NPM packages contained in <version> to current version
    nodebrew exec <version> -- <command>  Execute <command> using specified <version>

Example:
    # install
    nodebrew install v8.9.4

    # use a specific version number
    nodebrew use v8.9.4

nodebrewのインストールができました。

Node.jsのインストール

2021年7月時点の安定版をインストールします。

$ nodebrew install-binary stable
Fetching: https://nodejs.org/dist/v16.5.0/node-v16.5.0-linux-x64.tar.gz
################################################################################################################# 100.0%
Installed successfully
$ nodebrew ls
v16.5.0

current: none
$ nodebrew use v16.5.0
use v16.5.0

起動確認

$ node -v
v16.5.0

Create React App

Create React Appして開発サーバを起動してみます。

$ npx create-react-app react-basic
$ cd react-basic/
$ npm start

無事にWSL2のUbuntuからReactの開発サーバが起動しました。

困りごと

無事にWindows上でReactの環境を構築できたかに思えたのですが、だがしかし・・・。
開発サーバの起動が非常に遅い。

あまりに遅いので起動にかかる時間を測ってみたところ、
npm startから開発サーバが起動し、ブラウザのタブが開くまでに約2分20秒、
ブラウザ上にReactのロゴが表示されたのは4分15秒後でした。

ホットリロードも同様に遅いです。
これでは開発環境としてはあまりに辛い。

なぜ遅いのかも気になるところですが、原因究明は本来の目的ではないので、別の環境を模索してみます。
候補としてはDockerがよいでしょうか。

最後に

Windows + WSL2(Ubuntu)でReactの環境を作ってみたが、開発サーバの動作が遅すぎて使うのは辛い、というお話でした。

MicrosoftのドキュメントでもWSLを使ったReactの開発環境について書かれているので、遅いのは私の環境に依存した問題なのかもしれません。
もしくはnodebrewとWSL2の相性か?

Linux 用 Windows サブシステムに React をインストールする | Microsoft Docs

というようなブログ記事を書いていたら、Microsoftのドキュメントではnvmを使用していました。
こちらでも試してみよう。

WSL 2 上で Node.js を設定する | Microsoft Docs

後日追記。
試した結果を書きました。速度が遅かった原因も判明しました。

(続き)Windows+WSL2でReactの開発環境を作った · kapieciiのブログ

tweet Share