Windows10&WSL(Ubuntu)で快適な開発環境を作る

Monologue

エンジニアはMacを使うものだ・・・そんなふうに考えていた時期が俺にもありました。まぁ今でもそう考えてはいるのですが、いかんせんMacってコスパ悪いし家のPCとして買うものじゃないんですよね、ゲームもできないし。自分もイケてるエンジニアを装いたくてMac Book Proを購入したのですが別にやりたいことができればイケてなくていいかな、と思い直したのでWindowsで開発環境を作ってみることにしました。

スポンサーリンク

できるようにしたいこと

開発環境に求めることは個人差というかやってることの内容によって違うとは思うのですが、とりあえず自分がMacを使っていてこれがWindowsでできればまぁ良いんじゃないかな、という内容をピックアップしてみます。

  • シェルが使える
  • Dockerが使える
  • Homebrewが使える

・・・というかこんなもんじゃないですか?まぁ細かく言うと気に入る気に入らない困る困らないはもちろんあると思いますが、私なんて永遠のにわかエンジニアなんであんまりこだわりとか無いんですよ。

環境構成

今回のレシピです。一応Java屋さんなのでそれっぽい感じちょっと出しますが。

  • ハード
    • Hyper-Vが使えるCPU
    • 多めのメモリ
  • OS
    • Windows10 Pro
  • On Windows
    • Windows Subsystem for Linux(Ubuntu)
    • Docker for Windows
    • OpenJDK
    • Tools
      • IntelliJ IDEA
      • Visual Studio Code
      • cmder
      • Git for Windows
      • お好みで
  • On Ubuntu
    • Homebrew-on-Linux
    • zsh
    • Prezto
    • お好みで

大体こんな感じで。

開発するときに触るものをWSLとWindowsで共用しやすいパスに配置しておき、コマンドライン操作はWSLに寄せでMacで普段やっているような感覚に近い雰囲気を醸すことを目指します。

段取り

というわけで順繰りやっていきます。

Hyper-Vの有効化

Microsoftの公式リファレンスに従います。

Windows 10 での Hyper-V の有効化
Windows 10 上に Hyper-V をインストールする

できない場合はCPUが対応していないとか実はWindowsがHomeだとかいろいろある気がします。

Windows Subsystem for Linuxのインストール

やり方なんてQiitaにいい記事がサクッと見つかる時代です。先人の知恵は素晴らしい。

Windows Subsystem for Linuxをインストールしてみよう! - Qiita
# はじめに 日本時間の8月3日から提供が開始されたWindows 10のAnniversary Updateで、ついにBashがやってきました。 これでいろいろなストレスから解放されるはず。さっそくインストールして、使ってみましょ...

Docker for Windowsのインストール

公式からダウンロードしてインストールすれば良いです。

Get Started with Docker | Docker
Learn about the complete container solution provided by Docker. Find information for developers, IT operations, and business executives.

設定にポイントが有り、WSL上のDocker ClientからWindows上のDocker Daemonにアクセス可能となるよう、許可設定を行っておく必要があります。

docker for windowsをWSLから呼び出す - Qiita
# はじめに これはWSLでdocker-composeを動かす環境を構築するためのメモです。 前回、WSLでLinuxネイティブのDockerを起動させるための記事を書いたが、どうやら現在のWSLではiptablesが完全にサポート...

WSL上でDocker Daemonを起動することは今の所できなさそうなので、この方法で代替します。

JDKのインストール

やっておきましょう。Javaが嫌いな人は不要です。

WindowsのTool類のインストール

私は前述のTool類をチョイスしました。とりあえず好きなものを入れておくということで。Gitは無いと困ると思いますが。

WSL上のセットアップ

Homebrew-on-Linuxのインストール

公式の説明を見るならこちら。

Homebrew on Linux
Documentation for the missing package manager for macOS.

日本語の説明ならQiitaの記事を。

Linuxbrew のススメ - Qiita
# 2019/02/04 追記 本家 ( にて Linuxbrew を merge して正式にサポートすることにな...

zshのインストール

入れれば良いだけなのですがこのあたりを参考に。

Ubuntuのシェルをzshに変更する - Qiita
## はじめに Vagrantの開発環境で使ってるUbuntuのシェルをローカルのシェルで使っているzshに合わせたいと思ったので、その変更方法をまとめておきます。 ## 環境 * OS X * Vagrant * Virtu...

Preztoでzshをいい感じに

よくあるイケてるターミナルを。

Zsh + Prezto で快適コマンド環境を構築する | Developers.IO
Prezto 今回はコマンドライン環境の話です。私は以前より oh-my-zsh を利用していましたが、テーマの調子が悪かったので Prezto に乗り換えてみました。結構快適だったので、いまは Prezto を使ってい

個人的にあんまりわちゃわちゃしてるのも好みではないのでminimalとかにしています。gitのbranchが出てくれれば良いです。

Dockerのインストール

↑にもリンクを張りましたがこちらの方法でWSLからはWindows上のDocker Daemonへアクセスするようにしておきます。

docker for windowsをWSLから呼び出す - Qiita
# はじめに これはWSLでdocker-composeを動かす環境を構築するためのメモです。 前回、WSLでLinuxネイティブのDockerを起動させるための記事を書いたが、どうやら現在のWSLではiptablesが完全にサポート...

その他諸々

お好みで。

もちろんJavaも(๑´ڡ`๑)

コンソールの設定

何気なくWSLを起動するとbashが起動するのでちょっと設定をいじります。

cmder

Startupのtaskを新規に作成し、↓のようなコマンドを設定しておきます。

C:\Windows\System32\wsl.exe ~

wsl.exeから起動すれば自動的に設定したログインシェルを使用してzshが使われますが、ホームディレクトリで始まってほしいので最後におまけを指定しておきます。

IntelliJ IDEA

同じくIntelliJのターミナルのシェルパスを↓のように設定しておけばOKです。

C:\Windows\System32\wsl.exe

IntteliJの場合は開いたプロジェクトのパスで始まれば良いのでオプションは不要です。

Visual Studio Code

VSCodeも同様ですがGUIで設定してもいいですし、settings.jsonに指定するならこうですね。

"terminal.integrated.shell.windows": "C:\\WINDOWS\\System32\\wsl.exe"

ファイルの共有

WSLからはCドライブのルートが/mnt/cのパスで見えるので、gitリポジトリをcloneするパスなどはそのへんを考慮して適切なパスに行っておくだけでファイルの共有が行えます。

できないこと

OSが違うので細かく見ていくとMacではできるのにWSLではできない、的なことが多々あるかと思いますが・・・とりあえず気づいた範囲で。

まずは・・・

Error: Installing casks is supported only on macOS

だそうです。homebrewさんですね。必要であれば他のパッケージマネージャを使えばいいので特に困りはしないかな。

後は何かあったかなぁ・・・。また何かあれば書こうと思います。

おわりに

というわけで明日Mac Book Pro売ってきます。まーだ分割払いも終わってないんですけどね。半年くらいしか経ってないので。まぁスムーズに会社でのMac開発に馴染むという意味では十分に役に立ってくれたと思いますが・・・

ホントはちょっとお金に困ってMac売ります、という話なのですけどね(*´ω`*)

さて、リンクばっかりで中身の無いエントリになってしまいましたがまぁこれはこれで自分的に便利なTipsだったのでまとめておくのも悪くない、ということで。

それではまた。

この記事に対するコメント