こんにちは!コロナ禍の影響でライブハウス遊びができずに、気になるバンドのライブ配信をひたすら見続ける生活を送っている@hidenbaです。
アジャイル事業部では、各自が利用するPCは、予算に応じて2-3年のサイクルで買い換えを行い、各々が好きなPCを購入して利用しています。 以前はmacOSの利用率が圧倒的に高かったのですが、Dockerを利用して開発を行う際に、遅さがストレスになるという理由でLinuxを選択する 事が多くなってきているように思えます。かくいう私は、3年前まではMacを利用していましたが、同様の理由でLinuxを選択して、現在はThinkpad T490にArch Linuxを入れて利用しています。
私たちは、受託開発やお客様の業務支援を行っていますが、時として、お客様のセキュリティポリシーの都合上、お客様から貸与されたPCを利用して 開発作業を行うことがあります。そのときに支給されるPCはお客様が指定したPCになることが多く、OSの選択肢としてはmacOSがほとんどだったのですが、最近ではWindowsも選択肢に入るようになってきています。
WindowsでRubyを使ったシステムの開発なんてできるのか?なんて思ったりもしたのですが、WSL2を利用することで快適に開発を行えるようになってきています。今日は、私がお客様から、貸与されたWindowsPCで開発できる 環境になるまでに、やったことをざっとあげていきます。それぞれの詳細については、公式サイトのドキュメントや詳しく解説されている記事が多数あるので割愛します。
ターミナルで作業するための準備
今回、お客様から貸与されたPCはDellのXPS 13でした。初回起動後は、Windowsアップデートをして最新の状態にします。 次にコマンドラインから利用できるパッケージ管理ツールの「winget」をインストールします。 これで、コマンドラインを中心に作業ができるようなりました。
標準のPowerShellを使うのでもいいのですが、もうちょっと高機能で使いやすいWindows Terminalをインストールして以降は Windows TerminalでPowerShellを利用して作業していきます
$ winget install "windows terminal"
必要なアプリケーションのインストール
必要なアプリケーションをwingetを利用してインストールしていきます。
内外とのコミュニケーションのパスを用意するためにSlackとTwitterのクライアントをインストールします。
$ winget install slack $ winget install tweeten
エディタがないと生きていけないのでVSCodeをインストールします。
$ winget install vscode
WSL2の設定
WSL2を有効にするために、管理者権限でPowerShellを起動します。
$ Start-Process powershell.exe -Verb runas
仮想マシンプラットフォームオプションを有効にして再起動をかけます。
$ dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
※私の環境では、上記コマンドではWSLが有効化されなかったのでコントロールパネルから設定をしました
[コントロール パネル] -> [プログラムと機能] -> [Windows の機能の有効化または無効化] を開いて、 [Linux 用 Windows サブシステム] をチェックします。
WSLのバージョンを2に固定します。
$ wsl --set-default-version 2
カーネルコンポーネントの更新をしてWSL2が実行可能な状態にします。 https://docs.microsoft.com/ja-jp/windows/wsl/wsl2-kernel
WSL2にLinuxをインストールします。
$ winget install ubuntu
Docker環境の構築
Windows側にDockerをインストールします。
$ winget install "Docker Desktop"
VSCodeからWSL2環境に接続して開発を行うためにRemote Development拡張をインストールを行い、WSL2のubuntuからVSCodeを起動します。
$ code
開発に必要なリポジトリをWSL2のファイルシステムにcloneしてきてdocker-compose up等Docker環境を起動して開発を行うことができるようになりました!!
より快適な環境にしてくれるPowerToysのインストール
この状態だと、開発はできるがまだまだストレスが多い環境なので、キーバインドやウィンドウの配置を固定するためにPowerToysをインストールして好みのキーバインドにカスタマイズしています。
$ winget install powertoys $ winget install ".NET Core"
現状の課題
この記事を執筆時点で早急にどうにかしなくては!と思っているのが、ssh-agentの設定です。現状はUbuntu上にkeychainをインストールして利用していますが、 VSCode起動時にパスフレーズを毎回聞かれたり、VSCodeのgit拡張からpushできずにVSCodeのターミナルからリモートリポジトリの操作をしています。 Windows側でssh-agentの設定をする方法があるみたいなので、近々試してみようと思っています。
最後に
十数年ぶりのWindowsに戸惑い多少ハマったりもしましたが、思っていた以上に簡単にWindowsでの開発環境を手に入れることができました。 みなさんも、機会があればWindowsでWSL2を利用した開発環境の構築をしてみるのもよいのではないでしょうか?