🚀

[WSL+VSCode]Windowsでデータ分析環境を構築するための基本手順

2024/05/30に公開

はじめに

本稿では、最も基本的なデータ分析環境をWindows11環境に構築するための手順を解説します。
目標構成は下記の通りです。

  • OS: Windows11 Professional
    • Ubunts @ WSL(Windows Subsystem for Linux)
  • 言語: Python (pyenv + venv)
  • IDE: Visual Studio Code
  • その他: Jupyter Lab

この環境で基本的なデータ分析と可視化については扱えるはずです。ですが、ほぼ最小構成と考えてください。

さらに本格的に進めるにあたっては、DBの導入やDockerの導入、また、GPU(CUDA)の利用環境の設定などが必要になってくると思います。
ここで紹介する環境ではWSLを利用しているので、Ubuntu等Linux操作にある程度慣れている方は、比較的容易に拡張できるのではないかと思います。

なお、Windows11 Proについては、筆者の動作環境であり、おそらくWin Homeでも同様に動作するものと思います。

手順概要

構築手順は以下の流れで進めます。なお、まっさらなWindowsを想定しています。

  1. WSLコマンドを利用してLinuxの導入
  2. VisualStudioCode(VSCode)の導入
  3. Gitの導入(ホスト, WSL)
  4. Pythonの導入(pyenv)
  5. Python仮想環境の設定と各種パッケージのインストール

WSLコマンドを利用してLinuxの導入

参考: WSL を使用して Windows に Linux をインストールする方法

インストールする

コマンド操作をしていくにあたって、コマンドを打ち込んでいく「ターミナル」を立ち上げます。Windows11では標準でPower Shellがインストールされていると思いますので、これを使っていきます。
ここで注意なのですが、「管理者権限」で PowerShell を立ち上げる必要があります。

いくつか方法はありますが、以下の手順で管理者権限でPowerShellを起動できます。

  • 「スタートメニュー上記の上部の検索窓で「powershell」を検索
  • 検索結果に表示された「PowerShell」アイコンから「管理者権限として実行」を選択

初めてWSLを使う場合は、下記のコマンドを実行することで、Ubuntuがインストールされます。

wsl --install

別のディストリビューションをインストールする場合やWSLを使うのが初回ではない場合には、ドキュメントを参照してください。

この後、Windowsの再起動を実行してください。

Ubuntu(WSL)にログイン

無事にインストールできていれば、Windowsスタートメニューに「Ubuntu」アイコンが出ていると思います。出ていなくても、スタートメニューに「Ubuntu」と入力すれば出てくると思います。

UbuntuアイコンをクリックすればUbuntuが立ち上がります。

Ubuntuの基本操作については、本稿では触れません。別のドキュメントを参照ください。
一つお役立ち情報として、WSLのUbuntuは独自のファイルシステムを持っているのですが、Windows自体のディスクが /mnt 以下にマウントされています。例えば、Cドライブにある個人のDownloadディレクトリを確認したい場合には以下のように書きます。

ls /mnt/c/Users/{ユーザID}/Downloads

VisualStudioCode(VSCode)の導入

参考:Linux 用 Windows サブシステムで Visual Studio Code の使用を開始する

VSCodeのインストールとセットアップ

VSCodeは公式ダウンロードページからインストーラを入手して普通にインストールします。

インストールが終わったら、VSCodeを立ち上げて、拡張機能をインストールします。
必要な拡張機能は RemoteDevelopment です。

その他にも、Pythonなどの拡張機能もあった方がよいと思います。

Ubuntu(WSL)に接続する

2通りの方法があります。

  • VSCodeから接続
    • コマンドモード(Ctrl+Shift+p)で「remote wsl」で接続コマンドを検索して接続しにいきます
    • RemoteサーバとしてUbunts(WSL)に接続しに行ったことになります
  • 端末からコマンドを実行
    • WSLのUbuntuに端末からログインした状態で「code .」と入力すると、カレントディレクトリを開いた状態でVSCodeが立ち上がります

どちらの方法でも、接続語は以下の図の赤矢印のような表示になっているはずです。
2回目以降は、VSCodeを立ち上げてRemote Explorerを開けば、Ubuntuが出てきていると思います(黄色矢印)ので、ここをクリックしても接続できます。

Gitの導入(ホスト, WSL)

参考:Linux 用 Windows サブシステムで Git の使用を開始する

Ubuntu(WSL)へのgitのインストールと設定

WSLのUbuntuにはインストール時に同時にGitもインストールされていると思います。
もしgitが無いようでしたら、apt-get(Ubuntu)でインストールしておいてください。

sudo apt-get install git

個人設定もしておきます。

git config --global user.name "{ユーザID}"
git config --global user.email "{メールアドレス}"

ホストWindowsへのGitのインストール

上記の参考ページにある通り、ホストのWindowsにもGitをインストールしていた方が良いようです(Git Credential Managerを利用するため。Gitの認証周りのツール)。

Windowsへのgitのインストールについては、git公式ページからインストーラを入手することで、インストールできます。

GCMの設定

gitがインストールできたら次は、GCMをセットアップします。WSLのUbuntuで下記のコマンドを実行します。インストールしたGitのバージョンによってパスが異なるようなので、ドキュメントを参考にしてください。

git config --global credential.helper "/mnt/c/Program\ Files/Git/mingw64/bin/git-credential-manager.exe"

SSH接続

gitでリモートのサーバにpushする際など、SSH接続の必要が迫られます。ここでは、SSHの公開鍵/秘密鍵の生成からGithubへの公開鍵の登録まで進めます。
Ubuntu(WSL)で操作します。

鍵の生成

下記コマンドで公開鍵/秘密鍵のペアを作成します。

ssh-keygen -t ed25519

ed25519 とは公開鍵の生成アルゴリズムなので、別のものを利用していただいても問題ありません。
鍵の保存場所などの質問に答えていけば鍵が生成されます。

Githubに鍵を登録

公開鍵(***.pub)の内容をクリップボードにコピーします。公開鍵のパスは各自の環境に合わせてください。

cat ~/.ssh/id_ed25519.pub

ターミナルに表示される文字列をコピーしておきます。

次に、githubページ→ (右上のアカウントメニューから)settings → SSH → 「new SSH Key」でkeyを追加します。
クリップボードにコピーした文字列をCtrl+vで張り付けるだけです。

接続を確認

下記のコマンドで接続の確認をします。

ssh -T git@github.com

設定が問題なければ、次のようなメッセージが返ってくるはずです。

Pythonの導入(pyenv)

続いて、Python環境の構築を進めます。ここから先は、Linux環境共通の手順となります。
pythonに限らずですが、OS標準でPythonなどの実行環境が入っていることは多いと思います。
しかしながら、パッケージの依存関係の問題でトラブルになることが少なくないので、プロジェクト単位で仮想環境を利用するべきです。

仮想環境として今回は pyenv+venvを利用します。ほかにもpoetryを使う場合も多いですが、個人利用となるとシンプルに pyenv+venv構成が良いと考えています。venvはpython標準でもあるので。
なお、pyenvはpython自体を切り替えるために利用します。venvが仮想環境です。

手順の概要は次のとおりです。

  1. pyenvの導入
  2. pyenvでpythonのインストール
  3. venvで仮想環境の構築とパッケージのインストール
  4. jupyterを立ち上げる

3,4は次のセクションで解説します。

pyenvの導入

下記のコマンドでpyenvのインストールができます。gitからファイルを取得して、環境変数でパスを通すということです。
そして、初期化スクリプトを bashrc に仕込んで、最後に設定を反映しています。

git clone https://github.com/pyenv/pyenv.git ~/.pyenv
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init --path)"' >> ~/.bashrc
source ~/.bashrc

pythonのインストール

pyenvコマンドでインストールできるのですが、pythonをインストールするのに必要なパッケージがあるのでそれらをインストールします。

sudo apt install build-essential
sudo apt install libsqlite3-dev libreadline6-dev libbz2-dev libssl-dev libncursesw5-dev libffi-dev libdb-dev libexpat1-dev zlib1g-dev liblzma-dev libgdbm-dev libmpdec-dev

今回はpython3.12を使ってみます。インストール可能なバージョンは、pyenv install --list で確認してください。

pyenv install 3.12.0

pyenv versionsでインストールできていることを確認してください。

上の画像では、 system* がついているので、システム標準のpythonが使われることになっています。そこで最後に、利用するpythonをシステム標準からpyenvでインストールしたものに変更します。

cd path/to/project
pyenv local 3.12.0

このコマンドを実行したディレクトリ(path/to/project)以下で 3.12.0 が使われるようになりました。ホームではなく、プロジェクトディレクトリで実行すると良いですね。

Python仮想環境の設定と各種パッケージのインストール

本稿最後に構築した環境でjupyterを立ち上げてみるところを解説しますが、個人的に最低限必須な構成(起動スクリプトやrequirements.txt)をまとめたリポジトリをgithubで公開していますので、そちらを利用してみます。

git clone git@github.com:tok41/basic-dev-env.git
cd basic-dev-env
pyenv local 3.12.0

仮想環境を作る

venvを使って仮想環境を準備します。

python -m venv kasou

kasou は仮想環境の名前なので、任意の文字列を設定してください。
仮想環境は構築したあとにアクティベートが必要です。

source kasou/bin/activate

成功すれば、上記の図のように ({仮想環境名}) とプロンプトの先頭に表示されると思います(標準では)。

各種パッケージのインストール

pythonのパッケージは pip でインストールします。必要なパッケージを requirements.txt に用意しています。

python -m pip install -r requirements.txt

特に問題がなければこれで起動スクリプトを走らせることでjupyterが立ち上がります。当然、スクリプトを使わなくてもコマンドを直接たたけば良いです。

bash bin/run_jupyter.sh

デフォルトでは、5888ポートでアクセスできます。
http://localhost:58888

上記の起動スクリプトを見ていただければわかると思いますが、環境変数 JUPYTER_PORT でポートを指定できます。例えば、48888ポートに変更するには下記のようにスクリプトを実行します。

JUPYTER_PORT=48888 bash bin/run_jupyter.sh

立ち上がりましたね。

おわりに

ここでは、最も基本的なデータ分析環境(Python環境)をWSL上に構築する手順をまとめました。

初学者の方や非エンジニアの方などにとって、環境構築というのは意外とつまずくポイントではないかと思います。
ここで紹介する手順は最も基本的といえるので、まずこのようなシンプルな構成で慣れていただくことがよいのではと考えています。

最後に、我々は統計学や機械学習について「完全な理解」を目標にコンテンツ制作をしている「統計の森」というWebサイトを運営しています。こちらも是非参照頂ければと思います。

それでは、快適なデータ分析ライフを!

Discussion