新しい Windows PC を買った。やったこと。20250409

新しいノート PC を買いました。
いろいろ設定や環境構築を行ったので、何したか記事として残しておきます。

# 作者の PC 要件

**開発用の PC として使う**

主に自宅学習用。PC ゲームはしない。Ollama などのローカル LLM は使わない。なので GPU はなし。
CPU は Intel core i5, メモリ 16 GB, SSD 500 GB にする。
正直、それぞれワンランク上のスペックにするべきか迷ったけど、年に何度か必要となるかならないかの負荷のために 1 万積んだところで費用対効果が低いと思って諦めました。

**形態はノート PC にする**

ミニ PC にするか数年ぐらい迷っていたけど、家の中でも持ち運びやすいと便利だし、たまに技術カンファレンスでも持っていくしでノート PC に決めた。

**コスパ重視**

メーカーの拘りがないので、必要なスペックを搭載しているノート PC を横断的に見て回って一番安そうな PC に選定する。
メーカーごとに耐久性とか冷却性能、サポート体制が変わってきますが、持ち運ぶ頻度が少ないので、その点はあまり重視しても誤差になる気がする。（詳しい人からすると怒られるような考え方）
キーボードはタイルキーボードだとうれしい。

# 購入した PC

[THIRDWAVE F-14RP5S](https://www.dospara.co.jp/TC276/MC17215.html)
合計: 98,280円（本体: 94,280円 + 送料: 3,300円）

他のメーカーと比べ、同じスペックで 3 万円程度安く販売されていたため、即買い。

# 起動前にやったこと

**段ボールの保管**

開封後の段ボールや包装資材は解体せずにそのまま保管。万が一修理となったときの配送に備えます。
この段ボールの効率のいい保管方法を僕達はまだ知らない。

**ノート PC の背面にステッカーを貼る**

とりあえず、キレイに保管できていた Duke と AWS のステッカーだけ貼っておく。

<img width="500" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/114728/0035675c-fe0d-4ed6-8f88-449bc30ef270.jpeg">

貼れていないスペースが気になるので、また貰いに行かないといけない。

# 起動直後にやったこと

ここで初めて電源ボタンを押下。

## Windows の初回セットアップウィザードによる設定

油断すると Office365 に入ってしまうので、慎重に進める。

1. ローカライズの設定
2. Wifi へ接続
3. Windows Update を適用
4. Microsoft アカウントでサインイン
5. 既存の Windows PC のバッグアップから設定を復元
6. Windows リンクの設定

## Windows Defender の有効化

プリインストールされている体験版のセキュリティソフト（今回は ノートン 360 ）をアンインストールし、Windows Defender を有効化する。

# Windows の設定

Explorer やモニターに関する設定をします。

```powershell:PowerShell on Windows
# クリップボード履歴の有効化
Set-ItemProperty -Path "HKCU:\Software\Microsoft\Clipboard" -Name "EnableClipboardHistory" -Type DWord -Value 1

# モニター ON/OFF
# 電源駆動（ac）のときは何もするな黄猿。
powercfg /X monitor-timeout-ac 0
powercfg /X standby-timeout-ac 0
# バッテリー駆動（dc）のときは 10 分で画面消して、60 分でスリープさせる。
powercfg /X monitor-timeout-dc 10
powercfg /X standby-timeout-dc 60

# 拡張子を表示する
Set-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" -Name "HideFileExt" -Type DWord -Value 0
```

隠しファイルを表示させる方法がなぜか上手くいかなかったので、ここは Explorer の「オプション」→「表示」から設定した。

設定後、 `%USERPROFILE%` を開いて、`AppData` フォルダが表示されていることを確認する。

# アプリのインストール

できるだけコマンドでインストールしていきます。

なぜ、 winget と scoop を併用しているか気になったら[こちら](https://qiita.com/nimzo6689/items/ff83da73f8ddef6b3087)。

短く説明すると、アプリ自身が自身をアップデートするタイプは winget でインストールすると幸せになるから。

## winget でインストール

winget 自体は何もインストールしなくてもデフォルトで入っている。

```powershell:PowerShell on Windows
winget install -e --id Google.Chrome --force
winget install -e --id Zoom.Zoom --force
```

## scoop でインストール

開発ツールは特に scoop でインストールしておくと便利。
ただ、最近は WSL で開発環境作るので、scoop でインストールするツールは年々減ってきている。

使い方はこちら。

https://qiita.com/nimzo6689/items/1ab33380366e324c0b84

```powershell:PowerShell on Windows
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
Invoke-RestMethod -Uri https://get.scoop.sh | Invoke-Expression

scoop install git aria2
scoop bucket add extras
scoop config aria2-enabled true

# LibreOffice を動作させる dll が必要のため
scoop install vcredist2022
scoop uninstall vcredist2022

scoop install gsudo less libreoffice rapidee

scoop checkup

gsudo Set-ItemProperty 'HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem' -Name 'LongPathsEnabled' -Value 1

scoop install innounp dark

# Windowsの設定を開く
# 「システム」→「開発者向け」を選択
# 「開発者モード」をオンにする

scoop checkup
#=> No problems identified!
```

## Visual Studio Code

Visual Studio Code は公式ページのインストーラーを使う。
理由は Explorer でフォルダ内を右クリックしたときに「Code で開く」を使いたいから。

https://code.visualstudio.com/download

拡張機能は GUI で一つずつ入れるのが面倒なので、コマンドでインストールしていく。

```powershell:PowerShell on Windows
# コーディング支援系
code --install-extension editorconfig.editorconfig
code --install-extension esbenp.prettier-vscode
code --install-extension ritwickdey.LiveServer

# Git 関連
code --install-extension mhutchie.git-graph
code --install-extension ryu1kn.partial-diff

# Remote 開発関連
code --install-extension ms-vscode-remote.remote-wsl
code --install-extension ms-vscode-remote.remote-containers

# AI アシスタント： GitHub Copilot
code --install-extension github.copilot
code --install-extension github.copilot-chat

# その他
code --install-extension PKief.material-icon-theme
```

# 特有の言語に依存しない環境構築

PowerShell 環境はまず整える。
これでターミナルがかっこよくなるよ！

https://qiita.com/nimzo6689/items/aa3929ab64668c3830a1

## 基本的な設定

WSL を有効化し、Ubuntu をインストール。
その後、Docker、Portainer をインストールします。
詳細な手順は以下の記事に書きました。

https://qiita.com/nimzo6689/items/078b65f0503716d9a1e0

WSL のターミナルもかっこよく、便利にしたいので PowerShell と同じように設定をする。

```bash:Bash on WSL
touch ~/.hushlogin

# 基本的に欲しくなるコマンドを前もってインストール
# apt 経由
sudo apt install unzip tree git jq

# Cargo 経由
curl https://sh.rustup.rs -sSf | sh
source .cargo/env
cargo install tokei

# oh-my-posh のセットアップ
curl -s https://ohmyposh.dev/install.sh | bash -s
echo 'export PATH=$PATH:/home/nimzo/.local/bin' >> ~/.bashrc
echo 'eval "$(oh-my-posh init bash --config /home/nimzo/.cache/oh-my-posh/themes/emodipt.omp.json)"' >> ~/.bashrc
source ~/.bashrc

# zoxide のセットアップ
sudo apt install zoxide
echo 'eval "$(zoxide init bash)"' >> ~/.bashrc
source ~/.bashrc
```

## Git / GitHub 関連の設定

とりあえず、 WSL だけ設定する。

```bash:Bash on WSL
git config --global user.name "GitHubユーザー名"
git config --global user.email "メールアドレス"

# SSH鍵を生成
ssh-keygen -t ed25519 -C "メールアドレス"
# ssh-agentを起動
eval "$(ssh-agent -s)"
# SSH鍵をssh-agentに登録
ssh-add ~/.ssh/id_ed25519
# 公開鍵の内容を表示（これをGitHubに登録）
cat ~/.ssh/id_ed25519.pub
```

GitHub にて「Settings」→「SSH and GPG keys」→「New SSH key」にて公開鍵をコピペする。
その後、以下のコマンドで疎通確認を実施。

```bash:Bash on WSL
ssh -T git@github.com
#>The authenticity of host 'github.com (20.27.177.113)' can't be established.
#>...
#>Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
#>...
#>Hi nimzo6689! You've successfully authenticated, but GitHub does not provide shell access.
```

Windows は `git config` の設定をして、資格情報マネージャに GitHub の認証情報持たせれば SSH 鍵関連の設定作業は不要。
資格情報は特に前もって設定しなくても、 `git push` しようとした段階でたぶん勝手に聞かれる仕様になっているはず。

## AWS

PC を買い替えただけなので、 AWS アカウントは以前作っているものを CLI で使えるようにするだけ。
作り直したい場合は、以下のページに作成手順あります。

https://aws.amazon.com/jp/getting-started/guides/setup-environment/

WSL に AWS CLI をインストール。

```bash:Bash on WSL
# aws cli のインストール
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
```

続いて、認証情報を設定する。

```bash:Bash on WSL
mkdir -p ~/.aws

cat << EOF >> ~/.aws/credentials
[default]
region = ap-northeast-1
output = json
aws_access_key_id = your-access-key
aws_secret_access_key = your-secret-access-key
aws_session_token = your-session-token
EOF
```

動作確認する。

```bash:Bash on WSL
aws ec2 describe-vpcs
# AWS アカウントのデフォルト VPC の情報が JSON 形式で表示されます
```

AWS SAM CLI もついでにインストールしておく。

```bash:Bash on WSL
curl -Lo sam-installation.zip https://github.com/aws/aws-sam-cli/releases/latest/download/aws-sam-cli-linux-x86_64.zip

unzip sam-installation.zip -d sam-installation
sudo ./sam-installation/install

sam --version
```

## Visual Studio Code（WSL）

WSL 環境においても  Visual Studio Code の拡張機能をインストールする。
Windows で Visual Studio Code をインストールすれば、WSL でも使える状態になっているのでありがたい。
※ WSL, DevContainers, BetterComments, Material Icon Theme については WSL で別途インストールは不要

```bash:Bash on WSL
# コーディング支援系
code --install-extension editorconfig.editorconfig
code --install-extension esbenp.prettier-vscode

# Git 関連
code --install-extension mhutchie.git-graph
code --install-extension ryu1kn.partial-diff

# AI アシスタント： GitHub Copilot
code --install-extension github.copilot
code --install-extension github.copilot-chat
```

# 開発環境の構築 (WSL)

VSCode の拡張機能は言語ごとに Profile を作成し、その Profile 内にインストールする。
Profile を作成するときに Extension を Default から引っ張ってくる設定ができるが、それをするとなぜか Activity Bar に拡張機能のメニューが表示されなくなってしまうので、それはしない。（たぶん、一時的な問題なはず。Issue は見当たらなかった。）

## Java

SDKMAN! の出番なり！

https://qiita.com/nimzo6689/items/c399840b360e409b0c61

## Scala

Coursier の出番なり！

https://qiita.com/nimzo6689/items/7600b77ac4d1db35a29d

## Python

uv の出番なり！

```bash:Bash on WSL
# uv のインストール
curl -LsSf https://astral.sh/uv/install.sh | sh

# とりあえず、 Hello, world!
uv run - <<EOF
print("Hello, world!")
EOF
```

VSCode の拡張機能はこちらを入れておく。

https://marketplace.visualstudio.com/items?itemName=ms-python.python

## Node.js

nvm の出番なり！

```bash:Bash on WSL
# nvm のインストール
# 最新版は nvm の README を参照する。
# https://github.com/nvm-sh/nvm?tab=readme-ov-file#install--update-script
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.2/install.sh | bash

# シェルの再起動または設定の読み込み
source ~/.bashrc

# 最新安定版のNode.jsをインストール
nvm install --lts

# 今の Node.js のバージョンをデフォルトとして設定
# 勝手に LTS のバージョンを上げないようにする
nvm alias default node
```

もし、新しい LTS のバージョンに切り替えたい場合は以下のコマンドを実施する。

```bash:新しい LTS のバージョンに更新
nvm install --lts
nvm alias default lts/*
nvm alias default node
```

VSCode の拡張機能は別途インストールしなくても、デフォルトの機能で十分賄えるのでこの段階ではインストールしない。

## Go

！(^^)！

```bash:Bash on WSL
# 最新版のダウンロードとインストール
# 具体的なバージョンは https://go.dev/doc/install を確認
wget https://go.dev/dl/go1.24.2.linux-amd64.tar.gz

# 公式ページ通りのコマンドを実行
sudo rm -rf /usr/local/go && sudo tar -C /usr/local -xzf go1.24.2.linux-amd64.tar.gz

# .bashrc に追加
echo 'export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin' >> ~/.bashrc
source ~/.bashrc

go version
```

Go 言語は go コマンド自体に Go のバージョン管理機能が内蔵されているので、
もし古いバージョンや最新版に更新したい場合は以下のページの手順を参照する。

https://go.dev/doc/manage-install

VSCode の拡張機能はこちらを入れておく。

https://marketplace.visualstudio.com/items?itemName=golang.go

# おわりに

Windows でもほとんどはコマンドで環境構築できる時代になった。