LoginSignup
6
3

More than 1 year has passed since last update.

2022年の今更Windows10+WSL2(Ubuntu)で開発環境を整えてみる

Posted at

背景

普段はMacbook Proを開発に使ってるんですが、自宅にあるWindowsでもいろいろ作りたいものが出来てきたりしたので、そういえばWSLってなんか良いらしいなーというのを思い出したので、どれくらい実用に堪えるのかを検証してみたくなった感じです!

実はこれを書く前日に、夜なべしてWSL+Debianで環境構築してNeoVimのインストール時点で死ぬほど大変な思いをしたので、今回はもうちょっと一般的に使われているであろうUbuntuを利用して環境構築してみました。

結論からいうと同じDebian系でもUbuntuの簡単さは破格でした…。というお話です。

あまりに簡単すぎて、あんまりおもしろいことは書けなかったのですが、個人的なメモがてら手順はまとめておきたいのも含め書いてます。

とりあえずWSLを入れる

の前に、Windows Terminalを入れる

今だとWindows Terminalがとても使いやすいので、それをまず入れましょう。
Windows Terminal を入手 - Microsoft Store ja-JP

普通にインストールできるはずなので、次はWSLを使えるようにします。

WSL2を利用できるようにする

Windows Terminal(スタートメニューでterとか入れると補完が効くので便利)を起動します。
デフォルトだとPower Shellが起動すると思うので、そこで早速下記コマンドを実行。

wsl --install

次に、WSLはデフォルトで2を使うようにしたいので、下記コマンドを叩いておきます。

wsl --set-default-version 2

これでディストリビューションをインストールした際のデフォルトのバージョンが2になります。
これをやっておかないと後でコンバートする羽目になって非常にめんどくさいです 😫

Ubuntuをインストールする

ディストリビューションは正直何にしようか迷ったのですが、冒頭で記載した通り情報が圧倒的に多そう&サポートも手厚そうなのでおとなしくUbuntuにしておきます(Debianの時は情報が少なくて大変だったので)。

まずはどんなものがインストールできるのかを確認します。

wsl --list --online
インストールできる有効なディストリビューションの一覧を次に示します。
'wsl --install -d <Distro>' を使用してインストールします。

NAME            FRIENDLY NAME
Ubuntu          Ubuntu
Debian          Debian GNU/Linux
kali-linux      Kali Linux Rolling
openSUSE-42     openSUSE Leap 42
SLES-12         SUSE Linux Enterprise Server v12
Ubuntu-16.04    Ubuntu 16.04 LTS
Ubuntu-18.04    Ubuntu 18.04 LTS
Ubuntu-20.04    Ubuntu 20.04 LTS

Ubuntuがたくさん出てきますが、バージョン無しのUbuntuはどういうことなのでしょう?
こちらが詳しいです

WSL-Ubuntu Wiki

Google翻訳すると

Ubuntu(リリースバージョンなし)は常に推奨リリースに従い、最初のポイントリリースを取得したときに次のリリースに切り替えます。現在、Ubuntu 20.04LTSがインストールされています。

とのことなので、まぁあまり気にせずバージョン無しを選んでおいても損はないよってことみたいです。

というわけでインストールしましょう。

wsl --install -d Ubuntu

Ubuntuのウィンドウが別で開くので、ユーザ名とパスワードを入力します。
うまくいけばbashが立ち上がり、インストールが完了します。このウィンドウはいったん閉じて大丈夫です。

次に、インストールされたUbuntuがちゃんとWSL2で動いているのかを確認します。

wsl -l -v
  NAME      STATE           VERSION
* Ubuntu    Running         2

VERSION2 となっているので大丈夫そうです!

Windows Terminalから起動できるよう設定する

いったんWindows Terminalを再起動させます。そうしないと今インストールしたUbuntuが候補に入りません。

Windows Terminalを開き、設定を開きます( Ctrl+, でもいけます)。

  1. スタートアップ → 規定のプロファイルで Ubuntu を選択、起動サイズをお好みで。
  2. プロファイル → 規定値 → 外観タブ → ポインターをアンダースコア ( _ )に。
  3. プロファイル → Ubuntu → 全般タブ → 開始ディレクトリを \\wsl$\Ubuntu\home\[Ubuntuユーザ名] としておきます。これで起動時のデフォルトパスが自身のホームディレクトリになります。
  4. プロファイル → Ubuntu → 外観 → 配色で好きな色に(僕は Solarized Dark をカスタムして使ってます(カスタムはウィンドウ左下のJSONファイルを開くってところから既存のをコピーするとやりやすいです)
  5. 最後に忘れずに右下の保存ボタンをクリック

終わったらWindows Terminalを再起動してみましょう。

Ubuntuから始まり、色やホームディレクトリなどの設定が反映されていればOKです。

開発に必要なソフトウェアを入れる

ここからは個人的に絶対必要なソフトの導入や設定をしていきます。

まず最初にお約束の apt updateapt upgrade をしておきましょう

sudo apt update
sudo apt upgrade -y

zsh導入

とりあえずシェル回りを快適にしないと何をするにもしんどいので、zshから入れていきます。

これはそんなにバージョンにこだわりがないので普通にaptから入れてしまいます。

sudo apt install zsh

それからデフォルトシェルになるよう設定します。

which zsh # => /usr/bin/zsh
chsh -s /usr/bin/zsh

一度Windows Terminal側のタブを落とし、再度Ubuntuを開くと、zshの初期メニューが出てzshが使えるようになるはずです。

.zshrcの設定

これは各々好みがあると思うので、設定しておきましょう。

tmux導入

これも無いと困るのでインストールしておきます。
特に最新版を求める必要もないと思ってるので、素直にインストールして設定します。

sudo apt install tmux

gitの最新版をインストール

下記でOKです

sudo add-apt-repository ppa:git-core/ppa
sudo apt update
sudo apt upgrade

NeoVimのインストール

つい先日(昨日)Debianで入れようとした時は死ぬほど苦労したんですが…。

sudo add-apt-repository ppa:neovim-ppa/unstable
sudo apt-get update
sudo apt install neovim/focal

Ubuntuだとたったこれだけで終わりです。さすがです。
世の中はUbuntuを中心に回っている…。

ついでに .config 内に設定用のディレクトリを作成しておきます。

mkdir -p ~/.config/nvim

VimPlugの導入

公式の通り、簡単。

GitHub - junegunn/vim-plug: Minimalist Vim Plugin Manager

sh -c 'curl -fLo "${XDG_DATA_HOME:-$HOME/.local/share}"/nvim/site/autoload/plug.vim --create-dirs \
       https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim'

あとは適当にVimPlugの設定を ~/.config/nvim/init.vim に書いて、 :PlugInstall で一括インストールして終わりです。

asdfの導入

asdfは、 〇〇env 系のバージョン管理をさらにひとまとめにした、いうなれば anyenv みたいなやつです。最近イケてそうなのでこちらも導入しておきます。

こちらも公式サイトが詳しいです。

Getting Started | asdf

が、インストールはめちゃくちゃ簡単で、gitでcloneして .zshrc に追記するだけです。

git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.9.0

~/.zshrc に追記

# asdf
. $HOME/.asdf/asdf.sh

# append copletions to fpath
fpath=(${ASDF_DIR}/completions $fpath)
# initialise completions with ZSH's compinit
autoload -Uz compinit && compinit

では、試しにnodejsをインストールしてみます。

asdfにプラグインとしてnodejs用のプラグインを追加します。

asdf plugin add nodejs https://github.com/asdf-vm/asdf-nodejs.git

その後インストールできるバージョンを下記で確認します。

asdf list all nodejs

...
16.13.1
16.13.2
lts-gallium
lts
17.0.0
17.0.1
17.1.0
17.2.0
17.3.0
17.3.1
17.4.0

せっかくなので新しい 17.4.0 を入れてみます。

asdf install nodejs 17.4.0 # バージョンは `latest` としてもよい。

Cloning node-build...
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
        LANGUAGE = "ja_JP:jp",
        LC_ALL = "",
        LANG = "ja_JP.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
Downloading node-v17.4.0-linux-x64.tar.gz...
-> https://nodejs.org/dist/v17.4.0/node-v17.4.0-linux-x64.tar.gz
Installing node-v17.4.0-linux-x64...
Installed node-v17.4.0-linux-x64 to /home/m-yamashita/.asdf/installs/nodejs/17.4.0

globalに利用するバージョンを指定して実行してみましょう。

asdf global nodejs latest
node -v

v17.4.0

簡単!

Docker

Docker公式に、Ubuntu専用のページがあって丁寧に解説されているので、このままやれば基本的にはOK。

Install Docker Engine on Ubuntu | Docker Documentation

まずはupdateと依存関係のインストール

sudo apt-get update
sudo apt-get install \
    ca-certificates \
    curl \
    gnupg \
    lsb-release

Docker公式のGPGキーを追加

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

リポジトリ追加(これはStable用)

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

再度updateの後、インストール

sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io

サービスを立ち上げた後、実行

sudo service docker start
sudo docker run hello-world

Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
2db29710123e: Pull complete
Digest: sha256:507ecde44b8eb741278274653120c2bf793b174c06ff4eaa672b713b3263477b
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

正常に実行できた!👏

感想

WSL、Debianとかだとめっちゃハマりどころがあったんですが、Ubuntuだと何もかもすんなりで楽勝でした。

かなりシームレスにWindowsと融合して使えるので利用の幅が広いし、ちゃんとWSL内ではWindowsらしからぬ綺麗なフォントが再現されておりLinux使ってる感覚にかなり近いと感じた。

VSCodeとかGUIのIDEやらエディタ使いたいなってなっても、元々Windowsが外にいるため、そういうのは普通にWindowsにインストールしておけばいいし、WinからUbuntu内のディレクトリへもアクセスが簡単にできる為、いろいろ柔軟にできそう。

もう少しちゃんと使うと困ることも出てくるのかもしれないが、基本的にはほぼ問題なく快適な開発環境が手に入るなーって印象でした!

6
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
3