logo

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

この記事の文字数は、4,343 文字です。

WSL2をさらに使いやすくして開発環境をパーフェクトにしましょう。 また、開発業務ではWSL2のLinux上にソフトウェアをインストールすることもあります。 MacだとHomebrewを使ったソフトウェア管理が主流ですが、 なんとWSL2のLinuxでもHomebrewは使えるんです。 MacからWindowsに移行する方も安心ですね。

検索キーワード
WSL2
Ubuntu
Homebrew
Mac移行

こんにちは。ナオツです。

以前、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
  • メーラー

などなど。 その辺のスペックを考えて、快適に作業するのに最適なスペックを紹介しています。

コスパ抜群!エンジニアに最適のWindows PC

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側を圧迫することもあるかもしれません。 WSL2メモリ使用率 ※僕は結構簡単に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を利用した開発があるのですが、それはまだ先の話なので、実際使うときにインストール方法をご紹介していこうと思います。

このキーボードで生産性爆上げ!

ホーム開発環境WindowsWindows開発環境完全体~Linux編~

Ads

すべての記事

  • すべての記事を読む

システム開発関連の記事

  • システム開発関連すべて
  • インフラ

UIデザイン関連の記事

  • UIデザイン関連すべて
  • Figma

フロントエンド関連の記事

  • フロントエンド関連すべて
  • フロント技術全般
  • React

バックエンド関連の記事

  • バックエンド関連すべて

開発環境関連の記事

  • 開発環境関連すべて
  • Windows

生活関連の記事

  • 生活関連すべて
  • フリーランス
  • 学び