WSLの環境を構築する
Windows上で開発するときの環境構築が面倒くさいのでWSLを使うことにします。また、今はJetbrains製のIDEを使っているのですが、学生じゃなくなると有料になってしまうのでこれを機にVS Codeに乗り換えようかと思います。
環境
Windows 10 Home 1903
WSL
Windows上でLinuxを動かしちゃおうという機能です。
Windows Insider Programを使うとWSL2を利用することもできますが、Dockerを使わないためわざわざWSL2にする必要性を感じなかったので今回はWSL1です。6月にWSL2が正式リリースされたら乗り換えるかもしれません。
WSLの有効化
コントロールパネルから「プログラム -> プログラムと機能 -> Windowsの機能の有効化または無効化」へ行き、「Windows Subsystem for Linux」にチェックを付けます。その後、指示に従い再起動します。
ディストリビューションの入手
Microsoft Storeで欲しいLinuxディストリビューションを検索してインストールします。今回はUbuntu 18.04 LTSをインストールしました。今後はUbuntu 18.04 LTSをインストールした場合についての解説になります。
Ubuntuの起動
スタートメニューからUbuntu 18.04 LTSを起動すると、少し待つよう言われるので待ちます。インストールが終わったらユーザー名とパスワードを入力します。
リポジトリの変更
リポジトリを日本にしたほうが良いようなので変えておきます。今回はJAIST(北陸先端科学技術大学院大学)にしていますが、他にもあるのでこだわりがある方は変えてください。
sudo sed -i.bak -e 's%http://.*.ubuntu.com%http://ftp.jaist.ac.jp/pub/Linux%g' /etc/apt/sources.list
パッケージのアップデート
下のコマンドで各種パッケージを最新のものにします。
sudo apt update sudo apt upgrade -y
Terminus
ターミナルにはTerminusを採用します。最初はHyperを入れたのですが、少し動作が不安定だったので今回は使いません。
各種設定をする
設定から様々な項目をいじれます。とりあえずWSLに関する設定だけしましょう。
「Appearance -> Font」からフォントを設定できます。今回はPowerlineを使う予定なので白源のHackGen Console for Powerline
を選択しました。
「Shell -> Profile」からWSL/Ubuntu-18.04
を選択すると、新しいタブを開くときに自動的にWSLで開いてくれます。また、「Shell -> Working directory」を\\wsl$\Ubuntu-18.04\home\<user-name>
とするとホームディレクトリにいる状態で開いてくれます。
これだけ設定しておけばWSLで最低限使えるようになりました。他にもテーマやカラースキーム、ホットキーなんかも変えておくと良いでしょう。
fish
bashやzshのようなシェルです。zshは設定が多くて大変なので、そのままでも使いやすいと評判のfishを使います。
fishのインストール
sudo apt install fish
でインストールすると、バージョン2.x.xになってしまうので以下のコマンドでバージョン3.x.xをインストールします。
sudo apt-add-repository ppa:fish-shell/release-3 sudo apt-get update sudo apt-get install fish
これでfish
と打つと起動できるようになりましたが、いちいち起動するのは面倒なのでchsh
コマンドでfishをデフォルトシェルに設定します。
chsh -s /usr/bin/fish
2021年4月15日追記:
fish 3.1.2を3.2.2にアップデートしたところ、出力がおかしくなるバグが発生しました。ubuntu1804.exe
だと問題なかったので、Terminus+fish 3.2.2で発生するのかもしれません。
とりあえずアンインストールしてから、以下の通りにロールバックして対策しておきました。
sudo apt install /var/cache/apt/archives/fish_3.1.2-1~bionic_amd64.deb sudo apt install /var/cache/apt/archives/fish-common_3.1.2-1~bionic_all.deb sudo apt-mark hold fish sudo apt-mark hold fish-common
fisherのインストール
fisherはfishのパッケージ管理システムです。omfというものもあるのですが、fisherはomfのプラグインも利用でき、上位互換と考えて良さそうなのでfisherを使います。
curl https://git.io/fisher --create-dirs -sLo ~/.config/fish/functions/fisher.fish
プラグインのインストール
fisherを使ってプラグインを入れていきます。
2021年4月15日追記:
fisher 4.0でコマンドが大きく変わりました。以下のadd
になっている部分はinstall
に読み替えてください。
bobthefish
Powerlineを使ったテーマです。
fisher add oh-my-fish/theme-bobthefish
カラースキームや日付の表示などを変更します。他の変更可能なオプションについてはGitHubに載っています。
string trim ' set -g theme_color_scheme dracula set -g theme_display_date no set -g theme_title_display_process yes ' >> ~/.config/fish/config.fish
fzf
コマンド履歴の検索や、ファイルの検索が便利になります。
git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf ~/.fzf/install
先に通常のfzfをインストールしてからfishのプラグインをインストールします。
fisher add jethrokuan/fzf
fish-bd
親ディレクトリに対するcdです。
fisher add 0rax/fish-bd
Python
次にPythonの環境を整えていきます。Ubuntu 18.04 LTSにはデフォルトだとPython 3.6.9が入っていたのでこれを使っても良いのですが、今回はpyenv+Poetryでバージョンとパッケージを管理します。
pyenvのインストール
まずはpyenvをcloneしてきます。
git clone https://github.com/yyuu/pyenv.git ~/.pyenv
次にpyenvのパスを通します。config.fish
を書き換えた後は再起動しましょう。
string trim ' set -gx PYENV_ROOT "$HOME/.pyenv" set -x PATH $PATH "$PYENV_ROOT/bin" status --is-interactive; and . (pyenv init - | psub) ' >> ~/.config/fish/config.fish
pyenvを使うためには以下のパッケージが必要なので、こちらもインストールします。
sudo apt-get install --no-install-recommends make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev
次のようなコマンドで任意のバージョンのPythonをインストールし、グローバルに設定できます。今回は執筆時点で最新の3.8.1をインストールしました。
pyenv install 3.8.1 pyenv global 3.8.1
Poetryのインストール
Poetryのインストールはpipでも行えますが、READMEで推奨されている方法を使います。pipと紐付けられないのでこちらの方が良いでしょう。
curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python
デフォルトではvenvがプロジェクトディレクトリに作られないので、以下のコマンドで設定を変える必要があります。
poetry config virtualenvs.in-project true
プロジェクトの作成
簡単にPoetryの使い方を書いておきます。以下のコマンドはすべてプロジェクトのディレクトリで行ってください。
最初にプロジェクトで使うPythonのバージョンを設定します。
pyenv local <version>
次にPoetryでパッケージをインストールできるように設定します。パッケージの開発であればnew
コマンドを使うと良いのですが、そうでない場合はinit
コマンドを使います。
init
コマンドを使うと対話的にプロジェクトネームなどを設定でき、pyproject.toml
が作成されます。
pyproject.toml
ができたらinstall
コマンドを使うとpoetry.lock
や.venv/
が作成され、仮想環境が使えるようになります。
poetry init poetry install
パッケージのインストールにはpipではなくadd
コマンドを用います。また、スクリプトの実行はrun
コマンドから行えます。
poetry add <package> poetry run python <file>
2021年6月28日追記:
Poetry 1.0.0-1.0.3でPython 3.9を使おうとするとエラーが出ます。
Poetryをアップデートすることで対応できますが、poetry self update
でアップデートすると3.9以外でもエラーが出るようになります。以下のIssueの通りに再インストールしたらうまく動くようになりました。
VS Code
上の公式サイトからVS Codeのインストーラをダウンロードして、ウィザードの指示に従ってインストールします。
まずは日本語化するために、左のメニューからExtensionsを選びJapanese Language Pack for Visual Studio Codeをインストールします。
次にWSLの環境にVS Codeから接続するために、Remote - WSLもインストールします。左に新しく追加されたメニューからUbuntuを選ぶか、左下の「><」のようなマークをクリックするとWSLに接続できます。code
コマンドを使うと、ターミナルから直接開くこともできます。
WSLに接続した状態で拡張機能をインストールすると、拡張機能をWSLにインストールすることができます。とりあえず以下の拡張機能を入れました。
- iceberg
テーマです。 - seti-icons
もともと入っているSetiというアイコンにフォルダのアイコンなどを加えたものです。 - Python
Pythonを使えるようにします。Jupyterも使えるのが便利です。 - Visual Studio IntelliCode
GitHubで学習したAIがIntelliSenseを強化します。 - Path Intellisense
パスの入力補助をしてくれます。 - Rainbow CSV
CSVやTSVファイルの列に色を付けて見やすくしてくれます。 - Bracket Pair Colorizer
対応する括弧に同じ色を付けて見やすくしてくれます。 - Todo Tree
Todoの管理をしてくれます。他のも使ってみましたが、これが一番しっくりきました。 - Color Highlight
カラーコードがどの色を指しているのかを分かりやすくしてくれます。 - Code Spell Checker
英単語のスペルミスを教えてくれます。 - Indenticator
インデントの深さが分かりやすくなります。 - Git History
コミットの履歴なんかを表示してくれます。 - filesize
ステータスバーにファイルサイズを表示してくれます。 - Local History
ファイルの変更履歴を確認できます。 - Setting Sync
GitHubのGistを使って複数の端末間で設定を同期できます。
まとめ
Windowsで開発を行っていると、情報が少なかったり使いたいものがそもそも動かなかったりして苦労しましたが、WSLのおかげで少しは楽になりそうです。
ちなみにVcXsrvというものでGUIアプリケーションを動かしたり、PulseAudioというもので音を出すこともできそうです。