三行で。
Macと近しい環境をWindows10に安直に実現するには、2020年時点では、以下の手順がおすすめと考える。
- wsl/wsl2を導入し、お好きなlinuxをwindows storeから導入する(以下では、ubuntu)。
- vscodeに「Remote Development」を導入し、お好きなlinuxをディフォルトのシェルとする。
- homebrewをlinuxに導入し、Macと同様にツール管理できるようにする。
以下、若干手抜きしているけれども、少なくともwsl2+ubuntuの場合は全手順を書いたと思うので、自宅でMac・職場でwindows(またはその逆)など、windowsに不慣れな方向けの記事だとしておく。あとついでに噂のvlangも入れている。
回線速度が遅くなければ、この手順は、30分から1時間で終えられるはず。
導入後の様子(左がvlang、右がgolang。vscode内で編集から実行まで完結できる。):
より入門的な記事の紹介
wslとwsl2で手順は同じ。wslの導入からvscodeのインストールまでについては以下の記事をご参考のこと(remote WSLの扱いのみ、私の場合は少し異なる)。
【Remote - WSL】VScodeの新機能でWSL上にローカル開発環境を構築する ★1
その他、最近はwsl入門記事、vscode入門記事が多いので、適宜参考のこと。
本手法の良い点
利点1 windowsとmacで、vscode経由で概ね同じショートカットが使える
windowsの場合、ctrl+,
で設定を開く、ctrl+@
でシェルを開く。Macの場合はCommandキーですね。
利点2 windows OSに特殊な設定をせず環境が汚れにくい
共にwindowsから見て1アプリにすぎない、wsl向けlinuxアプリとvscodeを使うため、仮にlinux環境が汚れた場合でも、単にアプリをインストールし直すだけで良い。そのため、windows10でいろいろなアプリをインストールしまくっているとパフォーマンスが低下するといったこと(=>私は経験済)がほぼくなると期待する。
なお、私、最近wsl2を使い始めたところ:
> wsl -l -v
NAME STATE VERSION
* Ubuntu-18.04 Stopped 1
Debian Running 2
ubuntu前提の導入手順
① linuxアプリ(ubuntu)の導入
省略(上の★1の記事をご参考ください)
私の場合、以下のバージョンのubuntu :
/$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=18.04
DISTRIB_CODENAME=bionic
DISTRIB_DESCRIPTION="Ubuntu 18.04.4 LTS"
なお、homebrewのためにシェルの設定(~/.bash*
)を多少なりともいじくることになるので、以下の作業はlinuxの導入直後に行うのがお勧めだ。初めに必要なアップデートを行っておこう。
ubuntuでは:
sudo apt update
sudo apt upgrade
② vscodeのディフォルトシェルをlinuxに設定
a.Remote Development(リンク )をvscodeに導入
b.「設定」を開き、settings.jsonを編集する。
「設定」のショートカット : ctrl+,
デフォルトの起動するターミナルをdebianにする
{
//お好みでフォント等の設定
"editor.fontSize": 18,
"editor.tabSize": 2,
"editor.fontFamily": "'Fira Code' ",
"workbench.statusBar.visible": false,
"editor.minimap.enabled": false,
//自動保存の仕方を設定
"files.autoSave": "onFocusChange",
// デフォルトの起動するターミナルをubuntuにする
"terminal.integrated.shell.windows": "ubuntu.exe",
"terminal.integrated.shellArgs.windows": ["run", "/bin/bash"],
//その他、拡張機能向け設定
//例 ファイルをセーブするごとにコードを整えてくれる
"editor.formatOnSave": false,
//例 ペーストしたときにコードを整えてくれる
"editor.formatOnPaste": true,
}
ここで、vscodeを再起動等する。
③ homebrewを①のlinuxにインストール
- homebrewの歴史を知りたい人は、Linuxbrew のススメがお勧め。
a.vscodeを立ち上げシェルに入り、homebrewを導入。
linuxのシェルは、ctrl+@
で立ち上げる。curl経由で、homebrewを取得。
homebrewの起動準備
sudo apt install linuxbrew-wrapper build-essential
※(debian等の場合、現時点では、linuxbrew-wrapperがないので各自対応のこと。)
homebrew杯かのようにcurl経由で入れる。
※他OSでcurlがない人はあらかじめsudo apt install curl
等すること(委細は公式サイトを参照のこと)。
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
b.brew doctor
を参考に、不足点を補う
Macとlinux間の差異を吸収して、各種ツールの導入を可能とするhomebrewには、やはり、環境ごとの設定が付きまとう。環境の不備は、brew doctor
すると指摘してくれる。便利。
wsl2上のubuntuでlinuxbrew-wrapperを入れた後にbrew doctor
してみたところ、以下を実行せよとのことなので素直に従い、シェルを再起動。
echo 'export PATH="/home/linuxbrew/.linuxbrew/bin:$PATH"' >> ~/.bash_profile
なお、初期設定のwsl上のubuntuでは、brewで入れたツールにパスを通すには、都度source ~/.bash_profile
でアクセスする必要がある。
brewを普段使いするには、.bashrcの方に上の設定を追記するなどにしておこう。
echo 'export PATH="/home/linuxbrew/.linuxbrew/bin:$PATH"' >> ~/.bashrc
c.brewでツールを入れる
Go言語を入れる場合には、brew install go
など。
パスが通っていれば、ツールにアクセスできる。例:
$ go version
go version go1.14.1 linux/amd64
終わりに
apt経由で入れたパッケージを確認する
詳しくは、aptコマンドチートシートを参考に。
ここでは、sudo dpkg -l
コマンドのみを紹介。
ずらーっと出てくるので、grepで絞り込む
~$ sudo dpkg -l | grep gcc
ii gcc 4:7.4.0-1ubuntu2.3 amd64 GNU C compiler
ii gcc-7 7.5.0-3ubuntu1~18.04 amd64 GNU C compiler
ii gcc-7-base:amd64 7.5.0-3ubuntu1~18.04 amd64 GCC, the GNU Compiler Collection (base package)
ii gcc-8-base:amd64 8.4.0-1ubuntu1~18.04 amd64 GCC, the GNU Compiler Collection (base package)
ii libgcc-7-dev:amd64 7.5.0-3ubuntu1~18.04 amd64 GCC support library (development files)
ii libgcc1:amd64 1:8.4.0-1ubuntu1~18.04 amd64 GCC support library
~$ sudo dpkg -l | grep make
ii make 4.1-9.1ubuntu1 amd64 utility for directing compilation
ii rake 12.3.1-1ubuntu0.1 all ruby make-like utility
ii xxd 2:8.0.1453-1ubuntu1.3 amd64 tool to make (or reverse) a hex dump
お、gccとmakeがすでに入っているからvlangも入るね(=>これが書きたかった)。
vlangをついでにインストールしてみる(趣味)。
git clone https://github.com/vlang/v.git
cd v/
make
brew経由で入れたパッケージを確認する。
留意点
同様にcurl経由で入れるツールとの整合性確保には留意しよう。
私の場合、JVM言語の管理ツールsdkmanも使うのだが、homebrew->sdkmanの順に入れると問題は起きない。
確認:
tail ~/.bashrc
if [ -f /usr/share/bash-completion/bash_completion ]; then
. /usr/share/bash-completion/bash_completion
elif [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi
fi
export PATH="/home/linuxbrew/.linuxbrew/bin:$PATH"
#THIS MUST BE AT THE END OF THE FILE FOR SDKMAN TO WORK!!!
export SDKMAN_DIR="/home/k/.sdkman"
[[ -s "/home/k/.sdkman/bin/sdkman-init.sh" ]] && source "/home/k/.sdkman/bin/sdkman-init.sh"
おまけ
(お好みで)ホームフォルダを変更しておくのも良いかな、思ったのだが、、以下のやり方ではgitやsdkmanに影響が出る模様(sudoが要求される)。こちら良い方法をそのうち模索。
------たぶんダメなやり方-------
cドライブ直下のubuntu_homeディレクトリをubuntuのホームとする場合、初めにディレクトリを作成し.bashrcなどをコピーしておく。
mkdir /mnt/c/ubuntu_home
sudo cp -r ~/. /mnt/c/ubuntu_home
/etc/passwdにあるユーザー名(YourUserName)のホームフォルダを以下のように書き換える(sudo vi /etc/passwd
など)。
YourUserName:x:1000:1000:,,,:/mnt/c/ubuntu_home:/bin/bash
再起動後、cd
して、ホームフォルダが変更されていることを確認しておく。
なお、変更後も、もとの/home/YourUserNameは存在する。
紛らわしい場合、/home/YourUserName配下のファイルをrm -f /home/YourUserName/*
で消してしまっでも良い。