0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【備忘録】Windows 環境構築

Last updated at Posted at 2025-07-13

環境構築

Local Account

  1. OS初期起動時にShift+F10を押してコマンドプロントを開く
  2. cd oobeでディレクトリを移動後、BypassNRO.cmdで再起動
  3. インターネットに接続しないまま設定を進めると、ローカルアカウントに必要な情報(ユーザー名、パスワード等)を求められるので入力

Wallpaper

wallpaper_forest.jpg

Chrome

Remote Desktop

image.png

Logi Options

image.png

Nvidia Driver

基本自動でインストールされるが最新版でないため再インストール
まず、以下からダウンロード

ダウンロード後は、インストール
インストール時は、Experienceは除き、カスタムを選択し、クリーンナップにチェックを入れる

正しくインストールされたかチェック

nvidia-smi

Tailscale

以下からインストーラをダウンロードし、インストール

あとはログインすればOK

OpenSSH Server

まず、Server / Client 機能が入っているか確認

Get-WindowsCapability -Online |
  Where-Object Name -match 'OpenSSH\.(Server|Client)' |
  Select-Object Name,State

未導入なら、OpenSSH Server をインストール

Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0

サービスを起動し自動起動に設定

# サーバー本体
Start-Service sshd
Set-Service  sshd -StartupType Automatic

# 鍵キャッシュ用(任意)
Set-Service  ssh-agent -StartupType Automatic
Start-Service ssh-agent

サービス状態を確認

Get-Service sshd,ssh-agent | Select Name,Status,StartType

ファイアウォールを確認(自動で入るが念のため)

Get-NetFirewallRule -Name 'OpenSSH-Server-In-TCP'

ルールが無い場合は

New-NetFirewallRule -Name 'OpenSSH-Server-In-TCP' `
  -DisplayName 'OpenSSH SSH Server' -Enabled True `
  -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22

接続テスト

# ローカルから
ssh <ユーザー名>@localhost

# 他 PC から
ssh <ユーザー名>@<WindowsPCIPアドレス>

WSL

wsl を有効にする

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

vm を有効にする

dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

インストール

wsl --install

うまくいかない場合は、以下から、wsl.x.x.x.x.x64.msi をダウンロードし、インストール後、再度 wsl --install を試す

起動したら、アカウント設定し、パッケージをを更新

sudo apt update
sudo apt upgrade

Git

windows

image.png

インストール時は以下を変更

image.png

image.png

image.png

インストール後は、name, email を設定

git config --global user.name 'TaroYamada'
git config --global user.email 'taro.yamada@gmail.com'

wsl

デフォルトで入っているので、name, email だけ設定

FFmpeg

windows

以下から、ダウンロードし解凍
https://ffmpeg.org/download.html
https://github.com/BtbN/FFmpeg-Builds/releases

image.png

Program Filesにffmpegディレクトリを作成し解凍したものを配置
image.png

最後にシステムの環境変数を変更する
Pathに以下をを追加

C:\Program Files\ffmpeg\bin

image.png

wsl

sudo apt install ffmpeg

VSCode

インストール

以下からダウンロードしインストール

拡張機能のエキスポート

code --list-extensions > ext.txt

拡張機能のインポート

ext.txt
bradlc.vscode-tailwindcss
cweijan.dbclient-jdbc
cweijan.vscode-database-client2
donjayamanne.githistory
ecmel.vscode-html-css
esbenp.prettier-vscode
formulahendry.auto-close-tag
github.copilot
github.copilot-chat
janisdd.vscode-edit-csv
mechatroner.rainbow-csv
mhutchie.git-graph
ms-azuretools.vscode-containers
ms-azuretools.vscode-docker
ms-ceintl.vscode-language-pack-ja
ms-python.black-formatter
ms-python.debugpy
ms-python.python
ms-python.vscode-pylance
ms-toolsai.jupyter
ms-toolsai.jupyter-keymap
ms-toolsai.jupyter-renderers
ms-toolsai.vscode-jupyter-cell-tags
ms-toolsai.vscode-jupyter-slideshow
ms-vscode-remote.remote-containers
ms-vscode-remote.remote-wsl
oderwat.indent-rainbow
pkief.material-icon-theme

上記のtxtを作成後、以下コマンドを実行

# bash
xargs -L 1 code --install-extension < ext.txt

# powershell
Get-Content ext.txt | ForEach-Object {
    code --install-extension $_
}

設定の共有

Ctrl + Shift + P → Open User Settingsで設定ファイルを開き、以下を貼り付け。

settings.json
{
  // --------------------------------------------------
  // 1. Python
  // --------------------------------------------------
  "[python]": {
    "editor.defaultFormatter": "ms-python.black-formatter",
    "editor.formatOnType": true
  },
  "python.analysis.typeCheckingMode": "basic",
  "python.analysis.inlayHints.callArgumentNames": "partial",
  "python.analysis.inlayHints.functionReturnTypes": true,
  "black-formatter.args": ["--line-length", "170"],

  // --------------------------------------------------
  // 2. Jupyter & データベース(拡張依存)
  // --------------------------------------------------
  "database-client.autoSync": true,

  // --------------------------------------------------
  // 3. Prettier系共通(対応言語のみ override)
  // --------------------------------------------------
  "prettier.printWidth": 170,
  "[javascript]": { "editor.defaultFormatter": "esbenp.prettier-vscode" },
  "[javascriptreact]": { "editor.defaultFormatter": "esbenp.prettier-vscode" },
  "[typescript]": { "editor.defaultFormatter": "esbenp.prettier-vscode" },
  "[typescriptreact]": { "editor.defaultFormatter": "esbenp.prettier-vscode" },
  "[html]": { "editor.defaultFormatter": "esbenp.prettier-vscode" },
  "[css]": { "editor.defaultFormatter": "esbenp.prettier-vscode" },
  "[json]": { "editor.defaultFormatter": "esbenp.prettier-vscode" },
  "[jsonc]": { "editor.defaultFormatter": "esbenp.prettier-vscode" },
  "[jinja-html]": { "editor.defaultFormatter": "esbenp.prettier-vscode" },
  "[dockercompose]": { "editor.defaultFormatter": "esbenp.prettier-vscode" },

  // --------------------------------------------------
  // 4. エディタ挙動
  // --------------------------------------------------
  "editor.formatOnSave": true,
  "editor.unicodeHighlight.ambiguousCharacters": false,
  "editor.unicodeHighlight.invisibleCharacters": false,

  // --------------------------------------------------
  // 5. Git
  // --------------------------------------------------
  "git.enableSmartCommit": true,

  // --------------------------------------------------
  // 6. ワークベンチ UI
  // --------------------------------------------------
  "workbench.iconTheme": "material-icon-theme",
  "workbench.startupEditor": "none",
  "workbench.editorAssociations": {
    "*.pdf": "default"
  }
}

serve-web

これでVSCodeをサーバーにできる

code serve-web --host 0.0.0.0 --port 8000 --without-connection-token --accept-server-license-terms

uv

windows

powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

wsl

curl -LsSf https://astral.sh/uv/install.sh | sh

nvm

windows

nvm-setup.exe をダウンロードし、nvmをインストール

LTS版の node をインストール

# インストール
nvm install lts

# バージョンチェック
nvm ls

# インストールしたバージョンをデフォルトに指定
nvm use x.x.x

npm, npx が使えない場合、以下を実行して使えるように変更

Set-ExecutionPolicy -Scope CurrentUser RemoteSigned

npmを最新版に更新

npm install -g npm@latest

wsl

nvmをインストール

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/master/install.sh | bash

LTS版の node をインストール

nvm install --lts

npmを最新版に更新

npm install -g npm@latest

docker

windows

以下からダウンロード

デフォルト設定でインストール

wsl

以下手順にそって、インストール

CUDA&cuDNN

CUDA on Windows

まず、参考になるサイト

以下手順
pytorch に対応したバージョンを入れるため以下を確認する

確認すると、現状対応しているのは、12.8 のため、以下から12.8.1をダウンロード

対象のダウンロードリンクを探すときはこちらがおすすめ

ダウンロード後は、インストール

cuDNN

CUDA と対応したバージョンである必要がある
以下を参考に対応関係を調べる

対応するバージョンが見つかったら以下からダウンロード

今回は、cuDNN 9.10.2 をダウンロード
ダウンロード後はzipを解凍

以下のパスに新しく cuDNN/v9.10.2 のディレクトリを作成し、解凍したした中身をそこに移動

# before
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.8

# after
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.8\cuDNN\v9.10.2

最後にシステムの環境変数を変更する
Pathに以下をを追加し、

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.8\cuDNN\v9.10.2\bin

CUDNN_PATH を新規作成し以下を登録する

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.8\cuDNN\v9.10.2

その後、パスが通っていることを確認する

where cudnn64_68.dll

Claude Code

wsl

curl -fsSL https://claude.ai/install.sh | bash

API利用の場合は、環境変数にAPI_KEYを設定

echo 'export ANTHROPIC_API_KEY="your-api-key-here"' >> ~/.bashrc

# 確認用コマンド
env | grep ANTHROPIC_API_KEY

Codex

wslに、以下コマンドでインストール

npm install -g @openai/codex

API利用の場合は、環境変数にAPI_KEYを設定

echo 'export OPENAI_API_KEY="your-api-key-here"' >> ~/.bashrc

# 確認用コマンド
env | grep OPENAI_API_KEY

~/.codex/config.toml に以下を追記

preferred_auth_method = "apikey"
model_reasoning_effort = "high"

[tools]
web_search = true

Claude Desktop

ダウンロードし、インストール

Claude Code UI

work dir にクローン

git clone https://github.com/siteboon/claudecodeui.git

ライブラリのインストール

wsl
npm install

# sudo apt install build-essential インストールに失敗した場合これ試す

.env.sapme をコピーして、.env を作成し、port を書き換える

cp .env.example .env
.env
# Backend server port (Express API + WebSocket server)
#API server
PORT=54322
#Frontend port
VITE_PORT=54321

vite.cinfig.js に allowHost を加える

vite.cinfig.js
import { defineConfig, loadEnv } from "vite";
import react from "@vitejs/plugin-react";

export default defineConfig(({ command, mode }) => {
  // Load env file based on `mode` in the current working directory.
  const env = loadEnv(mode, process.cwd(), "");

  return {
    plugins: [react()],
    server: {
      allowedHosts: true, // この行を追加
      port: parseInt(env.VITE_PORT) || 3001,
      proxy: {
        "/api": `http://localhost:${env.PORT || 3002}`,
        "/ws": {
          target: `ws://localhost:${env.PORT || 3002}`,
          ws: true,
        },
      },
    },
    build: {
      outDir: "dist",
    },
  };
});

run-dev.sh を新規作成

run-dev.sh
#!/bin/bash
export PATH=/home/your/node/bin:$PATH # which npm で確認
cd /mnt/c/Users/your/work/dir/claudecodeui # クローンしたディレクトリを設定
npm run dev

run-dev.ps1 を新規作成

run-dev.ps1
# WSL Port Proxy Setup & Claude Code UI Startup Script with System Tray

# ========== Configuration ==========
$PORTS = @('54321', '54322')
$WSL_SCRIPT_PATH = "/mnt/c/Users/your/work/dir/claudecodeui/run-dev.sh" # クローンしたディレクトリを設定
$SERVER_NAME = "Claude Code UI"
$ACCESS_URL = "http://localhost:$($PORTS[0])"
# ===================================

Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing

# Get WSL IP address
$ip = (wsl.exe -e sh -c "ip route get 8.8.8.8 | grep -oE 'src [0-9]+\.[0-9]+\.[0-9]+\.[0-9]+' | cut -d' ' -f2").Trim()
if (-not $ip) { 
    Write-Error "WSL NAT IP not found"; 
    exit 1 
}

# Setup port proxy
Write-Host "Setting up port proxy for IP: $ip"
$PORTS | ForEach-Object {
    netsh interface portproxy delete v4tov4 listenport=$_ 2>$null
    netsh interface portproxy add    v4tov4 listenport=$_ connectaddress=$ip connectport=$_
    Write-Host "Port $_ -> $ip`:$_"
}
Write-Host "portproxy updated -> $ip"

# Start WSL dev server as background job
Write-Host "Starting $SERVER_NAME dev server..."
$job = Start-Job -ScriptBlock {
    param($scriptPath)
    wsl.exe -e $scriptPath
} -ArgumentList $WSL_SCRIPT_PATH

# Create system tray icon
$icon = [System.Drawing.Icon]::ExtractAssociatedIcon("$env:SystemRoot\System32\WindowsPowerShell\v1.0\powershell.exe")
$trayIcon = New-Object System.Windows.Forms.NotifyIcon
$trayIcon.Icon = $icon
$trayIcon.Text = "$SERVER_NAME - Running on :$($PORTS[0])"
$trayIcon.Visible = $true

# Create context menu with Exit only
$contextMenu = New-Object System.Windows.Forms.ContextMenuStrip
$exitItem = New-Object System.Windows.Forms.ToolStripMenuItem
$exitItem.Text = "Exit"
$exitItem.Add_Click({
    try {
        # Stop the background job
        if ($job) {
            Stop-Job $job -ErrorAction SilentlyContinue
            Remove-Job $job -ErrorAction SilentlyContinue
        }
        
        # Kill processes using specific ports
        $PORTS | ForEach-Object {
            wsl.exe -e bash -c "fuser -k $_/tcp 2>/dev/null || true"
        }
        
        # Clean up port proxy
        $PORTS | ForEach-Object {
            netsh interface portproxy delete v4tov4 listenport=$_ 2>$null
        }
        
        Write-Host "$SERVER_NAME server stopped and port proxy cleaned up"
    } catch {}
    $trayIcon.Visible = $false
    $trayIcon.Dispose()
    [System.Windows.Forms.Application]::Exit()
})
$contextMenu.Items.Add($exitItem)
$trayIcon.ContextMenuStrip = $contextMenu

# Show notification
$trayIcon.ShowBalloonTip(3000, $SERVER_NAME, "Server started! Access at $ACCESS_URL", [System.Windows.Forms.ToolTipIcon]::Info)

Write-Host "System tray icon created. Right-click tray icon to exit."
Write-Host "Server access: $ACCESS_URL"

# Keep UI responsive with message loop
[System.Windows.Forms.Application]::Run()

管理者の powershell で以下を実行し、立ち上げ。終了させるときはシステムトレイから。

powershell.exe -ExecutionPolicy Bypass -WindowStyle Hidden -File "C:\Users\your\work\dir\claudecodeui\run-dev.ps1"

タスクスケジューラで、PC起動時にサーバーが自動起動するように、上記のコマンドを設定すると便利
※ 忘れずに最上位権限を付与
image.png

GitHub CLI

windows

インストール

winget install --id GitHub.cli

ログイン

gh auth login

wsl

インストール

(type -p wget >/dev/null || (sudo apt update && sudo apt install wget -y)) \
	&& sudo mkdir -p -m 755 /etc/apt/keyrings \
	&& out=$(mktemp) && wget -nv -O$out https://cli.github.com/packages/githubcli-archive-keyring.gpg \
	&& cat $out | sudo tee /etc/apt/keyrings/githubcli-archive-keyring.gpg > /dev/null \
	&& sudo chmod go+r /etc/apt/keyrings/githubcli-archive-keyring.gpg \
	&& sudo mkdir -p -m 755 /etc/apt/sources.list.d \
	&& echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null \
	&& sudo apt update \
	&& sudo apt install gh -y

ログイン

gh auth login
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?