科学技術計算のためのPC環境構築(Windows)

2025/11/11

技術
#環境構築

前提条件

この記事では科学技術計算を前提として、Windows PCのWSL環境を構築するための手順を解説します。Linux環境に慣れていなくても、順番に進めていけば環境を整えることができます。

環境

Windows 11 Pro 24H2

目次

  1. WSLのインストール
  2. GUIを使う(WSLg)
  3. Git
  4. GithubとSSH接続
  5. pipenv, pyenv
  6. Node.js
  7. Visual Studio Code
  8. Windows側のフォントを使用する
  9. zsh関係
  10. Windows Terminal
  11. WSLのシャットダウン
  12. 外付けSSDをWSLで使用する場合
  13. Live Serverでwslからwindows側のchromeを使用する時

WSLのインストール

WSL(Windows Subsystem for Linux)とは:Windows上でLinux環境を動かすことができる仕組みです。科学技術計算では、LinuxベースのツールやPythonライブラリを使うことが多いため、WSLを導入することで開発環境を整えやすくなります。

PowerShellを管理者権限で開き、以下のコマンドを実行します。

wsl --install

PCを再起動する.

以下のコマンドで利用可能なディストリビューションが表示される.

wsl --list --online

こだわりがなければUbuntuのLTS版で最新のものを選べば良い.ここではUbuntu 24.04 LTSを使う.

wsl --install Ubuntu-24.04

Enter new UNIX username: ユーザー名を決めて入力する. New password: パスワードを決めて入力する. Retype new password: パスワードを決めて入力する.

PowerShellを起動し,以下のコマンドを打てばインストールしたディストリビューションとWSLのバージョンを確認できる. ディストリビューション名が指定したものになっており,バージョンが2になっていればOK.

wsl -l -v

以後はスタートメニューにディストリビューションが追加されているのでここから開ける.Windowsターミナルを使っている場合はタブの右にある「+」からも起動できる.

image.png

インストール済みのパッケージを更新する.

sudo apt update
sudo apt upgrade

以下は必要に応じてインストールする.

vim:テキストエディタ。ターミナル上でファイルを編集する際に使用します。

sudo apt install vim

C/C++コンパイラ:C/C++プログラムをコンパイルするためのツールです。

sudo apt install make gcc g++

Fortran90/95コンパイラ:Fortranプログラムをコンパイルするためのツールです。数値計算で使用することがあります。

sudo apt install gfortran gdb

GUIを使う(WSLg)

WSLg(WSL GUI)とは:WSL上でGUIアプリケーションを動かすための機能です。グラフ表示や画像処理など、視覚的な操作が必要な科学技術計算で便利です。1

以前はWindows側にXサーバをインストールする必要がありましたが,最新のWSLを使えばWindows10でもWSLgが動くので簡単にGUIが使えます.

WSLgが有効になっているか確認します。

wsl --version
# ここでWSLgのバージョンが表示されればOK

GUIアプリ「xeyes」で動作確認します。

sudo apt install x11-apps
xeyes

目玉がグルグル動けばOK.

image.png

Git

Gitとは:バージョン管理システムです。プログラムの変更履歴を記録し、複数人での共同作業やコードの管理を効率的に行えます。

Gitをインストールします。

sudo apt install git

ユーザー名とメールアドレスを設定します。

git config --global user.name "XXXXXX"
git config --global user.email XXXXX@XXXXXX

# 設定内容を確認する.設定した内容が表示されればOK.
git config user.name
git config user.email

GithubとSSH接続

GitHubとは:Gitリポジトリをオンラインで管理できるプラットフォームです。コードの共有やバックアップ、共同開発に利用します。

SSH接続とは:安全にGitHubと通信するための方法です。パスワードを毎回入力せずにGitHubを利用できます。

Githubのアカウントがない場合は作成します。2

.sshディレクトリに移動します。なければ作ってから移動します。

# .sshに移動する..sshがまだ存在しなければエラーが出る.
cd ~/.ssh

# .sshがなかった場合,以下であらたに作成してから移動する.
mkdir ~/.ssh
cd ~/.ssh

RSA方式で暗号鍵を作成します。名前とパスワード(パスフレーズ)を聞かれます。名前は「github」とします。

パスフレーズについて:パスフレーズを設定すると、秘密鍵が盗まれても悪用されにくくなります。ただし、Gitを使うたびにパスフレーズの入力が必要になります。セキュリティを重視する場合はパスフレーズを設定することをお勧めしますが、利便性を優先する場合は空白(何も入力しない)でも構いません。自分の利用環境に応じて選択してください。

ssh-keygen -t rsa

## 以下のように入力
Enter file in which to save the key (/home/ussy/.ssh/id_rsa): github
Enter passphrase (empty for no passphrase): <パスフレーズを入力、または何も入力せずEnter>
Enter same passphrase again: <同じパスフレーズを入力、または何も入力せずEnter>

github(秘密鍵)とgithub.pub(公開鍵)が作成されます。 Githubの設定ページ3に公開鍵の中身をコピペします。名前は秘密鍵を入れている端末名とすると分かりやすいです。

.sshの中にconfigというファイルを作り,下記の内容を記述します。

Host github github.com
    HostName github.com
    User git
    IdentityFile ~/.ssh/github

下記のコマンドを打って成功のメッセージが帰ってくればOK.

ssh -T github

configファイルがない場合は以下とします。

ssh -T git@github.com

GithubのリポジトリをクローンするときはGithubのCodeからSSHを選んで表示されるURLを使用します。 image.png

pushできないときは作業ディレクトリで下記のコマンドを打ち,作業ディレクトリをSSHキーと紐付けます。

ssh-add ~/.ssh/github

pipenv, pyenv

pyenvとは:複数のPythonバージョンを管理するツールです。プロジェクトごとに異なるPythonバージョンを使い分けることができます。

pipenvとは:Pythonのパッケージと仮想環境を管理するツールです。プロジェクトごとに独立した環境を作ることで、パッケージのバージョン競合を避けられます。

bashとzshの違い:どちらもLinuxのシェル(コマンドを実行する環境)です。bashはデフォルトで使われることが多く、zshはカスタマイズ性が高く便利な機能が多いです。後述のzsh関係のセクションでzshの設定を行いますが、それまではbashを使用します。zshに切り替えた後は、zsh用のコマンドを使用してください。

pyenvのインストール

pyenvをインストールします。4

curl https://pyenv.run | bash

bashを使用している場合(デフォルト)

echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo '[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init -)"' >> ~/.bashrc

zshを使用している場合

echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
echo '[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(pyenv init -)"' >> ~/.zshrc

シェルの再起動

exec "$SHELL"

ビルドの依存関係のインストール

sudo apt update
sudo apt install build-essential libssl-dev zlib1g-dev \
libbz2-dev libreadline-dev libsqlite3-dev curl git \
libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev

pyenvの使い方

# インストール済みのPythonバージョンを確認
pyenv versions

# インストール可能なPythonバージョンを一覧表示
pyenv install -l | less

# 最新のPython 3をインストール
pyenv install 3

# 現在のディレクトリで使用するPythonバージョンを設定
pyenv local 3.xx.xx

# システム全体で使用するPythonバージョンを設定
pyenv global 3.xx.xx

# 設定を反映
source ~/.bashrc  # bashの場合
# または
source ~/.zshrc   # zshの場合

# Pythonバージョンを確認
python3 --version

condaのインストール(pyenv経由)

condaとは:Pythonの科学技術計算パッケージを管理するツールです。NumPy、pandas、matplotlibなど、科学技術計算でよく使うパッケージを簡単にインストールできます。

pyenv経由でMinicondaをインストールします。

# インストール可能なcondaのバージョンを確認
pyenv install -l | grep miniconda

# 最新のMinicondaをインストール(例:miniconda3-latest)
pyenv install miniconda3-latest

# condaを使用するように設定
pyenv global miniconda3-latest

# conda初期化(bashの場合)
conda init bash

# conda初期化(zshの場合)
conda init zsh

# シェル再起動
exec "$SHELL"

condaによるパッケージインストールでエラーが出た場合の対処法:

conda install --solver=classic -c conda-forge matplotlib

pipenvのインストールと使い方5

pipenvをインストールします。

pip install pipenv

プロジェクト配下にPython仮想環境を作成するように環境変数を設定します。

bashを使用している場合(デフォルト)

echo 'export PIPENV_VENV_IN_PROJECT=1' >> ~/.bashrc
source ~/.bashrc

zshを使用している場合

echo 'export PIPENV_VENV_IN_PROJECT=1' >> ~/.zshrc
source ~/.zshrc

こうすることで仮想環境がプロジェクトフォルダ内の.venvに作られます。 この状態でVS Codeを起動し,カーネル選択時に.venv/bin/pythonを選べば良いです。

pipenvの基本的な使い方:

# プロジェクトディレクトリで仮想環境を作成
pipenv install

# パッケージをインストール
pipenv install numpy pandas matplotlib

# 仮想環境に入る
pipenv shell

# 仮想環境から出る
exit

Node.js

Node.jsとは:JavaScriptをサーバーサイドやコマンドラインで実行できる環境です。Web開発やツール開発で広く使われています。

nvmとは:Node Version Managerの略で、複数のNode.jsバージョンを管理するツールです。プロジェクトごとに異なるNode.jsバージョンを使い分けることができます。

作業ディレクトリの準備

Node.jsプロジェクトを作成する前に、作業ディレクトリを準備します。

推奨: Linuxホームディレクトリ内に作成

# 現在のディレクトリを確認(/home/ユーザー名 になっているはず)
pwd

# プロジェクト用のディレクトリを作成
mkdir -p ~/projects

# 作成したディレクトリに移動
cd ~/projects

ディレクトリ構成の例

/home/ussy/
├── projects/          # ここにプロジェクトを作成
│   ├── project1/
│   ├── project2/
│   └── ...

注意点: Windowsのドライブ(/mnt/c/など)ではなく、Linux側(~/)に作業ディレクトリを作ることを強く推奨します。パフォーマンスとファイルパーミッションの問題を避けられます。

nvmのインストール

インストールスクリプトの実行

# nvmインストールスクリプトの実行
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash

シェル設定の再読み込み

bashを使用している場合

source ~/.bashrc

zshを使用している場合

source ~/.zshrc

インストール確認

# nvmが正しくインストールされたか確認
nvm --version

トラブルシューティング: nvm: command not found と表示される場合

bashの場合

# .bashrcを編集
nano ~/.bashrc

# 以下の行が末尾にあることを確認(なければ追加)
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"

# Ctrl+O で保存、Ctrl+X で終了
# その後、再度読み込み
source ~/.bashrc

zshの場合

# .zshrcを編集
nano ~/.zshrc

# 以下の行が末尾にあることを確認(なければ追加)
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"

# Ctrl+O で保存、Ctrl+X で終了
# その後、再度読み込み
source ~/.zshrc

Node.jsのインストール

# 最新のLTS版をインストール(推奨)
nvm install --lts

# または特定のバージョンを指定
# nvm install 20
# nvm install 18

# インストールされたバージョンを確認
nvm list

# Node.jsとnpmのバージョン確認
node --version
npm --version

期待される出力例

$ node --version
v20.10.0

$ npm --version
10.2.3

よく使うnvmコマンド

# インストール済みのNode.jsバージョン一覧
nvm list

# 利用可能なNode.jsバージョンを確認(リモート)
nvm list-remote

# 特定のバージョンをインストール
nvm install 18.19.0

# 特定のバージョンに切り替え
nvm use 20

# デフォルトバージョンを設定(新しいシェルで自動的に使用される)
nvm alias default 20

# 現在使用中のバージョンを確認
node --version

# 特定バージョンのアンインストール
nvm uninstall 18.19.0

プロジェクトで異なるNode.jsバージョンを使いたい場合

プロジェクトディレクトリに .nvmrc ファイルを作成します。

# .nvmrcファイルを作成
echo "18" > .nvmrc

# そのディレクトリで以下を実行すると、.nvmrcで指定されたバージョンが使用される
nvm use

グローバルパッケージの管理

nvmを使用している場合、各Node.jsバージョンごとに独立したグローバルパッケージがインストールされます。

# グローバルパッケージのインストール場所を確認
npm root -g

# グローバルにインストールされているパッケージの一覧
npm list -g --depth=0

チェックリスト

Node.js環境が正しく構築できているか確認してください。

  • nvm --version でバージョンが表示される
  • node --version でバージョンが表示される
  • npm --version でバージョンが表示される
  • ~/projects ディレクトリが作成されている

Visual Studio Code

Visual Studio Code(VS Code)とは:Microsoftが開発した無料のコードエディタです。WSLとの連携が優れており、プログラミングに便利な機能が多数搭載されています。

セットアップ手順

  1. Windows側での設定

    • Windows側でVS Codeを開き、拡張機能「WSL」をインストールします。
  2. WSL側での設定

    • WSL側で以下のコマンドを実行してVS Codeを開きます。
    code .
    • 拡張機能「Python」「Jupyter」をインストールします。

Jupyterを使う場合

Jupyterとは:Pythonのコードをブラウザやエディタ上で対話的に実行できるツールです。データ分析や可視化に便利です。

pipenvでjupyterをインストールします。

pipenv install jupyter

ipynbファイルをVS Codeで開き、右上のカーネル選択でpipenvで作成した仮想環境を選択します。

Windows側のフォントを使用する

なぜ必要か:matplotlibなどでグラフを作成する際、日本語フォントが必要になります。Windows側のフォントをWSLから利用できるように設定します。6

使用可能なフォントの確認

sudo apt install -y fonts-ipafont
fc-list

/etc/fonts/に移動してlocal.confを作成して下のXMLを書きます。sudo vi local.confと管理者権限で編集します。読み込まれないものがあるときはwindowsの設定>個人用設定>フォントでフォントの場所を確認し、/mnt/c/Windows/Fonts以外にあればの中身を追加します。

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<!-- /etc/fonts/fonts.conf file to configure system font access -->

<fontconfig>
    <dir>/mnt/c/Windows/Fonts</dir>
</fontconfig>

上記の作業後にmatplotlibでフォントを読み込めない場合はキャッシュが残っている可能性があります。 その場合~/.cache/matplotlib/fontlist-v~.jsonを削除します。

Ubuntu再インストールが上手くいかなかったとき

再インストール後に起動しなくなったWSLのUbuntuを修復する方法です。7

zsh関係

zshとは:bashの拡張版のシェルで、補完機能やテーマのカスタマイズなど便利な機能が多く搭載されています。見た目をカスタマイズして使いやすくすることができます。

bashからzshに切り替えてoh my zshとPowerlevel10kを入れます。89

zshをインストールして常にzshが起動するように設定します。

sudo apt install zsh

デフォルトのシェルをzshに変更します。

chsh -s /usr/bin/zsh

prezto

preztoとは:zshの基本的な設定を自動で行ってくれるフレームワークです。10

git clone --recursive https://github.com/sorin-ionescu/prezto.git "${ZDOTDIR:-$HOME}/.zprezto"

zshの設定ファイルをコピーし、新しいzshの設定を作成します。

setopt EXTENDED_GLOB
for rcfile in "${ZDOTDIR:-$HOME}"/.zprezto/runcoms/^README.md(.N); do
  ln -s "$rcfile" "${ZDOTDIR:-$HOME}/.${rcfile:t}"
done

oh my zsh

oh my zshとは:zshをより使いやすくするための設定管理フレームワークです。多くのプラグインとテーマが用意されています。

oh my zshをGitHubからクローンして実行します。

sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

image.png

Powerlevel10k

Powerlevel10kとは:zshのテーマの一つで、ターミナルの見た目を美しくカスタマイズできます。Gitの状態やコマンド実行時間などの情報を表示できます。11121314

Powerlevel10k から推奨フォント(MesloLGS NF ~ .ttf)をダウンロードしてインストールしておきます。Windows側に入れてWindows Terminalの設定で適用すれば良いです。

以下の4種ファイルからフォントをインストールします。 image.png

image.png

Powerlevel10kをインストールします。

git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k

.zshrcを編集します。

# ZSH_THEME="robbyrussell"から以下に書き換え
ZSH_THEME="powerlevel10k/powerlevel10k"

以下で.zshrcの変更が反映され、Powerlevel10kの設定が開きます。

source ~/.zshrc

Powerlevel10kの設定を再度変更したい場合には以下のコマンドを使います。

p10k configure

Windows Terminal

Windows Terminalとは:Microsoftが開発した新しいターミナルアプリです。複数のタブ、カスタマイズ可能な配色、フォント設定などが可能です。

Settings.jsonを編集します。 "list"内の適用したいシェル(例えば"Ubuntu 20.04.5 LTS")に以下を追加します。

"colorScheme": "Solarized Dark - Patched"

"schemes"内に"name": "Solarized Dark - Patched"とした下の内容を追加します。Solarized Darkを見やすく調整したものです。15

{
    "name": "Solarized Dark - Patched",
    "background": "#001E27",
    "black": "#002831",
    "blue": "#A0BEDA",
    "brightBlack": "#AED0DE",
    "brightBlue": "#708284",
    "brightCyan": "#819090",
    "brightGreen": "#80a0ac",
    "brightPurple": "#5956BA",
    "brightRed": "#BD3613",
    "brightWhite": "#FCF4DC",
    "brightYellow": "#536870",
    "cursorColor": "#FFFFFF",
    "cyan": "#259286",
    "foreground": "#708284",
    "green": "#22450E",
    "purple": "#C61C6F",
    "red": "#D11C24",
    "selectionBackground": "#FFFFFF",
    "white": "#EAE3CB",
    "yellow": "#A57706"
}

設定はこんな感じです。 image.png

WSLのシャットダウン

WSLをシャットダウンする場合はWindows側のターミナルで以下を実行します。

wsl --shutdown

外付けSSDをWSLで使用する場合

外付けSSDをWSL上でマウントして使用する方法です。16

Windows側からSSDを確認します。

wmic.exe diskdrive get deviceID,Caption

Windows側で外付けSSDをアタッチします。

wsl --mount \\.\PHYSICALDRIVE1 --bare

WSL側でパーティション番号を調べます(例:sdd3であれば3)。

lsblk

Windows側で外付けSSDをマウントします。

wsl --mount \\.\PHYSICALDRIVE1 --partition 3

マウントの解除。

wsl --unmount \\.\PHYSICALDRIVE3

Live ServerでWSLからWindows側のChromeを使用する場合

Live Serverとは:VS Codeの拡張機能で、HTMLファイルをリアルタイムプレビューできます。

live serverのsetting.jsonに以下を加えます。

"liveServer.settings.useLocalIp": true,
"liveServer.settings.AdvanceCustomBrowserCmdLine": "/mnt/c/Program Files/Google/Chrome/Application/chrome.exe"

参考文献

Footnotes

  1. https://qiita.com/y-tsutsu/items/6bc65c0ce4d20a82a417

  2. https://github.com/signup

  3. https://github.com/settings/keys

  4. https://github.com/pyenv/pyenv

  5. https://qiita.com/y-tsutsu/items/54c10e0b2c6b565c887a, https://qiita.com/youkidkk/items/c4fd58a32bf04d9ca6d6, https://qiita.com/tonluqclml/items/cd0d2a2cb0197cbaee42

  6. https://qiita.com/f0o0o/items/c2f74ac1d27e48d0fed1

  7. https://www.techgaku.com/fix-ubuntu-boot-error-on-wsl-after-reinstall/

  8. https://zenn.dev/3w36zj6/scraps/3f47210998199e

  9. https://qiita.com/mtsgi/items/8a844870f30b30ef21e4

  10. https://qiita.com/gilly/items/5ff7bd7142e963cdbb9b

  11. https://github.com/romkatv/powerlevel10k

  12. https://slacknotebook.com/zsh-powerlevel10k-installation-linux/

  13. https://qiita.com/831kirimi/items/582e0abc26dbd7776d9b

  14. https://qiita.com/kazuki_yoshida/items/a66a52ef813e168195bb

  15. https://qiita.com/flat35hd99/items/06d766253eeebdbaca70

  16. https://zenn.dev/ryuu/scraps/a3857eca1e6d7c

読み込み中...