# Linux 用の Windows サブシステム (WSL) で freeCodeCamp を設定する

> [!NOTE] これらの指示に従う前に、システムが要件を満たしていることを確認してください。
> 
> **WSL2**: Windows 10 64-bit (Version 2004, Build 19041以上) - Windows 10 Home を含むすべてのディストリビューションで利用可能です。
> 
> **Docker Desktop for Windows**: [Windows 10 Pro](https://docs.docker.com/docker-for-windows/install/#system-requirements) および [Windows 10 Home](https://docs.docker.com/docker-for-windows/install-windows-home/#system-requirements) の各要件を参照してください。

このガイドでは、WSL2 のセットアップに関する一般的な手順について説明します。 WSL2 に関する一般的な問題に対処したら、[ローカルセットアップガイド](how-to-setup-freecodecamp-locally.md) に従い、Ubuntu のように WSL ディストリビューションを実行している Windows 上で freeCodeCamp を起動できるようになります。

## WSLを有効化する

[公式ドキュメント](https://docs.microsoft.com/en-us/windows/wsl/install-win10) の指示に従って、WSL1 をインストールしてから、WSL2 にアップグレードしてください。

## Ubuntu をインストールする

1. WSL2 で Ubuntu-18.04 またはそれ以降を使用することをお勧めします。

   > [!NOTE]
   > 
   > 他の非debianベースのdistrosを使用することができますが、それぞれの問題点があり、このガイドの範囲を超えています。

2. OS の依存関係を更新します。

   ```console
   sudo apt update
   sudo apt upgrade -y

   # cleanup
   sudo apt autoremove -y
   ```

## Git を設定する

Git は Ubuntu 18.04 でプリインストールされています。Git バージョンを `git --version` で確認してください。

```output
~
❯ git --version
git version 2.25.1
```

(任意ですが推奨) GitHub で [ssh キー設定](https://help.github.com/articles/generating-an-ssh-key) を実行します。

## コードエディターをインストールする

Windows 10 に [Visual Studio Code](https://code.visualstudio.com) をインストールすることを強くお勧めします。 WSLの素晴らしいサポートがあり、自動的にWSL distro に必要な拡張機能をすべてインストールします。

基本的には、Windows にインストールされている VS Code を使用して、Ubuntu-18.04 上でコードを編集して保存します。

[IntelliJ Idea](https://www.jetbrains.com/idea/) を使用する場合、Node インタプリターと Npm パッケージマネジャーを WSL distro にインストールされているものに更新する必要があるかもしれません。

その設定は、設定 > 言語 & フレームワーク > Node.js および NPM で確認できます。

## Docker Desktop をインストールする

**Docker Desktop for Windows** を使用すると、MongoDB のようなデータベースや NGINX などのサービスをインストールして実行できます。 MongoDB やその他のサービスを Windows または WSL2 に直接インストールする際の一般的な落とし穴を避けることができます。

[公式ドキュメント](https://docs.docker.com/docker-for-windows/install) の指示に従って、Docker Desktop for Windows をインストールしてください。

最高の体験を得るための最低限のハードウェア要件があります。

## Docker Desktop for WSL を構成する

Docker Desktop がインストールされたら、[この手順に従って](https://docs.docker.com/docker-for-windows/wsl) Ubuntu-18.04 をバックエンドとして使用するように設定します。

これにより、コンテナは Windows 上ではなく WSL 側で実行されます。 Windows と Ubuntu の両方で `http://localhost` からサービスにアクセスできます。

## Docker Hub から MongoDB をインストールする

WSL2 で動作するように Docker Desktop を設定したら、次の手順に従って MongoDB サービスを起動します。

1. 新しい Ubuntu-18.04 端末を起動します。

2. dockerhub から `MongoDB 4.0.x` を取得します。

   ```console
   docker pull mongo:4.0
   ```

3. MongoDB サービスをポート `27017` で起動し、システム再起動時に自動的に実行するように設定します。

   ```console
   docker run -it \
     -v mongodata:/data/db \
     -p 27017:27017 \
     --name mongodb \
     --restart unless-stopped \
     -d mongo:4.0
   ```

4. Windows または Ubuntu から `mongodb://localhost:27017` でサービスにアクセスできるようになりました。

## Node.js と npm をインストールする

Node バージョンマネジャー - [nvm](https://github.com/nvm-sh/nvm#installing-and-updating) を使用して、Node.js 用の LTS リリースをインストールすることを推奨します。

インストールしたら、以下のようなコマンドを使って、Node.js バージョンをインストールして使用します。

```console
nvm install --lts

# OR
# nvm install <version>

nvm install 14

# Usage
# nvm use <version>

nvm use 12
```

Node.js には `npm` がバンドルされています。次のコマンドで `npm` の最新バージョンに更新することができます。

```console
npm install -g npm@latest
```

## freeCodeCamp をローカルで設定する

前提条件のインストールが完了したら、[ ローカルセットアップガイド](how-to-setup-freecodecamp-locally.md) に従って、マシンに freeCodeCamp をローカルにクローンし、インストールし、セットアップしてください。

> [!WARNING]
> 
> 現在、Cypress テストのセットアップ (および関連するGUIのニーズ) 作業が進行中です。 それでも、ほとんどのコードベースで作業できるはずです。

## 有用なリンク

- [Ubuntu 20.04, Node.js, MongoDB, VS Code and Docker を使用した WSL2 Dev セットアップ](https://devlog.sh/wsl2-dev-setup-with-ubuntu-nodejs-mongodb-and-docker) - Mrugesh Mohapatra (freeCodeCamp.org のスタッフ開発者)
- よくある質問:
  - [Windows Subsystem for Linux](https://docs.microsoft.com/en-us/windows/wsl/faq)
  - [Docker Desktop for Windows](https://docs.docker.com/docker-for-windows/faqs)
