Windows開発環境完全体~Linux編~

この記事の文字数は、4,343 文字です。
WSL2をさらに使いやすくして開発環境をパーフェクトにしましょう。 また、開発業務ではWSL2のLinux上にソフトウェアをインストールすることもあります。 MacだとHomebrewを使ったソフトウェア管理が主流ですが、 なんとWSL2のLinuxでもHomebrewは使えるんです。 MacからWindowsに移行する方も安心ですね。
目次
こんにちは。ナオツです。
以前、WindowsにWSL2をインストールしてMacと変わらない開発環境の構築方法についてご紹介しました。
今回は、上記で書ききれなかったTipsをいくつか紹介していきます。 これであなたの環境はほぼパーフェクトと言ってよいでしょう。
WLS2追加設定
WSL2をさらに使いやすくする設定があります。 というより、この設定はほぼ必須で入れておくのをオススメしています。
それでは細かく見ていきましょう。
WSL設定ファイル作成
WindowsローカルのC:\Users\{ユーザー名}
の直下に.wslconfig
というファイルを作成します。
私のファイルの中身は、下記のように記載しています。
[wsl2]
memory=16GB
processors=6
swap=0
localhostForwarding=true
※「[wsl2]
」というのもちゃんと記載しましょう!
- memory,processors,swapについてはリソースの設定
- localhostForwardingについてはポートフォワーディングの設定
となります。 詳しく解説していきましょう。
リソース割り当て
以前、VMは仮想マシンであるという説明をしました。
ということは、Windowsで使うリソースとWSL2で使うリソースを正しく管理してあげる必要があります。
そもそもPCのリソースというのは大きく分けて、
- CPU
- メモリ
- ストレージ
です。 この内ストレージについては、WSL2に割り当てをしなくてもWSL2のブリッジソフトウェアがうまく共有してくれるので、特別な設定は不要です。
割り当ての必要があるのは、
- CPU
- メモリ
ですね。
ちなみに僕が普段使用しているPCのスペックは下記の通りです。
- OS:Windows 10 Pro 64bit
- CPU:インテル Core i7-10710U(6コア12スレッド)
- メモリ:32GB(16GB ×2)
つまり、上記の.wslconfig
にある設定は、
- PCのメモリ32GBのうち、16GBをWSL2に割り当て
- PCのCPU12スレッドのうち、6スレッドをWSL2に割り当て
- WSL2のswapはoffにする
という意味になります。 swapについてここでは詳しく記載しませんが、設定しなくても大丈夫です。
僕はkubernetes環境をつくりたかったためこの設定にしています。(これについてはいつか記事で解説する日が来るとか来ないとか…笑)←無視してください。
メモリとCPUについては、正直こんなにリソースを割り当てる意味があるかわかりませんが、今のところ快適に開発できています。
開発作業の量にもよりますが、最低でもWSL2側に、
- メモリ:4G
- CPU:2スレッド
は欲しいところです。
Windows側にはその残りが割り当てられますが、ここが少なくなりすぎるとWindows側のアプリケーションの動作が遅くなる可能性があります。
- ブラウザ(Chrome, Edge)
- Excel, Word
- メーラー
などなど。 その辺のスペックを考えて、快適に作業するのに最適なスペックを紹介しています。
localhostへのポートフォワーディング
上記、「localhostForwarding」についての説明です。
WSL2をWindowsのlocalhostにポートフォワーディングしてあげると断然使いやすくなります。
WSL2はVMなので内部IPアドレスが発行されます。
ですので、Windowsのlocalhost
とWSL2のlocalhost
は別物なんですね。
そこで、WSL2が提供するlocalhostへのポートフォワーディング設定をONにしておけば、WindowsのブラウザからWSL2で起動したアプリケーションにlocalhost
で接続することも可能になります。
イメージ図
WSL2のシャットダウン
何かアプリケーションを不正に実行してしまって、何も実行できなくなったときに、Windowsなら再起動すれば良いですよね。
「とりあえず何か問題が起きたら再起動」が解決の第一歩です。(笑)
ただ、何か問題がおきたときにいちいちマシンごと再起動はちょっと面倒ですよね。
大丈夫です。
WSL2はVMなので、WSL2単体でシャットダウンが可能です。
もしWSL2側で何か問題が起きれば、下記のコマンドで一発解決することが結構あります。 PowerShellかコマンドプロンプトで実行してください。
wsl --shutdown
WSL2を再度起動するには、Bashを起動するだけです。(WSL2でターミナルを起動) WSL2が自動で起動します。
メモリ解放
Windows側ではアプリケーションを閉じたタイミングで、アプリケーションが使用していたメモリを解放してくれますが、WSL2側では自動でやってくれません。
ずっと使っているとメモリの使用率が高くなり、Windows側を圧迫することもあるかもしれません。
※僕は結構簡単に10GBくらい達してしまいます。
もし、それで困ったことになったらLinux上でコマンドを実行しメモリを解放しましょう。 僕はUbuntuを使用していますので、下記のコマンドでメモリを解放することができます。
Ubuntuでメモリ解放
sudo sysctl -w vm.drop_caches=3
このあたりはLinuxのディストリビューションによってコマンドが変わってくる可能性がありますので、選択したディストリビューションに合わせてコマンドを調べてみてください。
Ubuntuのソフトウェア管理
Linux上にソフトウェアをインストールするシーンは結構あります。
- JSの場合ならnodeenv,npm
- rubyの場合ならrbenv
- goの場合ならgoenv
などなど、それに伴う依存ソフトウェアが結構必要になってきます。
apt
WSL2のLinuxディストリビューションにUbuntuを選んでいる方だけですが、aptをご紹介します。
aptはubuntu標準のソフトウェア管理ツールです。 ルート権限で(sudoで)実行します。
よく使うのは、
- ローカルリポジトリの最新化: sudo apt update
- インストールされたパッケージを全部アップデート: sudo apt upgrade
- ソフトウェアインストール:sudo apt install 〇〇(ソフトウェア名)
- ソフトウェア削除: sudo apt remove
- 現状使用していないソフトウェア削除: sudo apt autoremove
といったコマンドです。 これらは実際にnpmなどをインストールする際に改めてご説明します。
linuxでHomebrewを使う
Macを利用している方にとってはなじみ深いのではないでしょうか。 「Homebrew」 というソフトウェアがあります。 依存ソフトウェアなど気にすることなく、 brewコマンド 一発で欲しいソフトウェアがインストールできるツールです。
よく調べものをしていると、Homebrewを用いた brewコマンド でソフトウェアのインストール方法を説明している記事に出くわします。
MacはLinuxベースですので、当然Linux環境でも brewコマンド が使用できます。
Homebrewインストール方法
公式サイトにインストール方法が載っています。 基本的には下記のコマンド一発でインストール可能です。 WSL2のLinux上でコマンドを入力してください。
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
コマンドの使い方などは公式サイトをご覧ください。
まとめ
ようやくWindowsでの開発環境が完璧に構築されました。 お疲れ様でした。 もはや開発業務で困ることはほとんどないことでしょう。
もう1点Dockerを利用した開発があるのですが、それはまだ先の話なので、実際使うときにインストール方法をご紹介していこうと思います。