scoop vs winget — Windows パッケージマネージャーを比較して使い分ける
デスクトップアプリは winget、CLI/ポータブルは scoop。両方使う — セットアップと実践的な使い分け。
Windows のパッケージマネージャーには macOS Homebrew のような単一の統一標準がない。winget(Microsoft 公式)と scoop(コミュニティ製)はそれぞれ明確な強みと弱みを持つため、通常は両方を使う。このガイドでは違い・セットアップ・実践的な使い分けを解説する。どちらか一方に統一するよりも用途で使い分けることが合理的だと考える — デスクトップアプリには winget、CLI ツールには scoop、というように役割が明確に分かれているからだ。
対象:Windows 10/11(Windows 初期セットアップ 完了済み)。
TL;DR
| 項目 | winget | scoop | Chocolatey |
|---|---|---|---|
| 管理者 | Microsoft 公式 | コミュニティ | コミュニティ |
| インストール先 | システム(管理者) | ~/scoop/(ユーザー、管理者不要) | システム(管理者) |
| 強み | デスクトップ GUI アプリ、公式カタログ | CLI ツール、ポータブル、分離 | 最も古いカタログ |
| 弱み | CLI ツールカタログが弱い | デスクトップ GUI アプリが少ない | 毎回 UAC プロンプト |
| 権限 | 管理者が必要(通常) | ユーザーレベル | 管理者が必要 |
| 推奨ケース | デスクトップアプリ(Chrome、VS Code など) | 開発 CLI(jq、fzf、gh、neovim など) | 両方にないレガシーカタログのみ |
推奨:winget(デスクトップ)+ scoop(CLI)。Chocolatey は両方にないものだけ。
1. winget — デスクトップアプリ優先
1.1 インストール確認
Win11 と Win10 21H1 以降に組み込み済み。確認:
winget --version
# v1.7.x 以上存在しない場合は Microsoft Store で「App Installer」をアップデートする。
1.2 主なコマンド
# 検索
winget search vscode
# インストール
winget install --id Microsoft.VisualStudioCode -e
# 全パッケージをアップグレード
winget upgrade --all
# インストール済みの一覧
winget list
# アンインストール
winget uninstall --id ...1.3 推奨 winget パッケージ
# ブラウザ / エディター
winget install --id Google.Chrome -e
winget install --id Mozilla.Firefox -e
winget install --id Microsoft.VisualStudioCode -e
# コミュニケーション
winget install --id Notion.Notion -e
winget install --id SlackTechnologies.Slack -e
winget install --id Discord.Discord -e
# 開発
winget install --id Git.Git -e
winget install --id Docker.DockerDesktop -e
winget install --id Microsoft.PowerShell -e
winget install --id JetBrains.Toolbox -e
# ユーティリティ
winget install --id 7zip.7zip -e
winget install --id Anysphere.Cursor -e
winget install --id Tailscale.Tailscale -e1.4 export / import
# 現在のマシンのパッケージをエクスポート
winget export -o packages.json
# 新しいマシンにインポート
winget import -i packages.jsonすべての GUI アプリを一度に復元 — 新しい PC で大きな時間節約になる。
2. scoop — CLI ツール優先
2.1 インストール
管理者 PowerShell は不要:
# 一度だけポリシーを緩和(永続)
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
# scoop のインストール
irm get.scoop.sh | iexインストール先:~\scoop\(ユーザーフォルダ)。システムへの変更なし = クリーン。
2.2 初期セットアップ
# 高度な検索(メイン以外のバケットも横断)
scoop install scoop-search
# 追加バケット(extras、versions、java など)
scoop bucket add extras
scoop bucket add versions
scoop bucket add java
scoop bucket add nerd-fonts2.3 主なコマンド
scoop search jq # 検索
scoop install jq # インストール
scoop update # マニフェストを取得
scoop update * # 全パッケージをアップグレード
scoop list # インストール済みの一覧
scoop uninstall jq # アンインストール
scoop cleanup * # 古いバージョンを削除2.4 推奨 scoop パッケージ
# CLI 必須ツール
scoop install jq # JSON CLI
scoop install fzf # ファジーファインダー
scoop install ripgrep # rg、grep の代替
scoop install fd # find の代替
scoop install bat # シンタックスハイライト付き cat
scoop install eza # ls の代替
scoop install gh # GitHub CLI
scoop install neovim
scoop install delta # git diff ページャー
# フォント
scoop install JetBrainsMono-NF
scoop install FiraCode-NF
# システムユーティリティ
scoop install sudo # PowerShell 向け WSL スタイルの sudo
scoop install which
scoop install grep # GNU grep
scoop install sed # GNU sed
scoop install touch2.5 export / import
# エクスポート — JSON
scoop export -c > scoop.json
# 新しいマシンにインポート
scoop import scoop.jsonwinget と同じパターン。両マシンのセットアップを自動化できる。
3. 競合の回避
同じツールを両方でインストールすると、どちらが実行されるか曖昧になる(PATH の順序に依存)。
ルール:1 つのツール、1 つのマネージャー。重複を Get-Command git -All で確認する。
3.1 Git
- winget Git for Windows = 完全な SSH / GCM / ヘルプ(推奨)
- scoop git = 軽量、ポータブル
- 通常は winget Git を使う(GCM 統合あり)。
3.2 Node / Python
- 両方でインストールできるが、mise / nvs / pyenv-win(バージョンマネージャー)が推奨
- mac/dev-toolchain を参照 — mise は Windows でも動作する。
3.3 VS Code
- winget のみ — 統合された自動更新
- scoop の vscode はポータブルで自動更新なし
4. Chocolatey — いつ使うか?
winget と scoop の両方にないものが稀にある(専門的なエンタープライズソフトウェア、ドライバーなど)。Chocolatey のカタログが最も古く幅広い。
# 管理者 PowerShell
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'))choco install <pkg> -y毎回 UAC 同意が必要。推奨:最終手段。
5. 実践的な使い分け表
| カテゴリ | マネージャー | 例 |
|---|---|---|
| ブラウザ | winget | Chrome、Firefox、Edge |
| エディター / IDE | winget | VS Code、Cursor、JetBrains Toolbox |
| コミュニケーションアプリ | winget | Slack、Discord、Notion |
| Git クライアント | winget | Git for Windows、GitHub Desktop |
| コンテナ | winget | Docker Desktop |
| 仮想化 | winget | VirtualBox、VMware |
| フォント(Nerd) | scoop | JetBrainsMono-NF、FiraCode-NF |
| CLI ツール | scoop | jq、fzf、ripgrep、fd、bat、eza、gh、delta |
| シェルユーティリティ | scoop | sudo、which、neovim |
| パッチ / ドライバー | (手動または Chocolatey) | NVIDIA Studio Driver など |
6. 自動化スクリプト(オプション)
新しい Windows セットアップの最初の 30 分を自動化。setup.ps1:
# winget — デスクトップ
$wingetApps = @(
"Google.Chrome",
"Microsoft.VisualStudioCode",
"Anysphere.Cursor",
"Git.Git",
"Microsoft.PowerShell",
"Docker.DockerDesktop",
"JetBrains.Toolbox",
"Tailscale.Tailscale",
"AgileBits.1Password",
"AgileBits.1Password.CLI"
)
foreach ($app in $wingetApps) {
winget install --id $app -e --accept-package-agreements --accept-source-agreements
}
# scoop — CLI
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser -Force
irm get.scoop.sh | iex
scoop bucket add extras
scoop bucket add nerd-fonts
$scoopApps = @(
"jq", "fzf", "ripgrep", "fd", "bat", "eza", "gh", "delta",
"neovim", "sudo", "JetBrainsMono-NF"
)
foreach ($app in $scoopApps) {
scoop install $app
}実行:
PowerShell -ExecutionPolicy Bypass -File .\setup.ps1Windows 初期セットアップ の
setup-windows.ps1と組み合わせると、新しい Windows が 1 時間以内に使える状態になる。
検証
winget --version/scoop --versionどちらも動作するwinget list/scoop listでインストール済みパッケージが表示されるgh --version— scoop でインストールしたツールが PATH にあるcode --version— winget でインストールしたツールが PATH にあるwinget upgrade --all/scoop update *— どちらも成功する
トラブルシューティング
winget が存在しない(Windows 10)
- Microsoft Store → 「App Installer」をアップデート
- 21H1 より古い場合:OS をアップデート
scoop のインストールで「running scripts is disabled」エラー
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUserwinget で「Failed when searching source」
winget source reset --force
winget source updatescoop パッケージが PATH にない
- 新しいターミナルを開く — scoop はインストール後に PATH を更新するが、既存のシェルには反映されない
- または
$env:Path = [System.Environment]::GetEnvironmentVariable("Path", "User")
同じツールが競合する
Get-Command foo -All で PATH の順序を確認する。どちらか一方を削除して再インストールする。
scoop のフォントが適用されない
- scoop はフォントをユーザーごとにインストールする。他のユーザー / システムサービスからは見えない
- システム全体に適用するには winget または手動インストールを使う
参考リンク
- Windows 初期セットアップ — winget の基本
- PowerShell 7 セットアップ — pwsh 環境
- WSL2 チューニング — Linux パッケージマネージャー(apt/dnf)
- winget(公式)
- scoop(公式)
- Chocolatey
更新履歴
- 2026-05-12:初稿。winget vs scoop vs Chocolatey 比較 + 使い分け表 + 自動化スクリプト + 6 つのトラブルシューティング。