KOS.LOG
tech

【Windows開発環境】winget + dotfilesでモダンな環境構築をgit管理する

  • #Windows
  • #winget
  • #Chocolatey
  • #dotfiles
  • #PowerShell
  • #開発環境
  • #Git

はじめに

macOSでは dotfiles リポジトリに brew bundlesetup.sh をGit管理し、新しいマシンでも git clone && ./setup.sh で環境を再現する手法が定番です。

Windowsにも同等のプラクティスが揃っています。

macOSWindows役割
Homebrewwinget / Chocolateyパッケージマネージャー
Brewfilepackages.json(winget export)パッケージ一覧のgit管理
setup.shsetup.ps1環境構築スクリプト
~/.zshrcPowerShell Profileシェル設定のgit管理
chezmoi / yadmchezmoi(Windows対応)クロスプラットフォームdotfiles

この記事では、これらを組み合わせて再現性のあるWindows開発環境をgit管理する手順を解説します。


パッケージマネージャーの選び方

winget(推奨)

Windows 10/11 に標準搭載されているMicrosoft公式のパッケージマネージャーです。

winget --version

コマンドが通れば使えます。使えない場合は Microsoft Store から App Installer をインストールしてください。

Chocolatey との使い分け

wingetChocolatey
公式サポートMicrosoft公式サードパーティ
パッケージ数多い(増加中)非常に多い
エンタープライズ対応
スクリプト自動化◎(-yで完全無人)

基本方針: winget を主軸に、winget にないパッケージだけ Chocolatey で補う。


Step 1: winget で必須ツールを一括インストール

管理者権限のPowerShellで実行(Win + X → Terminal(管理者))

winget install --id Git.Git               -e --silent
winget install --id GitHub.cli            -e --silent
winget install --id Microsoft.WindowsTerminal -e --silent
winget install --id Microsoft.VisualStudioCode -e --silent
winget install --id 7zip.7zip             -e --silent
winget install --id jqlang.jq             -e --silent
winget install --id OpenJS.NodeJS.LTS     -e --silent
winget install --id Python.Python.3.12    -e --silent
winget install --id RancherDevelopment.RancherDesktop -e --silent

WSL2 は winget ではなく Windows 標準コマンドで有効化します:

wsl --install -d Ubuntu-24.04

Step 2: インストール済みパッケージをエクスポートしてgit管理する

macOS の Brewfile に相当するのが winget export の出力ファイルです。

# インストール済みパッケージを packages.json に書き出す
winget export -o packages.json

出力される packages.json の例:

{
  "Sources": [
    {
      "Packages": [
        { "PackageIdentifier": "Git.Git" },
        { "PackageIdentifier": "GitHub.cli" },
        { "PackageIdentifier": "Microsoft.VisualStudioCode" },
        { "PackageIdentifier": "RancherDevelopment.RancherDesktop" }
      ],
      "SourceDetails": { "Name": "winget" }
    }
  ]
}

新しいPCへの移行時は packages.json から一括インストールできます:

winget import -i packages.json --ignore-unavailable

Step 3: setup.ps1 をgitで管理する(dotfilesパターン)

macOS の setup.sh に相当するセットアップスクリプトを作成し、Gitリポジトリで管理します。

dotfiles リポジトリの構成

dotfiles/
├── setup.ps1          ← メインのセットアップスクリプト
├── packages.json      ← winget パッケージ一覧
├── profile.ps1        ← PowerShell プロファイル(.zshrc相当)
└── README.md

setup.ps1 の例

# setup.ps1 - Windows 開発環境セットアップスクリプト
# 使い方: git clone <repo> && cd dotfiles && ./setup.ps1

# パッケージインストール
Write-Host "Installing packages via winget..." -ForegroundColor Cyan
winget import -i packages.json --ignore-unavailable

# PowerShell プロファイルのシンボリックリンクを作成
Write-Host "Setting up PowerShell profile..." -ForegroundColor Cyan
$profileDir = Split-Path $PROFILE
if (-not (Test-Path $profileDir)) { New-Item -ItemType Directory $profileDir }
New-Item -ItemType SymbolicLink -Path $PROFILE -Target "$PSScriptRoot\profile.ps1" -Force

# Git の初期設定
Write-Host "Configuring git..." -ForegroundColor Cyan
git config --global user.name  "Your Name"
git config --global user.email "your@email.com"
git config --global core.autocrlf input
git config --global init.defaultBranch main

Write-Host "Done!" -ForegroundColor Green

実行方法

git clone https://github.com/<username>/dotfiles.git
cd dotfiles

# 実行ポリシーを一時的に許可(初回のみ)
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass

.\setup.ps1

Step 4: PowerShell プロファイルをgit管理する

PowerShell プロファイルは macOS の ~/.zshrc に相当します。パスを確認するには:

echo $PROFILE
# → C:\Users\<name>\Documents\PowerShell\Microsoft.PowerShell_profile.ps1

profile.ps1 の例

# エイリアス(macOSライクに)
Set-Alias ll   Get-ChildItem
Set-Alias grep Select-String
Set-Alias which Get-Command

# プロンプトカスタマイズ(oh-my-posh が入っている場合)
# oh-my-posh init pwsh | Invoke-Expression

# よく使うディレクトリへのショートカット
function dev { Set-Location ~/dev }
function dotfiles { Set-Location ~/dotfiles }

# Git ショートカット
function gs { git status }
function gp { git push }
function gl { git pull }

setup.ps1 でシンボリックリンクを貼ることで、dotfiles リポジトリの profile.ps1 が常に $PROFILE として読み込まれます。


Step 5: chezmoi でクロスプラットフォーム dotfiles(任意)

Mac と Windows の両方を使う場合、chezmoi が有効です。OS ごとに条件分岐した dotfiles を1つのリポジトリで管理できます。

# chezmoi をインストール
winget install twpayne.chezmoi

# GitHub の dotfiles リポジトリから初期化
chezmoi init --apply https://github.com/<username>/dotfiles.git

chezmoi は macOS・Linux・Windows を同一リポジトリで管理でき、{{ if eq .chezmoi.os "windows" }} のようなテンプレート構文でOS別の設定を書き分けられます。


全体の流れまとめ

# 新しいWindows PCのセットアップ手順
1. winget --version        # winget が使えるか確認
2. git clone <dotfiles>    # dotfiles リポジトリをクローン
3. .\setup.ps1             # パッケージインストール + シンボリックリンク設定
4. wsl --install           # WSL2 + Ubuntu をセットアップ
5. gh auth login           # GitHub CLI の認証

以降は dotfiles リポジトリを更新し続けることで、次の環境でも同じ状態を再現できます。


Chocolatey を使う場合(補足)

winget にないパッケージは Chocolatey で補完できます。

# Chocolatey のインストール(未インストールの場合)
Set-ExecutionPolicy Bypass -Scope Process -Force
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072
iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))

# Chocolatey でパッケージインストール
choco install -y make

setup.ps1 に組み込む場合は winget と Chocolatey を併用するセクションを追加するだけです。


次のステップ

開発ツールのセットアップが完了したら、WSL2 と Rancher Desktop を使ったサーバー環境の構築に進みます。

  • スマートホームダッシュボード #1: SSH・ファイアウォール設定でWindows PCをサーバーとして使う準備
  • スマートホームダッシュボード #2(次回): Rancher Desktop で k3s クラスターを構築する