devAlice
← Windows

scoop vs winget — Windows パッケージマネージャーを比較して使い分ける

デスクトップアプリは winget、CLI/ポータブルは scoop。両方使う — セットアップと実践的な使い分け。

Windows のパッケージマネージャーには macOS Homebrew のような単一の統一標準がない。winget(Microsoft 公式)と scoop(コミュニティ製)はそれぞれ明確な強みと弱みを持つため、通常は両方を使う。このガイドでは違い・セットアップ・実践的な使い分けを解説する。どちらか一方に統一するよりも用途で使い分けることが合理的だと考える — デスクトップアプリには winget、CLI ツールには scoop、というように役割が明確に分かれているからだ。

対象:Windows 10/11(Windows 初期セットアップ 完了済み)。

TL;DR

項目wingetscoopChocolatey
管理者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 -e

1.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-fonts

2.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 touch

2.5 export / import

# エクスポート — JSON
scoop export -c > scoop.json
 
# 新しいマシンにインポート
scoop import scoop.json

winget と同じパターン。両マシンのセットアップを自動化できる。

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. 実践的な使い分け表

カテゴリマネージャー
ブラウザwingetChrome、Firefox、Edge
エディター / IDEwingetVS Code、Cursor、JetBrains Toolbox
コミュニケーションアプリwingetSlack、Discord、Notion
Git クライアントwingetGit for Windows、GitHub Desktop
コンテナwingetDocker Desktop
仮想化wingetVirtualBox、VMware
フォント(Nerd)scoopJetBrainsMono-NF、FiraCode-NF
CLI ツールscoopjq、fzf、ripgrep、fd、bat、eza、gh、delta
シェルユーティリティscoopsudo、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.ps1

Windows 初期セットアップsetup-windows.ps1 と組み合わせると、新しい Windows が 1 時間以内に使える状態になる。

検証

  1. winget --version / scoop --version どちらも動作する
  2. winget list / scoop list でインストール済みパッケージが表示される
  3. gh --version — scoop でインストールしたツールが PATH にある
  4. code --version — winget でインストールしたツールが PATH にある
  5. winget upgrade --all / scoop update * — どちらも成功する

トラブルシューティング

winget が存在しない(Windows 10)

  • Microsoft Store → 「App Installer」をアップデート
  • 21H1 より古い場合:OS をアップデート

scoop のインストールで「running scripts is disabled」エラー

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

winget で「Failed when searching source」

winget source reset --force
winget source update

scoop パッケージが PATH にない

  • 新しいターミナルを開く — scoop はインストール後に PATH を更新するが、既存のシェルには反映されない
  • または $env:Path = [System.Environment]::GetEnvironmentVariable("Path", "User")

同じツールが競合する

Get-Command foo -All で PATH の順序を確認する。どちらか一方を削除して再インストールする。

scoop のフォントが適用されない

  • scoop はフォントをユーザーごとにインストールする。他のユーザー / システムサービスからは見えない
  • システム全体に適用するには winget または手動インストールを使う

参考リンク

更新履歴

  • 2026-05-12:初稿。winget vs scoop vs Chocolatey 比較 + 使い分け表 + 自動化スクリプト + 6 つのトラブルシューティング。