技術

Windows開発環境をWSLにする

2021年現在、私は仕事ではMacBook Pro、プライベートではWindows端末(ThinkPad X1 Carbon)を使用しています。開発環境としてはMacBook Proの方が便利なので、プライベートの開発なども会社支給のMacBook Proでやったりしていました。

でもMacBook Proの方は16インチで持ち歩きに不向き、キーボードも良くないと常々思っていました。それに会社PCにプライベートのリポジトリとかはあまり入れたくありません。そこで重い腰を上げて、Windowsの方でもがっつりと開発できるように、環境を刷新しました。

そのことを書きたいと思います。

刷新前と刷新後の構成

刷新前の開発環境
  • ターミナル
    Git Bash, (ごくまれにWSL2)
  • エディタ
    各種Jetbrains, サブでVSC
  • インタープリタ
    Anaconda(Python), Nodist(Node.js),tfenv(Terraform), Git, AWS CLIな
    インストール場所: Windows (Vue, Reactなどの一部のプロジェクトはWSL2)
  • ローカルリポジトリ保存場所
    Windows (Vue, Reactなどの一部のプロジェクトはWSL2)
刷新後の開発環境
  • ターミナル
    WSL2 (Windows Terminal)
  • エディタ
    各種Jetbrains, サブでVSC
  • インタープリタ
    Anaconda(Python), Nodebrew(Node.js),tfenv(Terraform), Git, AWS CLIなど
    インストール場所: WSL2
  • ローカルリポジトリ保存場所
    WSL2

刷新前は、ターミナルは主にGit Bashで、Windows上に必要な開発環境をインストールしていました。具体的には、AnacondaでPython環境、nodistでNode.js環境、tfenvでTerraform関連などです。エディタはPycharmとWebStormが中心で、インタープリタをWindows上にあるpythonやnodeを使うようにしていました。

この構成だと、VueやReactを使った一部のプロジェクトがホットリロードが動作しなかったりbuildが遅かったりすることがあったので、そのプロジェクトだけはWSL上にリポジトリをおいて、実行環境もWSL上に構築するなどしていました。

刷新前のWindowsローカルで困っていたこと

これまではPython中心で開発していて、シンプルなDocker構成だったりserverlessだったりしたので、刷新前のWindows上に開発環境を構築するスタイルでそれほど困っていませんでした。ターミナルもGit Bashで全然問題ありませんでした。

しかし去年辺りから、VueやReactなどフロント周りもやるようになったのと、Dockerをゴリゴリ使ったローカル開発などをするようになってきて、Windowsだけではどうにもならず、WSLを使うようになってきました。Windows上とWSL上での開発環境の二重管理が発生していました。

前述しましたが、VueやReactを使ったプロジェクトだと、ホットリロードが動作しないことがあります。またbuildが遅くて使い物にならないです。また、Dockerでリポジトリにおいた設定ファイルをマウントするようなことをしていたりする場合、ファイルのパーミッションで動作しないことがあります。

WSL環境にするメリット

メリットというか、Windows上での開発でどうしても発生してしまう問題を解決できるようになります。以下のような問題が発生していて解決したい場合は、WSLを使わざるを得ません。

  • Vue, Reactなどホットリロードが動作しないことがある
  • buildが遅い
  • Dockerのbuildでファイルのパーミッションの問題が発生する
  • Windows特有のファイルパスの処理を入れたくない
  • Windows特有の改行コードCRLFに振り回されたくない
  • Windowsでは動作しないライブラリを使いたい

WSL環境での注意点

WSLからWindows上にあるファイルの管理は諦める

WSL環境をメインにすると決心したときの注意点は、WSLからWindows上にあるファイルの管理は諦めた方が良いということです。つまりGitリポジトリのClone先はWindows上でなくWSL上にするということです。

WSLからWindows管理下にあるファイルを使おうとすると、ファイルシステムの問題で速度が遅くなったりパーミッションの問題が発生したりします。開発の本質とは離れたところで四苦八苦するのもばかばかしいので、WSL配下においてしまった方がいいと思います。

メモリはかなり枯渇する

WSLの登場により、Windowsでもだいぶ開発できるようになりました。ただWSL最大の弱点として、メモリを喰いまくるという問題があります。これは2021年も今も解決していません。MacBookでは16GBのメモリでできる開発も、Windwosだと32GBマシンでないとできないなどがありえます。

WSLでやっていることは、Linux ON Windowsなので、無理はありません。WSLを用いた開発で大量メモリが要求されることは今後も変わらないでしょう。

WSL環境で設定すること

開発環境を完全にWSL配下にするためには、これまでWindows上にインストールしていたものをWSL上にインストールしなおす必要があります。

私の場合は以下のような感じでした。

  • Git
  • AW CLI
  • tfenv, tflint
  • Anaconda
  • Nodebrew

またWSL完全移行のタイミングでターミナル周りも強化しておきたかったので、Windows TerminalとPowerlineも設定しました。Powerlineのインストールはちょっとクセがあるので、ここで確と完全に別話題になってしまうので、また別記事でまとめたいと思います。