Windows のさまざまなアプリケーション

【概要】Windowsでは、Microsoft社が提供するwinget(Windows Package Manager)を使用し、ビルドツール、開発環境、ユーティリティなどのソフトウェアを効率的にインストールできる。また、公式ストアやwingetに未収録のフリーソフトウェアを、開発者のWebサイト等から入手できる。

【この記事の対象読者】Windowsパソコンを開発や学習に活用したい人。プログラミング、AI開発、3D制作、データ分析などの環境を構築したい人を対象としている。

【重要概念】

  • winget (Windows Package Manager): Microsoftが開発した標準のパッケージ管理ツール。コマンドラインからアプリケーションの検索、インストール、更新、削除を一括で行える。スクリプトによる環境構築の自動化に不可欠である。
  • フリーソフトウェア / オープンソース: 無償で利用できるソフトウェア。ソースコードが公開されているオープンソースソフトウェア(OSS)と、商用利用等に制限がある無償ソフトが含まれる。利用時はライセンス確認が必要である。
  • システム全体へのインストール (Machine Scope): PCを利用するすべてのユーザーがソフトウェアを利用可能にするインストール方法。本ガイドのコマンドは、wingetの--scope machineオプションを使用するため、管理者権限での実行が必須となる。
  • ローカルAI (Local LLM): クラウドサービスを使わず、自身のPC上で動作させる大規模言語モデルや画像生成AI。インターネット接続不要で利用でき、データのプライバシー保護や、NVIDIA製GPUによる高速化が特徴である。

【wingetを使うメリット】複数のソフトウェアをコマンド一つでインストールでき、手作業でのダウンロードやインストーラー実行の手間を省ける。また、スクリプト化することで環境の再現が容易になる。

【フリーソフトウェアについて】この記事で紹介するソフトウェアの多くはフリーソフトウェア(無償で利用できるソフトウェア)である。フリーソフトウェアには、オープンソースソフトウェア(ソースコードが公開されているもの)と、無償で配布されているが商用利用に制限があるものが含まれる。

フリーソフトウェアのメリット

  • 費用をかけずに開発環境や学習環境を構築できる
  • オープンソースのソフトウェアは、異なるPC間で同じ環境を再現しやすい
  • コミュニティによる開発・改善が継続的に行われている
  • 学習目的での利用に適している

フリーソフトウェア利用時の注意点

  • ソフトウェアごとにライセンス条件が異なるため、商用利用や再配布の際は各ソフトウェアのライセンスを確認すること
  • li>公式サポートがない場合が多く、問題発生時はドキュメントやコミュニティを活用する必要2がある
  • セキュリティアップデートは利用者自身で適用する必要がある
  • 一部のソフトウェア(Visual Studio Community等)は、利用条件に制限があるため、利用前に確認すること

【目次】

【サイト内のWindowsセットアップ関連ページ】

【外部リソース】

winget

winget(Windows Package Manager)は、Microsoftが開発したWindows用のパッケージマネージャーである。アプリケーションの検索、インストール、更新、削除をコマンドで実行できる。最新のWindows 10/11には標準搭載されているが、古いバージョンのWindowsでは手動でインストールする必要がある。複数のアプリケーションを一度に管理でき、スクリプトによる自動化も可能である。

winget使用時の注意点

Windowsでのwingetのインストールは、別ページ »で説明する。

winget(Windows Package Manager)が利用可能か確認するには、次のコマンドを実行する。バージョン番号が表示されれば、wingetは利用可能である。

winget --version
wingetバージョン確認画面

1. 汎用ツール

本セクションは,汎用ツールについて,各ツールの説明・用途・インストール手順を示す。インストールは原則としてwingetコマンドにより一括実行する方式を採用しており,管理者権限のコマンドプロンプトで実行する。主な例外として,Kokomiteはwinget未対応のためcurlによるダウンロードとPowerShellによるZIP展開を行い,FileZillaは手動でダウンロードを行う。

本セクションのインストール対象は,Webブラウザ(Google Chrome,Firefox),ファイル圧縮・解凍(7-Zip),プレゼンテーション補助(Kokomite),リモート接続・Xサーバ(MobaXterm),ファイル転送(FileZilla)である。

ソフトウェア説明用途備考
Google Chrome Googleが開発したWebブラウザ。V8エンジン(JavaScriptエンジン)によるJavaScript実行と,DevTools(ブラウザ内蔵の開発者ツール)によるデバッグ機能を備える。 Webブラウザ wingetでインストール可能。自動更新を停止して運用する。
Firefox Mozillaが開発したWebブラウザ。独自のGecko(レンダリングエンジン)を搭載し,Web標準への準拠とプライバシー保護機能を備える。 Webブラウザ wingetでインストール可能。自動更新を停止して運用する。
7-Zip 圧縮・解凍ツール。LZMA/LZMA2(高圧縮アルゴリズム)による.7z形式のほか,tar.gz等のUnix系形式にも対応する。 ファイル圧縮・解凍 wingetでインストール可能。
Kokomite マウスポインタの位置を強調表示するツール。画面共有や動画教材の作成時に視認性を高める。 プレゼンテーション補助 winget未対応。展開先はC:\Tools\Kokomite。
MobaXterm Windows向けの統合リモート接続ツール。SSH接続,X11転送,SFTPをタブ付きの一つの画面で操作できる。 リモート接続・Xサーバ wingetでインストール可能。
FileZilla FTP/SFTPクライアント。ドラッグ&ドロップ操作でサーバーとの間のファイル転送を行える。 ファイル転送 wingetパッケージは存在するが開発元がダウンロードを制限しているため,手動でダウンロードしインストールする。

インストールコマンドの実行方法

管理者権限コマンドプロンプトを起動する (手順:Windowsキーまたはスタートメニュー → cmd と入力 → 右クリック → 「管理者として実行」)。 wingetの--scope machineオプションでシステム全体にインストールするには,管理者権限が必要である。実行時はコマンド全体をコマンドプロンプトにコピー&ペーストする。

インストールコマンド

REM ============================================================
REM 汎用ツール インストール用コマンド(管理者権限のcmdで実行)
REM バッチファイルではなく,管理者権限で起動したコマンドプロンプトに
REM 貼り付けて実行することを想定
REM ============================================================

REM 管理者権限チェック
net session >nul 2>&1
if errorlevel 1 ( echo [エラー] 管理者権限で実行してください & pause & exit /b 1 )

REM winget パッケージ一覧のローカルキャッシュを更新
winget source update

REM ============================================================
REM Google Chrome
REM ============================================================
REM Google Chrome をシステム領域にインストール
winget install --scope machine --id Google.Chrome -e --silent --source winget --disable-interactivity --force --accept-source-agreements --accept-package-agreements --custom "NOGOOGLEUPDATEPING=1"
REM Google Chrome の自動更新を無効化
powershell -NoProfile -Command "New-Item -Path 'HKLM:\SOFTWARE\Policies\Google\Update' -Force | Out-Null; Set-ItemProperty -Path 'HKLM:\SOFTWARE\Policies\Google\Update' -Name 'AutoUpdateCheckPeriodMinutes' -Value 0 -Type DWord; Set-ItemProperty -Path 'HKLM:\SOFTWARE\Policies\Google\Update' -Name 'UpdateDefault' -Value 0 -Type DWord"
REM Google Chrome のパス設定
powershell -NoProfile -Command "$p='C:\Program Files\Google\Chrome\Application'; $c=[Environment]::GetEnvironmentVariable('Path','Machine'); if((Test-Path $p) -and (';'+$c+';' -notlike \"*;$p;*\")){[Environment]::SetEnvironmentVariable('Path',\"$c;$p\",'Machine')}"

REM ============================================================
REM Mozilla Firefox
REM ============================================================
REM Firefox をシステム領域にインストール
winget install --scope machine --id Mozilla.Firefox -e --silent --source winget --disable-interactivity --force --accept-source-agreements --accept-package-agreements --custom "/MaintenanceService=false /PreventRebootRequired=true /RegisterDefaultAgent=false"
REM Firefox の自動更新を無効化
powershell -NoProfile -Command "New-Item -Path 'HKLM:\SOFTWARE\Policies\Mozilla\Firefox' -Force | Out-Null; Set-ItemProperty -Path 'HKLM:\SOFTWARE\Policies\Mozilla\Firefox' -Name 'DisableAppUpdate' -Value 1 -Type DWord"
REM Firefox のパス設定
powershell -NoProfile -Command "$p='C:\Program Files\Mozilla Firefox'; $c=[Environment]::GetEnvironmentVariable('Path','Machine'); if((Test-Path $p) -and (';'+$c+';' -notlike \"*;$p;*\")){[Environment]::SetEnvironmentVariable('Path',\"$c;$p\",'Machine')}"

REM ============================================================
REM 7-Zip
REM ============================================================
REM 7-Zip をシステム領域にインストール
winget install --scope machine --id 7zip.7zip -e --silent --source winget --disable-interactivity --force --accept-source-agreements --accept-package-agreements
REM 7-Zip のパス設定(他ツールと揃えて末尾追加)
powershell -NoProfile -Command "$p='C:\Program Files\7-Zip'; $c=[Environment]::GetEnvironmentVariable('Path','Machine'); if((Test-Path $p) -and (';'+$c+';' -notlike \"*;$p;*\")){[Environment]::SetEnvironmentVariable('Path',\"$c;$p\",'Machine')}"

REM ============================================================
REM Kokomite
REM ============================================================
REM Kokomite のダウンロードと展開
echo Kokomiteをダウンロード中...
if not exist C:\Tools\Kokomite mkdir C:\Tools\Kokomite
curl -L -f --retry 3 --retry-delay 2 --connect-timeout 30 -o C:\Tools\Kokomite\kokomite.zip https://ftp.vector.co.jp/75/96/2241/Kokomite2-3-4-135.zip
powershell -NoProfile -Command "Expand-Archive -Path 'C:\Tools\Kokomite\kokomite.zip' -DestinationPath 'C:\Tools\Kokomite' -Force"
del C:\Tools\Kokomite\kokomite.zip
copy /Y C:\Tools\Kokomite\Kokomite2-3-4-135\Kokomite\kokomite.exe C:\Tools\Kokomite\kokomite.exe
REM Kokomite のパス設定
powershell -NoProfile -Command "$p='C:\Tools\Kokomite'; $c=[Environment]::GetEnvironmentVariable('Path','Machine'); if((Test-Path $p) -and (';'+$c+';' -notlike \"*;$p;*\")){[Environment]::SetEnvironmentVariable('Path',\"$c;$p\",'Machine')}"
REM スタートメニュー(すべてのアプリ)へのショートカット作成
powershell -NoProfile -Command "$s=New-Object -ComObject WScript.Shell; $l=$s.CreateShortcut(\"$env:ProgramData\Microsoft\Windows\Start Menu\Programs\Kokomite.lnk\"); $l.TargetPath='C:\Tools\Kokomite\kokomite.exe'; $l.WorkingDirectory='C:\Tools\Kokomite'; $l.Save()"

REM ============================================================
REM MobaXterm Home Edition
REM ============================================================
REM MobaXterm Home Edition をシステム領域にインストール
REM MobaXterm はGUIツールのためパス設定は不要
winget install --scope machine --id Mobatek.MobaXterm -e --silent --source winget --disable-interactivity --force --accept-source-agreements --accept-package-agreements --override "/qn /norestart"

REM ============================================================
REM FileZilla Client
REM ============================================================
REM FileZilla は手動インストールのため,ブラウザでダウンロードページを開く
start https://filezilla-project.org/download.php?platform=win64
echo ブラウザで公式ダウンロードページを開きます。
echo 「Download FileZilla Client」から 64bit 版 EXE インストーラを保存し実行してください。
REM FileZilla の自動更新チェックと初回ウェルカム画面を無効化
REM 手動インストール完了後に以下の if exist 文を
REM コマンドプロンプトに貼り付けて再実行すること
if exist "%ProgramFiles%\FileZilla FTP Client" (
    (
        echo ^<FileZilla3^>
        echo   ^<Settings^>
        echo     ^<Setting name="Config Location"^>$APPDATA/FileZilla/^</Setting^>
        echo     ^<Setting name="Disable update check"^>1^</Setting^>
        echo     ^<Setting name="Greeting version"^>9.9.9^</Setting^>
        echo   ^</Settings^>
        echo ^</FileZilla3^>
    ) > "%ProgramFiles%\FileZilla FTP Client\fzdefaults.xml"
)

echo インストール完了

インストール確認のために次のコマンドを実行する。

REM ============================================================
REM インストール確認チェック
REM ============================================================

echo ===== Google Chrome =====
where chrome 2>nul && chrome --version || echo [未検出] chrome

echo ===== Mozilla Firefox =====
where firefox 2>nul && firefox --version || echo [未検出] firefox

echo ===== 7-Zip =====
where 7z 2>nul && (7z --help | findstr "7-Zip") || echo [未検出] 7z

echo ===== Kokomite =====
if exist "C:\Tools\Kokomite\kokomite.exe" (echo [検出] C:\Tools\Kokomite\kokomite.exe) else echo [未検出] kokomite
where kokomite 2>nul && echo [パス設定] 反映済み || echo [パス設定] 未反映(コマンドプロンプトの再起動が必要な場合があります)
if exist "%ProgramData%\Microsoft\Windows\Start Menu\Programs\Kokomite.lnk" (echo [ショートカット] 作成済み) else echo [ショートカット] 未作成

echo ===== MobaXterm =====
if exist "C:\Program Files (x86)\Mobatek\MobaXterm\MobaXterm.exe" (echo [検出] MobaXterm) else echo [未検出] MobaXterm

echo ===== FileZilla Client =====
if exist "C:\Program Files\FileZilla FTP Client\filezilla.exe" (echo [検出] FileZilla Client) else echo [未検出] FileZilla(手動インストール対象)

echo.
echo ===== 確認完了 =====

2. Windows標準ツールの代替ツール:スクリーンショット、ファイル検索、ペイント

本セクションは,Windows標準ツールの代替ツールについて,各ツールの説明・用途・インストール手順を示す。インストールはwingetコマンドを用いて一括実行する。管理者権限のコマンドプロンプトで実行する。例外としてQuickLookはcurlを用いてダウンロードしインストールする。

ソフトウェア説明用途備考
Everything ファイル名によるファイル検索ツール。Windows標準の検索より高速に動作する。 ファイル検索 wingetでインストール可能。
EverythingToolbar Everythingの検索機能をWindowsタスクバーに統合するツール。タスクバーから直接ファイル検索を実行できる。 ファイル検索補助 wingetでインストール可能。Everythingが必要。
QuickLook ファイルを選択してSpaceキーを押すだけで内容をプレビューできるツール。macOSのQuick Look機能をWindowsで実現する。 ファイルプレビュー curl を用いてダウンロード。
AnyTXT Searcher ファイル内のテキストを対象に全文検索できるツール。インデックスを事前構築することで高速な検索を実現する。 ファイル内容検索 wingetでインストール可能。
Lightshot 軽量なスクリーンショットツール。PrintScreenキーで範囲を選択し,保存・共有できる。 画面キャプチャ wingetでインストール可能。
Paint.NET Windowsで動作する画像編集ソフトウェア。レイヤー機能や各種フィルタを備え,PNG・JPEG・BMP等の形式に対応する。 画像編集 wingetでインストール可能。

インストールコマンドの実行方法

管理者権限コマンドプロンプトを起動する (手順:Windowsキーまたはスタートメニュー → cmd と入力 → 右クリック → 「管理者として実行」)。 wingetの--scope machineオプションでシステム全体にインストールするには,管理者権限が必要である。実行時はコマンド全体をコマンドプロンプトにコピー&ペーストする。

インストールコマンド

REM ============================================================
REM Windows標準ツールの代替ツール インストール用コマンド(管理者権限のcmdで実行)
REM バッチファイルではなく、管理者権限で起動したコマンドプロンプトに
REM 貼り付けて実行することを想定
REM ============================================================

REM 管理者権限チェック
net session >nul 2>&1
if errorlevel 1 ( echo [エラー] 管理者権限で実行してください & pause & exit /b 1 )

REM winget パッケージ一覧のローカルキャッシュを更新
winget source update

REM ============================================================
REM Everything(高速ファイル検索)
REM ============================================================
REM Everything をシステム領域にインストール
winget install --scope machine --id voidtools.Everything -e --silent --disable-interactivity --force --accept-source-agreements --accept-package-agreements --override "/qn /norestart"
REM Everything の設定(サービス登録、OS起動時の自動起動、更新通知の無効化)
if exist "C:\Program Files\Everything\Everything.exe" (
    "C:\Program Files\Everything\Everything.exe" -install-service -install-run-on-system-startup -disable-update-notification
)
REM Everything のパス設定
powershell -NoProfile -Command "$p='C:\Program Files\Everything'; $c=[Environment]::GetEnvironmentVariable('Path','Machine'); if((Test-Path $p) -and (';'+$c+';' -notlike \"*;$p;*\")){[Environment]::SetEnvironmentVariable('Path',\"$c;$p\",'Machine')}"

REM ============================================================
REM EverythingToolbar(Everything のタスクバー統合)
REM ============================================================
REM 前提条件として .NET Desktop Runtime 8 をインストール
winget install --id Microsoft.DotNet.DesktopRuntime.8 -e --silent --accept-source-agreements --accept-package-agreements
REM EverythingToolbar をシステム領域にインストール
winget install --scope machine --id stnkl.EverythingToolbar -e --silent --accept-source-agreements --accept-package-agreements

REM ============================================================
REM QuickLook(スペースキーでのプレビュー、macOS 風)
REM ============================================================
REM QuickLook をダウンロードしてインストール(バージョン番号が URL に固定されているため、更新時は手動で変更すること)
curl -L -f --retry 3 --retry-delay 2 --connect-timeout 30 -o "%ProgramData%\QuickLook.msi" https://github.com/QL-Win/QuickLook/releases/download/4.3.0/QuickLook-4.3.0.msi
msiexec /i "%ProgramData%\QuickLook.msi" ALLUSERS=1 /quiet /norestart
REM ダウンロードした msi ファイルを削除
del "%ProgramData%\QuickLook.msi"
REM 常駐(全ユーザー用:HKLM)
reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /v "QuickLook" /t REG_SZ /d "\"C:\Program Files\QuickLook\QuickLook.exe\"" /f

REM ============================================================
REM AnyTXT Searcher(文書全文検索)
REM ============================================================
REM AnyTXT Searcher をシステム領域にインストール
winget install --scope machine --id AnyTXT.AnyTXTSearcher -e --silent --source winget --disable-interactivity --force --accept-source-agreements --accept-package-agreements --custom "/SP- /SUPPRESSMSGBOXES /NORESTART /CLOSEAPPLICATIONS"
REM AnyTXT Searcher のパス設定
powershell -NoProfile -Command "$p='C:\Program Files\AnyTXT Searcher'; $c=[Environment]::GetEnvironmentVariable('Path','Machine'); if((Test-Path $p) -and (';'+$c+';' -notlike \"*;$p;*\")){[Environment]::SetEnvironmentVariable('Path',\"$c;$p\",'Machine')}"

REM ============================================================
REM Lightshot(スクリーンショット)
REM ============================================================
REM Lightshot をシステム領域にインストール(Inno Setup)
winget install --scope machine --id Skillbrains.Lightshot -e --silent --disable-interactivity --force --accept-source-agreements --accept-package-agreements --override "/SP- /VERYSILENT /SUPPRESSMSGBOXES /NORESTART /CLOSEAPPLICATIONS /NORESTARTAPPLICATIONS /LANG=japanese"

REM ============================================================
REM Paint.NET(画像編集)
REM ============================================================
REM Paint.NET をシステム領域にインストール(自動更新は無効化、デスクトップショートカット作成)
winget install --scope machine --id dotPDN.PaintDotNet -e --silent --disable-interactivity --force --accept-source-agreements --accept-package-agreements --override "/auto CHECKFORUPDATES=0 DESKTOPSHORTCUT=1"

echo.
echo === インストール完了 ===

インストール確認のために次のコマンドを実行する。

REM ============================================================
REM インストール確認チェック
REM ============================================================

echo ===== Everything =====
where Everything 2>nul && Everything -get-result-count || echo [未検出] Everything

echo ===== EverythingToolbar =====
if exist "C:\Program Files\EverythingToolbar\EverythingToolbar.exe" (echo [検出] EverythingToolbar) else echo [未検出] EverythingToolbar

echo ===== .NET Desktop Runtime 8 =====
dotnet --list-runtimes 2>nul | findstr "Microsoft.WindowsDesktop.App 8." || echo [未検出] .NET Desktop Runtime 8

echo ===== QuickLook =====
if exist "C:\Program Files\QuickLook\QuickLook.exe" (echo [検出] QuickLook) else echo [未検出] QuickLook

echo ===== AnyTXT Searcher =====
if exist "C:\Program Files\Anytxt Searcher\ATGUI.exe" (echo [検出] AnyTXT Searcher) else echo [未検出] AnyTXT Searcher

echo ===== Lightshot =====
if exist "C:\Program Files (x86)\Skillbrains\lightshot\Lightshot.exe" (echo [検出] Lightshot) else echo [未検出] Lightshot

echo ===== Paint.NET =====
if exist "C:\Program Files\paint.net\paintdotnet.exe" (echo [検出] Paint.NET) else echo [未検出] Paint.NET

echo.
echo ===== 確認完了 =====

3. 開発環境,ビルドツール,プログラミング言語,AI支援

プログラミング言語,コンパイラ,AI開発支援ツールなど,ソフトウェア開発に必要な環境を構築するためのツール群である。このセクションのインストールにより,Python,C/C++,Rustでの開発,バージョン管理,機械学習フレームワークの利用,Scratch によるプログラミング学習,AI支援ツールの導入が可能になる。

インストールはwingetコマンドにより一括実行する方式を採用しており,管理者権限のコマンドプロンプトで実行する。一部のWebサービスやVS Code拡張機能など,winget対象外のものは個別に導入する。

このセクションは他のセクションの前提となる。他のセクションのPythonライブラリは,このセクションでインストールするPythonに依存している。

ソフトウェア説明用途備考
CMake クロスプラットフォームのビルド自動化ツール。定義ファイル(CMakeLists.txt)からOSやコンパイラに応じたビルド構成を生成する。 ビルド構成の自動生成 wingetでインストール可能。
Visual C++ 再頒布可能パッケージ MSVC(Microsoft Visual C++)でビルドされたアプリケーションの実行に必要なランタイムライブラリ。 C/C++アプリケーションの実行 wingetでインストール可能。
Build Tools for Visual Studio 2026 MSVC(Microsoft Visual C++コンパイラ),リンカ,Windows SDKを含む。C/C++のビルドやPython拡張ライブラリのコンパイルに使用する。 C/C++ビルド wingetでインストール可能。
CUDA Toolkit NVIDIA GPU用の並列計算基盤。GPUをGPGPU(汎用GPU計算:グラフィックス処理以外の計算にGPUを利用する技術)として活用し,行列演算などを高速に処理する。NVIDIA製GPUが必要である。 GPU並列計算 wingetでインストール可能。
Rust システムプログラミング言語。所有権システム(メモリ管理機構)によりメモリ安全性をコンパイル時に保証する。WindowsでのビルドにはBuild Tools for Visual Studioが必要である。 システム開発,高速化 rustup-initによりインストール。拡張機能のファイルはユーザプロファイル下でなくシステム領域に置くように設定。
Python 3.12 汎用プログラミング言語。3.12ではPEP 695による型パラメータの宣言構文の導入,インタープリタの最適化,PEP 684によるサブインタープリタ(独立したPython実行環境)ごとの独立したGIL(グローバルインタープリタロック)の導入による並列処理基盤の強化(C APIレベルでの対応であり,Pythonレベルでの本格的なサポートは3.13以降)が行われた。 AI開発,データ解析,Web開発 wingetでインストール可能。
Git 分散型バージョン管理システム(ソースコードの変更履歴を管理するツール)。変更履歴をDAG(有向非巡回グラフ:履歴の分岐と統合を表現するデータ構造)として管理し,共同開発を支援する。 ソースコード管理 wingetでインストール可能。
TensorFlow pipでインストールする。Googleが開発した機械学習フレームワーク。WindowsネイティブではTF 2.10が最後のGPU対応リリースであり,TF 2.11以降はGPU非対応である。@tf.function(グラフモード実行用デコレータ)による最適化や,LiteRT(旧TensorFlow Lite:軽量推論ランタイム)によるエッジデバイス展開に対応する。 機械学習,モデル展開 pipを用いてインストール可能。
PyTorch pipでインストールする。Metaが開発した機械学習フレームワーク。動的計算グラフ(実行時にグラフを構築する方式)による柔軟な記述ができる。CUDA 12.8・cuDNN同梱のwheelは pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu128 でインストールできる(別途CUDAのインストール不要)。 機械学習モデル開発 pipを用いてインストール可能。
Scratch MITメディアラボが開発したビジュアルプログラミング環境のデスクトップアプリ版。ブロックを組み合わせてプログラムを作成し,計算機科学の基礎を学べる。 プログラミング入門 wingetでインストール可能。自動更新を停止して運用する。
NotebookLM Googleが提供するAI搭載のリサーチアシスタント。アップロードした文書群をもとにAIが要約・質問応答・音声概要の生成を行う。 文書の整理・要約・調査 Webサービスのためwingetでのインストールは不要。Googleアカウントが必要。Chromeの--appフラグによりスタートメニューにショートカットを作成して利用する。
Google Colaboratory Googleが提供するクラウドベースのJupyter Notebook環境。ブラウザ上でPythonコードを記述・実行でき,無料でGPU・TPUを利用した機械学習の処理が可能である。Google Driveと連携し,ノートブックの保存・共有を行える。 AI開発,機械学習,データ解析 Webサービスのためwingetでのインストールは不要。Googleアカウントが必要。Chromeの--appフラグによりスタートメニューにショートカットを作成して利用する。Google Driveの拡張機能として連携設定が可能。
Google AI Studio Googleが提供するGemini APIの開発者向けプラットフォーム。プロンプトの設計・テスト,APIキーの発行,AIアプリのプロトタイピングをブラウザ上で行える。無料枠でGeminiモデルを利用できる。 AI開発,プロンプト設計 Webサービスのためwingetでのインストールは不要。Googleアカウントが必要。Chromeの--appフラグによりスタートメニューにショートカットを作成して利用する。
Visual Studio Code LSP(Language Server Protocol:エディタと言語サーバー間の通信を標準化するプロトコル)対応のコードエディタ。拡張機能により各種言語の開発環境として使用できる。 コード編集 wingetでインストール可能。
VSCodium Visual Studio Codeのオープンソースビルド。テレメトリ(利用状況の送信)が無効化されており,Microsoft独自の拡張機能マーケットプレイスの代わりにOpen VSXを使用する。機能面はVisual Studio Codeとほぼ同等である。 コード編集 wingetでインストール可能。Pylanceなど一部の拡張機能はOpen VSXで提供されていないため利用できない。Open VSXで提供される拡張機能は安定性が異なる場合がある(Claude Code拡張機能がOpen VSXで一時的にmalicious判定を受けた事例あり)。

インストールコマンドの詳細説明と,ここでインストールされるコードエディタとAI支援拡張機能の概要説明は,別ページ(Windows Python 開発環境,ビルドツール,言語処理系,AI支援構築ガイド )に記載している。

インストールコマンドの実行方法

管理者権限コマンドプロンプトを起動する (手順:Windowsキーまたはスタートメニュー → cmd と入力 → 右クリック → 「管理者として実行」)。 そして,コマンド全体をコマンドプロンプトにコピー&ペーストする。

インストールコマンド


REM ============================================================
REM 開発環境セットアップ用コマンド(管理者権限のcmdで実行)
REM バッチファイルではなく、管理者権限で起動したコマンドプロンプトに
REM 貼り付けて実行することを想定
REM ============================================================

REM 管理者権限チェック
net session >nul 2>&1
if errorlevel 1 ( echo [エラー] 管理者権限で実行してください & pause & exit /b 1 )

REM winget パッケージ一覧のローカルキャッシュを更新
winget source update

REM ============================================================
REM パス長制限の解除 (LongPathsEnabled)
REM ============================================================
reg add "HKLM\SYSTEM\CurrentControlSet\Control\FileSystem" /v LongPathsEnabled /t REG_DWORD /d 1 /f
reg query "HKLM\SYSTEM\CurrentControlSet\Control\FileSystem" /v LongPathsEnabled

REM ============================================================
REM 一時ファイル保存先 (TEMP / TMP)
REM ============================================================
REM C:\TEMP に変更し、パス長問題を回避しやすくする
if not exist C:\TEMP mkdir C:\TEMP
set "TEMP=C:\TEMP"
set "TMP=C:\TEMP"
powershell -NoProfile -Command "[Environment]::SetEnvironmentVariable('TEMP','C:\TEMP','Machine'); [Environment]::SetEnvironmentVariable('TMP','C:\TEMP','Machine')"

REM ============================================================
REM CMake
REM ============================================================
winget install --scope machine --id Kitware.CMake -e --silent --disable-interactivity --force --accept-source-agreements --accept-package-agreements --override "/qn /norestart ADD_CMAKE_TO_PATH=System"

REM ============================================================
REM Visual C++ 再頒布可能パッケージ (VCRedist 2015-)
REM ============================================================
winget install --scope machine --id Microsoft.VCRedist.2015+.x64 -e --silent --disable-interactivity --force --accept-source-agreements --accept-package-agreements --override "/quiet /norestart"

REM ============================================================
REM Visual Studio Build Tools + Desktop development with C++
REM (VCTools、MSBuildTools、CMake連携、Clang、Windows 11 SDK)
REM ============================================================
REM 進行中のインストーラーを停止(ロック競合回避)
taskkill /F /IM vs_setup.exe /T >nul 2>&1
taskkill /F /IM vs_installer.exe /T >nul 2>&1
taskkill /F /IM vs_installerservice.exe /T >nul 2>&1
taskkill /F /IM msiexec.exe /T >nul 2>&1

REM 未インストール時: winget で新規インストール
REM インストール済み時: setup.exe modify でコンポーネント追加(バージョンは変更しない)
winget list --id Microsoft.VisualStudio.BuildTools 2>nul | findstr /i "BuildTools" >nul 2>&1
if %ERRORLEVEL% EQU 0 (
    for /f "usebackq delims=" %P in (`"C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe" -products Microsoft.VisualStudio.Product.BuildTools -property installationPath`) do start /wait "" "C:\Program Files (x86)\Microsoft Visual Studio\Installer\setup.exe" modify --installPath "%P" --add Microsoft.VisualStudio.Workload.VCTools --add Microsoft.VisualStudio.Workload.MSBuildTools --add Microsoft.VisualStudio.Component.VC.CMake.Project --add Microsoft.VisualStudio.Component.VC.Llvm.Clang --add Microsoft.VisualStudio.Component.VC.Llvm.ClangToolset --add Microsoft.VisualStudio.Component.Windows11SDK.26100 --includeRecommended --quiet --norestart --nocache
) else (
    winget install --scope machine --id Microsoft.VisualStudio.BuildTools -e --silent --disable-interactivity --force --accept-source-agreements --accept-package-agreements --override "--quiet --wait --norestart --nocache --add Microsoft.VisualStudio.Workload.VCTools --includeRecommended --add Microsoft.VisualStudio.Workload.MSBuildTools --add Microsoft.VisualStudio.Component.VC.CMake.Project --add Microsoft.VisualStudio.Component.VC.Llvm.Clang --add Microsoft.VisualStudio.Component.VC.Llvm.ClangToolset --add Microsoft.VisualStudio.Component.Windows11SDK.26100"
)

REM 破損時の修復(任意、動作がおかしくなった場合)
REM "C:\Program Files (x86)\Microsoft Visual Studio\Installer\setup.exe" repair --installPath "C:\Program Files (x86)\Microsoft Visual Studio\18\BuildTools" --quiet --norestart
REM 導入確認(インストールパスが表示されれば正常)
"C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe" -products * -requires Microsoft.VisualStudio.Workload.VCTools -property installationPath

REM ============================================================
REM CUDA 12.8
REM ============================================================
winget install --scope machine --id Nvidia.CUDA --version 12.8 -e --silent --disable-interactivity --force --uninstall-previous --accept-source-agreements --accept-package-agreements --override "-s -n"

REM 旧バージョンの CUDA 統合ファイルが BuildTools 側に残っている場合は削除
del "C:\Program Files (x86)\Microsoft Visual Studio\18\BuildTools\MSBuild\Microsoft\VC\v180\BuildCustomizations\CUDA 12.3.*" 2>nul

REM ============================================================
REM Rust (rustup, cargo)
REM ============================================================
REM Rust 用環境変数の設定(現セッション + システム全体)
set "RUSTUP_HOME=C:\Rust\rustup"
set "CARGO_HOME=C:\Rust\cargo"
powershell -NoProfile -Command "[Environment]::SetEnvironmentVariable('RUSTUP_HOME','C:\Rust\rustup','Machine'); [Environment]::SetEnvironmentVariable('CARGO_HOME','C:\Rust\cargo','Machine')"

REM rustup-init をダウンロードしてシステム全体にインストール
curl -L -f --retry 3 --retry-delay 2 --connect-timeout 30 -o "%TEMP%\rustup-init.exe" https://static.rust-lang.org/rustup/dist/x86_64-pc-windows-msvc/rustup-init.exe
rustup self uninstall -y
rmdir /s /q %CARGO_HOME%
rmdir /s /q %RUSTUP_HOME%
"%TEMP%\rustup-init.exe" -y
del "%TEMP%\rustup-init.exe" 2>nul

REM cargo の bin を PATH 先頭に追加(Rust ツールチェーンを優先)
powershell -NoProfile -Command "$p='C:\Rust\cargo\bin'; $c=[Environment]::GetEnvironmentVariable('Path','Machine'); if((Test-Path $p) -and (';'+$c+';' -notlike \"*;$p;*\")){[Environment]::SetEnvironmentVariable('Path',\"$p;$c\",'Machine')}"

REM ============================================================
REM Python 3.12
REM ============================================================
REM Python 3.12 をシステム領域にインストール
winget install --id Python.Python.3.12 -e --scope machine --silent --accept-source-agreements --accept-package-agreements --override "/quiet InstallAllUsers=1 PrependPath=1 Include_test=0 Include_pip=1 Include_launcher=1 InstallLauncherAllUsers=1 TargetDir=\"C:\Program Files\Python312\""

REM Python と Scripts を PATH 先頭に追加
powershell -NoProfile -Command "$p='C:\Program Files\Python312'; $s=\"$p\Scripts\"; $c=[Environment]::GetEnvironmentVariable('Path','Machine'); if((Test-Path $p) -and (';'+$c+';' -notlike \"*;$p;*\") -and (';'+$c+';' -notlike \"*;$s;*\")){[Environment]::SetEnvironmentVariable('Path',\"$p;$s;$c\",'Machine')}"

REM 現セッション用の変数
set "PYTHON_PATH=C:\Program Files\Python312"
set "PYTHON=%PYTHON_PATH%\python.exe"
set "PIP=%PYTHON_PATH%\Scripts\pip.exe"

REM pip / wheel の更新
"%PYTHON%" -m pip install --no-user -U pip wheel

REM ============================================================
REM Git
REM ============================================================
winget install --scope machine --id Git.Git -e --silent --disable-interactivity --force --accept-source-agreements --accept-package-agreements --override "/VERYSILENT /NORESTART /NOCANCEL /SP- /CLOSEAPPLICATIONS /RESTARTAPPLICATIONS /COMPONENTS=""icons,ext\reg\shellhere,assoc,assoc_sh"" /o:PathOption=Cmd /o:CRLFOption=CRLFCommitAsIs /o:BashTerminalOption=MinTTY /o:DefaultBranchOption=main /o:EditorOption=VIM /o:SSHOption=OpenSSH /o:UseCredentialManager=Enabled /o:PerformanceTweaksFSCache=Enabled /o:EnableSymlinks=Disabled /o:EnableFSMonitor=Disabled"

REM ============================================================
REM cuDNN 手動インストール案内
REM ============================================================
REM TensorFlow など cuDNN を個別に必要とするフレームワーク向け
REM PyTorch の wheel には cuDNN が同梱されているため別途不要
echo ============================================================
echo cuDNN は手動インストールが必要です
echo 1. https://developer.nvidia.com/cudnn にアクセス
echo 2. NVIDIA Developer Program に登録(無料)
echo 3. cuDNN 9.x for CUDA 12 をダウンロード
echo 4. 解凍後、bin/include/lib フォルダの中身を
echo    C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.8
echo    の対応フォルダにコピー
echo ============================================================

REM ============================================================
REM Python パッケージ (TensorFlow / PyTorch 他)
REM ============================================================
REM TensorFlow と関連パッケージ
"%PIP%" install --no-user -U tensorflow tf-keras flatbuffers flatgeobuf protobuf

REM numpy と PyTorch(CUDA 12.8 対応 wheel)、pip キャッシュを全削除
set "CUDA_TAG=cu128"
"%PIP%" install --no-user -U numpy torch torchvision torchaudio --index-url https://download.pytorch.org/whl/%CUDA_TAG%
"%PIP%" install -U --no-user scipy pillow pandas
"%PIP%" uninstall -y opencv-python-headless opencv-contrib-python-headless opencv-python
"%PIP%" install --no-user --force-reinstall opencv-contrib-python
"%PIP%" cache purge

REM ============================================================
REM Scratch 3
REM ============================================================
winget install --scope machine --id MITMediaLab.Scratch.3 -e --silent --disable-interactivity --force --accept-source-agreements --accept-package-agreements --override "/S /allusers"

REM Scratch 3 の自動更新を無効化
echo provider: generic> "C:\Program Files (x86)\Scratch 3\resources\app-update.yml"
echo url: http://127.0.0.1:0/no-update>> "C:\Program Files (x86)\Scratch 3\resources\app-update.yml"
type "C:\Program Files (x86)\Scratch 3\resources\app-update.yml"

REM ============================================================
REM Google Web サービスのアプリモード・ショートカット
REM ============================================================
REM Chrome の --app フラグで、アドレスバーやタブのない独立ウィンドウで起動する
REM 実行後、スタートメニュー(現在のユーザー)にショートカットが作成される
set "CHROME=%ProgramFiles%\Google\Chrome\Application\chrome.exe"
set "STARTMENU=%APPDATA%\Microsoft\Windows\Start Menu\Programs"

REM NotebookLM
powershell -NoProfile -Command "$ws=New-Object -ComObject WScript.Shell; $sc=$ws.CreateShortcut('%STARTMENU%\NotebookLM.lnk'); $sc.TargetPath='%CHROME%'; $sc.Arguments='--app=https://notebooklm.google.com/'; $sc.Description='NotebookLM'; $sc.Save()"

REM Google Colaboratory
powershell -NoProfile -Command "$ws=New-Object -ComObject WScript.Shell; $sc=$ws.CreateShortcut('%STARTMENU%\Google Colaboratory.lnk'); $sc.TargetPath='%CHROME%'; $sc.Arguments='--app=https://colab.research.google.com/'; $sc.Description='Google Colaboratory'; $sc.Save()"

REM Google AI Studio
powershell -NoProfile -Command "$ws=New-Object -ComObject WScript.Shell; $sc=$ws.CreateShortcut('%STARTMENU%\Google AI Studio.lnk'); $sc.TargetPath='%CHROME%'; $sc.Arguments='--app=https://aistudio.google.com/'; $sc.Description='Google AI Studio'; $sc.Save()"

echo スタートメニューにショートカットを作成しました

REM ============================================================
REM VSCodium
REM ============================================================
REM 既存の VSCodium と、拡張機能・設定・キャッシュを一掃
winget uninstall -e --id VSCodium.VSCodium --silent --disable-interactivity --accept-source-agreements
rmdir /s /q C:\ProgramData\vscodium-extensions 2>nul
rmdir /s /q "%APPDATA%\VSCodium" 2>nul
rmdir /s /q "%USERPROFILE%\.vscode-oss" 2>nul

REM VSCodium をシステム領域に新規インストール
winget install --scope machine --id VSCodium.VSCodium -e --silent --accept-source-agreements --accept-package-agreements

REM 全ユーザー共有の拡張機能フォルダを作成
mkdir C:\ProgramData\vscodium-extensions 2>nul
icacls "C:\ProgramData\vscodium-extensions" /grant "Everyone:(OI)(CI)M" /T

REM スタートメニューのショートカットを --extensions-dir 付きで再作成
rmdir /s /q "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\VSCodium" 2>nul
powershell -NoProfile -Command "$s=New-Object -ComObject WScript.Shell; $lnk=$s.CreateShortcut('C:\ProgramData\Microsoft\Windows\Start Menu\Programs\VSCodium.lnk'); $lnk.TargetPath='C:\Program Files\VSCodium\VSCodium.exe'; $lnk.Arguments='--extensions-dir \"C:\ProgramData\vscodium-extensions\"'; $lnk.Save()"

REM ファイル / フォルダ右クリックの「VSCodium で開く」を登録
reg add "HKLM\SOFTWARE\Classes\*\shell\VSCodium\command" /ve /d "\"C:\Program Files\VSCodium\VSCodium.exe\" --extensions-dir \"C:\ProgramData\vscodium-extensions\" \"%1\"" /f
reg add "HKLM\SOFTWARE\Classes\Directory\shell\VSCodium\command" /ve /d "\"C:\Program Files\VSCodium\VSCodium.exe\" --extensions-dir \"C:\ProgramData\vscodium-extensions\" \"%1\"" /f
reg add "HKLM\SOFTWARE\Classes\Directory\Background\shell\VSCodium\command" /ve /d "\"C:\Program Files\VSCodium\VSCodium.exe\" --extensions-dir \"C:\ProgramData\vscodium-extensions\" \"%V\"" /f

REM 拡張機能のインストール(Pylance は Open VSX に無いためスキップ)
set "CODIUM=C:\Program Files\VSCodium\bin\codium.cmd"
"%CODIUM%" --extensions-dir "C:\ProgramData\vscodium-extensions" --install-extension ms-python.python
"%CODIUM%" --extensions-dir "C:\ProgramData\vscodium-extensions" --install-extension ms-python.debugpy
"%CODIUM%" --extensions-dir "C:\ProgramData\vscodium-extensions" --install-extension MS-CEINTL.vscode-language-pack-ja
"%CODIUM%" --extensions-dir "C:\ProgramData\vscodium-extensions" --install-extension saoudrizwan.claude-dev
"%CODIUM%" --extensions-dir "C:\ProgramData\vscodium-extensions" --install-extension rust-lang.rust-analyzer
"%CODIUM%" --extensions-dir "C:\ProgramData\vscodium-extensions" --install-extension tamasfe.even-better-toml
REM Anthropic 公式の Claude Code 拡張機能(Open VSX 上での安定性に注意)
"%CODIUM%" --extensions-dir "C:\ProgramData\vscodium-extensions" --install-extension anthropic.claude-code
"%CODIUM%" --extensions-dir "C:\ProgramData\vscodium-extensions" --install-extension almenon.arepl
"%CODIUM%" --extensions-dir "C:\ProgramData\vscodium-extensions" --list-extensions --show-versions

REM settings.json を作成(自動更新オフ、Python、Claude Code 設定)
mkdir "%APPDATA%\VSCodium\User" 2>nul
"%PYTHON%" -c "import json,os;data={'update.mode':'none','extensions.autoUpdate':False,'python.defaultInterpreterPath':r'C:\Program Files\Python312\python.exe','claudeCode.environmentVariables':[{'name':'ANTHROPIC_API_KEY','value':'not-needed'},{'name':'ANTHROPIC_AUTH_TOKEN','value':'ollama'},{'name':'ANTHROPIC_BASE_URL','value':'http://localhost:11434'},{'name':'ANTHROPIC_MODEL','value':'glm-4.7-flash'},{'name':'CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC','value':'1'}]};p=os.path.join(os.environ['APPDATA'],'VSCodium','User','settings.json');open(p,'w',encoding='utf-8').write(json.dumps(data,indent=4));print('Done:',p)"

REM ============================================================
REM Microsoft Visual Studio Code
REM ============================================================
winget uninstall -e --id Microsoft.VisualStudioCode --silent --disable-interactivity --accept-source-agreements
rmdir /s /q C:\ProgramData\vscode-extensions 2>nul
rmdir /s /q "%APPDATA%\Code" 2>nul
rmdir /s /q "%USERPROFILE%\.vscode" 2>nul
rmdir /s /q "%LOCALAPPDATA%\Microsoft\vscode-update" 2>nul

REM 自動更新の抑止ポリシーを削除(いったんデフォルトに戻す)
reg delete "HKLM\SOFTWARE\Policies\Microsoft\VSCode" /v "UpdateMode" /f 2>nul

REM VS Code をシステム領域に新規インストール
winget install --scope machine --id Microsoft.VisualStudioCode -e --silent --accept-source-agreements --accept-package-agreements

REM 全ユーザー共有の拡張機能フォルダ
mkdir C:\ProgramData\vscode-extensions 2>nul
icacls "C:\ProgramData\vscode-extensions" /grant "Everyone:(OI)(CI)M" /T

REM スタートメニューのショートカットを --extensions-dir 付きで再作成
rmdir /s /q "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Visual Studio Code" 2>nul
del "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Visual Studio Code.lnk" 2>nul
powershell -NoProfile -Command "$s=New-Object -ComObject WScript.Shell; $lnk=$s.CreateShortcut('C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Visual Studio Code.lnk'); $lnk.TargetPath='C:\Program Files\Microsoft VS Code\Code.exe'; $lnk.Arguments='--extensions-dir \"C:\ProgramData\vscode-extensions\"'; $lnk.Save()"
REM ショートカットの検証
powershell -NoProfile -Command "$s=New-Object -ComObject WScript.Shell; $lnk=$s.CreateShortcut('C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Visual Studio Code.lnk'); Write-Host 'TargetPath:' $lnk.TargetPath; Write-Host 'Arguments:' $lnk.Arguments"

REM ファイル / フォルダ右クリックの「Code で開く」を登録
reg add "HKLM\SOFTWARE\Classes\*\shell\VSCode\command" /ve /d "\"C:\Program Files\Microsoft VS Code\Code.exe\" --extensions-dir \"C:\ProgramData\vscode-extensions\" \"%1\"" /f
reg add "HKLM\SOFTWARE\Classes\Directory\shell\VSCode\command" /ve /d "\"C:\Program Files\Microsoft VS Code\Code.exe\" --extensions-dir \"C:\ProgramData\vscode-extensions\" \"%1\"" /f
reg add "HKLM\SOFTWARE\Classes\Directory\Background\shell\VSCode\command" /ve /d "\"C:\Program Files\Microsoft VS Code\Code.exe\" --extensions-dir \"C:\ProgramData\vscode-extensions\" \"%V\"" /f

REM --extensions-dir 付きで起動する code.cmd ラッパを作成
REM (%* を echo で書くと対話的 cmd で失われるため、PowerShell で [char]37+'*' を書き出す)
powershell -NoProfile -Command "$pct=[char]37; $q=[char]34; $c='@echo off'+[char]13+[char]10+$q+'C:\Program Files\Microsoft VS Code\bin\code.cmd'+$q+' --extensions-dir '+$q+'C:\ProgramData\vscode-extensions'+$q+' '+$pct+'*'+[char]13+[char]10; [IO.File]::WriteAllText('C:\ProgramData\vscode-extensions\vscode.cmd',$c,[Text.Encoding]::ASCII)"

REM 拡張機能のインストール
set "CODE=C:\Program Files\Microsoft VS Code\bin\code.cmd"
"%CODE%" --extensions-dir "C:\ProgramData\vscode-extensions" --uninstall-extension GitHub.copilot
"%CODE%" --extensions-dir "C:\ProgramData\vscode-extensions" --uninstall-extension GitHub.copilot-chat
"%CODE%" --extensions-dir "C:\ProgramData\vscode-extensions" --install-extension ms-python.python
"%CODE%" --extensions-dir "C:\ProgramData\vscode-extensions" --install-extension ms-python.vscode-pylance
"%CODE%" --extensions-dir "C:\ProgramData\vscode-extensions" --install-extension ms-python.debugpy
"%CODE%" --extensions-dir "C:\ProgramData\vscode-extensions" --install-extension MS-CEINTL.vscode-language-pack-ja
"%CODE%" --extensions-dir "C:\ProgramData\vscode-extensions" --install-extension saoudrizwan.claude-dev
"%CODE%" --extensions-dir "C:\ProgramData\vscode-extensions" --install-extension rust-lang.rust-analyzer
"%CODE%" --extensions-dir "C:\ProgramData\vscode-extensions" --install-extension tamasfe.even-better-toml
"%CODE%" --extensions-dir "C:\ProgramData\vscode-extensions" --install-extension anthropic.claude-code
"%CODE%" --extensions-dir "C:\ProgramData\vscode-extensions" --install-extension almenon.arepl
"%CODE%" --extensions-dir "C:\ProgramData\vscode-extensions" --list-extensions --show-versions

REM settings.json を作成(自動更新オフ、Python、Claude Code 設定)
mkdir "%APPDATA%\Code\User" 2>nul
"%PYTHON%" -c "import json,os;data={'update.mode':'none','update.enableWindowsBackgroundUpdates':False,'extensions.autoUpdate':False,'python.defaultInterpreterPath':r'C:\Program Files\Python312\python.exe','claudeCode.environmentVariables':[{'name':'ANTHROPIC_API_KEY','value':'not-needed'},{'name':'ANTHROPIC_AUTH_TOKEN','value':'ollama'},{'name':'ANTHROPIC_BASE_URL','value':'http://localhost:11434'},{'name':'ANTHROPIC_MODEL','value':'glm-4.7-flash'},{'name':'CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC','value':'1'}]};p=os.path.join(os.environ['APPDATA'],'Code','User','settings.json');open(p,'w',encoding='utf-8').write(json.dumps(data,indent=4));print('Done:',p)"

REM 自動更新の抑止ポリシー(settings.json に加えて、レジストリ側でも明示的にオフ)
reg add "HKLM\SOFTWARE\Policies\Microsoft\VSCode" /v "UpdateMode" /t REG_SZ /d "none" /f

echo.
echo === セットアップ完了 ===

インストール確認のために次のコマンドを実行する。


REM ============================================================
REM インストール確認チェック
REM ============================================================
echo.
echo ===== インストール確認 =====
echo.

echo [パス長制限の解除]
reg query "HKLM\SYSTEM\CurrentControlSet\Control\FileSystem" /v LongPathsEnabled 2>nul | findstr "0x1" >nul && echo   LongPathsEnabled = 1 (有効) || echo   *** 未設定または無効 ***

echo [環境変数 TEMP/TMP]
powershell -NoProfile -Command "$t=[Environment]::GetEnvironmentVariable('TEMP','Machine'); $u=[Environment]::GetEnvironmentVariable('TMP','Machine'); Write-Host \"  TEMP=$t\"; Write-Host \"  TMP=$u\""

echo [CMake]
cmake --version 2>nul || echo   *** 未検出 ***

echo [VC++ ランタイム]
reg query "HKLM\SOFTWARE\Microsoft\VisualStudio\14.0\VC\Runtimes\x64" /v Version 2>nul || echo   *** 未検出 ***

echo [Build Tools (VCTools)]
"C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe" -products * -requires Microsoft.VisualStudio.Workload.VCTools -property installationVersion 2>nul || echo   *** 未検出 ***

echo [CUDA]
nvcc --version 2>nul || echo   *** 未検出 ***

echo [Rust]
rustc --version 2>nul || echo   *** 未検出 ***

echo [Python]
"C:\Program Files\Python312\python.exe" --version 2>nul || echo   *** 未検出 ***

echo [Git]
git --version 2>nul || echo   *** 未検出 ***

echo [numpy]
"C:\Program Files\Python312\python.exe" -c "import numpy; print('  numpy', numpy.__version__)" 2>nul || echo   *** 未検出 ***

echo [TensorFlow]
"C:\Program Files\Python312\python.exe" -c "import tensorflow; print('  TensorFlow', tensorflow.__version__)" 2>nul || echo   *** 未検出 ***

echo [PyTorch]
"C:\Program Files\Python312\python.exe" -c "import torch; print('  PyTorch', torch.__version__); print('  CUDA available:', torch.cuda.is_available())" 2>nul || echo   *** 未検出 ***

echo [Scratch 3]
if exist "C:\Program Files (x86)\Scratch 3\Scratch 3.exe" (echo [検出] Scratch 3) else echo [未検出] Scratch 3

echo [VS Code]
"C:\Program Files\Microsoft VS Code\bin\code.cmd" --version 2>nul || echo   *** 未検出 ***

echo [VSCodium]
"C:\Program Files\VSCodium\bin\codium.cmd" --version 2>nul || echo   *** 未検出 ***

echo [Google サービス ショートカット]
if exist "%APPDATA%\Microsoft\Windows\Start Menu\Programs\NotebookLM.lnk" (echo   [検出] NotebookLM) else echo   *** 未検出 *** NotebookLM
if exist "%APPDATA%\Microsoft\Windows\Start Menu\Programs\Google Colaboratory.lnk" (echo   [検出] Google Colaboratory) else echo   *** 未検出 *** Google Colaboratory
if exist "%APPDATA%\Microsoft\Windows\Start Menu\Programs\Google AI Studio.lnk" (echo   [検出] Google AI Studio) else echo   *** 未検出 *** Google AI Studio

REM VS Code, VSCodium の拡張機能の一覧表示
echo.
echo [VSCodium 拡張機能]
"C:\Program Files\VSCodium\bin\codium.cmd" --extensions-dir "C:\ProgramData\vscodium-extensions" --list-extensions --show-versions
echo.
echo [VS Code 拡張機能]
"C:\Program Files\Microsoft VS Code\bin\code.cmd" --extensions-dir "C:\ProgramData\vscode-extensions" --list-extensions --show-versions

REM Rust, Python, C++ の動作チェック
echo.
echo ===== 動作チェック =====
echo.
echo [Rust]
echo fn main(){println!("Rust OK");} > test.rs && rustc test.rs -o test.exe && test.exe && del test.rs test.exe

echo [Python]
"C:\Program Files\Python312\python.exe" -c "print('Python OK')"

echo [C++ (MS Build Tools)]
for /f "delims=" %P in ('"C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe" -products * -requires Microsoft.VisualStudio.Workload.VCTools -property installationPath') do "%P\VC\Auxiliary\Build\vcvarsall.bat" x64 >nul 2>&1 && echo #include ^<iostream^> > test.cpp && echo int main(){std::cout^<^<"C++ OK";return 0;} >> test.cpp && cl test.cpp /Fe:test.exe /nologo >nul 2>&1 && test.exe && del test.cpp test.exe test.obj

echo.
echo ===== 確認完了 =====

VS Code / VSCodium 拡張機能の説明

4. ローカル生成AI

クラウドサービスを使わず、自分のPC上でLLM(大規模言語モデル)や画像生成AIを動作させるためのツール群である。インターネット接続なしでAIを利用でき、データのプライバシーを保てる。NVIDIA製GPUを搭載したPCでは動作が高速になる。

ソフトウェア説明用途備考
llama.cppC/C++実装のローカルLLM推論エンジン。GGUF形式の量子化モデルを動作させる。Ollamaの内部エンジンとしても使用される。ローカルLLM推論基盤
OllamaPC上でLLMを動作させるローカルLLMランタイム。APIを通じて外部アプリケーションから利用できる。localhost:11434でHTTPサーバーとして動作する。wingetでインストール可能(winget install Ollama.Ollama)。ローカルLLM運用
ollama-chatOllama用のWebベースチャットUI。pip install ollama-chatでインストールし、ollama-chatコマンドで起動する。ブラウザからOllamaのモデルと対話できる。チャットUI
Gemma 4 26B-A4BGoogle DeepMind開発のMoE(Mixture-of-Experts)アーキテクチャを採用したマルチモーダルモデル。総パラメータ26Bのうち約4Bをアクティブに使用する。テキストと画像の入力に対応する。256Kコンテキスト長。140以上の言語をサポートする。Thinking(段階的推論)モードと関数呼び出しに対応する。Apache 2.0ライセンス。全般・高度な論理的思考・マルチモーダル(テキスト+画像)VRAM 約18GB(Q4_K_M量子化時)
qwen3.6 27B Alibaba開発のGated Delta Networksハイブリッドアーキテクチャを採用したマルチモーダルdenseモデル。262Kコンテキスト長に対応する。201言語をサポートし、日本語の理解と論理的推論ができる。思考モード(Thinking)対応・ツール呼び出し対応。Apache 2.0ライセンス。 日本語タスク(会話、要約、翻訳など)・マルチモーダル(テキスト+画像) VRAM 約17GB(Q4_K_M量子化時)
qwen3.6 35B-A3B Alibaba開発のGated Delta Networks + sparse MoEハイブリッドアーキテクチャを採用したマルチモーダルモデル。総パラメータ35Bのうち約3Bをアクティブに使用し、高速な推論を実現する。262Kコンテキスト長に対応する。201言語をサポートする。品質はqwen3.6-27Bに劣るが、推論速度で優位である。思考モード(Thinking)対応・ツール呼び出し対応。Apache 2.0ライセンス。 日本語タスク(会話、要約、翻訳など)・マルチモーダル(テキスト+画像) VRAM 約24GB(Q4_K_M量子化時)
Llama 3.2 Vision 11BMeta開発のマルチモーダルLLM。テキストと画像の入力に対応し、画像の内容を理解して説明できる。128Kコンテキスト長。Llama 3.2 Community License。マルチモーダル(画像理解)VRAM 約8GB(Q4_K_M量子化時)
deepseek-r1:14bDeepSeek社の推論特化LLM(蒸留版)。chain-of-thought推論で数学・コード・論理タスクに強い。671Bパラメータの本体モデルから蒸留され、同サイズの非推論モデルを大幅に上回る性能を持つ。MITライセンス。数学、コード推論、論理的問題解決VRAM 約10GB(Q4_K_M量子化時)
Qwen3-Coder 30B-A3BAlibaba開発のコーディング特化MoEモデル。総パラメータ30.5Bのうち3.3Bをアクティブに使用する。エージェント的コーディング(Qwen Code、CLINE等)、リポジトリ規模の長文理解に対応する。256Kコンテキスト長(YaRNで最大1Mに拡張可能)。ツール呼び出し対応。Apache 2.0ライセンス。コーディング(サンプルコード作成・コード整形・リファクタリング)、エージェント的コーディングVRAM 約19GB(Q4_K_M量子化時)
glm-4.7-flashZ.ai(Zhipu AI)開発のtool calling対応のMoEモデル。総パラメータ30Bのうち約3Bをアクティブに使用する。200Kコンテキスト長。Claude Code等で使用する。MITライセンス。tool calling、Claude Code連携
ComfyUI画像生成AI用のノードベースGUI。生成パイプラインをノードの接続で視覚的に構成し、Stable Diffusion等のモデルを操作する。AI画像生成
Z-Image TurboAlibaba Tongyi Lab開発の6Bパラメータ画像生成モデル。8ステップ推論で画像を生成する。中英バイリンガルのテキスト描画に対応する。Apache 2.0ライセンス。ComfyUI等から利用する。画像生成VRAM 16GB未満
Qwen-Image-2512Alibaba開発の20Bパラメータ画像生成モデル。人物の写実性とテキスト描画精度を重視した設計で、AI Arenaの10,000回以上のブラインド評価でオープンソースモデル1位の評価を得ている。Apache 2.0ライセンス。ComfyUI等から利用する。画像生成VRAM 約12GB(GGUF Q4_K_M、モデル13.1GB)
Qwen3-TTSAlibaba開発の音声合成モデル(0.6B/1.7B)。10言語に対応し、3秒の音声サンプルからの声クローンや自然言語による声デザインが可能。Apache 2.0ライセンス。音声合成VRAM 約4GB(1.7Bモデル)
faster-whisperOpenAI Whisperの高速実装(CTranslate2ベース)。99言語の音声認識に対応し、元のWhisperより最大4倍高速に動作する。会議・講義の文字起こし、動画の字幕生成に使用する。完全オフラインで動作する。MITライセンス。音声認識(文字起こし)VRAM 約3GB(large-v3モデル)。CPUでも動作
BuzzSourceForgeからダウンロードし、インストールする。OpenAIのWhisperを利用したオフライン音声文字起こし・翻訳ツール。音声・動画ファイルのインポートおよびリアルタイム文字起こしに対応し、CSV、SRT、TXT、VTT形式でエクスポートできる。音声文字起こし
Wan2.2-TI2V-5B(ComfyUI経由)Alibaba開発の動画生成モデル。テキストからの動画生成と画像からの動画生成の両方に対応する。高圧縮VAEにより720p/24fpsの動画を生成する。Apache 2.0ライセンス。動画生成VRAM 約12GB(FP8版)。GGUF Q4_K_M(3.4GB)でさらに少ないVRAMでも動作
FLUX 1.1 Pro UltraBlack Forest Labs開発の高品質画像生成モデル。API経由で利用する(ローカル実行不可)。bfl.aiでアカウントを作成し、APIキーを取得して使用する。従量課金制。高品質画像生成(API)APIエンドポイント: https://api.bfl.ml/

前提条件

以下のソフトウェアが事前にインストールされていること。

インストールコマンドの実行方法

管理者権限コマンドプロンプトを起動する (手順:Windowsキーまたはスタートメニュー → cmd と入力 → 右クリック → 「管理者として実行」)。 wingetの--scope machineオプションでシステム全体にインストールするには、管理者権限が必要である。実行時はコマンド全体をコマンドプロンプトにコピー&ペーストする。

インストールコマンド

REM ============================================================
REM  ローカルLLM・画像生成AI インストールスクリプト(管理者権限で実行)
REM  前提条件:
REM    - Python 3.12 が C:\Program Files\Python312 にインストール済みであること
REM    - Google Chrome がインストール済みであること
REM    - NVIDIA GPU および CUDA 12.8 対応ドライバの利用を推奨
REM      (未搭載の場合は CPU モードで動作するが、
REM       画像生成・音声処理等は大幅に低速となる)
REM ============================================================

REM 管理者権限チェック
net session >nul 2>&1
if errorlevel 1 ( echo [エラー] 管理者権限で実行してください & pause & exit /b 1 )

REM winget パッケージ一覧のローカルキャッシュを更新
winget source update

REM Pythonパス設定
set "PYTHON_PATH=C:\Program Files\Python312"
set "PYTHON=%PYTHON_PATH%\python.exe"
set "PIP=%PYTHON_PATH%\Scripts\pip"

REM Python存在チェック(未インストールの場合はシステム領域にインストール、パス設定)
if not exist "%PYTHON%" echo Python 3.12 が見つかりません。インストールします... & winget install --id Python.Python.3.12 -e --scope machine --silent --accept-source-agreements --accept-package-agreements --override "/quiet InstallAllUsers=1 PrependPath=1 Include_test=0 Include_pip=1 Include_launcher=1 InstallLauncherAllUsers=1 TargetDir=\"C:\Program Files\Python312\"" & powershell -NoProfile -Command "$p='C:\Program Files\Python312'; $s=\"$p\Scripts\"; $c=[Environment]::GetEnvironmentVariable('Path','Machine'); if((Test-Path $p) -and (';'+$c+';' -notlike \"*;$p;*\") -and (';'+$c+';' -notlike \"*;$s;*\")){[Environment]::SetEnvironmentVariable('Path',\"$p;$s;$c\",'Machine')}"

REM Google Chrome存在チェック(未インストールの場合はシステム領域にインストール、自動更新無効化、パス設定)
if not exist "C:\Program Files\Google\Chrome\Application\chrome.exe" winget install --scope machine --id Google.Chrome -e --silent --source winget --disable-interactivity --force --accept-source-agreements --accept-package-agreements --custom "NOGOOGLEUPDATEPING=1" & powershell -NoProfile -Command "New-Item -Path 'HKLM:\SOFTWARE\Policies\Google\Update' -Force | Out-Null; Set-ItemProperty -Path 'HKLM:\SOFTWARE\Policies\Google\Update' -Name 'AutoUpdateCheckPeriodMinutes' -Value 0 -Type DWord; Set-ItemProperty -Path 'HKLM:\SOFTWARE\Policies\Google\Update' -Name 'UpdateDefault' -Value 0 -Type DWord" & powershell -NoProfile -Command "$p='C:\Program Files\Google\Chrome\Application'; $c=[Environment]::GetEnvironmentVariable('Path','Machine'); if((Test-Path $p) -and (';'+$c+';' -notlike \"*;$p;*\")){[Environment]::SetEnvironmentVariable('Path',\"$c;$p\",'Machine')}"


REM ============================================================
REM  1. ツール類のインストール
REM ============================================================

REM llama-cpp のインストール
cd /d %TEMP%
rmdir /s /q llama.cpp
git clone https://github.com/ggml-org/llama.cpp
cd llama.cpp
cmake -B build -DGGML_CUDA=ON -DCMAKE_CUDA_ARCHITECTURES="86;89;120" -DCMAKE_CUDA_FLAGS="-allow-unsupported-compiler" -DCMAKE_INSTALL_PREFIX="C:\llama.cpp"
cmake --build build --config Release -j 8
cmake --install build --config Release
powershell -NoProfile -Command "$p='C:\llama.cpp\bin'; $c=[Environment]::GetEnvironmentVariable('Path','Machine'); if((Test-Path $p) -and (';'+$c+';' -notlike \"*;$p;*\")){[Environment]::SetEnvironmentVariable('Path',\"$c;$p\",'Machine')}"

REM === 1. Ollama 環境変数を Machine スコープで事前設定 ===
REM   インストール前に設定することで、Ollama起動時から正しい設定が読み込まれる
powershell -NoProfile -Command "[System.Environment]::SetEnvironmentVariable('OLLAMA_FLASH_ATTENTION', '1', 'Machine')"
powershell -NoProfile -Command "[System.Environment]::SetEnvironmentVariable('OLLAMA_KV_CACHE_TYPE', 'q8_0', 'Machine')"
REM コンテキスト長:Ollamaのデフォルトは4096。ここでは8192に設定。
REM 用途に応じて値を変更するか、この行を削除して auto に任せる
powershell -NoProfile -Command "[System.Environment]::SetEnvironmentVariable('OLLAMA_CONTEXT_LENGTH', '8192', 'Machine')"
powershell -NoProfile -Command "[System.Environment]::SetEnvironmentVariable('OLLAMA_MODELS', 'C:\Ollama\models', 'Machine')"
set "OLLAMA_FLASH_ATTENTION=1"
set "OLLAMA_KV_CACHE_TYPE=q8_0"
set "OLLAMA_CONTEXT_LENGTH=8192"
set "OLLAMA_MODELS=C:\Ollama\models"

REM === 2. 既存の Ollama プロセスを停止(ファイルロック解除のため) ===
taskkill /IM ollama.exe /F >nul 2>&1
taskkill /IM "ollama app.exe" /F >nul 2>&1

REM === 3. モデルフォルダの作成と権限設定 ===
if not exist "C:\Ollama\models" mkdir "C:\Ollama\models"
icacls "C:\Ollama\models" /grant *S-1-5-32-545:(OI)(CI)(M) /T /C

REM === 4. 既存モデルの移動(ユーザープロファイルに残っている場合) ===
REM   Ollama 停止状態で実行するためファイルロックが起きない
if exist "%USERPROFILE%\.ollama\models" robocopy "%USERPROFILE%\.ollama\models" "C:\Ollama\models" /E /MOVE
if exist "%USERPROFILE%\.ollama\models" rd /s /q "%USERPROFILE%\.ollama\models"

REM === 5. winget パッケージ一覧のローカルキャッシュを更新 ===
winget source update

REM === 6. Ollama のインストール(Inno Setup) ===
winget uninstall --id Ollama.Ollama -e --silent --disable-interactivity --accept-source-agreements
REM uninstall後にプロセスが残ることがあるため再度停止
taskkill /IM ollama.exe /F >nul 2>&1
taskkill /IM "ollama app.exe" /F >nul 2>&1
winget install --id Ollama.Ollama -e --silent --disable-interactivity --force --accept-source-agreements --accept-package-agreements --custom "/DIR=C:\Ollama"
winget upgrade --id Ollama.Ollama -e --silent --disable-interactivity --force --accept-source-agreements --accept-package-agreements --custom "/DIR=C:\Ollama"

REM === 7. Ollama のパス設定(システム PATH に未登録の場合のみ追加) ===
powershell -NoProfile -Command "$p='C:\Ollama'; $c=[Environment]::GetEnvironmentVariable('Path','Machine'); if((Test-Path $p) -and (';'+$c+';' -notlike \"*;$p;*\")){[Environment]::SetEnvironmentVariable('Path',\"$c;$p\",'Machine')}"

REM ============================================================
REM  OLLAMA スタートメニュー
REM ============================================================

REM glm-4.7-flash
powershell -NoProfile -Command "$s=New-Object -ComObject WScript.Shell; $l=$s.CreateShortcut([Environment]::GetFolderPath('CommonPrograms')+'\Ollama GLM4.lnk'); $l.TargetPath='cmd.exe'; $l.Arguments='/k \"start cmd /k ollama serve ^& timeout /t 3 /nobreak ^>nul ^& ollama run glm-4.7-flash\"'; $l.Save()"

REM Gemma 4
powershell -NoProfile -Command "$s=New-Object -ComObject WScript.Shell; $l=$s.CreateShortcut([Environment]::GetFolderPath('CommonPrograms')+'\Ollama Gemma4.lnk'); $l.TargetPath='cmd.exe'; $l.Arguments='/k \"start cmd /k ollama serve ^& timeout /t 3 /nobreak ^>nul ^& ollama run gemma4:26b\"'; $l.Save()"

REM Git をシステム領域にインストール
winget install --scope machine --id Git.Git -e --silent --disable-interactivity --force --accept-source-agreements --accept-package-agreements --override "/VERYSILENT /NORESTART /NOCANCEL /SP- /CLOSEAPPLICATIONS /RESTARTAPPLICATIONS /COMPONENTS=""icons,ext\reg\shellhere,assoc,assoc_sh"" /o:PathOption=Cmd /o:CRLFOption=CRLFCommitAsIs /o:BashTerminalOption=MinTTY /o:DefaultBranchOption=main /o:EditorOption=VIM /o:SSHOption=OpenSSH /o:UseCredentialManager=Enabled /o:PerformanceTweaksFSCache=Enabled /o:EnableSymlinks=Disabled /o:EnableFSMonitor=Disabled"

REM Git のパスを現在のセッションに反映
set "PATH=C:\Program Files\Git\cmd;%PATH%"

REM Ollamaのパスを現在のセッションに反映
set "PATH=C:\Ollama;%PATH%"

REM Ollamaが起動していなければ起動
where ollama >nul 2>&1
if errorlevel 1 echo Ollamaのパスが見つかりません。再起動後に再実行してください。 & exit /b 1
tasklist /fi "imagename eq ollama.exe" | find "ollama.exe" >nul 2>&1
if errorlevel 1 start "" "C:\Ollama\ollama.exe" serve & timeout /t 10 /nobreak >nul

REM ClaudeCode
winget install --scope machine --id Anthropic.ClaudeCode --accept-source-agreements --accept-package-agreements

REM numpy, PyTorch をインストール
set "CUDA_TAG=cu128"
"%PIP%" install --no-user -U numpy torch torchvision torchaudio --index-url https://download.pytorch.org/whl/%CUDA_TAG%

REM ============================================================
REM  ComfyUI インストール
REM ============================================================
echo ComfyUIをインストール中...
"%PIP%" install --no-user huggingface_hub
REM xformers をインストールしているとComfyUIが動作しないという現象があった
"%PIP%" uninstall -y xformers
if exist "C:\ComfyUI\.git" (cd /d C:\ComfyUI && git pull) else (git clone https://github.com/comfyanonymous/ComfyUI.git C:\ComfyUI)
cd /d C:\ComfyUI
"%PIP%" install --no-user -r requirements.txt
REM ComfyUI Manager, ComfyUI GGUF
git clone https://github.com/ltdrdata/ComfyUI-Manager C:\ComfyUI\custom_nodes\ComfyUI-Manager
"%PIP%" install --no-user -r C:\ComfyUI\custom_nodes\ComfyUI-Manager\requirements.txt
git clone https://github.com/city96/ComfyUI-GGUF C:\ComfyUI\custom_nodes\ComfyUI-GGUF
"%PIP%" install --no-user -r C:\ComfyUI\custom_nodes\ComfyUI-GGUF\requirements.txt
mkdir C:\ComfyUI\output
icacls "C:\ComfyUI\output" /grant "Everyone:(OI)(CI)M" /T
REM 1. バッチファイルを作成
echo @echo off > "C:\ComfyUI\start.bat"
echo cd /d C:\ComfyUI >> "C:\ComfyUI\start.bat"
echo start python main.py >> "C:\ComfyUI\start.bat"
echo timeout /t 5 >> "C:\ComfyUI\start.bat"
echo start "" "C:\Program Files\Google\Chrome\Application\chrome.exe" http://127.0.0.1:8188 >> "C:\ComfyUI\start.bat"
REM 2. ショートカットを作成
powershell -Command "$ws = New-Object -ComObject WScript.Shell; $s = $ws.CreateShortcut('C:\ProgramData\Microsoft\Windows\Start Menu\Programs\ComfyUI.lnk'); $s.TargetPath = 'C:\ComfyUI\start.bat'; $s.WorkingDirectory = 'C:\ComfyUI'; $s.Description = 'ComfyUI'; $s.Save()"

REM ============================================================
REM  ollama-chat(チャットUI)
REM ============================================================
echo ollama-chatをインストール中...
"%PIP%" install --no-user ollama-chat

REM ============================================================
REM  Qwen3-TTS インストール(音声合成)
REM ============================================================
echo Qwen3-TTSをインストール中...
"%PIP%" install --no-user qwen-tts

REM ============================================================
REM  faster-whisper インストール(音声認識)
REM ============================================================
echo faster-whisperをインストール中...
"%PIP%" install --no-user faster-whisper

REM ============================================================
REM  Buzz のインストール
REM ============================================================
mkdir "C:\Program Files (x86)\Buzz"
curl -L -o "%TEMP%\Buzz.zip" "https://sourceforge.net/projects/buzz-captions/files/Buzz-1.4.4-Windows-X64.zip/download"
tar -xf "%TEMP%\Buzz.zip" -C "C:\Program Files (x86)\Buzz"
"C:\Program Files (x86)\Buzz\Buzz-1.4.4-windows.exe" /S /AllUsers
del "%TEMP%\Buzz.zip"
powershell -NoProfile -Command "$s=New-Object -ComObject WScript.Shell; $l=$s.CreateShortcut(\"$env:ProgramData\Microsoft\Windows\Start Menu\Programs\Buzz.lnk\"); $l.TargetPath='C:\Program Files (x86)\Buzz\Buzz.exe'; $l.WorkingDirectory='C:\Program Files (x86)\Buzz'; $l.Save()"

REM ============================================================
REM  2. Ollamaモデルのダウンロード(合計約51GB)
REM ============================================================
echo Ollamaモデルをダウンロード中...

REM -----------------------------------------------------------------------
REM Gemma 4 26B-A4B (Google DeepMind)
REM   アーキテクチャ : MoE(総パラメータ 26B / アクティブ 4B)
REM   用途           : 全般・高度な論理的思考・マルチモーダル(テキスト+画像)
REM                    プログラミング・日本語タスク(会話、要約、翻訳など)
REM   サイズ         : 18GB  コンテキスト: 256K
REM -----------------------------------------------------------------------
ollama pull gemma4:26b
ollama pull gemma4:e4b

REM -----------------------------------------------------------------------
REM qwen3.6 27B (Alibaba / Qwen Team)
REM 用途 : 日本語タスク(会話、要約、翻訳など)・マルチモーダル(テキスト+画像)
REM 思考モード(Thinking)対応・ツール呼び出し対応
REM サイズ : 17GB コンテキスト: 262K
REM -----------------------------------------------------------------------
ollama pull qwen3.6:27b

REM -----------------------------------------------------------------------
REM qwen3.6 35B-A3B (Alibaba / Qwen Team)
REM 用途 : 日本語タスク(会話、要約、翻訳など)・マルチモーダル(テキスト+画像)
REM MoEモデル(アクティブ3B)、27Bより高速だが品質は劣る
REM 思考モード(Thinking)対応・ツール呼び出し対応
REM サイズ : 24GB コンテキスト: 262K
REM -----------------------------------------------------------------------
ollama pull qwen3.6:35b-a3b

REM -----------------------------------------------------------------------
REM Llama 3.2 11B Vision Instruct (Meta)
REM   用途   : マルチモーダル(画像理解)
REM   サイズ : 8.0GB  コンテキスト: 128K
REM -----------------------------------------------------------------------
ollama pull llama3.2-vision:11b

REM -----------------------------------------------------------------------
REM Qwen3-Coder 30B-A3B (Alibaba / Qwen Team)
REM   アーキテクチャ : MoE(総パラメータ 30B / アクティブ 3.3B)
REM   用途           : コーディング(サンプルコード作成・コード整形・リファクタリング)
REM                    エージェント的コーディング・リポジトリ規模の長文理解
REM   サイズ         : 19GB  コンテキスト: 256K
REM -----------------------------------------------------------------------
ollama pull qwen3-coder:30b

REM -----------------------------------------------------------------------
REM CyberAgent DeepSeek-R1-Distill-Qwen-14B-Japanese (yuma, Q4_K_M)
REM   用途   : 論理的思考・プログラミング(論理的なデバッグ、アルゴリズム設計、仕様検討)
REM            日本語追加学習済み(CyberAgent 提供ベース)
REM   サイズ : 9.0GB  コンテキスト: 128K
REM   備考   : wao/cyberagent-deepseek-14b は F16 形式(30GB)のため、
REM            同一ベースの量子化版(Q4_K_M)を推奨
REM -----------------------------------------------------------------------
ollama pull yuma/DeepSeek-R1-Distill-Qwen-Japanese:14b

REM -----------------------------------------------------------------------
REM glm-4.7-flash (Z.ai / Zhipu AI)
REM   用途   : tool calling対応のモデル
REM            Claude Code で使用
REM   サイズ : 30B (3B active)  コンテキスト: 200K
REM -----------------------------------------------------------------------
ollama pull glm-4.7-flash

echo.
echo すべてのモデルのダウンロードが完了しました。

echo =================================
echo 利用可能なモデル
ollama list
echo =================================

REM ============================================================
REM  ComfyUI用モデルのダウンロード
REM ============================================================

REM ============================================================
REM ComfyUI モデル一括ダウンロードスクリプト(2026年5月10日修正版)
REM 合計:8ファイル 約46.93 GB
REM 対応:コマンドプロンプト直接貼付 / バッチファイル実行 両対応
REM 繰り返し実行可:存在ファイルはスキップ
REM 失敗時:部分ファイル自動削除(次回実行で完全再取得)
REM VRAM 16GB / RAM 32GB 制約に適合
REM ============================================================
REM [1] z_image_turbo_bf16.safetensors              12.31 GB  Z-Image Turbo 拡散モデル本体(高速画像生成)
REM [2] wan2.2_ti2v_5B_fp16.safetensors             10.00 GB  Wan2.2 TI2V-5B 拡散モデル本体(T2V/I2V 両対応)
REM [3] flux-2-klein-4b.safetensors                  7.75 GB  FLUX.2 Klein 拡散モデル本体(高品質画像生成)
REM [4] qwen_3_4b.safetensors                        8.04 GB  Qwen-3 4B テキストエンコーダ(Z-Image Turbo & FLUX.2 Klein 共用)
REM [5] umt5_xxl_fp8_e4m3fn_scaled.safetensors       6.74 GB  UMT5-XXL fp8 テキストエンコーダ(Wan2.2 用)
REM [6] ae.safetensors                               0.34 GB  Z-Image Turbo 用 VAE
REM [7] wan2.2_vae.safetensors                       1.41 GB  Wan2.2 用 VAE
REM [8] flux2-vae.safetensors                        0.34 GB  FLUX.2 Klein 用 VAE
REM ============================================================

REM === 1. モデル格納ディレクトリ作成 ===
if not exist "C:\ComfyUI\models\diffusion_models" mkdir "C:\ComfyUI\models\diffusion_models"
if not exist "C:\ComfyUI\models\text_encoders"    mkdir "C:\ComfyUI\models\text_encoders"
if not exist "C:\ComfyUI\models\vae"              mkdir "C:\ComfyUI\models\vae"

REM === 2. [1] Z-Image Turbo 拡散モデル本体 ===
if not exist "C:\ComfyUI\models\diffusion_models\z_image_turbo_bf16.safetensors" (
    echo [DL] z_image_turbo_bf16.safetensors
    curl -L --fail --remove-on-error -o "C:\ComfyUI\models\diffusion_models\z_image_turbo_bf16.safetensors" "https://huggingface.co/Comfy-Org/z_image_turbo/resolve/main/split_files/diffusion_models/z_image_turbo_bf16.safetensors"
) else (echo [SKIP] z_image_turbo_bf16.safetensors)

REM === 3. [2] Wan2.2 TI2V-5B 拡散モデル本体 ===
if not exist "C:\ComfyUI\models\diffusion_models\wan2.2_ti2v_5B_fp16.safetensors" (
    echo [DL] wan2.2_ti2v_5B_fp16.safetensors
    curl -L --fail --remove-on-error -o "C:\ComfyUI\models\diffusion_models\wan2.2_ti2v_5B_fp16.safetensors" "https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged/resolve/main/split_files/diffusion_models/wan2.2_ti2v_5B_fp16.safetensors"
) else (echo [SKIP] wan2.2_ti2v_5B_fp16.safetensors)

REM === 4. [3] FLUX.2 Klein 拡散モデル本体 ===
if not exist "C:\ComfyUI\models\diffusion_models\flux-2-klein-4b.safetensors" (
    echo [DL] flux-2-klein-4b.safetensors
    curl -L --fail --remove-on-error -o "C:\ComfyUI\models\diffusion_models\flux-2-klein-4b.safetensors" "https://huggingface.co/Comfy-Org/flux2-klein/resolve/main/split_files/diffusion_models/flux-2-klein-4b.safetensors"
) else (echo [SKIP] flux-2-klein-4b.safetensors)

REM === 5. [4] Qwen-3 4B テキストエンコーダ(Z-Image Turbo & FLUX.2 Klein 共用) ===
if not exist "C:\ComfyUI\models\text_encoders\qwen_3_4b.safetensors" (
    echo [DL] qwen_3_4b.safetensors
    curl -L --fail --remove-on-error -o "C:\ComfyUI\models\text_encoders\qwen_3_4b.safetensors" "https://huggingface.co/Comfy-Org/z_image_turbo/resolve/main/split_files/text_encoders/qwen_3_4b.safetensors"
) else (echo [SKIP] qwen_3_4b.safetensors)

REM === 6. [5] UMT5-XXL fp8 テキストエンコーダ(Wan2.2 用) ===
if not exist "C:\ComfyUI\models\text_encoders\umt5_xxl_fp8_e4m3fn_scaled.safetensors" (
    echo [DL] umt5_xxl_fp8_e4m3fn_scaled.safetensors
    curl -L --fail --remove-on-error -o "C:\ComfyUI\models\text_encoders\umt5_xxl_fp8_e4m3fn_scaled.safetensors" "https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged/resolve/main/split_files/text_encoders/umt5_xxl_fp8_e4m3fn_scaled.safetensors"
) else (echo [SKIP] umt5_xxl_fp8_e4m3fn_scaled.safetensors)

REM === 7. [6] Z-Image Turbo 用 VAE ===
if not exist "C:\ComfyUI\models\vae\ae.safetensors" (
    echo [DL] ae.safetensors
    curl -L --fail --remove-on-error -o "C:\ComfyUI\models\vae\ae.safetensors" "https://huggingface.co/Comfy-Org/z_image_turbo/resolve/main/split_files/vae/ae.safetensors"
) else (echo [SKIP] ae.safetensors)

REM === 8. [7] Wan2.2 用 VAE ===
if not exist "C:\ComfyUI\models\vae\wan2.2_vae.safetensors" (
    echo [DL] wan2.2_vae.safetensors
    curl -L --fail --remove-on-error -o "C:\ComfyUI\models\vae\wan2.2_vae.safetensors" "https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged/resolve/main/split_files/vae/wan2.2_vae.safetensors"
) else (echo [SKIP] wan2.2_vae.safetensors)

REM === 9. [8] FLUX.2 Klein 用 VAE ===
if not exist "C:\ComfyUI\models\vae\flux2-vae.safetensors" (
    echo [DL] flux2-vae.safetensors
    curl -L --fail --remove-on-error -o "C:\ComfyUI\models\vae\flux2-vae.safetensors" "https://huggingface.co/Comfy-Org/flux2-dev/resolve/main/split_files/vae/flux2-vae.safetensors"
) else (echo [SKIP] flux2-vae.safetensors)

REM === 10. 最終存在確認(for ループ不使用・両環境対応) ===
echo.
echo ============================================================
echo 最終存在確認
echo ============================================================
if exist "C:\ComfyUI\models\diffusion_models\z_image_turbo_bf16.safetensors" (echo [OK] z_image_turbo_bf16.safetensors) else (echo [NG] z_image_turbo_bf16.safetensors)
if exist "C:\ComfyUI\models\diffusion_models\wan2.2_ti2v_5B_fp16.safetensors" (echo [OK] wan2.2_ti2v_5B_fp16.safetensors) else (echo [NG] wan2.2_ti2v_5B_fp16.safetensors)
if exist "C:\ComfyUI\models\diffusion_models\flux-2-klein-4b.safetensors" (echo [OK] flux-2-klein-4b.safetensors) else (echo [NG] flux-2-klein-4b.safetensors)
if exist "C:\ComfyUI\models\text_encoders\qwen_3_4b.safetensors" (echo [OK] qwen_3_4b.safetensors) else (echo [NG] qwen_3_4b.safetensors)
if exist "C:\ComfyUI\models\text_encoders\umt5_xxl_fp8_e4m3fn_scaled.safetensors" (echo [OK] umt5_xxl_fp8_e4m3fn_scaled.safetensors) else (echo [NG] umt5_xxl_fp8_e4m3fn_scaled.safetensors)
if exist "C:\ComfyUI\models\vae\ae.safetensors" (echo [OK] ae.safetensors) else (echo [NG] ae.safetensors)
if exist "C:\ComfyUI\models\vae\wan2.2_vae.safetensors" (echo [OK] wan2.2_vae.safetensors) else (echo [NG] wan2.2_vae.safetensors)
if exist "C:\ComfyUI\models\vae\flux2-vae.safetensors" (echo [OK] flux2-vae.safetensors) else (echo [NG] flux2-vae.safetensors)

REM ============================================================
REM  API利用モデルの案内
REM ============================================================
echo ============================================================
echo FLUX 1.1 Pro Ultra(API経由で利用)
echo 1. https://bfl.ai/ でアカウントを作成
echo 2. ダッシュボードからAPIキーを取得
echo 3. APIエンドポイント: https://api.bfl.ml/
echo 4. 従量課金(画像1枚あたり課金)
echo ============================================================

REM ============================================================
REM  5. 起動方法の案内
REM ============================================================
echo ============================================================
echo ■Ollama I の起動:
echo   cd C:\Ollama
echo   python main.py
echo ■ ComfyUI の起動:
echo   cd C:\ComfyUI
echo   python main.py
echo   ブラウザで http://localhost:8188 にアクセス
echo ============================================================

REM numpy と PyTorch(CUDA 12.8 対応 wheel)、pip キャッシュを全削除
set "CUDA_TAG=cu128"
"%PIP%" install --no-user -U numpy torch torchvision torchaudio --index-url https://download.pytorch.org/whl/%CUDA_TAG%
"%PIP%" install -U --no-user scipy pillow pandas
"%PIP%" uninstall -y opencv-python-headless opencv-contrib-python-headless opencv-python
"%PIP%" install --no-user --force-reinstall opencv-contrib-python
"%PIP%" cache purge

echo インストール完了

インストール確認、スタートメニューのショートカットの確認などのために次のコマンドを実行する。


ECHO ============================================================
ECHO インストール確認
ECHO ============================================================

ECHO ------------------------------------------------------------
ECHO 1. ツール類の存在確認
ECHO ------------------------------------------------------------

where ollama >nul 2>&1 && (echo [OK] Ollama) || (echo [NG] Ollama が見つかりません)
where git >nul 2>&1 && (echo [OK] Git) || (echo [NG] Git が見つかりません)
where claude >nul 2>&1 && (echo [OK] Claude Code) || (echo [NG] Claude Code が見つかりません)
where ollama-chat >nul 2>&1 && (echo [OK] ollama-chat) || (echo [NG] ollama-chat が見つかりません)

REM ComfyUI
if exist "C:\ComfyUI\main.py" (echo [OK] ComfyUI) else (echo [NG] ComfyUI が見つかりません)

REM Python パッケージ
set "PYTHON=C:\Program Files\Python312\python.exe"
"%PYTHON%" -c "import qwen_tts; print('[OK] qwen-tts')" 2>nul || echo [NG] qwen-tts がインストールされていません
"%PYTHON%" -c "import faster_whisper; print('[OK] faster-whisper')" 2>nul || echo [NG] faster-whisper がインストールされていません
"%PYTHON%" -c "import torch; print('[OK] PyTorch', torch.__version__, '/ CUDA', torch.cuda.is_available())" 2>nul || echo [NG] PyTorch がインストールされていません

REM BUZZ
if exist "C:\Program Files (x86)\Buzz\Buzz.exe" (echo   [検出] Buzz) else echo   *** 未検出 *** Buzz

ECHO ------------------------------------------------------------
ECHO 2. スタートメニューのショートカット確認
ECHO ------------------------------------------------------------

set "CM=%ALLUSERSPROFILE%\Microsoft\Windows\Start Menu\Programs"
set "CP=%ProgramData%\Microsoft\Windows\Start Menu\Programs"

REM CommonPrograms(winget install 等で配置されるもの)
for %F in (
    "%CM%\Ollama GLM4.lnk"
    "%CM%\Ollama Gemma4.lnk"
    "%CP%\ComfyUI.lnk"
    "%CP%\Ollama Chat.lnk"
) do (
    if exist %F (echo [OK] %~nxF) else (echo [NG] %~nxF が見つかりません)
)

ECHO ------------------------------------------------------------
ECHO 3. Ollama モデル一覧
ECHO ------------------------------------------------------------
ollama list

ECHO ============================================================
ECHO LLM 動作テスト(Ollama CLI)
ECHO ============================================================

REM サンプル画像
cd %TEMP%
curl -L -o bus.jpg https://ultralytics.com/images/bus.jpg

REM Gemma 4 26B-A4B (Google DeepMind)
ollama run gemma4:26b "日本国憲法を400文字で説明して"
ollama run gemma4:26b "この画像には何が写っていますか?" "%TEMP%\bus.jpg"
ollama run gemma4:26b "「125」のように、各桁の数字が左から右に向かってすべて大きくなっているかを判定するコードをください"

REM qwen3.6 27B (Alibaba / Qwen Team)
ollama run qwen3.6:27b "日本国憲法を400文字で説明して"

REM qwen3.6 35B
ollama run qwen3.6:35b-a3b "日本国憲法を400文字で説明して"

REM Llama 3.2 11B Vision Instruct (Meta)
ollama run llama3.2-vision:11b "この画像には何が写っていますか?" "%TEMP%\bus.jpg"

REM Qwen3-Coder 30B-A3B (Alibaba / Qwen Team)
ollama run qwen3-coder:30b "「125」のように、各桁の数字が左から右に向かってすべて大きくなっているかを判定するコードをください"

REM CyberAgent DeepSeek-R1-Distill-Qwen-14B-Japanese (yuma, Q4_K_M)
ollama run yuma/DeepSeek-R1-Distill-Qwen-Japanese:14b "「125」のように、各桁の数字が左から右に向かってすべて大きくなっているかを判定するコードをください"

REM glm-4.7-flash
ollama run glm-4.7-flash "「125」のように、各桁の数字が左から右に向かってすべて大きくなっているかを判定するコードをください"

ECHO ============================================================
ECHO LLM 動作テスト(OpenAI互換API経由)
ECHO ============================================================

cd %TEMP%
curl -L -o bus.jpg https://ultralytics.com/images/bus.jpg

REM Gemma 4 26B-A4B (Google DeepMind)
python -c "from openai import OpenAI; c=OpenAI(base_url='http://localhost:11434/v1',api_key='ollama'); r=c.chat.completions.create(model='gemma4:26b',messages=[{'role':'user','content':'日本国憲法を400文字で説明して'}]); print(r.choices[0].message.content)"
python -c "from openai import OpenAI; import base64,os; img=base64.b64encode(open(os.path.join(os.environ['TEMP'],'bus.jpg'),'rb').read()).decode(); c=OpenAI(base_url='http://localhost:11434/v1',api_key='ollama'); r=c.chat.completions.create(model='gemma4:26b',messages=[{'role':'user','content':[{'type':'image_url','image_url':{'url':f'data:image/jpeg;base64,{img}'}},{'type':'text','text':'この画像には何が写っていますか?'}]}]); print(r.choices[0].message.content)"
python -c "from openai import OpenAI; c=OpenAI(base_url='http://localhost:11434/v1',api_key='ollama'); r=c.chat.completions.create(model='gemma4:26b',messages=[{'role':'user','content':'「125」のように、各桁の数字が左から右に向かってすべて大きくなっているかを判定するコードをください'}]); print(r.choices[0].message.content)"

REM qwen3.6 27B (Alibaba / Qwen Team)
python -c "from openai import OpenAI; c=OpenAI(base_url='http://localhost:11434/v1',api_key='ollama'); r=c.chat.completions.create(model='qwen3.6:27b',messages=[{'role':'user','content':'日本国憲法を400文字で説明して'}]); print(r.choices[0].message.content)"

REM qwen3.6 35B
python -c "from openai import OpenAI; c=OpenAI(base_url='http://localhost:11434/v1',api_key='ollama'); r=c.chat.completions.create(model='qwen3.6:35b-a3b',messages=[{'role':'user','content':'日本国憲法を400文字で説明して'}]); print(r.choices[0].message.content)"

REM Llama 3.2 11B Vision Instruct (Meta)
python -c "from openai import OpenAI; import base64,os; img=base64.b64encode(open(os.path.join(os.environ['TEMP'],'bus.jpg'),'rb').read()).decode(); c=OpenAI(base_url='http://localhost:11434/v1',api_key='ollama'); r=c.chat.completions.create(model='llama3.2-vision:11b',messages=[{'role':'user','content':[{'type':'image_url','image_url':{'url':f'data:image/jpeg;base64,{img}'}},{'type':'text','text':'この画像には何が写っていますか?'}]}]); print(r.choices[0].message.content)"

REM Qwen3-Coder 30B-A3B (Alibaba / Qwen Team)
python -c "from openai import OpenAI; c=OpenAI(base_url='http://localhost:11434/v1',api_key='ollama'); r=c.chat.completions.create(model='qwen3-coder:30b',messages=[{'role':'user','content':'「125」のように、各桁の数字が左から右に向かってすべて大きくなっているかを判定するコードをください'}]); print(r.choices[0].message.content)"

REM CyberAgent DeepSeek-R1-Distill-Qwen-14B-Japanese (wao)
python -c "from openai import OpenAI; c=OpenAI(base_url='http://localhost:11434/v1',api_key='ollama'); r=c.chat.completions.create(model='yuma/DeepSeek-R1-Distill-Qwen-Japanese:14b',messages=[{'role':'user','content':'「125」のように、各桁の数字が左から右に向かってすべて大きくなっているかを判定するコードをください'}]); print(r.choices[0].message.content)"

REM ============================================================
REM ComfyUI 4ワークフロー動作確認スクリプト(2026年5月10日検証済)
REM 前提:ComfyUI が http://127.0.0.1:8188 で起動中(起動: cd /d C:\ComfyUI && python main.py)
REM 前提:モデルダウンロードスクリプト実行済(8ファイル全て配置済)
REM ============================================================
REM [1] workflow_api_zimage.json       Z-Image Turbo 画像生成(T2I)
REM [2] workflow_api_flux2_klein.json  FLUX.2 Klein 画像生成(T2I)
REM [3] workflow_api_wan_t2v.json      Wan2.2 TI2V-5B 動画生成(T2V)
REM [4] workflow_api_wan_i2v.json      Wan2.2 TI2V-5B 動画生成(I2V)
REM ============================================================

REM === 1. 入力画像フォルダ作成 ===
if not exist "C:\ComfyUI\input" mkdir "C:\ComfyUI\input"

REM === 2. サンプル画像ダウンロード(I2V 用) ===
if not exist "C:\ComfyUI\input\input.png" (
    echo [DL] input.png
    curl -L --fail --remove-on-error -o "C:\ComfyUI\input\input.png" "https://comfyanonymous.github.io/ComfyUI_examples/chroma/fennec_girl_hug.png"
) else (echo [SKIP] input.png)

REM === 3. [1] Z-Image Turbo ワークフロー JSON 生成 ===
python -c "import json; w={'28':{'inputs':{'unet_name':'z_image_turbo_bf16.safetensors','weight_dtype':'default'},'class_type':'UNETLoader'},'30':{'inputs':{'clip_name':'qwen_3_4b.safetensors','type':'lumina2','device':'default'},'class_type':'CLIPLoader'},'29':{'inputs':{'vae_name':'ae.safetensors'},'class_type':'VAELoader'},'11':{'inputs':{'shift':3.0,'model':['28',0]},'class_type':'ModelSamplingAuraFlow'},'13':{'inputs':{'width':1024,'height':1024,'batch_size':1},'class_type':'EmptySD3LatentImage'},'27':{'inputs':{'text':'a serene mountain landscape at sunset','clip':['30',0]},'class_type':'CLIPTextEncode'},'33':{'inputs':{'conditioning':['27',0]},'class_type':'ConditioningZeroOut'},'3':{'inputs':{'seed':42,'steps':8,'cfg':1.0,'sampler_name':'res_multistep','scheduler':'simple','denoise':1.0,'model':['11',0],'positive':['27',0],'negative':['33',0],'latent_image':['13',0]},'class_type':'KSampler'},'8':{'inputs':{'samples':['3',0],'vae':['29',0]},'class_type':'VAEDecode'},'9':{'inputs':{'filename_prefix':'ZImageTurbo','images':['8',0]},'class_type':'SaveImage'}}; json.dump(w,open(r'C:\ComfyUI\workflow_api_zimage.json','w'),indent=2)"

REM === 4. [2] FLUX.2 Klein ワークフロー JSON 生成 ===
python -c "import json; w={'10':{'inputs':{'unet_name':'flux-2-klein-4b.safetensors','weight_dtype':'default'},'class_type':'UNETLoader'},'20':{'inputs':{'clip_name':'qwen_3_4b.safetensors','type':'flux2','device':'default'},'class_type':'CLIPLoader'},'30':{'inputs':{'vae_name':'flux2-vae.safetensors'},'class_type':'VAELoader'},'40':{'inputs':{'text':'a serene mountain landscape at sunset','clip':['20',0]},'class_type':'CLIPTextEncode'},'41':{'inputs':{'text':'','clip':['20',0]},'class_type':'CLIPTextEncode'},'50':{'inputs':{'width':1024,'height':1024,'batch_size':1},'class_type':'EmptyFlux2LatentImage'},'60':{'inputs':{'steps':20,'width':1024,'height':1024},'class_type':'Flux2Scheduler'},'70':{'inputs':{'sampler_name':'euler'},'class_type':'KSamplerSelect'},'80':{'inputs':{'noise_seed':42},'class_type':'RandomNoise'},'90':{'inputs':{'model':['10',0],'positive':['40',0],'negative':['41',0]},'class_type':'CFGGuider'},'100':{'inputs':{'noise':['80',0],'guider':['90',0],'sampler':['70',0],'sigmas':['60',0],'latent_image':['50',0]},'class_type':'SamplerCustomAdvanced'},'110':{'inputs':{'samples':['100',0],'vae':['30',0]},'class_type':'VAEDecode'},'120':{'inputs':{'filename_prefix':'Flux2Klein','images':['110',0]},'class_type':'SaveImage'}}; json.dump(w,open(r'C:\ComfyUI\workflow_api_flux2_klein.json','w'),indent=2)"

REM === 5. [3] Wan2.2 TI2V-5B T2V ワークフロー JSON 生成 ===
python -c "import json; w={'1':{'inputs':{'unet_name':'wan2.2_ti2v_5B_fp16.safetensors','weight_dtype':'default'},'class_type':'UNETLoader'},'2':{'inputs':{'clip_name':'umt5_xxl_fp8_e4m3fn_scaled.safetensors','type':'wan','device':'default'},'class_type':'CLIPLoader'},'3':{'inputs':{'vae_name':'wan2.2_vae.safetensors'},'class_type':'VAELoader'},'4':{'inputs':{'model':['1',0],'shift':8.0},'class_type':'ModelSamplingSD3'},'5':{'inputs':{'vae':['3',0],'width':1280,'height':704,'length':41,'batch_size':1},'class_type':'Wan22ImageToVideoLatent'},'6':{'inputs':{'text':'a serene mountain landscape with clouds moving slowly','clip':['2',0]},'class_type':'CLIPTextEncode'},'7':{'inputs':{'text':'','clip':['2',0]},'class_type':'CLIPTextEncode'},'8':{'inputs':{'seed':42,'steps':30,'cfg':5.0,'sampler_name':'uni_pc','scheduler':'simple','denoise':1.0,'model':['4',0],'positive':['6',0],'negative':['7',0],'latent_image':['5',0]},'class_type':'KSampler'},'9':{'inputs':{'samples':['8',0],'vae':['3',0]},'class_type':'VAEDecode'},'10':{'inputs':{'filename_prefix':'WanT2V','fps':24.0,'lossless':False,'quality':80,'method':'default','images':['9',0]},'class_type':'SaveAnimatedWEBP'}}; json.dump(w,open(r'C:\ComfyUI\workflow_api_wan_t2v.json','w'),indent=2)"

REM === 6. [4] Wan2.2 TI2V-5B I2V ワークフロー JSON 生成 ===
python -c "import json; w={'1':{'inputs':{'unet_name':'wan2.2_ti2v_5B_fp16.safetensors','weight_dtype':'default'},'class_type':'UNETLoader'},'2':{'inputs':{'clip_name':'umt5_xxl_fp8_e4m3fn_scaled.safetensors','type':'wan','device':'default'},'class_type':'CLIPLoader'},'3':{'inputs':{'vae_name':'wan2.2_vae.safetensors'},'class_type':'VAELoader'},'4':{'inputs':{'model':['1',0],'shift':8.0},'class_type':'ModelSamplingSD3'},'5':{'inputs':{'vae':['3',0],'start_image':['11',0],'width':1280,'height':704,'length':41,'batch_size':1},'class_type':'Wan22ImageToVideoLatent'},'6':{'inputs':{'text':'a cat on the moon walking slowly','clip':['2',0]},'class_type':'CLIPTextEncode'},'7':{'inputs':{'text':'','clip':['2',0]},'class_type':'CLIPTextEncode'},'8':{'inputs':{'seed':42,'steps':30,'cfg':5.0,'sampler_name':'uni_pc','scheduler':'simple','denoise':1.0,'model':['4',0],'positive':['6',0],'negative':['7',0],'latent_image':['5',0]},'class_type':'KSampler'},'9':{'inputs':{'samples':['8',0],'vae':['3',0]},'class_type':'VAEDecode'},'10':{'inputs':{'filename_prefix':'WanI2V','fps':24.0,'lossless':False,'quality':80,'method':'default','images':['9',0]},'class_type':'SaveAnimatedWEBP'},'11':{'inputs':{'image':'input.png','upload':'image'},'class_type':'LoadImage'}}; json.dump(w,open(r'C:\ComfyUI\workflow_api_wan_i2v.json','w'),indent=2)"

REM === 7. JSON ファイル生成確認 ===
echo.
echo ============================================================
echo ワークフロー JSON 生成確認
echo ============================================================
if exist "C:\ComfyUI\workflow_api_zimage.json"      (echo [OK] workflow_api_zimage.json)      else (echo [NG] workflow_api_zimage.json)
if exist "C:\ComfyUI\workflow_api_flux2_klein.json" (echo [OK] workflow_api_flux2_klein.json) else (echo [NG] workflow_api_flux2_klein.json)
if exist "C:\ComfyUI\workflow_api_wan_t2v.json"     (echo [OK] workflow_api_wan_t2v.json)     else (echo [NG] workflow_api_wan_t2v.json)
if exist "C:\ComfyUI\workflow_api_wan_i2v.json"     (echo [OK] workflow_api_wan_i2v.json)     else (echo [NG] workflow_api_wan_i2v.json)

REM === 8. ComfyUI サーバ起動確認 ===
echo.
echo ============================================================
echo ComfyUI サーバ接続確認(http://127.0.0.1:8188)
echo ============================================================
python -c "import urllib.request,sys; r=urllib.request.urlopen('http://127.0.0.1:8188/system_stats',timeout=5); print('[OK] ComfyUI is running:', r.status)" 2>nul || echo [NG] ComfyUI に接続できません。ComfyUI を起動してください。

REM === 9. [1] Z-Image Turbo ワークフロー投入 ===
echo.
echo [RUN] Z-Image Turbo (T2I) 投入中...
python -c "import json,random,urllib.request; w=json.load(open(r'C:\ComfyUI\workflow_api_zimage.json')); w['3']['inputs']['seed']=random.randint(1,9999999999); r=urllib.request.urlopen(urllib.request.Request('http://127.0.0.1:8188/prompt',json.dumps({'prompt':w}).encode(),{'Content-Type':'application/json'})); print('[OK] Z-Image Turbo response:', r.status)" 2>&1

REM === 10. [2] FLUX.2 Klein ワークフロー投入 ===
echo.
echo [RUN] FLUX.2 Klein (T2I) 投入中...
python -c "import json,random,urllib.request; w=json.load(open(r'C:\ComfyUI\workflow_api_flux2_klein.json')); w['80']['inputs']['noise_seed']=random.randint(1,9999999999); r=urllib.request.urlopen(urllib.request.Request('http://127.0.0.1:8188/prompt',json.dumps({'prompt':w}).encode(),{'Content-Type':'application/json'})); print('[OK] FLUX.2 Klein response:', r.status)" 2>&1

REM === 11. [3] Wan2.2 TI2V-5B T2V ワークフロー投入 ===
echo.
echo [RUN] Wan2.2 TI2V-5B (T2V) 投入中...
python -c "import json,random,urllib.request; w=json.load(open(r'C:\ComfyUI\workflow_api_wan_t2v.json')); w['8']['inputs']['seed']=random.randint(1,9999999999); r=urllib.request.urlopen(urllib.request.Request('http://127.0.0.1:8188/prompt',json.dumps({'prompt':w}).encode(),{'Content-Type':'application/json'})); print('[OK] Wan2.2 T2V response:', r.status)" 2>&1

REM === 12. [4] Wan2.2 TI2V-5B I2V ワークフロー投入 ===
echo.
echo [RUN] Wan2.2 TI2V-5B (I2V) 投入中...
python -c "import json,random,urllib.request; w=json.load(open(r'C:\ComfyUI\workflow_api_wan_i2v.json')); w['8']['inputs']['seed']=random.randint(1,9999999999); r=urllib.request.urlopen(urllib.request.Request('http://127.0.0.1:8188/prompt',json.dumps({'prompt':w}).encode(),{'Content-Type':'application/json'})); print('[OK] Wan2.2 I2V response:', r.status)" 2>&1

echo.
echo ============================================================
echo 全ワークフロー投入完了。ComfyUI UI または出力フォルダで結果を確認してください。
echo 出力場所:C:\ComfyUI\output\
echo   - ZImageTurbo_*.png
echo   - Flux2Klein_*.png
echo   - WanT2V_*.webp
echo   - WanI2V_*.webp
echo ============================================================

REM remove hugging face cache
REM rmdir /s /q "%USERPROFILE%\.cache\huggingface"

5. Python用ライブラリとツール

データ処理,機械学習,画像・音声処理,3次元データ処理,LLMアプリケーション構築など,各分野で使用するPythonライブラリおよびツールである。セクション3の開発環境が前提となる。

ソフトウェア説明用途備考
NumPy高速な多次元配列(ndarray)演算を提供するライブラリ。主にC言語で実装されている。数値計算pipでインストール
NumbaJIT(Just-In-Time:実行時コンパイル)コンパイラ。LLVMコンパイラ基盤を利用し,PythonおよびNumPyのコードを実行時にマシンコードへ変換して高速化する。関数にデコレータ(関数の動作を修飾する構文)を付与して使用する。数値計算の高速化pipでインストール
SciPyNumPyを基盤とした科学技術計算ライブラリ。最適化,積分,補間(Interpolation:既知のデータ点から未知の点の値を推定する手法),線形代数,統計,信号処理などのアルゴリズムを提供する。科学技術計算pipでインストール
PandasDataFrame(行と列で構成される表形式データ構造)で表形式データの操作,集計,前処理ができる。データ前処理,集計pipでインストール
Matplotlibデータ可視化ライブラリ。2次元・3次元のグラフを作成し,論文品質の図表を出力できる。グラフ作成pipでインストール
Plotlyインタラクティブなグラフ作成ライブラリ。Webブラウザ上で操作可能な2次元・3次元のグラフを生成できる。インタラクティブ可視化pipでインストール
scikit-learn汎用的な機械学習ライブラリ。回帰,分類,クラスタリング等のアルゴリズムを提供する。機械学習pipでインストール
Pillow画像処理ライブラリ。リサイズ,回転,フィルタ適用,形式変換などができる。画像加工pipでインストール
imageiostatic-ffmpegimageioは画像・動画の読み書きライブラリで,ffmpegやpyavプラグインにより動画の読み込み・書き出しにも対応する。static-ffmpegはFFmpeg(動画・音声のエンコード・デコードを行うマルチメディアフレームワーク)のスタティックバイナリをPythonから利用できるようにするラッパーツールで,別途FFmpegをインストールせずに動画処理ができる。画像・動画I/O,エンコード・デコードpipでインストール
albumentations画像データ拡張(Data Augmentation:学習データの多様性を高めるために画像に変換を加える手法)ライブラリ。回転,反転,色調変更,クロップなど70種以上の変換を提供する。画像データ拡張pipでインストール
opencv-pythonコンピュータビジョン用ライブラリ。フィルタリング,幾何変換,色空間変換(RGB,HSV等の異なる色表現間の変換)などの画像処理に加え,顔検出や物体検出などリアルタイム映像解析ができる。画像処理,画像認識,動画解析pipでインストール
ultralyticsYOLOシリーズの統合パッケージ。物体検出,インスタンスセグメンテーション(個々の物体単位で領域を分割する手法),姿勢推定,画像分類,物体追跡に対応する。関連パッケージとしてboxmot(マルチオブジェクトトラッキング)がある。物体検出,セグメンテーションpipでインストール
supervisionRoboflowが提供するコンピュータビジョンのユーティリティライブラリ。物体検出・セグメンテーション・追跡の結果に対してアノテーション(検出結果の描画・注釈付け)描画,物体カウント,ゾーン検出などの後処理を実行できる。モデル非依存で複数のフレームワークの出力を共通処理できる。CV後処理,アノテーションpipでインストール
easyocr80以上の言語に対応したOCR(光学文字認識)ライブラリ。深層学習ベースで画像中のテキストを検出・認識する。日本語にも対応している。関連パッケージとしてyomitoku(日本語特化のAI文書画像解析エンジン)がある。文字認識(OCR)pipでインストール
face-alignment深層学習ベースの顔ランドマーク(顔の特徴的な位置を示す点)検出ライブラリ。2Dおよび3Dの顔特徴点を検出できる。顔ランドマーク検出pipでインストール
deepface深層学習ベースの顔認識・顔属性分析ライブラリ。VGG-Face,FaceNet,ArcFace等の複数モデルを統合し,顔照合,年齢・性別・表情の推定ができる。関連パッケージとしてretina-face(深層学習ベースの顔検出ライブラリ)がある。顔認識,顔属性分析pipでインストール
insightface深層学習ベースの2D・3D顔分析ライブラリ。顔検出,顔認識,顔アライメント,顔属性推定の学習済みモデルを提供する。推論にONNX Runtime(Open Neural Network Exchange形式のモデルを実行する推論エンジン)を使用する。顔検出,顔認識,顔分析pipでインストール
mediapipeGoogleが提供するマルチモーダルML推論ライブラリ。手,顔,姿勢のランドマーク検出,ジェスチャー認識,物体検出などに対応する。GPU不要でエッジデバイスでも動作する。手・顔・姿勢検出pipでインストール
rembg深層学習ベースの画像背景除去ライブラリ。U2-Net(軽量セグメンテーションモデル)等を使用し,人物や物体の背景を自動で除去できる。コマンドライン,Pythonライブラリ,HTTPサーバの3形態で利用できる。画像背景除去pipでインストール
sixdrepnet6D回転表現に基づく頭部姿勢推定ライブラリ。画像から頭部のピッチ,ヨー,ロール(上下,左右,傾きの3軸回転角度)を推定する。頭部姿勢推定pipでインストール
SAM 2Metaが提供するSegment Anything Model 2(プロンプト指定による汎用セグメンテーション基盤モデル)。画像および動画中の任意の物体をセグメンテーションできる。画像・動画セグメンテーションソースからインストール
librosa音声・音楽解析ライブラリ。DSP(デジタル信号処理)による特徴抽出やスペクトル解析ができる。音声信号処理pipでインストール
py7zr7zアーカイブの読み書きができるライブラリ。純粋なPython実装のため外部ツールなしで7z形式の圧縮・展開ができる。圧縮・展開pipでインストール
pypandoc_binary文書変換ツールPandoc(マークアップ形式間の汎用文書変換ツール)のPythonラッパー。Pandocバイナリを同梱しており,Markdown,HTML,LaTeX,DOCX,PDF等の相互変換をPythonから実行できる。文書形式変換pipでインストール
requestsbeautifulsoup4requestsはHTTP通信ライブラリで,GET,POST等のHTTPリクエストを簡潔なコードで送信できる。beautifulsoup4はHTML・XML解析ライブラリで,Webページから必要なデータを抽出するWebスクレイピング(Webサイトからデータを自動収集する手法)に使用する。requestsでWebページを取得し,beautifulsoup4で解析する組み合わせで利用することが多い。Web API通信,Webスクレイピングpipでインストール
Flask軽量なWebアプリケーションフレームワーク。最小限の構成でWebアプリケーションやREST APIを構築できる。Webアプリケーション開発pipでインストール
seleniumWebブラウザ自動操作ライブラリ。Pythonからブラウザを制御し,動的なWebページの操作やWebスクレイピング,テスト自動化ができる。ブラウザ自動操作,テスト自動化pipでインストール
FastAPIuvicornFastAPIは非同期対応の高速Webフレームワークで,Pythonの型ヒントを活用し,APIドキュメントの自動生成ができる。uvicornはASGI(Asynchronous Server Gateway Interface:Pythonの非同期Webサーバとアプリケーション間の標準インターフェース)対応の高速Webサーバで,FastAPIの実行に使用する。Web API開発,ASGIサーバpipでインストール
PydanticPythonの型ヒントを利用したデータバリデーション(入力データが定義された型や制約に適合するかを検証する処理)ライブラリ。APIの入出力定義,設定管理,データモデル定義に使用する。FastAPIやLangChain等が内部で依存している。データバリデーションpipでインストール
SQLAlchemyPython用のデータベースツールキット。ORM(Object-Relational Mapping:Pythonオブジェクトとリレーショナルデータベースのテーブルを対応付ける仕組み)とSQLの直接記述の両方に対応する。SQLite,PostgreSQL,MySQL等の複数のデータベースを扱える。データベース操作pipでインストール
PyTorch(torch,torchvision,torchaudio)Metaが開発する深層学習フレームワーク。テンソル演算,自動微分,GPU加速をサポートする。torchvisionはコンピュータビジョン用のデータセット・モデル・画像変換,torchaudioは音声処理用のデータセット・モデル・信号処理機能を提供する。深層学習pipでインストール。CUDA対応版はPyTorch公式のwheelを指定する。
accelerateHugging Faceが提供する分散学習・推論ライブラリ。PyTorchコードに最小限の変更を加えるだけでマルチGPU・マルチノード環境での学習と推論を実行できる。混合精度学習(Mixed Precision Training:単精度と半精度を組み合わせて学習を高速化する手法)にも対応する。分散学習,推論高速化pipでインストール
transformersHugging Faceが提供するライブラリ。Transformer(注意機構に基づくモデル構造)アーキテクチャの学習済みモデルを利用できる。自然言語処理に加え,画像分類,物体検出,音声認識などマルチモーダルなタスクにも対応する。自然言語処理,画像認識,音声処理pipでインストール
datasetsHugging Faceが提供するデータセット管理ライブラリ。学習用データのダウンロードとストリーミング読み込みに対応する。データセット取得pipでインストール
diffusersHugging Faceが提供する拡散モデル(Diffusion Model:データにノイズを加える過程を逆転させて生成する深層生成モデル)ライブラリ。画像生成,動画生成,音声生成などの学習済み拡散モデルを利用できる。Stable Diffusion等のモデルに対応する。画像生成,動画生成pipでインストール
pefttrlHugging Faceが提供するLLMファインチューニング用ライブラリ群。PEFT(Parameter-Efficient Fine-Tuning:モデル全体ではなく少数のパラメータのみを追加学習する手法)はLoRA等の効率的なファインチューニングを提供する。TRL(Transformer Reinforcement Learning)はSFT(教師あり微調整),RLHF(人間のフィードバックによる強化学習),DPO(直接選好最適化)等のポストトレーニング手法を提供する。LLMファインチューニングpipでインストール
einopstimm深層学習モデルの構築・学習を補助するライブラリ群。einopsはアインシュタイン記法によるテンソル操作ライブラリ,timmはPyTorch用の画像モデルコレクションの実装である。テンソル操作,画像モデルpipでインストール
huggingface_hubHugging Face Hubとの連携ライブラリ。モデル・データセットのダウンロード・アップロード,CLIツール,リポジトリ管理機能を提供する。高速転送にはhf_xet(Rustベースの高速ファイル転送ツール)を使用する。Hugging Face Hub連携pipでインストール
sentence-transformers文埋め込みライブラリ。文章を多次元ベクトルに変換し,RAG(検索拡張生成)での類似度計算に使用する。文埋め込み,類似検索pipでインストール
sentencepieceGoogleが開発した言語非依存のサブワードトークナイザ(テキストをサブワード単位に分割するツール)。BPE(Byte Pair Encoding:頻出する文字列の組を繰り返し統合してサブワードを構成するアルゴリズム)やUnigram言語モデルに基づくトークン化を提供する。多くのLLMや多言語モデルの前処理に使用される。テキストトークン化pipでインストール
spaCy自然言語処理ライブラリ。トークン化(テキストを単語や記号の単位に分割する処理),品詞タグ付け,係り受け解析,固有表現認識(NER:テキスト中の人名・地名・組織名等を識別する処理)などの構文解析機能を提供する。関連パッケージとしてGiNZA(Universal Dependencies準拠の日本語NLPライブラリ。ginzaおよびja-ginzaパッケージ)がある。構文解析,固有表現認識pipでインストール
LangChainLLMアプリケーション構築用フレームワーク。LLMと外部データソースを連携し,複数の処理を連結できる。関連パッケージとしてlangchain-community,langchain-openai,langchain-google-genai,langchain-anthropic,langchain-ollama,langchain-huggingface,LangGraph(エージェントのワークフロー構築ライブラリ)がある。RAG,エージェント開発pipでインストール
langchain-ollamalangchain-huggingfaceLangChainの拡張パッケージ。langchain-ollamaはローカルLLM実行環境Ollamaとの連携,langchain-huggingfaceはHugging Faceのモデル・埋め込み・データセットとの連携を提供する。LangChain拡張(Ollama連携,Hugging Face連携)pipでインストール
chromadbベクトルデータベース(高次元ベクトル専用のデータベース)。ANN(近似最近傍探索)で類似データを取得する。ベクトル検索pipでインストール
llama-cpp-pythonllama.cpp(C/C++実装のLLM推論エンジン)のPythonバインディング。GGUF(量子化モデル形式)形式の大規模言語モデルをローカル環境で実行できる。OpenAI互換APIサーバ機能を内蔵し,LangChainとの連携にも対応する。LLMローカル推論ソースからビルド。CUDA 12.8環境ではVisual Studio Build ToolsとCUDA Toolkitが必要。
openaiOpenAI APIのクライアントライブラリ。GPT-4o等のモデルをプログラムから呼び出せる。OpenAI API連携pipでインストール
OpenVINOIntelが提供するAIモデル推論最適化ツールキット。学習済みモデルをIntel製CPU・GPU・NPU向けに最適化し,高速な推論を実行できる。AI推論最適化pipでインストール
google-genaiGoogle Gemini APIの公式クライアントライブラリ。旧google-generativeaiの後継パッケージである。Geminiの推論機能や画像・動画分析をプログラムから呼び出せる。Gemini API連携pipでインストール
anthropicAnthropic APIの公式クライアントライブラリ。Claudeモデルをプログラムから呼び出せる。Claude API連携pipでインストール
litellm複数のLLM APIを統合するクライアントライブラリ。OpenAI形式の統一インターフェースで各社APIを扱える。マルチLLM連携pipでインストール
protobufGoogleが開発したProtocol Buffers(言語・プラットフォーム非依存の構造化データシリアライゼーション形式)のPythonライブラリ。モデルの保存形式や各種フレームワーク間のデータ交換に使用される。データシリアライゼーションpipでインストール
TensorFlowtf-kerasGoogleが開発する機械学習フレームワーク。テンソル演算,自動微分,GPU加速をサポートする。tf-kerasはTensorFlow向けの高レベルAPIで,ニューラルネットワークの構築・学習を簡潔に記述できる。深層学習pipでインストール
flatbuffersflatgeobufflatbuffersはGoogleが開発したFlatBuffers(パース不要で直接アクセス可能な高効率シリアライゼーション形式)のPythonランタイムライブラリで,TensorFlow等が内部で使用する。flatgeobufはFlatBuffersベースの地理空間データ形式FlatGeobuf(バイナリ形式の地理空間ベクタデータフォーマット)の読み込みライブラリである。データシリアライゼーション,地理空間データpipでインストール
torch-clusterPyTorch向けのクラスタリング・グラフサンプリングアルゴリズムパッケージ。最近傍探索,Voxelグリッドクラスタリング(3次元空間をボクセル単位で分割しクラスタ化する手法)等を提供し,PyTorch Geometricの基盤として使用される。グラフ処理,点群処理pipでインストール。PyTorchバージョンとCUDAバージョンに対応したwheelを指定する。
torchdiffeqPyTorchベースの常微分方程式(ODE)ソルバー。Neural ODE(ニューラルネットワークの層を連続的な微分方程式として定式化する手法)の実装に使用する。微分方程式,Neural ODEpipでインストール
pymeshlabfast_simplificationpyrender3次元データ処理・可視化ライブラリ群。pymeshlabはMeshLab(3Dメッシュ処理ソフトウェア)の機能をPythonから利用できるライブラリ,fast_simplificationは高速なメッシュ簡略化ライブラリ,pyrenderはOpenGLベースの3Dシーンレンダリングライブラリである。3Dメッシュ処理,レンダリングpipでインストール
sophuspyリー群(SO(3),SE(3)等の回転・変換を表す数学的構造)の演算ライブラリ。3次元の回転や剛体変換の計算に使用する。3D幾何演算pipでインストール
MLflow機械学習ライフサイクル管理プラットフォーム。実験のトラッキング(パラメータ,メトリクス,成果物の記録・追跡),モデルレジストリ(学習済みモデルのバージョン管理),デプロイメントを統合的に管理できる。実験管理,MLOpspipでインストール
GradioAIデモ用のUI構築ライブラリ。PythonコードからWebインターフェースを生成できる。AIデモ作成pipでインストール
JupyterLab対話的プログラミング環境。コードと実行結果を一つのノートブックに記録しながら分析できる。対話的データ分析pipでインストール
streamlitデータアプリケーション構築用フレームワーク。Pythonスクリプトから対話的なWebアプリケーションを生成できる。対話的アプリ開発pipでインストール

インストールコマンドの実行方法

管理者権限コマンドプロンプトを起動する (手順:Windowsキーまたはスタートメニュー → cmd と入力 → 右クリック → 「管理者として実行」)。 wingetの--scope machineオプションでシステム全体にインストールするには、管理者権限が必要である。実行時はコマンド全体をコマンドプロンプトにコピー&ペーストする。

インストールコマンド

REM ============================================================
REM  Python用ライブラリとツール インストールスクリプト(管理者権限で実行)
REM  前提条件:
REM    - Python 3.12 が C:\Program Files\Python312 にインストール済みであること
REM    - Git がインストール済みであること
REM    - CMake がインストール済みであること
REM    - Visual Studio 2026 Build Tools がインストール済みであること
REM    - NVIDIA GPU および CUDA 12.8 対応ドライバの利用を推奨
REM      (未搭載の場合は CPU モードで動作するが、
REM       画像生成・音声処理等は大幅に低速となる)
REM ============================================================

REM 管理者権限チェック
net session >nul 2>&1
if errorlevel 1 ( echo [エラー] 管理者権限で実行してください & pause & exit /b 1 )

REM winget パッケージ一覧のローカルキャッシュを更新
winget source update

REM Pythonパス設定
set "PYTHON_PATH=C:\Program Files\Python312"
set "PYTHON=%PYTHON_PATH%\python.exe"
set "PIP=%PYTHON_PATH%\Scripts\pip"

REM Python存在チェック(未インストールの場合はシステム領域にインストール、パス設定)
if not exist "%PYTHON%" echo Python 3.12 が見つかりません。インストールします... & winget install --id Python.Python.3.12 -e --scope machine --silent --accept-source-agreements --accept-package-agreements --override "/quiet InstallAllUsers=1 PrependPath=1 Include_test=0 Include_pip=1 Include_launcher=1 InstallLauncherAllUsers=1 TargetDir=\"C:\Program Files\Python312\"" & powershell -NoProfile -Command "$p='C:\Program Files\Python312'; $s=\"$p\Scripts\"; $c=[Environment]::GetEnvironmentVariable('Path','Machine'); if((Test-Path $p) -and (';'+$c+';' -notlike \"*;$p;*\") -and (';'+$c+';' -notlike \"*;$s;*\")){[Environment]::SetEnvironmentVariable('Path',\"$p;$s;$c\",'Machine')}"

REM Git存在チェック(未インストールの場合はシステム領域にインストール、パス設定)
if not exist "C:\Program Files\Git\cmd\git.exe" echo Git が見つかりません。インストールします... & winget install --scope machine --id Git.Git -e --silent --disable-interactivity --force --accept-source-agreements --accept-package-agreements --override "/VERYSILENT /NORESTART /NOCANCEL /SP- /CLOSEAPPLICATIONS /RESTARTAPPLICATIONS /COMPONENTS=""icons,ext\reg\shellhere,assoc,assoc_sh"" /o:PathOption=Cmd /o:CRLFOption=CRLFCommitAsIs /o:BashTerminalOption=MinTTY /o:DefaultBranchOption=main /o:EditorOption=VIM /o:SSHOption=OpenSSH /o:UseCredentialManager=Enabled /o:PerformanceTweaksFSCache=Enabled /o:EnableSymlinks=Disabled /o:EnableFSMonitor=Disabled" & powershell -NoProfile -Command "$g='C:\Program Files\Git\cmd'; $c=[Environment]::GetEnvironmentVariable('Path','Machine'); if((Test-Path $g) -and (';'+$c+';' -notlike \"*;$g;*\")){[Environment]::SetEnvironmentVariable('Path',\"$g;$c\",'Machine')}"

REM CMake存在チェック(未インストールの場合はシステム領域にインストール、パス設定)
if not exist "C:\Program Files\CMake\bin\cmake.exe" echo CMake が見つかりません。インストールします... & winget install --scope machine --id Kitware.CMake -e --silent --disable-interactivity --force --accept-source-agreements --accept-package-agreements --override "/qn /norestart ADD_CMAKE_TO_PATH=System" & powershell -NoProfile -Command "$m='C:\Program Files\CMake\bin'; $c=[Environment]::GetEnvironmentVariable('Path','Machine'); if((Test-Path $m) -and (';'+$c+';' -notlike \"*;$m;*\")){[Environment]::SetEnvironmentVariable('Path',\"$m;$c\",'Machine')}"

REM Build Tools 2026 存在チェック(未インストールの場合はシステム領域にインストール)
if not exist "C:\Program Files (x86)\Microsoft Visual Studio\18\BuildTools\Common7\Tools\VsDevCmd.bat" taskkill /F /IM vs_setup.exe /T >nul 2>&1 & taskkill /F /IM vs_installer.exe /T >nul 2>&1 & taskkill /F /IM vs_installerservice.exe /T >nul 2>&1 & taskkill /F /IM msiexec.exe /T >nul 2>&1 & echo Build Tools 2026 が見つかりません。インストールします... & winget install --scope machine --id Microsoft.VisualStudio.BuildTools -e --silent --disable-interactivity --force --accept-source-agreements --accept-package-agreements --override "--quiet --wait --norestart --nocache --add Microsoft.VisualStudio.Workload.VCTools --includeRecommended --add Microsoft.VisualStudio.Workload.MSBuildTools --add Microsoft.VisualStudio.Component.VC.CMake.Project --add Microsoft.VisualStudio.Component.VC.Llvm.Clang --add Microsoft.VisualStudio.Component.VC.Llvm.ClangToolset --add Microsoft.VisualStudio.Component.Windows11SDK.26100"

REM ============================================================
REM 数値計算・データ処理
REM ============================================================
"%PIP%" install --no-user -U numpy numba scipy pandas matplotlib scikit-learn

REM ============================================================
REM 画像・音声処理
REM ============================================================
"%PIP%" install --no-user -U mediapipe onnxruntime-gpu[cuda,cudnn] opencv-contrib-python protobuf==6.33.6
"%PIP%" install --no-user -U pillow albumentations ultralytics boxmot supervision easyocr yomitoku face-alignment deepface retina-face "rembg[cpu]" sixdrepnet librosa
"%PIP%" uninstall -y opencv-python-headless opencv-contrib-python-headless opencv-python
"%PIP%" install --no-user --force-reinstall opencv-contrib-python


REM ============================================================
REM ファイル処理・変換ツール
REM ============================================================
"%PIP%" install --no-user -U static-ffmpeg py7zr pypandoc_binary

REM ============================================================
REM HTTP通信・Webフレームワーク
REM ============================================================
"%PIP%" install --no-user -U requests beautifulsoup4 flask selenium fastapi pydantic SQLAlchemy uvicorn

REM ============================================================
REM 自然言語処理
REM ============================================================
"%PIP%" install --no-user -U spacy ginza ja-ginza

REM ============================================================
REM Hugging Face関連
REM ============================================================
"%PIP%" install --no-user -U transformers datasets sentence-transformers accelerate diffusers timm einops huggingface_hub hf_xet

REM ============================================================
REM LLMアプリケーション開発
REM ============================================================
"%PIP%" install --no-user -U langchain langchain-community langchain-ollama langchain-huggingface langchain-openai langchain-google-genai langchain-anthropic langgraph chromadb

REM ============================================================
REM CUDA 12.8のMSBuild統合ファイルをコピー
REM ============================================================
xcopy "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.8\extras\visual_studio_integration\MSBuildExtensions\*" ^
  "C:\Program Files (x86)\Microsoft Visual Studio\18\BuildTools\MSBuild\Microsoft\VC\v180\BuildCustomizations\" /Y

REM ============================================================
REM LLM推論(llama-cpp-pythonはOpenAI互換APIを内蔵、LangChain対応)
REM ============================================================
REM git cloneでサブモジュールを含む完全なソースを取得してからビルドする
if exist "%TEMP%\llama-cpp-python-src\.git" (cd /d "%TEMP%\llama-cpp-python-src" && git pull --recurse-submodules) else (git clone --recurse-submodules https://github.com/abetlen/llama-cpp-python.git "%TEMP%\llama-cpp-python-src")
REM CUDA 12.8環境でソースビルドする場合(Visual Studio Build Tools + CUDA Toolkit が必要)
set "CMAKE_ARGS=-DGGML_CUDA=on -DCMAKE_CUDA_FLAGS=--allow-unsupported-compiler"
set "FORCE_CMAKE=1"
"%PIP%" install --no-user -U "%TEMP%\llama-cpp-python-src" --no-cache-dir
set "CMAKE_ARGS="
set "FORCE_CMAKE="

REM ============================================================
REM LLM APIクライアント
REM ============================================================
"%PIP%" install --no-user -U openai openvino google-genai anthropic litellm

REM ============================================================
REM LLMファインチューニング
REM ============================================================
"%PIP%" install --no-user -U trl peft

REM ============================================================
REM 実験管理・MLOps
REM ============================================================
"%PIP%" install --no-user -U mlflow

REM ============================================================
REM UIフレームワーク
REM ============================================================
"%PIP%" install --no-user -U gradio streamlit

REM ============================================================
REM JupyterLab
REM ============================================================
"%PIP%" install --no-user -U jupyterlab

REM ============================================================
REM TensorFlow
REM ============================================================
"%PIP%" install --no-user -U tensorflow tf-keras flatbuffers flatgeobuf protobuf

REM ============================================================
REM その他
REM ============================================================
"%PIP%" install --no-user -U "imageio[ffmpeg]" "imageio[pyav]"
"%PIP%" install --no-user -U pymeshlab sophuspy fast_simplification plotly torchdiffeq sentencepiece protobuf pyrender

REM ============================================================
REM SAM2 のインストール
REM ============================================================
if exist "%TEMP%\sam2\.git" (cd /d "%TEMP%\sam2" && git pull) else (git clone https://github.com/facebookresearch/sam2.git "%TEMP%\sam2")
cd /d "%TEMP%\sam2"
"%PIP%" install --no-user -e .

REM ============================================================
REM Insight Face
REM ============================================================
"%PYTHON%" -m pip uninstall onnxruntime -y
"%PIP%" install -U --no-user insightface onnxruntime

REM ============================================================
REM numpy, PyTorch をインストール
REM ============================================================
set "CUDA_TAG=cu128"
"%PIP%" install --no-user -U numpy torch torchvision torchaudio --index-url https://download.pytorch.org/whl/%CUDA_TAG%

REM ============================================================
REM torch-cluster をインストール
REM ============================================================
for /f "delims=" %V in ('python -c "import torch; print(torch.__version__.split('+')[0])"') do set "TORCH_VER=%V"
"%PIP%" install --no-user -U torch-cluster -f https://data.pyg.org/whl/torch-%TORCH_VER%+%CUDA_TAG%.html

REM ============================================================
REM numpy と PyTorch(CUDA 12.8 対応 wheel)、pip キャッシュを全削除
set "CUDA_TAG=cu128"
"%PIP%" install --no-user -U numpy torch torchvision torchaudio --index-url https://download.pytorch.org/whl/%CUDA_TAG%
"%PIP%" install -U --no-user scipy pillow pandas
"%PIP%" uninstall -y opencv-python-headless opencv-contrib-python-headless opencv-python
"%PIP%" install --no-user --force-reinstall opencv-contrib-python
"%PIP%" cache purge

echo インストール完了

インストール確認のために次のコマンドを実行


REM ============================================================
REM インストール確認チェック
REM ============================================================

REM Pythonパス設定
set "PYTHON_PATH=C:\Program Files\Python312"
set "PYTHON=%PYTHON_PATH%\python.exe"
set "PIP=%PYTHON_PATH%\Scripts\pip"

echo.
echo ===== インストール確認 =====
echo.

echo [数値計算・データ処理]
"%PYTHON%" -c "import numpy; print('  numpy', numpy.__version__)" 2>nul || echo   *** 未検出 *** numpy
"%PYTHON%" -c "import numba; print('  numba', numba.__version__)" 2>nul || echo   *** 未検出 *** numba
"%PYTHON%" -c "import scipy; print('  scipy', scipy.__version__)" 2>nul || echo   *** 未検出 *** scipy
"%PYTHON%" -c "import pandas; print('  pandas', pandas.__version__)" 2>nul || echo   *** 未検出 *** pandas
"%PYTHON%" -c "import matplotlib; print('  matplotlib', matplotlib.__version__)" 2>nul || echo   *** 未検出 *** matplotlib
"%PYTHON%" -c "import sklearn; print('  scikit-learn', sklearn.__version__)" 2>nul || echo   *** 未検出 *** scikit-learn

echo [画像・音声処理]
"%PYTHON%" -c "import PIL; print('  pillow', PIL.__version__)" 2>nul || echo   *** 未検出 *** pillow
"%PYTHON%" -c "import albumentations; print('  albumentations', albumentations.__version__)" 2>nul || echo   *** 未検出 *** albumentations
"%PYTHON%" -c "import cv2; print('  opencv-python', cv2.__version__)" 2>nul || echo   *** 未検出 *** opencv-python
python -c "import cv2, numpy as np, matplotlib.pyplot as plt; img=np.full((480,640,3),128,dtype=np.uint8); cv2.putText(img,'OpenCV Window Test',(80,240),cv2.FONT_HERSHEY_SIMPLEX,1.0,(255,255,255),2); plt.imshow(cv2.cvtColor(img,cv2.COLOR_BGR2RGB)); plt.show()"
"%PYTHON%" -c "import ultralytics; print('  ultralytics', ultralytics.__version__)" 2>nul || echo   *** 未検出 *** ultralytics
"%PYTHON%" -c "import boxmot; print('  boxmot', boxmot.__version__)" 2>nul || echo   *** 未検出 *** boxmot
"%PYTHON%" -c "import supervision; print('  supervision', supervision.__version__)" 2>nul || echo   *** 未検出 *** supervision
"%PYTHON%" -c "import easyocr; print('  easyocr', easyocr.__version__)" 2>nul || echo   *** 未検出 *** easyocr
"%PYTHON%" -c "import yomitoku; print('  yomitoku OK')" 2>nul || echo   *** 未検出 *** yomitoku
"%PYTHON%" -c "import face_alignment; print('  face-alignment OK')" 2>nul || echo   *** 未検出 *** face-alignment
"%PYTHON%" -c "import deepface; print('  deepface', deepface.__version__)" 2>nul || echo   *** 未検出 *** deepface
"%PYTHON%" -c "from retinaface import RetinaFace; print('  retina-face OK')" 2>nul || echo   *** 未検出 *** retina-face
"%PYTHON%" -c "import mediapipe; print('  mediapipe', mediapipe.__version__)" 2>nul || echo   *** 未検出 *** mediapipe
"%PYTHON%" -c "import mediapipe as mp; print('mediapipe:', mp.__version__)"
"%PYTHON%" -c "import onnxruntime as ort; print('providers:', ort.get_available_providers())"
"%PYTHON%" -c "import cv2; print('opencv:', cv2.__version__)"
REM MediaPipe Tasks API 動作確認
"%PYTHON%" -c "from mediapipe.tasks import python as mp_py; from mediapipe.tasks.python import vision; print('tasks API OK')"
"%PYTHON%" -c "import rembg; print('  rembg OK')" 2>nul || echo   *** 未検出 *** rembg
"%PYTHON%" -c "import sixdrepnet; print('  sixdrepnet OK')" 2>nul || echo   *** 未検出 *** sixdrepnet
"%PYTHON%" -c "import librosa; print('  librosa', librosa.__version__)" 2>nul || echo   *** 未検出 *** librosa

echo [ファイル処理・変換ツール]
"%PYTHON%" -c "import static_ffmpeg; print('  static-ffmpeg OK')" 2>nul || echo   *** 未検出 *** static-ffmpeg
"%PYTHON%" -c "import py7zr; print('  py7zr', py7zr.__version__)" 2>nul || echo   *** 未検出 *** py7zr
"%PYTHON%" -c "import pypandoc; print('  pypandoc_binary', pypandoc.__version__)" 2>nul || echo   *** 未検出 *** pypandoc_binary

echo [HTTP通信・Webフレームワーク]
"%PYTHON%" -c "import requests; print('  requests', requests.__version__)" 2>nul || echo   *** 未検出 *** requests
"%PYTHON%" -c "import bs4; print('  beautifulsoup4', bs4.__version__)" 2>nul || echo   *** 未検出 *** beautifulsoup4
"%PYTHON%" -c "import flask; print('  flask', flask.__version__)" 2>nul || echo   *** 未検出 *** flask
"%PYTHON%" -c "import selenium; print('  selenium', selenium.__version__)" 2>nul || echo   *** 未検出 *** selenium
"%PYTHON%" -c "import fastapi; print('  fastapi', fastapi.__version__)" 2>nul || echo   *** 未検出 *** fastapi
"%PYTHON%" -c "import pydantic; print('  pydantic', pydantic.__version__)" 2>nul || echo   *** 未検出 *** pydantic
"%PYTHON%" -c "import sqlalchemy; print('  SQLAlchemy', sqlalchemy.__version__)" 2>nul || echo   *** 未検出 *** SQLAlchemy
"%PYTHON%" -c "import uvicorn; print('  uvicorn', uvicorn.__version__)" 2>nul || echo   *** 未検出 *** uvicorn

echo [自然言語処理]
"%PYTHON%" -c "import spacy; print('  spacy', spacy.__version__)" 2>nul || echo   *** 未検出 *** spacy
"%PYTHON%" -c "import ginza; print('  ginza', ginza.__version__)" 2>nul || echo   *** 未検出 *** ginza
"%PYTHON%" -c "import ja_ginza; print('  ja-ginza OK')" 2>nul || echo   *** 未検出 *** ja-ginza

echo [Hugging Face関連]
"%PYTHON%" -c "import transformers; print('  transformers', transformers.__version__)" 2>nul || echo   *** 未検出 *** transformers
"%PYTHON%" -c "import datasets; print('  datasets', datasets.__version__)" 2>nul || echo   *** 未検出 *** datasets
"%PYTHON%" -c "import sentence_transformers; print('  sentence-transformers', sentence_transformers.__version__)" 2>nul || echo   *** 未検出 *** sentence-transformers
"%PYTHON%" -c "import accelerate; print('  accelerate', accelerate.__version__)" 2>nul || echo   *** 未検出 *** accelerate
"%PYTHON%" -c "import diffusers; print('  diffusers', diffusers.__version__)" 2>nul || echo   *** 未検出 *** diffusers
"%PYTHON%" -c "import timm; print('  timm', timm.__version__)" 2>nul || echo   *** 未検出 *** timm
"%PYTHON%" -c "import einops; print('  einops', einops.__version__)" 2>nul || echo   *** 未検出 *** einops
"%PYTHON%" -c "import huggingface_hub; print('  huggingface_hub', huggingface_hub.__version__)" 2>nul || echo   *** 未検出 *** huggingface_hub
"%PYTHON%" -c "import hf_xet; print('  hf_xet OK')" 2>nul || echo   *** 未検出 *** hf_xet

echo [LLMアプリケーション開発]
"%PYTHON%" -c "import langchain; print('  langchain', langchain)" 2>nul || echo   *** 未検出 *** langchain
"%PYTHON%" -c "import langchain_community; print('  langchain-community', langchain_community.__version__)" 2>nul || echo   *** 未検出 *** langchain-community
"%PYTHON%" -c "import langchain_ollama; print('  langchain-ollama', langchain_ollama.__version__)" 2>nul || echo   *** 未検出 *** langchain-ollama
"%PYTHON%" -c "import langchain_huggingface; print('  langchain-huggingface', langchain_huggingface)" 2>nul || echo   *** 未検出 *** langchain-huggingface
"%PYTHON%" -c "import langchain_openai; print('  langchain-openai', langchain_openai.__version__)" 2>nul || echo   *** 未検出 *** langchain-openai
"%PYTHON%" -c "import langchain_google_genai; print('  langchain-google-genai', langchain_google_genai)" 2>nul || echo   *** 未検出 *** langchain-google-genai
"%PYTHON%" -c "import langchain_anthropic; print('  langchain-anthropic', langchain_anthropic.__version__)" 2>nul || echo   *** 未検出 *** langchain-anthropic
"%PYTHON%" -c "import langgraph; print('  langgraph', langgraph)" 2>nul || echo   *** 未検出 *** langgraph
"%PYTHON%" -c "import chromadb; print('  chromadb', chromadb.__version__)" 2>nul || echo   *** 未検出 *** chromadb

echo [LLM推論]
"%PYTHON%" -c "import llama_cpp; print('  llama-cpp-python', llama_cpp.__version__)" 2>nul || echo   *** 未検出 *** llama-cpp-python

echo [LLM APIクライアント]
"%PYTHON%" -c "import openai; print('  openai', openai.__version__)" 2>nul || echo   *** 未検出 *** openai
"%PYTHON%" -c "import openvino; print('  openvino', openvino.__version__)" 2>nul || echo   *** 未検出 *** openvino
"%PYTHON%" -c "import google.genai; print('  google-genai OK')" 2>nul || echo   *** 未検出 *** google-genai
"%PYTHON%" -c "import anthropic; print('  anthropic', anthropic.__version__)" 2>nul || echo   *** 未検出 *** anthropic
"%PYTHON%" -c "import litellm; print('  litellm', litellm)" 2>nul || echo   *** 未検出 *** litellm

echo [LLMファインチューニング]
"%PYTHON%" -c "import trl; print('  trl', trl.__version__)" 2>nul || echo   *** 未検出 *** trl
"%PYTHON%" -c "import peft; print('  peft', peft.__version__)" 2>nul || echo   *** 未検出 *** peft

echo [実験管理・MLOps]
"%PYTHON%" -c "import mlflow; print('  mlflow', mlflow.__version__)" 2>nul || echo   *** 未検出 *** mlflow

echo [UIフレームワーク]
"%PYTHON%" -c "import gradio; print('  gradio', gradio.__version__)" 2>nul || echo   *** 未検出 *** gradio
"%PYTHON%" -c "import streamlit; print('  streamlit', streamlit.__version__)" 2>nul || echo   *** 未検出 *** streamlit

echo [JupyterLab]
"%PYTHON%" -c "import jupyterlab; print('  jupyterlab', jupyterlab.__version__)" 2>nul || echo   *** 未検出 *** jupyterlab

echo [TensorFlow]
"%PYTHON%" -c "import tensorflow; print('  tensorflow', tensorflow.__version__)" 2>nul || echo   *** 未検出 *** tensorflow
"%PYTHON%" -c "import tf_keras; print('  tf-keras OK')" 2>nul || echo   *** 未検出 *** tf-keras
"%PYTHON%" -c "import flatbuffers; print('  flatbuffers OK')" 2>nul || echo   *** 未検出 *** flatbuffers
"%PYTHON%" -c "import flatgeobuf; print('  flatgeobuf OK')" 2>nul || echo   *** 未検出 *** flatgeobuf

echo [PyTorch関連]
"%PYTHON%" -c "import torch; print('  torch', torch.__version__); print('  CUDA available:', torch.cuda.is_available())" 2>nul || echo   *** 未検出 *** torch
"%PYTHON%" -c "import torchvision; print('  torchvision', torchvision.__version__)" 2>nul || echo   *** 未検出 *** torchvision
"%PYTHON%" -c "import torchaudio; print('  torchaudio', torchaudio.__version__)" 2>nul || echo   *** 未検出 *** torchaudio
"%PYTHON%" -c "import torch_cluster; print('  torch-cluster OK')" 2>nul || echo   *** 未検出 *** torch-cluster

echo [その他]
"%PYTHON%" -c "import imageio; print('  imageio', imageio.__version__)" 2>nul || echo   *** 未検出 *** imageio
"%PYTHON%" -c "import pymeshlab; print('  pymeshlab', pymeshlab)" 2>nul || echo   *** 未検出 *** pymeshlab
"%PYTHON%" -c "import sophuspy; print('  sophuspy OK')" 2>nul || echo   *** 未検出 *** sophuspy
"%PYTHON%" -c "import fast_simplification; print('  fast_simplification OK')" 2>nul || echo   *** 未検出 *** fast_simplification
"%PYTHON%" -c "import plotly; print('  plotly', plotly.__version__)" 2>nul || echo   *** 未検出 *** plotly
"%PYTHON%" -c "import torchdiffeq; print('  torchdiffeq OK')" 2>nul || echo   *** 未検出 *** torchdiffeq
"%PYTHON%" -c "import sentencepiece; print('  sentencepiece', sentencepiece.__version__)" 2>nul || echo   *** 未検出 *** sentencepiece
"%PYTHON%" -c "import google.protobuf; print('  protobuf', google.protobuf.__version__)" 2>nul || echo   *** 未検出 *** protobuf
"%PYTHON%" -c "import pyrender; print('  pyrender', pyrender.__version__)" 2>nul || echo   *** 未検出 *** pyrender

echo [SAM2]
"%PYTHON%" -c "import sam2; print('  sam2 OK')" 2>nul || echo   *** 未検出 *** sam2

echo [InsightFace]
"%PYTHON%" -c "import insightface; print('  insightface', insightface.__version__)" 2>nul || echo   *** 未検出 *** insightface
"%PYTHON%" -c "import onnxruntime; print('  onnxruntime', onnxruntime.__version__)" 2>nul || echo   *** 未検出 *** onnxruntime

echo.
echo ===== 動作確認 =====
echo.

REM SAM2 動作確認
"%PYTHON%" -c "import urllib.request, torch; from sam2.build_sam import build_sam2; from sam2.sam2_image_predictor import SAM2ImagePredictor; urllib.request.urlretrieve('https://dl.fbaipublicfiles.com/segment_anything_2/092824/sam2.1_hiera_tiny.pt', 'sam2.1_hiera_tiny.pt'); urllib.request.urlretrieve('https://ultralytics.com/images/bus.jpg', 'sample.jpg'); import numpy as np; from PIL import Image; predictor = SAM2ImagePredictor(build_sam2('configs/sam2.1/sam2.1_hiera_t.yaml', 'sam2.1_hiera_tiny.pt')); predictor.set_image(np.array(Image.open('sample.jpg').convert('RGB'))); masks, scores, _ = predictor.predict(point_coords=[[320,240]], point_labels=[1]); print('マスク数:', len(masks), '最高スコア:', scores.max())"

REM YOLO11によるultralytics動作確認
"%PYTHON%" -c "import urllib.request; from ultralytics import YOLO; urllib.request.urlretrieve('https://ultralytics.com/images/bus.jpg', 'sample.jpg'); model = YOLO('yolo11n.pt'); results = model('sample.jpg'); results[0].show()"

REM FastSAM動作確認
"%PYTHON%" -c "import urllib.request; from ultralytics import FastSAM; urllib.request.urlretrieve('https://ultralytics.com/images/bus.jpg', 'sample.jpg'); model = FastSAM('FastSAM-s.pt'); results = model('sample.jpg'); results[0].show()"

REM RTDETR 動作確認
"%PYTHON%" -c "import urllib.request; from ultralytics import RTDETR; urllib.request.urlretrieve('https://ultralytics.com/images/bus.jpg', 'sample.jpg'); model = RTDETR('rtdetr-l.pt'); results = model('sample.jpg'); results[0].show()"

REM InsightFace 動作確認
"%PYTHON%" -c "import numpy as np; np.int = int; import urllib.request, cv2; from insightface.app import FaceAnalysis; urllib.request.urlretrieve('https://raw.githubusercontent.com/deepinsight/insightface/master/python-package/insightface/data/images/t1.jpg', 'sample.jpg'); app = FaceAnalysis(providers=['CUDAExecutionProvider', 'CPUExecutionProvider']); app.prepare(ctx_id=0, det_size=(640, 640)); img = cv2.imread('sample.jpg'); faces = app.get(img); result = app.draw_on(img, faces); cv2.imshow('InsightFace', result); cv2.waitKey(0)"

echo.
echo ===== 確認完了 =====

6. 3次元

3次元モデリング・レンダリング・アニメーション、ガウシアンスプラッティング、3次元ゲームエンジンのツール群である。

ソフトウェア説明用途
Blenderwingetでインストールする。統合型3次元CG制作ソフト。ジオメトリノード(ノードベースの手続き型モデリング機能)やCycles(物理ベースレンダラー)を備える。3次元モデリング、アニメーション
SkySplatGitHubからダウンロードし、Blenderにインストールする。Blenderアドオン。ドローン映像から3次元ガウシアンスプラッティングによる3次元シーンを生成する。3次元再構成
ShapeRMeta Reality Labs Research開発。画像シーケンスから物体単位でメトリックスケールの3次元メッシュを生成する。Windowsへのインストールは調査中。3次元再構成
Skyfall-GS衛星画像から3次元都市シーンを生成する。3次元ガウシアンスプラッティングと拡散モデルを組み合わせる。Windowsへのインストールは調査中。3次元再構成
ml-sharpApple開発。単一画像から3次元ガウシアン表現を生成する。1秒未満でフォトリアリスティックな新視点合成を実現する。Windowsへのインストールは調査中。3次元再構成
VGGTGitHubからダウンロードし、pipでインストールする。Oxford大学VGGおよびMeta AI開発。フィードフォワード型ニューラルネットワークにより、1枚から数百枚の画像からカメラパラメータ、深度マップ、点群マップ(point map)、3次元ポイントトラッキングを推論する。CVPR 2025 Best Paper Award受賞。3次元再構成
COLMAPGitHubからバイナリをダウンロードし、インストールする。汎用のStructure-from-Motion(SfM)およびMulti-View Stereo(MVS)パイプライン。GUIとコマンドラインインターフェースを備え、複数画像からカメラパラメータ、疎な点群、密な点群、メッシュを復元する。3次元再構成
Postshot公式サイトからダウンロードし、インストールする。画像群から3次元ガウシアンスプラッティングによるシーンを生成するデスクトップアプリ。GUIとコマンドラインインターフェースを備える。3次元再構成
BrushGitHubからダウンロードし、インストールする。ガウシアンスプラッティングによる3次元再構成エンジン。Windows、macOS、Linux、ブラウザ、Androidで動作し、NVIDIA以外のGPU(AMD、Intel)にも対応する。3次元再構成
Nerfstudiopipでインストールする。NeRF(Neural Radiance Fields)およびガウシアンスプラッティングの作成、トレーニング、テストのためのモジュラーフレームワーク。3次元再構成
plateaukitpipでインストールする。国土交通省PLATEAU(日本全国の3D都市モデルを整備・オープンデータ化するプロジェクト)を利用するための変換ツールおよびPythonライブラリ。CityGML形式の3D都市モデルの読み込みと変換ができる。3D都市モデル
Panda3Dpipでインストールする。Disney/CMUが開発した3次元ゲームエンジン。Pythonでシーングラフ(3次元オブジェクトの階層構造)に基づいて3次元開発ができる。Python 3次元ゲーム開発
Open3Dpipでインストールする。3次元データ処理ライブラリ。点群・メッシュ・RGBDデータの読み込み、可視化、処理アルゴリズムを提供する。3次元データ処理
MeshLabwingetでインストールする。3次元メッシュ処理ソフト。メッシュ・点群の編集、クリーニング、修復、検査、レンダリング、形式変換のためのツール群を提供する。3次元データ処理
Unreal EngineEpic Games Launcherからインストールする。ゲームエンジン。Nanite(仮想化ジオメトリシステム)やLumen(動的グローバルイルミネーション)を備える。3次元ゲーム開発

インストールコマンドの実行方法

管理者権限コマンドプロンプトを起動する (手順:Windowsキーまたはスタートメニュー → cmd と入力 → 右クリック → 「管理者として実行」)。 wingetの--scope machineオプションでシステム全体にインストールするには、管理者権限が必要である。実行時はコマンド全体をコマンドプロンプトにコピー&ペーストする。

インストールコマンド

REM ============================================================
REM  3次元 インストールスクリプト(管理者権限で実行)
REM  前提条件:
REM    - Python 3.12 が C:\Program Files\Python312 にインストール済みであること
REM    - Git がインストール済みであること
REM    - Visual Studio 2026 Build Tools がインストール済みであること
REM    - NVIDIA GPU および CUDA 12.8 対応ドライバの利用を推奨
REM      (未搭載の場合は CPU モードで動作するが、
REM       画像生成・音声処理等は大幅に低速となる)
REM ============================================================

REM 管理者権限チェック
net session >nul 2>&1
if errorlevel 1 ( echo [エラー] 管理者権限で実行してください & pause & exit /b 1 )

REM winget パッケージ一覧のローカルキャッシュを更新
winget source update

REM Pythonパス設定
set "PYTHON_PATH=C:\Program Files\Python312"
set "PYTHON=%PYTHON_PATH%\python.exe"
set "PIP=%PYTHON_PATH%\Scripts\pip"

REM Python存在チェック(未インストールの場合はシステム領域にインストール、パス設定)
if not exist "%PYTHON%" echo Python 3.12 が見つかりません。インストールします... & winget install --id Python.Python.3.12 -e --scope machine --silent --accept-source-agreements --accept-package-agreements --override "/quiet InstallAllUsers=1 PrependPath=1 Include_test=0 Include_pip=1 Include_launcher=1 InstallLauncherAllUsers=1 TargetDir=\"C:\Program Files\Python312\"" & powershell -NoProfile -Command "$p='C:\Program Files\Python312'; $s=\"$p\Scripts\"; $c=[Environment]::GetEnvironmentVariable('Path','Machine'); if((Test-Path $p) -and (';'+$c+';' -notlike \"*;$p;*\") -and (';'+$c+';' -notlike \"*;$s;*\")){[Environment]::SetEnvironmentVariable('Path',\"$p;$s;$c\",'Machine')}"

REM Git存在チェック(未インストールの場合はシステム領域にインストール、パス設定)
if not exist "C:\Program Files\Git\cmd\git.exe" echo Git が見つかりません。インストールします... & winget install --scope machine --id Git.Git -e --silent --disable-interactivity --force --accept-source-agreements --accept-package-agreements --override "/VERYSILENT /NORESTART /NOCANCEL /SP- /CLOSEAPPLICATIONS /RESTARTAPPLICATIONS /COMPONENTS=""icons,ext\reg\shellhere,assoc,assoc_sh"" /o:PathOption=Cmd /o:CRLFOption=CRLFCommitAsIs /o:BashTerminalOption=MinTTY /o:DefaultBranchOption=main /o:EditorOption=VIM /o:SSHOption=OpenSSH /o:UseCredentialManager=Enabled /o:PerformanceTweaksFSCache=Enabled /o:EnableSymlinks=Disabled /o:EnableFSMonitor=Disabled" & powershell -NoProfile -Command "$g='C:\Program Files\Git\cmd'; $c=[Environment]::GetEnvironmentVariable('Path','Machine'); if((Test-Path $g) -and (';'+$c+';' -notlike \"*;$g;*\")){[Environment]::SetEnvironmentVariable('Path',\"$g;$c\",'Machine')}"

REM Build Tools 2026 存在チェック(未インストールの場合はシステム領域にインストール)
if not exist "C:\Program Files (x86)\Microsoft Visual Studio\18\BuildTools\Common7\Tools\VsDevCmd.bat" taskkill /F /IM vs_setup.exe /T >nul 2>&1 & taskkill /F /IM vs_installer.exe /T >nul 2>&1 & taskkill /F /IM vs_installerservice.exe /T >nul 2>&1 & taskkill /F /IM msiexec.exe /T >nul 2>&1 & echo Build Tools 2026 が見つかりません。インストールします... & winget install --scope machine --id Microsoft.VisualStudio.BuildTools -e --silent --disable-interactivity --force --accept-source-agreements --accept-package-agreements --override "--quiet --wait --norestart --nocache --add Microsoft.VisualStudio.Workload.VCTools --includeRecommended --add Microsoft.VisualStudio.Workload.MSBuildTools --add Microsoft.VisualStudio.Component.VC.CMake.Project --add Microsoft.VisualStudio.Component.VC.Llvm.Clang --add Microsoft.VisualStudio.Component.VC.Llvm.ClangToolset --add Microsoft.VisualStudio.Component.Windows11SDK.26100"


REM ============================================================
REM Blender インストール
REM ============================================================
winget install --id BlenderFoundation.Blender -e --scope machine --silent --accept-package-agreements --accept-source-agreements --location "C:\Program Files\Blender" --force

REM Blender実行ファイルのパスを動的に検出
set "BLENDER_EXE="
powershell -NoProfile -Command "Get-ChildItem -Path 'C:\Program Files','C:\Program Files (x86)' -Recurse -Filter 'blender.exe' -ErrorAction SilentlyContinue | Sort-Object -Property @{Expression={[System.Diagnostics.FileVersionInfo]::GetVersionInfo($_.FullName).FileVersion}} -Descending | Select-Object -First 1 -ExpandProperty FullName" > "%TEMP%\blender_path.txt"
set /p BLENDER_EXE=<"%TEMP%\blender_path.txt"
del "%TEMP%\blender_path.txt"
if not defined BLENDER_EXE (
    echo Blenderの実行ファイルが見つかりません
    exit /b 1
)
echo Blender: %BLENDER_EXE%

REM BlenderディレクトリをPATHに追加
for %i in ("%BLENDER_EXE%") do set "BLENDER_DIR=%~dpi"
set "BLENDER_DIR=%BLENDER_DIR:~0,-1%"
powershell -NoProfile -Command "$p='%BLENDER_DIR%'; $c=[Environment]::GetEnvironmentVariable('Path','Machine'); if((Test-Path $p) -and (';'+$c+';' -notlike \"*;$p;*\")){[Environment]::SetEnvironmentVariable('Path',\"$c;$p\",'Machine')}"

REM ============================================================
REM SkySplat(Blenderアドオン)インストール
REM ============================================================
set "SKYSPLAT_ZIP=%TEMP%\skysplat_blender.zip"
powershell -NoProfile -Command "Invoke-WebRequest -Uri 'https://github.com/kyjohnso/skysplat_blender/archive/refs/heads/main.zip' -OutFile '%SKYSPLAT_ZIP%'"

REM インストールと有効化
"%BLENDER_EXE%" --background --python-expr "import bpy; bpy.ops.preferences.addon_install(filepath=r'%SKYSPLAT_ZIP%', overwrite=True); bpy.ops.preferences.addon_enable(module='skysplat_blender-main'); bpy.ops.wm.save_userpref()"

REM アドオンの有効化状況確認
"%BLENDER_EXE%" --background --python-expr "import addon_utils; enabled = [m.__name__ for m in addon_utils.modules() if addon_utils.check(m.__name__)[0]]; print('ENABLED' if any('skysplat' in n.lower() for n in enabled) else 'NOT_ENABLED')"

REM アドオン情報の詳細表示
"%BLENDER_EXE%" --background --python-expr "import addon_utils; [(print(m.__name__, addon_utils.check(m.__name__))) for m in addon_utils.modules() if 'skysplat' in m.__name__.lower()]"

REM ============================================================
REM KIRI Engine 3DGS Render Blenderアドオン インストール
REM   KIRI Engine製。学習済みの3Dガウシアンスプラットを
REM   インポート・レンダリング・編集する。
REM   https://github.com/Kiri-Innovation/3dgs-render-blender-addon
REM ============================================================
set "KIRI_ZIP=%TEMP%\3dgs_render_by_kiri_engine.zip"

REM GitHub APIから最新リリースのZIPアセットをダウンロード
powershell -NoProfile -Command "$r = Invoke-RestMethod -Uri 'https://api.github.com/repos/Kiri-Innovation/3dgs-render-blender-addon/releases/latest'; $a = $r.assets | Where-Object { $_.name -like '*.zip' } | Select-Object -First 1; if ($a) { Write-Host ('Downloading: ' + $a.name); Invoke-WebRequest -Uri $a.browser_download_url -OutFile '%KIRI_ZIP%' } else { Write-Host 'ERROR: No ZIP asset found'; exit 1 }"

REM インストール
"%BLENDER_EXE%" --background --python-expr "import bpy; bpy.ops.preferences.addon_install(filepath=r'%KIRI_ZIP%', overwrite=True); bpy.ops.wm.save_userpref()"

REM モジュール名を検索して有効化
"%BLENDER_EXE%" --background --python-expr "import bpy, addon_utils; mods = [m.__name__ for m in addon_utils.modules() if 'kiri' in m.__name__.lower() or '3dgs' in m.__name__.lower()]; print('Found modules:', mods); [bpy.ops.preferences.addon_enable(module=n) for n in mods]; bpy.ops.wm.save_userpref()"

REM 有効化状況の確認
"%BLENDER_EXE%" --background --python-expr "import addon_utils; enabled = [m.__name__ for m in addon_utils.modules() if addon_utils.check(m.__name__)[0]]; print('ENABLED' if any('kiri' in n.lower() or '3dgs' in n.lower() for n in enabled) else 'NOT_ENABLED')"

REM アドオン情報の詳細表示
"%BLENDER_EXE%" --background --python-expr "import addon_utils; [(print(m.__name__, addon_utils.check(m.__name__))) for m in addon_utils.modules() if 'kiri' in m.__name__.lower() or '3dgs' in m.__name__.lower()]"

REM ============================================================
REM VGGT インストール
REM ============================================================
cd /d %TEMP%
if exist "%TEMP%\vggt\.git" (cd /d "%TEMP%\vggt" && git pull) else (git clone https://github.com/facebookresearch/vggt.git "%TEMP%\vggt")
cd /d "%TEMP%\vggt"
powershell -Command "(Get-Content pyproject.toml) -replace 'numpy<2', 'numpy>=2.0.0' | Set-Content pyproject.toml"
powershell -Command "(Get-Content requirements.txt) -replace 'numpy<2', 'numpy>=2.0.0' | Set-Content requirements.txt"
"%PIP%" install --no-user -U .
cd ..
rmdir /s /q vggt

REM ============================================================
REM COLMAP インストール
REM ============================================================
set "COLMAP_VER=4.0.3"
set "COLMAP_DIR=C:\Program Files\COLMAP"
set "COLMAP_ZIP=%TEMP%\colmap.zip"
set "COLMAP_URL=https://github.com/colmap/colmap/releases/download/%COLMAP_VER%/colmap-x64-windows-cuda.zip"

rmdir /s /q "%COLMAP_DIR%"
if not exist "%COLMAP_DIR%" mkdir "%COLMAP_DIR%"
powershell -NoProfile -Command "Invoke-WebRequest -Uri '%COLMAP_URL%' -OutFile '%COLMAP_ZIP%'"
powershell -NoProfile -Command "Expand-Archive -Path '%COLMAP_ZIP%' -DestinationPath '%COLMAP_DIR%' -Force"

REM COLMAP.batをPATHに追加(公式推奨:DLLパスが自動設定される)
powershell -NoProfile -Command "$bat=Get-ChildItem '%COLMAP_DIR%' -Recurse -Filter 'COLMAP.bat' -ErrorAction SilentlyContinue | Select-Object -First 1; if($bat){$binDir=$bat.DirectoryName; $c=[Environment]::GetEnvironmentVariable('Path','Machine'); if(';'+$c+';' -notlike \"*;$binDir;*\"){[Environment]::SetEnvironmentVariable('Path',\"$c;$binDir\",'Machine')}}"

REM ============================================================
REM Postshot インストール
REM ============================================================
mkdir C:\Temp\Postshot
powershell -Command "Invoke-WebRequest -Uri 'https://www.jawset.com/public_download/jawset.postshot/win/' -OutFile 'C:\Temp\Postshot\PostshotSetup.exe'"
C:\Temp\Postshot\PostshotSetup.exe
rmdir /s /q C:\Temp\Postshot

REM ============================================================
REM Brush インストール
REM ============================================================
mkdir C:\Temp\Brush 2>nul
powershell -Command "Invoke-WebRequest -Uri 'https://github.com/ArthurBrussee/brush/releases/download/v0.3.0/brush-app-x86_64-pc-windows-msvc.zip' -OutFile 'C:\Temp\Brush\brush.zip'"

REM システム領域に展開
mkdir "C:\Program Files\Brush"
powershell -Command "Expand-Archive -Path 'C:\Temp\Brush\brush.zip' -DestinationPath 'C:\Program Files\Brush' -Force"

REM PATHに追加(全ユーザ向け・永続)
powershell -NoProfile -Command "$p='C:\Program Files\Brush'; $c=[Environment]::GetEnvironmentVariable('Path','Machine'); if(';'+$c+';' -notlike \"*;$p;*\"){[Environment]::SetEnvironmentVariable('Path',\"$c;$p\",'Machine')}"

REM 後片付け
rmdir /s /q C:\Temp\Brush

REM 動作確認
"C:\Program Files\Brush\brush_app.exe" --help

REM ============================================================
REM Brush テスト実行
REM ============================================================
REM サンプルデータ(T&T truck, 約650MB)をダウンロード
mkdir C:\Temp\BrushTest 2>nul
curl -L -o C:\Temp\BrushTest\tandt_db.zip https://repo-sam.inria.fr/fungraph/3d-gaussian-splatting/datasets/input/tandt_db.zip

REM 展開
powershell -Command "Expand-Archive -Path 'C:\Temp\BrushTest\tandt_db.zip' -DestinationPath 'C:\Temp\BrushTest' -Force"

REM truckシーンでトレーニング実行
"C:\Program Files\Brush\brush_app.exe" --with-viewer C:\Temp\BrushTest\tandt\truck

REM ============================================================
REM PLATEAU Kit インストール
REM ============================================================
"%PIP%" install --no-user plateaukit cjio trimesh triangle numpy
REM PLATEAU データ
mkdir C:\image\plateau
curl -O https://assets.cms.plateau.reearth.io/assets/e5/2263cf-3caf-4627-82db-f92d305970b7/34207_fukuyama-shi_city_2020_citygml_7_op.zip

REM ============================================================
REM Panda3D インストール
REM ============================================================
"%PIP%" install --no-user -U panda3d

REM ============================================================
REM Open3D インストール
REM ============================================================
"%PIP%" install --no-user -U open3d

REM ============================================================
REM MeshLab インストール
REM ============================================================
winget install --id CNRISTI.MeshLab --source winget --scope machine --silent --accept-package-agreements --accept-source-agreements

REM ============================================================
REM Nerfstudio インストール
REM ============================================================
"%PIP%" install --no-user nerfstudio
"%PIP%" uninstall -y opencv-python-headless opencv-contrib-python-headless opencv-python
"%PIP%" install --no-user --force-reinstall opencv-contrib-python


REM numpy と PyTorch(CUDA 12.8 対応 wheel)、pip キャッシュを全削除
set "CUDA_TAG=cu128"
"%PIP%" install --no-user -U numpy torch torchvision torchaudio --index-url https://download.pytorch.org/whl/%CUDA_TAG%
"%PIP%" install -U --no-user scipy pillow pandas
"%PIP%" uninstall -y opencv-python-headless opencv-contrib-python-headless opencv-python
"%PIP%" install --no-user --force-reinstall opencv-contrib-python
"%PIP%" cache purge

REM ============================================================
REM Epic Games Launcher インストール(Unreal Engine 用)
REM ============================================================
taskkill /F /IM EpicGamesLauncher.exe
taskkill /F /IM EpicWebHelper.exe
echo Epic Games Launcher をインストールします
winget install --id EpicGames.EpicGamesLauncher -e --silent --accept-source-agreements --accept-package-agreements

REM ============================================================
REM Unreal Engine 案内表示
REM ============================================================
echo ============================================================
echo Unreal Engineは手動インストールが必要です
echo 1. Epic Games Launcherを起動
echo 2. Unreal Engineタブを選択
echo 3. 「エンジンをインストール」をクリック
echo 4. バージョンを選択してインストール
echo ============================================================

echo インストール完了

インストール確認のために次のコマンドを実行


REM ============================================================
REM インストール確認チェック
REM ============================================================

REM Pythonパス設定
set "PYTHON_PATH=C:\Program Files\Python312"
set "PYTHON=%PYTHON_PATH%\python.exe"
set "PIP=%PYTHON_PATH%\Scripts\pip"

REM Python存在チェック(未インストールの場合はシステム領域にインストール、パス設定)
if not exist "%PYTHON%" echo Python 3.12 が見つかりません。インストールします... & winget install --id Python.Python.3.12 -e --scope machine --silent --accept-source-agreements --accept-package-agreements --override "/quiet InstallAllUsers=1 PrependPath=1 Include_test=0 Include_pip=1 Include_launcher=1 InstallLauncherAllUsers=1 TargetDir=\"C:\Program Files\Python312\"" & powershell -NoProfile -Command "$p='C:\Program Files\Python312'; $s=\"$p\Scripts\"; $c=[Environment]::GetEnvironmentVariable('Path','Machine'); if((Test-Path $p) -and (';'+$c+';' -notlike \"*;$p;*\") -and (';'+$c+';' -notlike \"*;$s;*\")){[Environment]::SetEnvironmentVariable('Path',\"$p;$s;$c\",'Machine')}"

echo.
echo ===== インストール確認 =====
echo.

echo [Blender]
where blender 2>nul && blender --version || echo   *** 未検出 *** blender

echo [SkySplat (Blenderアドオン)]
for /f "delims=" %i in ('where blender 2^>nul') do "%i" --background --python-expr "import addon_utils; enabled=[m.__name__ for m in addon_utils.modules() if addon_utils.check(m.__name__)[0]]; print('  [検出]' if any('skysplat' in n.lower() for n in enabled) else '  *** 未検出 ***', 'skysplat')" 2>nul || echo   *** 未検出 *** skysplat (Blender未検出のため確認不可)

echo [COLMAP]
powershell -NoProfile -Command "$exe=Get-ChildItem 'C:\Program Files\COLMAP' -Recurse -Filter 'colmap.exe' -ErrorAction SilentlyContinue | Select-Object -First 1; if($exe){Write-Host ('  [検出] ' + $exe.FullName)} else {Write-Host '  *** 未検出 *** COLMAP'}"
powershell -NoProfile -Command "$bat=Get-ChildItem 'C:\Program Files\COLMAP' -Recurse -Filter 'COLMAP.bat' -ErrorAction SilentlyContinue | Select-Object -First 1; if($bat){Write-Host ('  COLMAP.bat: ' + $bat.FullName)} else {Write-Host '  *** 未検出 *** COLMAP.bat'}"
echo colmap test
colmap.bat automatic_reconstructor --workspace_path C:\temp --image_path c:\image\im --mesher POISSON

echo [VGGT]
"%PYTHON%" -c "import vggt; print('  vggt OK')" 2>nul || echo   *** 未検出 *** vggt

echo [Postshot]
powershell -NoProfile -Command "$exe=Get-ChildItem 'C:\Program Files','C:\Program Files (x86)' -Recurse -Filter 'Postshot*.exe' -ErrorAction SilentlyContinue | Select-Object -First 1; if($exe){Write-Host ('  [検出] ' + $exe.FullName)} else {Write-Host '  *** 未検出 *** Postshot (GUIインストーラーのため手動確認が必要な場合あり)'}"

echo [Brush]
if exist "C:\Program Files\Brush\brush_app.exe" (echo   [検出] Brush) else echo   *** 未検出 *** Brush

echo [plateau kit]
"%PYTHON%" -c "import plateaukit; print('  plateaukit OK')" 2>nul || echo   *** 未検出 *** plateaukit

echo [Nerfstudio]
"%PYTHON%" -c "import nerfstudio; print('  nerfstudio OK')" 2>nul || echo   *** 未検出 *** nerfstudio

echo [Panda3D]
"%PYTHON%" -c "import panda3d; print('  panda3d OK')" 2>nul || echo   *** 未検出 *** panda3d

echo [Open3D]
"%PYTHON%" -c "import open3d; print('  open3d', open3d.__version__)" 2>nul || echo   *** 未検出 *** open3d

echo [MeshLab]
where /R "C:\Program Files" MeshLab*.exe 2>nul || echo   *** 未検出 *** MeshLab

echo [Epic Games Launcher]
if exist "C:\Program Files (x86)\Epic Games\Launcher\Portal\Binaries\Win64\EpicGamesLauncher.exe" (echo   [検出] Epic Games Launcher) else echo   *** 未検出 *** Epic Games Launcher

echo.
echo ===== 確認完了 =====

7. マルチメディア・設計・作図

動画編集,音声処理など,マルチメディアコンテンツの制作に必要なツール群である.

ソフトウェア説明用途備考
Draw.ioER図,UML図,システム構成図などを作成する作図ツールのデスクトップ版.データは.drawio形式(XML)で保存される.設計図の作成wingetを用いてインストール可能
Canvaプレゼン資料,ポスター,SNS画像などを作成するデザインツール.テンプレートを使用してビジュアルを作成できる.資料デザイン,ポスター作成MSIX形式で配布
VLC media player多数のコーデックを内蔵するメディアプレイヤー.追加インストールなしで各種形式を再生できる.メディア再生wingetを用いてインストール可能
FFmpegコマンドライン型のメディア処理ツール.動画・音声の形式変換,フィルタ適用,ストリーミング配信に使用する.動画・音声の形式変換wingetを用いてインストール可能
Shotcutオープンソースの動画編集ソフト.タイムラインベースの編集,多数の映像・音声フィルタ,4K解像度の入出力に対応する.動画編集wingetを用いてインストール可能
VrewAIを活用した動画編集ソフト.音声認識による自動字幕生成,テキストベースの動画編集,AI音声合成に対応する.無料プランでは音声認識月120分,AI音声月10,000文字などの利用制限およびウォーターマークの付与がある.AI字幕生成,動画編集wingetを用いてインストール可能(--overrideオプション使用)
Audacity音声編集ソフト.マルチトラック編集,ノイズ除去,多数のエフェクトを備える.音声編集wingetを用いてインストール可能
VOICEVOXテキスト音声合成ソフト.深層学習でキャラクター性のある日本語音声を生成できる.イントネーションの手動調整が可能で,個性的なナレーション音声の作成に適する.キャラクター音声合成インストーラを用いてインストール
AivisSpeechStyle-Bert-VITS2エンジンを採用したテキスト音声合成ソフト.感情表現のスタイル指定が可能で,調整なしでも自然な日本語音声を生成できる.自然なナレーション音声の作成に適する.自然音声合成インストーラを用いてインストール(現行はpreview版)
OBS Studio録画・配信ソフト.NVENC(NVIDIA製ハードウェアエンコーダ)で効率的に画面を記録できる.画面録画,ライブ配信wingetを用いてインストール可能

インストールコマンドの実行方法

管理者権限コマンドプロンプトを起動する (手順:Windowsキーまたはスタートメニュー → cmd と入力 → 「管理者として実行」を選択). wingetの--scope machineオプションでシステム全体にインストールするには,管理者権限が必要である.実行時はコマンド全体をコマンドプロンプトにコピー&ペーストする.

インストールコマンド

REM ============================================================
REM メディア処理ソフトインストールスクリプト(管理者権限で実行)
REM ============================================================

REM 管理者権限チェック
net session >nul 2>&1
if errorlevel 1 ( echo [エラー] 管理者権限で実行してください & pause & exit /b 1 )

REM winget パッケージ一覧のローカルキャッシュを更新
winget source update

REM ============================================================
REM draw.io
REM ============================================================
REM draw.io をシステム領域にインストール
winget install --scope machine --id JGraph.Draw -e --silent --disable-interactivity --force --accept-source-agreements --accept-package-agreements --custom "/allusers"
REM draw.io の自動更新を無効化
powershell -NoProfile -Command "$f='C:\Program Files\draw.io\resources\app-update.yml'; if(Test-Path $f){Remove-Item $f -Force}"
REM draw.io のパス設定
powershell -NoProfile -Command "$p='C:\Program Files\draw.io'; $c=[Environment]::GetEnvironmentVariable('Path','Machine'); if((Test-Path $p) -and (';'+$c+';' -notlike \"*;$p;*\")){[Environment]::SetEnvironmentVariable('Path',\"$c;$p\",'Machine')}"

REM ============================================================
REM Canva
REM ============================================================
REM Canva 公式 64-bit MSIX をダウンロードして全ユーザーにプロビジョニング
REM 注意: プロビジョニングはユーザーがサインインした時点でインストールされるため,
REM       自動更新の無効化はサインイン後に別途実行が必要な場合がある
powershell -NoProfile -ExecutionPolicy Bypass -Command "try { $u='https://desktop-release.canva.com/windows-enterprise/Canva Setup Latest x64.msix'; $o=Join-Path $env:TEMP 'CanvaSetup_x64.msix'; Invoke-WebRequest -Uri $u -OutFile $o -UseBasicParsing; if (Test-Path $o) { Add-AppxProvisionedPackage -Online -SkipLicense -PackagePath $o; Remove-Item $o -Force } else { Write-Error 'Download failed' } } catch { Write-Error $_.Exception.Message; exit 1 }"
REM Canva の自動更新を無効化 (Win11 21H2+ 必要, UInt32 最大値で実質永久停止)
REM 注意: プロビジョニング直後はパッケージが見つからない場合がある.その場合はユーザーサインイン後に再実行する
powershell -NoProfile -Command "$pfn=(Get-AppxPackage -Name '*Canva*'|Select-Object -First 1).PackageFamilyName; if($pfn){Set-AppxPackageAutoUpdateSettings -PackageFamilyName $pfn -PauseUpdates -HoursToPause 4294967295}else{Write-Warning 'Canva package not found. Run after user sign-in.'}"

REM ============================================================
REM VLC media player
REM ============================================================
REM VLC media player をシステム領域にインストール
winget install --scope machine --id VideoLAN.VLC -e --silent --accept-source-agreements --accept-package-agreements

REM ============================================================
REM FFmpeg
REM ============================================================
REM FFmpeg 既存インストールのアンインストール
winget uninstall --id Gyan.FFmpeg --all-versions --force --silent --disable-interactivity --accept-source-agreements --silent --disable-interactivity --accept-source-agreements
REM 1. FFmpeg をインストール
winget install --id Gyan.FFmpeg -e --scope machine --location "C:\Program Files\FFmpeg" --silent --disable-interactivity --force --accept-source-agreements --accept-package-agreements
REM 2. インストールされた実体フォルダ名(ffmpeg-*)を自動取得して変数に格納
for /f "delims=" %i in ('dir /b /ad "C:\Program Files\FFmpeg\ffmpeg*"') do set "FFMPEG_DIR=%i"
REM 3. 既存のリンクがある場合は削除(エラー防止)し、新しいリンクを作成
if exist "C:\FFmpeg" rd "C:\FFmpeg"
mklink /D "C:\FFmpeg" "C:\Program Files\FFmpeg\%FFMPEG_DIR%"
REM 4. PowerShellを使用してPath設定(C:\FFmpeg\bin を先頭に追加)
powershell -NoProfile -Command "$p='C:\FFmpeg\bin'; $c=[Environment]::GetEnvironmentVariable('Path','Machine'); if((Test-Path $p) -and (';'+$c+';' -notlike \"*;$p;*\")){[Environment]::SetEnvironmentVariable('Path',\"$c;$p\",'Machine')}"

REM ============================================================
REM Shotcut
REM ============================================================
REM Shotcut をシステム領域にインストール
winget install --scope machine --id Meltytech.Shotcut -e --silent --accept-source-agreements --accept-package-agreements

REM ============================================================
REM Vrew
REM ============================================================
REM Vrew 既存インストールのアンインストール
winget uninstall Vrew --silent --disable-interactivity --accept-source-agreements
REM Vrew をシステム領域にインストール
winget install --id VoyagerX.Vrew -e --accept-package-agreements --accept-source-agreements --override "/S /D=C:\Vrew"

REM ============================================================
REM Audacity
REM ============================================================
REM Audacity をシステム領域にインストール
winget install --scope machine --id Audacity.Audacity -e --silent --accept-source-agreements --accept-package-agreements

REM ============================================================
REM OBS Studio
REM ============================================================
REM OBS Studio をシステム領域にインストール
winget install --scope machine --id OBSProject.OBSStudio -e --silent --accept-source-agreements

REM ============================================================
REM VOICEVOX
REM ============================================================
REM VOICEVOX 既存インストールのアンインストール(3箇所を確認)
REM 1. C:\VOICEVOX
if exist "C:\VOICEVOX\Uninstall VOICEVOX.exe" (start /wait "" "C:\VOICEVOX\Uninstall VOICEVOX.exe" /S & timeout /t 5 /nobreak >nul)
if exist "C:\VOICEVOX" rmdir /s /q "C:\VOICEVOX"
REM 2. C:\Program Files\VOICEVOX
if exist "C:\Program Files\VOICEVOX\Uninstall VOICEVOX.exe" (start /wait "" "C:\Program Files\VOICEVOX\Uninstall VOICEVOX.exe" /S & timeout /t 5 /nobreak >nul)
if exist "C:\Program Files\VOICEVOX" rmdir /s /q "C:\Program Files\VOICEVOX"
REM 3. %LOCALAPPDATA%\Programs\VOICEVOX(per-user)
if exist "%LOCALAPPDATA%\Programs\VOICEVOX\Uninstall VOICEVOX.exe" (start /wait "" "%LOCALAPPDATA%\Programs\VOICEVOX\Uninstall VOICEVOX.exe" /S & timeout /t 5 /nobreak >nul)
if exist "%LOCALAPPDATA%\Programs\VOICEVOX" rmdir /s /q "%LOCALAPPDATA%\Programs\VOICEVOX"
REM VOICEVOX 0.25.1(GPU/CUDA版)Web Setupインストーラをダウンロードし対話型インストールを実行
curl -L -o "%TEMP%\VOICEVOX-CUDA.Web.Setup.0.25.1.exe" https://github.com/VOICEVOX/voicevox/releases/download/0.25.1/VOICEVOX-CUDA.Web.Setup.0.25.1.exe
start /wait "" "%TEMP%\VOICEVOX-CUDA.Web.Setup.0.25.1.exe" /allusers /D=C:\VOICEVOX
REM インストーラの一時ファイルを削除
del "%TEMP%\VOICEVOX-CUDA.Web.Setup.0.25.1.exe"
REM 機能チェック:VOICEVOXエンジンを起動しAPIでバージョン情報を取得
echo VOICEVOX エンジンを起動中...
start "" "C:\VOICEVOX\vv-engine\run.exe"
timeout /t 15 /nobreak >nul
echo エンジンのバージョン情報を取得中...
curl -s http://127.0.0.1:50021/version
echo.
echo 話者一覧を取得中...
curl -s http://127.0.0.1:50021/speakers > "%TEMP%\voicevox_speakers.json"
if exist "%TEMP%\voicevox_speakers.json" echo 話者一覧を %TEMP%\voicevox_speakers.json に保存しました
REM 音声合成テスト:日本語テキストから音声を生成し再生する
echo 音声合成テストを実行中...
chcp 65001 >nul
echo ボイスボックスのインストールが完了しました>"%TEMP%\voicevox_test.txt"
curl -s -X POST "http://127.0.0.1:50021/audio_query?speaker=1" --get --data-urlencode text@"%TEMP%\voicevox_test.txt" -o "%TEMP%\voicevox_query.json"
curl -s -H "Content-Type: application/json" -X POST -d @"%TEMP%\voicevox_query.json" "http://127.0.0.1:50021/synthesis?speaker=1" -o "%TEMP%\voicevox_test.wav"
echo 合成した音声を再生中...
powershell -c "(New-Object Media.SoundPlayer '%TEMP%\voicevox_test.wav').PlaySync()"
REM 機能チェック用の一時ファイルを削除
del "%TEMP%\voicevox_test.txt" "%TEMP%\voicevox_query.json" "%TEMP%\voicevox_test.wav" "%TEMP%\voicevox_speakers.json" >nul
REM エンジンを停止
taskkill /im run.exe /f >nul
echo 機能チェックが完了しました

REM ============================================================
REM AivisSpeech
REM ============================================================
REM AivisSpeech 既存インストールのアンインストール(3箇所を確認)
REM 1. C:\AivisSpeech
if exist "C:\AivisSpeech\Uninstall AivisSpeech.exe" (start /wait "" "C:\AivisSpeech\Uninstall AivisSpeech.exe" /S & timeout /t 5 /nobreak >nul)
if exist "C:\AivisSpeech" rmdir /s /q "C:\AivisSpeech"
REM 2. C:\Program Files\AivisSpeech
if exist "C:\Program Files\AivisSpeech\Uninstall AivisSpeech.exe" (start /wait "" "C:\Program Files\AivisSpeech\Uninstall AivisSpeech.exe" /S & timeout /t 5 /nobreak >nul)
if exist "C:\Program Files\AivisSpeech" rmdir /s /q "C:\Program Files\AivisSpeech"
REM 3. %LOCALAPPDATA%\Programs\AivisSpeech(per-user)
if exist "%LOCALAPPDATA%\Programs\AivisSpeech\Uninstall AivisSpeech.exe" (start /wait "" "%LOCALAPPDATA%\Programs\AivisSpeech\Uninstall AivisSpeech.exe" /S & timeout /t 5 /nobreak >nul)
if exist "%LOCALAPPDATA%\Programs\AivisSpeech" rmdir /s /q "%LOCALAPPDATA%\Programs\AivisSpeech"
REM AivisSpeech 1.1.0-preview.4 Web Setupインストーラをダウンロードし対話型インストールを実行
curl -L -o "%TEMP%\AivisSpeech-Windows-x64-1.1.0-preview.4.exe" https://github.com/Aivis-Project/AivisSpeech/releases/download/1.1.0-preview.4/AivisSpeech-Windows-x64-1.1.0-preview.4.exe
start /wait "" "%TEMP%\AivisSpeech-Windows-x64-1.1.0-preview.4.exe" /allusers /D=C:\AivisSpeech
REM インストーラの一時ファイルを削除
del "%TEMP%\AivisSpeech-Windows-x64-1.1.0-preview.4.exe"
REM 機能チェック:AivisSpeech Engineを起動(初回はモデル自動ダウンロードのため数分かかる)
echo AivisSpeech Engine を起動中(初回はモデルDLのため数分かかります)...
start "" "C:\AivisSpeech\AivisSpeech-Engine\run.exe"
REM エンジンの起動完了をポーリングで待機(最大5分、10秒間隔)
powershell -NoProfile -Command "for($i=0;$i -lt 30;$i++){Start-Sleep -Seconds 10;try{$r=Invoke-WebRequest -Uri 'http://127.0.0.1:10101/version' -UseBasicParsing -ErrorAction Stop;if($r.StatusCode -eq 200){Write-Host 'エンジンの起動を確認しました';exit 0}}catch{};Write-Host ('待機中... '+($i+1)*10+'秒経過')};Write-Host 'エンジンの起動がタイムアウトしました(5分経過)';exit 1"
echo エンジンのバージョン情報を取得中...
curl -s http://127.0.0.1:10101/version
echo.
echo 話者一覧を取得中...
curl -s http://127.0.0.1:10101/speakers > "%TEMP%\aivisspeech_speakers.json"
if exist "%TEMP%\aivisspeech_speakers.json" echo 話者一覧を %TEMP%\aivisspeech_speakers.json に保存しました
REM 音声合成テスト:話者IDを動的に取得し日本語テキストから音声を生成し再生する
echo 音声合成テストを実行中...
chcp 65001 >nul
powershell -NoProfile -Command "$j=ConvertFrom-Json([System.IO.File]::ReadAllText('%TEMP%\aivisspeech_speakers.json',[System.Text.Encoding]::UTF8)); $j[0].styles[0].id" > "%TEMP%\aivisspeech_styleid.txt"
set /p STYLE_ID=<"%TEMP%\aivisspeech_styleid.txt"
echo 使用する話者スタイルID: %STYLE_ID%
echo アイビススピーチのインストールが完了しました>"%TEMP%\aivisspeech_test.txt"
curl -s -X POST "http://127.0.0.1:10101/audio_query?speaker=%STYLE_ID%" --get --data-urlencode text@"%TEMP%\aivisspeech_test.txt" -o "%TEMP%\aivisspeech_query.json"
curl -s -H "Content-Type: application/json" -X POST -d @"%TEMP%\aivisspeech_query.json" "http://127.0.0.1:10101/synthesis?speaker=%STYLE_ID%" -o "%TEMP%\aivisspeech_test.wav"
echo 合成した音声を再生中...
powershell -c "(New-Object Media.SoundPlayer '%TEMP%\aivisspeech_test.wav').PlaySync()"
REM 機能チェック用の一時ファイルを削除
del "%TEMP%\aivisspeech_test.txt" "%TEMP%\aivisspeech_query.json" "%TEMP%\aivisspeech_test.wav" "%TEMP%\aivisspeech_speakers.json" "%TEMP%\aivisspeech_styleid.txt" >nul
REM エンジンを停止
taskkill /im run.exe /f >nul
echo 機能チェックが完了しました

REM ============================================================
REM インストール完了
REM ============================================================
echo インストール完了
項目内容
VOICEVOX展開先C:\VOICEVOX(インストーラの一時配置先)
VOICEVOXサイズ約2GB(CUDA版)
AivisSpeech展開先C:\AivisSpeech(インストーラの一時配置先)
FFmpegパスC:\FFmpeg\bin

インストール確認のために次のコマンドを実行する.

REM ============================================================
REM インストール確認チェック(メディア処理ソフト)
REM ============================================================

echo ===== draw.io =====
if exist "C:\Program Files\draw.io\draw.io.exe" (echo [検出] draw.io) else echo [未検出] draw.io

echo ===== Canva =====
powershell -NoProfile -Command "if(Get-AppxPackage -Name '*Canva*'){Write-Host '[検出] Canva'}else{Write-Host '[未検出] Canva'}"

echo ===== VLC media player =====
if exist "C:\Program Files\VideoLAN\VLC\vlc.exe" (echo [検出] VLC media player) else echo [未検出] VLC media player

echo ===== FFmpeg =====
where ffmpeg >nul 2>&1 && (echo [検出] FFmpeg) || echo [未検出] FFmpeg

echo ===== Shotcut =====
if exist "C:\Program Files\Shotcut\shotcut.exe" (echo [検出] Shotcut) else echo [未検出] Shotcut

echo ===== Vrew =====
if exist "C:\Vrew\Vrew.exe" (echo [検出] Vrew) else if exist "C:\Program Files (x86)\Vrew\Vrew.exe" (echo [検出] Vrew ^(x86^)) else echo [未検出] Vrew

echo ===== Audacity =====
if exist "C:\Program Files\Audacity\audacity.exe" (echo [検出] Audacity) else echo [未検出] Audacity

echo ===== OBS Studio =====
if exist "C:\Program Files\obs-studio\bin\64bit\obs64.exe" (echo [検出] OBS Studio) else if exist "C:\Program Files\obs-studio\bin\obs64.exe" (echo [検出] OBS Studio) else echo [未検出] OBS Studio

echo ===== VOICEVOX =====
if exist "C:\VOICEVOX\VOICEVOX.exe" (echo [検出] VOICEVOX) else echo [未検出] VOICEVOX

echo ===== AivisSpeech =====
if exist "C:\AivisSpeech\AivisSpeech.exe" (echo [検出] AivisSpeech) else echo [未検出] AivisSpeech

echo.
echo ===== 確認完了 =====

8. データベース

データの保存・検索・管理を行うためのツール群である。SQL学習やアプリケーション開発のデータ管理に使用する。

ソフトウェア説明用途
SQLite3設定不要のリレーショナルデータベース。単一ファイルでデータを管理し、組み込み用途やSQL学習に適する。SQL学習,小規模データ管理
sqlitebiterpipでインストールする。CSV,Excel,HTML,JSON,Markdown等の多様な形式のデータをSQLiteデータベースファイルに変換するCLIツール。データ変換,SQLite3データベース作成
DBeaver汎用データベース管理ツール。GUIで多様なデータベースに接続し、データ編集やER図の確認ができる。データベース操作

インストールコマンドの実行方法

管理者権限コマンドプロンプトを起動する (手順:Windowsキーまたはスタートメニュー → cmd と入力 → 右クリック → 「管理者として実行」)。wingetの--scope machineオプションでシステム全体にインストールするには、管理者権限が必要である。実行時はコマンド全体をコマンドプロンプトにコピー&ペーストする。

インストールコマンド

REM ============================================================
REM データベース インストールスクリプト(管理者権限で実行)
REM ============================================================

REM 管理者権限チェック
net session >nul 2>&1
if errorlevel 1 ( echo [エラー] 管理者権限で実行してください & pause & exit /b 1 )

REM winget パッケージ一覧のローカルキャッシュを更新
winget source update

REM Pythonパス設定
set "PYTHON_PATH=C:\Program Files\Python312"
set "PYTHON=%PYTHON_PATH%\python.exe"
set "PIP=%PYTHON_PATH%\Scripts\pip"

REM Python存在チェック(未インストールの場合はシステム領域にインストール、パス設定)
if not exist "%PYTHON%" echo Python 3.12 が見つかりません。インストールします... & winget install --id Python.Python.3.12 -e --scope machine --silent --accept-source-agreements --accept-package-agreements --override "/quiet InstallAllUsers=1 PrependPath=1 Include_test=0 Include_pip=1 Include_launcher=1 InstallLauncherAllUsers=1 TargetDir=\"C:\Program Files\Python312\"" & powershell -NoProfile -Command "$p='C:\Program Files\Python312'; $s=\"$p\Scripts\"; $c=[Environment]::GetEnvironmentVariable('Path','Machine'); if((Test-Path $p) -and (';'+$c+';' -notlike \"*;$p;*\") -and (';'+$c+';' -notlike \"*;$s;*\")){[Environment]::SetEnvironmentVariable('Path',\"$p;$s;$c\",'Machine')}"

REM ============================================================
REM SQLite3
REM ============================================================

REM SQLite3 をシステム領域にインストール
winget install --scope machine --id SQLite.SQLite -e --silent --accept-source-agreements --accept-package-agreements

REM ============================================================
REM sqlitebiter
REM ============================================================

REM sqlitebiter をインストール
"%PIP%" install --no-user -U sqlitebiter

REM ============================================================
REM DBeaver
REM ============================================================

REM DBeaver をシステム領域にインストール
winget install --scope machine --id DBeaver.DBeaver.Community -e --silent --accept-source-agreements --accept-package-agreements

echo インストール完了

インストール確認のために次のコマンドを実行する。

REM ============================================================
REM インストール確認チェック(データベース)
REM ============================================================

echo ===== SQLite3 =====
where sqlite3 2>nul && (sqlite3 --version) || echo [未検出] sqlite3

echo ===== sqlitebiter =====
where sqlitebiter 2>nul && (sqlitebiter version) || echo [未検出] sqlitebiter

echo ===== DBeaver =====
if exist "C:\Program Files\DBeaver\dbeaver.exe" (echo [検出] DBeaver) else echo [未検出] DBeaver

echo.
echo ===== 確認完了 =====

9. Linux環境(WSL2)

Windows上でLinuxコマンドやLinux用ソフトウェアを使用するための環境である。Git、Docker、各種コンパイラなど開発ツールの多くがLinux向けに作られているため、Windows上でLinux環境を利用できると便利である。

ソフトウェア説明用途
WSL2Windows上でLinux環境を動作させる仕組み。Windowsを使いながらLinuxの開発ツールを利用できる。Linux環境構築
UbuntuLinux環境。ホストOSから隔離した状態でシステム運用やセキュリティを実習できる。Linux実習

インストールコマンドの実行方法

管理者権限コマンドプロンプトを起動する (手順:Windowsキーまたはスタートメニュー → cmd と入力 → 右クリック → 「管理者として実行」

インストールコマンド

フェーズ1:再起動前(管理者権限で実行)

REM Linux環境 インストールスクリプト フェーズ1(管理者権限で実行)

REM 管理者権限チェック
net session >nul 2>&1
if errorlevel 1 ( echo [エラー] 管理者権限で実行してください & pause & exit /b 1 )

REM winget パッケージ一覧のローカルキャッシュを更新
winget source update

REM Linux用Windowsサブシステム,仮想マシンプラットフォームを有効化
powershell -command "Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All -n"
powershell -command "Enable-WindowsOptionalFeature -Online -FeatureName HypervisorPlatform -n"
powershell -command "Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux -n"
powershell -command "Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform -n"

REM WSL2をデフォルトに設定
wsl --set-default-version 2

REM シャットダウン
echo ============================================================
echo フェーズ1完了
echo PC を再起動します
echo 再起動後、フェーズ2のコマンドを実行してください
echo 確認したら何かキーを押してください
pause
shutdown /r /t 0

フェーズ2:フェーズ1が終了したら OS を再起動し,次のコマンドを実行(管理者権限で実行)

REM Linux環境 インストールスクリプト フェーズ2(管理者権限で実行)

REM 管理者権限チェック
net session >nul 2>&1
if errorlevel 1 ( echo [エラー] 管理者権限で実行してください & pause & exit /b 1 )

REM 仮想化基盤の状態確認
dism /online /get-featureinfo /featurename:Microsoft-Windows-Subsystem-Linux
dism /online /get-featureinfo /featurename:VirtualMachinePlatform
dism /online /get-featureinfo /featurename:Microsoft-Hyper-V

echo ============================================================
echo インストール可能なLinuxディストリビューション
wsl -l --online
echo ============================================================

REM 既存の Ubuntu があれば登録解除しディレクトリも削除
wsl -d Ubuntu -e echo ok 2>nul && wsl --unregister Ubuntu
if exist C:\WSL\Ubuntu rmdir /s /q C:\WSL\Ubuntu

REM 一旦インストール(起動せずに)
wsl --install --no-launch -d Ubuntu

REM ユーザー作成・設定
REM 「myguestpassword」には、任意のパスワードを設定してください
wsl -d Ubuntu -u root bash -c "useradd -m -s /bin/bash guest"
wsl -d Ubuntu -u root bash -c "echo 'guest:myguestpassword' | chpasswd"
wsl -d Ubuntu -u root bash -c "usermod -aG sudo guest"
wsl -d Ubuntu -u root bash -c "echo 'guest ALL=(ALL) NOPASSWD: ALL' > /etc/sudoers.d/guest"
wsl -d Ubuntu -u root bash -c "chmod 440 /etc/sudoers.d/guest"

REM デフォルトユーザーを guest に変更
wsl -d Ubuntu -u root bash -c "echo -e '[user]\ndefault=guest' > /etc/wsl.conf"

REM ダウンロード元が海外になっている場合は日本に設定(Ubuntu 24.04+のDEB822形式にも対応)
wsl -d Ubuntu -u root bash -c "if [ -f /etc/apt/sources.list.d/ubuntu.sources ]; then sed -i 's/archive.ubuntu.com/jp.archive.ubuntu.com/g' /etc/apt/sources.list.d/ubuntu.sources; sed -i 's/us.archive.ubuntu.com/jp.archive.ubuntu.com/g' /etc/apt/sources.list.d/ubuntu.sources; sed -i 's/fr.archive.ubuntu.com/jp.archive.ubuntu.com/g' /etc/apt/sources.list.d/ubuntu.sources; else sed -i 's/\/\/archive.ubuntu.com/\/\/jp.archive.ubuntu.com/g' /etc/apt/sources.list; sed -i 's/\/\/us.archive.ubuntu.com/\/\/jp.archive.ubuntu.com/g' /etc/apt/sources.list; sed -i 's/\/\/fr.archive.ubuntu.com/\/\/jp.archive.ubuntu.com/g' /etc/apt/sources.list; fi"

REM OSのシステム更新,日本語環境の設定
wsl -d Ubuntu -u root bash -c "apt update && apt install -y language-pack-ja && update-locale LANG=ja_JP.UTF-8"

REM 開発ツール・学習用パッケージのインストール
wsl -d Ubuntu -u root bash -c "apt install -y build-essential gdb cmake valgrind manpages-dev python3-pip python3-venv python3-dev git tree curl wget x11-apps emacs nautilus mousepad eog notepadqq"

REM セットアップ完了状態をエクスポート
wsl --shutdown
wsl --export Ubuntu %TEMP%\ubuntu.tar

REM プロファイル内の仮インストールを削除
wsl --unregister Ubuntu

REM プロファイル外にインポート
mkdir C:\WSL\Ubuntu
wsl --import Ubuntu C:\WSL\Ubuntu %TEMP%\ubuntu.tar --version 2

REM デフォルトディストリビューションに設定
wsl --set-default Ubuntu

REM 一時ファイル削除
del %TEMP%\ubuntu.tar

REM 全ユーザーにアクセス権を付与
icacls C:\WSL\Ubuntu /grant Everyone:(OI)(CI)F /T

REM Ubuntuアイコンをダウンロードし、ショートカットを作成
powershell -Command "New-Item -ItemType Directory -Path 'C:\ProgramData\Icons' -Force | Out-Null; Invoke-WebRequest -Uri 'https://assets.ubuntu.com/v1/49a1a858-favicon-32x32.png' -OutFile 'C:\ProgramData\Icons\ubuntu.png'; Add-Type -AssemblyName System.Drawing; $bmp = [System.Drawing.Bitmap]::FromFile('C:\ProgramData\Icons\ubuntu.png'); $icon = [System.Drawing.Icon]::FromHandle($bmp.GetHicon()); $fs = [System.IO.File]::Create('C:\ProgramData\Icons\ubuntu.ico'); $icon.Save($fs); $fs.Close(); $icon.Dispose(); $bmp.Dispose(); $ws = New-Object -ComObject WScript.Shell; $s = $ws.CreateShortcut('C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Ubuntu.lnk'); $s.TargetPath = '%SystemRoot%\System32\wsl.exe'; $s.Arguments = '-d Ubuntu'; $s.IconLocation = 'C:\ProgramData\Icons\ubuntu.ico,0'; $s.Description = 'Ubuntu on WSL2'; $s.Save()"
REM アイコン設定
powershell -Command "New-Item -ItemType Directory -Path 'C:\ProgramData\Icons' -Force | Out-Null; Invoke-WebRequest -Uri 'https://assets.ubuntu.com/v1/29985a98-ubuntu-logo32.png' -OutFile 'C:\ProgramData\Icons\ubuntu.png'; $path = \"$env:LocalAppData\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json\"; $json = Get-Content $path -Raw | ConvertFrom-Json; foreach ($p in $json.profiles.list) { if ($p.source -eq 'Microsoft.WSL') { $p | Add-Member -NotePropertyName 'icon' -NotePropertyValue 'C:\ProgramData\Icons\ubuntu.png' -Force } }; $json | ConvertTo-Json -Depth 10 | Set-Content $path -Encoding UTF8"

REM =====================================================
REM 他のWindowsユーザーは以下を各自のコマンドプロンプトで実行
REM wsl --import Ubuntu C:\WSL\Ubuntu-ユーザー名 C:\WSL\Ubuntu\ext4.vhdx --version 2 --vhd
REM wsl --set-default Ubuntu
REM =====================================================

echo ============================================================
echo WSL2とUbuntuのセットアップが完了しました
echo
echo 使い方:
echo   スタートメニューの「Ubuntu」または
echo   コマンドプロンプトで wsl を実行
echo   デフォルトユーザー: guest
echo ============================================================

10. Microsoft Sysinternalsツール

Microsoft Sysinternalsは、Windowsシステムの管理、診断、トラブルシューティング、監視を行うためのMicrosoft純正ユーティリティ群である。Mark Russinovichにより開発が開始され、現在はMicrosoftの公式プロジェクトとして提供されている。システム管理者や開発者向けのツールが含まれている。

主なツール

インストール

以下は、上記の各ツール(64ビット版)をダウンロードし、C:\tools に配置するコマンドの例である。コマンドプロンプトを管理者権限で開いて実行する。

mkdir C:\tools
cd C:\TEMP

powershell -NoProfile -Command "Invoke-WebRequest 'https://download.sysinternals.com/files/ProcessExplorer.zip' -OutFile $env:TEMP\ProcessExplorer.zip"
powershell -NoProfile -Command "Remove-Item $env:TEMP\ProcessExplorer -Recurse -Force -ErrorAction SilentlyContinue; Expand-Archive -LiteralPath $env:TEMP\ProcessExplorer.zip -DestinationPath $env:TEMP\ProcessExplorer -Force"
copy /Y "%TEMP%\ProcessExplorer\procexp64.exe" C:\tools\procexp64.exe

powershell -NoProfile -Command "Invoke-WebRequest 'https://download.sysinternals.com/files/ProcessMonitor.zip' -OutFile $env:TEMP\ProcessMonitor.zip"
powershell -NoProfile -Command "Remove-Item $env:TEMP\ProcessMonitor -Recurse -Force -ErrorAction SilentlyContinue; Expand-Archive -LiteralPath $env:TEMP\ProcessMonitor.zip -DestinationPath $env:TEMP\ProcessMonitor -Force"
copy /Y "%TEMP%\ProcessMonitor\Procmon64.exe" C:\tools\Procmon64.exe

powershell -NoProfile -Command "Invoke-WebRequest 'https://download.sysinternals.com/files/Autoruns.zip' -OutFile $env:TEMP\Autoruns.zip"
powershell -NoProfile -Command "Remove-Item $env:TEMP\Autoruns -Recurse -Force -ErrorAction SilentlyContinue; Expand-Archive -LiteralPath $env:TEMP\Autoruns.zip -DestinationPath $env:TEMP\Autoruns -Force"
copy /Y "%TEMP%\Autoruns\Autoruns64.exe" C:\tools\Autoruns64.exe

powershell -NoProfile -Command "Invoke-WebRequest 'https://download.sysinternals.com/files/DU.zip' -OutFile $env:TEMP\DU.zip"
powershell -NoProfile -Command "Remove-Item $env:TEMP\DU -Recurse -Force -ErrorAction SilentlyContinue; Expand-Archive -LiteralPath $env:TEMP\DU.zip -DestinationPath $env:TEMP\DU -Force"
copy /Y "%TEMP%\DU\du64.exe" C:\tools\du64.exe

REM C:\toolsのパス設定
powershell -NoProfile -Command "$p='C:\tools'; $c=[Environment]::GetEnvironmentVariable('Path','Machine'); if((Test-Path $p) -and (';'+$c+';' -notlike \"*;$p;*\")){[Environment]::SetEnvironmentVariable('Path',\"$c;$p\",'Machine')}"

【関連する外部ページ】

画像データ、3次元データ

インストールコマンドの実行方法

管理者権限コマンドプロンプトを起動する (手順:Windowsキーまたはスタートメニュー → cmd と入力 → 右クリック → 「管理者として実行」)。

REM Pythonパス設定
set "PYTHON_PATH=C:\Program Files\Python312"
set "PYTHON=%PYTHON_PATH%\python.exe"
set "PIP=%PYTHON_PATH%\Scripts\pip"

REM Python存在チェック(未インストールの場合はシステム領域にインストール、パス設定)
if not exist "%PYTHON%" echo Python 3.12 が見つかりません。インストールします... & winget install --id Python.Python.3.12 -e --scope machine --silent --accept-source-agreements --accept-package-agreements --override "/quiet InstallAllUsers=1 PrependPath=1 Include_test=0 Include_pip=1 Include_launcher=1 InstallLauncherAllUsers=1 TargetDir=\"C:\Program Files\Python312\"" & powershell -NoProfile -Command "$p='C:\Program Files\Python312'; $s=\"$p\Scripts\"; $c=[Environment]::GetEnvironmentVariable('Path','Machine'); if((Test-Path $p) -and (';'+$c+';' -notlike \"*;$p;*\") -and (';'+$c+';' -notlike \"*;$s;*\")){[Environment]::SetEnvironmentVariable('Path',\"$p;$s;$c\",'Machine')}"

REM images
REM ダウンロード先フォルダの作成
mkdir c:\image

echo -----------------------------------------------
REM Potato images
cd c:\temp
curl -L -o C:\temp\potato_image.zip https://www.kkaneko.jp/sample/potato/potato_image.zip
powershell -command "Expand-Archive -Path C:\temp\potato_image.zip -DestinationPath C:\image -Force"
del C:\temp\potato_image.zip

echo -----------------------------------------------
REM OpenCV images
mkdir C:\image\opencv
curl -L -o C:\image\opencv\aero1.jpg https://raw.githubusercontent.com/opencv/opencv/4.x/samples/data/aero1.jpg
curl -L -o C:\image\opencv\aero3.jpg https://raw.githubusercontent.com/opencv/opencv/4.x/samples/data/aero3.jpg
curl -L -o C:\image\opencv\aloeL.jpg https://raw.githubusercontent.com/opencv/opencv/4.x/samples/data/aloeL.jpg
curl -L -o C:\image\opencv\aloeR.jpg https://raw.githubusercontent.com/opencv/opencv/4.x/samples/data/aloeR.jpg
curl -L -o C:\image\opencv\baboon.jpg https://raw.githubusercontent.com/opencv/opencv/4.x/samples/data/baboon.jpg
curl -L -o C:\image\opencv\building.jpg https://raw.githubusercontent.com/opencv/opencv/4.x/samples/data/building.jpg
curl -L -o C:\image\opencv\board.jpg https://raw.githubusercontent.com/opencv/opencv/4.x/samples/data/board.jpg
curl -L -o C:\image\opencv\butterfly.jpg https://raw.githubusercontent.com/opencv/opencv/4.x/samples/data/butterfly.jpg
curl -L -o C:\image\opencv\chicky_512.png https://raw.githubusercontent.com/opencv/opencv/4.x/samples/data/chicky_512.png
curl -L -o C:\image\opencv\fruits.jpg https://raw.githubusercontent.com/opencv/opencv/4.x/samples/data/fruits.jpg
curl -L -o C:\image\opencv\home.jpg https://raw.githubusercontent.com/opencv/opencv/4.x/samples/data/home.jpg
curl -L -o C:\image\opencv\squirrel_cls.jpg https://raw.githubusercontent.com/opencv/opencv/4.x/samples/data/squirrel_cls.jpg
curl -L -o C:\image\opencv\starry_night.jpg https://raw.githubusercontent.com/opencv/opencv/4.x/samples/data/starry_night.jpg
curl -L -o C:\image\opencv\vtest.avi https://raw.githubusercontent.com/opencv/opencv/4.x/samples/data/vtest.avi
mkdir C:\image\ultralytics
curl -L -o C:\image\ultralytics\bus.jpg https://ultralytics.com/images/bus.jpg
curl -L -o C:\image\ultralytics\zidane.jpg https://ultralytics.com/images/zidane.jpg
curl -L -o C:\image\ultralytics\boats.jpg https://ultralytics.com/images/boats.jpg
curl -L -o C:\image\ultralytics\vehicles.jpg https://ultralytics.com/images/vehicles.jpg

echo -----------------------------------------------
REM MediaPipe sample images : mediapipe-tasks bucket
REM Hand / Gesture / Object Detection / Image Classification
mkdir C:\image\mediapipe

REM 21点ハンドランドマーク評価用 両手映り
curl -L -o C:\image\mediapipe\woman_hands.jpg https://storage.googleapis.com/mediapipe-tasks/hand_landmarker/woman_hands.jpg
REM ジェスチャー認識 Thumb_Up クラス検証
curl -L -o C:\image\mediapipe\thumbs_up.jpg https://storage.googleapis.com/mediapipe-tasks/gesture_recognizer/thumbs_up.jpg
REM ジェスチャー認識 Thumb_Down クラス検証
curl -L -o C:\image\mediapipe\thumbs_down.jpg https://storage.googleapis.com/mediapipe-tasks/gesture_recognizer/thumbs_down.jpg
REM ジェスチャー認識 Victory クラス検証
curl -L -o C:\image\mediapipe\victory.jpg https://storage.googleapis.com/mediapipe-tasks/gesture_recognizer/victory.jpg
REM ジェスチャー認識 Pointing_Up クラス検証
curl -L -o C:\image\mediapipe\pointing_up.jpg https://storage.googleapis.com/mediapipe-tasks/gesture_recognizer/pointing_up.jpg
REM 物体検出 COCO 多クラス同時検出 cat dog
curl -L -o C:\image\mediapipe\cat_and_dog.jpg https://storage.googleapis.com/mediapipe-tasks/object_detector/cat_and_dog.jpg
REM 画像分類 ImageNet 食品カテゴリ
curl -L -o C:\image\mediapipe\burger.jpg https://storage.googleapis.com/mediapipe-tasks/image_classifier/burger.jpg
REM 画像分類 ImageNet 動物カテゴリ
curl -L -o C:\image\mediapipe\cat.jpg https://storage.googleapis.com/mediapipe-tasks/image_classifier/cat.jpg
REM 画像セグメンテーション DeepLab V3 Pascal VOC 21クラス検証用
curl -L -o C:\image\mediapipe\segmentation_input_rotation0.jpg https://storage.googleapis.com/mediapipe-assets/segmentation_input_rotation0.jpg
REM 姿勢推定 BlazePose 単一人物全身 33点ランドマーク検証
curl -L -o C:\image\mediapipe\girl-4051811.jpg https://cdn.pixabay.com/photo/2019/03/12/20/39/girl-4051811_960_720.jpg
REM 顔ランドマーク検出 478点および52種ブレンドシェイプ検証
curl -L -o C:\image\mediapipe\business-person.png https://storage.googleapis.com/mediapipe-assets/business-person.png
REM 顔検出 BlazeFace 複数顔 6点キーポイント検証
curl -L -o C:\image\mediapipe\face_detector_sample.jpg https://i.imgur.com/Vu2Nqwb.jpeg
REM 画像埋め込み コサイン類似度検証 元画像
curl -L -o C:\image\mediapipe\burger_embed.jpg https://storage.googleapis.com/mediapipe-assets/burger.jpg
REM 画像埋め込み コサイン類似度検証 切り抜き画像
curl -L -o C:\image\mediapipe\burger_crop.jpg https://storage.googleapis.com/mediapipe-assets/burger_crop.jpg

echo -----------------------------------------------
REM AudioSet sample audio : 16 kHz WAV
REM YAMNet / AST audio classification benchmark
mkdir C:\image\audioset

REM 動物クラス検証 猫鳴き声 約6.7秒
curl -L -o C:\image\audioset\miaow_16k.wav https://storage.googleapis.com/audioset/miaow_16k.wav

REM 人間音声クラス検証 口笛
curl -L -o C:\image\audioset\speech_whistling2.wav https://storage.googleapis.com/audioset/speech_whistling2.wav

echo -----------------------------------------------
REM StreetView360AtoZ のダウンロード,StreetView 360Xは6342枚の360度エクイレクタングラー画像を含むデータセットで,Hugging Faceで公開されている
pip install --no-user huggingface_hub
python -c "from huggingface_hub import snapshot_download; snapshot_download(repo_id='everettshen/StreetView360AtoZ', repo_type='dataset', local_dir='c:\\image\\StreetView360X', allow_patterns='*.jpg')"
rmdir /s /q c:\image\StreetView360X\.cache

echo -----------------------------------------------
REM tandt_db.zip のダウンロード,パースペクティブ画像,T&T+DB COLMAPデータセット(約650MB)
curl -L -o c:\image\tandt_db.zip https://repo-sam.inria.fr/fungraph/3d-gaussian-splatting/datasets/input/tandt_db.zip
REM zipの展開
powershell -Command "Expand-Archive -Path 'c:\image\tandt_db.zip' -DestinationPath 'c:\image\tandt_db'"

echo -----------------------------------------------
REM Video Data
mkdir c:\image\video
curl -L -o c:\image\video\sample_640x360.mp4 https://filesamples.com/samples/video/mp4/sample_640x360.mp4
curl -fL --retry 3 --retry-delay 2 --retry-all-errors -o c:\image\video\sample_30s.mp4 https://samplelib.com/lib/preview/mp4/sample-30s.mp4
curl -fL --retry 3 --retry-delay 2 --retry-all-errors -o c:\image\video\big_buck_bunny_720_1mb.mp4 https://test-videos.co.uk/vids/bigbuckbunny/mp4/h264/720/Big_Buck_Bunny_720_10s_1MB.mp4
curl -fL --retry 3 --retry-delay 2 --retry-all-errors -o c:\image\video\sintel_720_1mb.mp4 https://test-videos.co.uk/vids/sintel/mp4/h264/720/Sintel_720_10s_1MB.mp4
curl -fL --retry 3 --retry-delay 2 -o c:\image\video\dashcam_city_4k.mp4 https://videos.pexels.com/video-files/4644521/4644521-uhd_2562_1440_30fps.mp4
curl -fL --retry 3 --retry-delay 2 -o c:\image\video\dashcam_city_sd.mp4 https://videos.pexels.com/video-files/4644481/4644481-sd_640_360_30fps.mp4
curl -fL --retry 3 --retry-delay 2 -o c:\image\video\dashcam_highway_4k.mp4 https://videos.pexels.com/video-files/4608285/4608285-uhd_2560_1440_24fps.mp4
curl -fL --retry 3 --retry-delay 2 -o c:\image\video\dashcam_highway_sd.mp4 https://videos.pexels.com/video-files/4608273/4608273-sd_640_360_24fps.mp4

echo -----------------------------------------------
REM Blender Data
mkdir C:\image\blender
cd /d C:\image\blender
del /q *.zip 2>nul
del /q *.blend 2>nul
curl -L -f -O https://download.blender.org/demo/test/classroom.zip
curl -L -f -O https://download.blender.org/demo/test/pabellon_barcelona_v1.scene_.zip
curl -L -f -O https://download.blender.org/demo/test/BMW27_2.blend.zip
curl -L -f -O https://download.blender.org/demo/cycles/monster_under_the_bed_sss_demo_by_metin_seven.blend
curl -L -f -O https://download.blender.org/demo/vse/cowboi_storytools.blend
curl -L -f -O https://download.blender.org/demo/test/SJ_bowie_gpencil_final.blend
curl -L -f -O https://download.blender.org/demo/geometry-nodes/hair_nodes-female_hair_styles.blend
curl -L -f -O https://download.blender.org/demo/test/ForYou.blend
curl -L -f -O https://download.blender.org/demo/bundles/bundles-3.0/asset-demo-bundle-3.0-cube-diorama.zip
powershell -NoProfile -Command "Get-ChildItem *.zip | ForEach-Object { Expand-Archive -Path $_.FullName -DestinationPath $_.BaseName -Force }"
del /q *.zip 2>nul
for /r %f in (*.blend) do blender -b "%f" --python-expr "import bpy; s=bpy.context.scene; s.render.engine=='CYCLES' and setattr(s.cycles,'samples',16)" -o "%~dpnf_render_#" -f 1

12. 補足説明

Build Tools for Visual StudioとVisual Studioの違い

Build Tools for Visual Studio 2022の公式ダウンロードページ:https://visualstudio.microsoft.com/ja/visual-cpp-build-tools/

次のコマンドは、Visual Studio Community 2022本体と、C++デスクトップ開発に必要な基本コンポーネントをインストールする。

winget install Microsoft.VisualStudio.2022.Community --scope machine --override "--add Microsoft.VisualStudio.Workload.NativeDesktop --add Microsoft.VisualStudio.ComponentGroup.NativeDesktop.Core --add Microsoft.VisualStudio.Component.VC.Tools.x86.x64 --add Microsoft.VisualStudio.Component.Windows10SDK --includeRecommended" -e
winget install Microsoft.VCRedist.2015+.x64 --scope machine -e

Visual Studio Communityの公式ページ:https://visualstudio.microsoft.com/ja/vs/community/

cuDNNのインストール

cuDNNのインストールには、NVIDIA Developer Programへの無料登録が必要である。また、使用するフレームワークが要求するcuDNNバージョンを確認すること。

zlibのインストール(cuDNNの依存関係)

新しいバージョンのcuDNNは、zlibwapi.dllに依存している。cuDNNをインストールする前に、zlibをインストールする必要がある。

以下のコマンドを管理者権限x64 Native Tools コマンドプロンプト (x64 Native Tools Command Prompt)で実行する   (手順:スタートメニュー →Visual Studio 20xx」の下の「x64 Native Tools コマンドプロンプト (x64 Native Tools Command Prompt)」 → 「管理者として実行」)。


if exist "%TEMP%\zlib\.git" (cd /d "%TEMP%\zlib" && git pull) else (git clone https://github.com/madler/zlib.git "%TEMP%\zlib")
cd %TEMP%\zlib
if exist mybuild rmdir /s /q mybuild
mkdir mybuild
cd mybuild
cmake .. -G "Visual Studio 18 2026" -A x64 -DCMAKE_INSTALL_PREFIX=C:\zlib
cmake --build . --config Release --target INSTALL

インストールしたzlibのDLLにPathを通す。管理者権限のPowerShellで以下を実行する。

powershell -Command "$EnvPath = [System.Environment]::GetEnvironmentVariable('Path', 'Machine'); $NewPath = 'C:\zlib\bin'; if (-not ($EnvPath -split ';' -contains $NewPath)) { [System.Environment]::SetEnvironmentVariable('Path', \"$EnvPath;$NewPath\", 'Machine'); Write-Host 'Pathに C:\zlib\bin を追加しました。' }"

cuDNNのダウンロードと配置

NVIDIA cuDNNのダウンロードページにアクセスし、インストール済みのCUDAツールキットのバージョンに適合するcuDNNライブラリのZipファイルをダウンロードする。ダウンロードしたZipファイルを展開し、展開したフォルダ内のbin、include、libの中身を、CUDAツールキットのインストールディレクトリにある同名のフォルダにそれぞれコピーする。

【関連する外部ページ】

Search Everything画面
AnyTXT Searcher画面

13. その他のソフトウェア

本節では、理工学分野の研究・開発を支援するソフトウェア、および業務効率を向上させるフリーソフトウェアについて記述する。

【インストールの前提と注意事項】
  • すべての操作は、管理者権限を持つコマンドプロンプト、またはPowerShellで行うこと。
  • 本ガイドでは、PCを利用するすべてのユーザがソフトウェアを利用可能にするため、システム全体へのインストール(Machineスコープ)を統一して行う。
  • winget とは、Windows標準のパッケージ管理ツールである。コマンド一つでソフトの取得・インストール・管理が可能である。

12.1 開発・解析・設計ツール

研究環境の構築、数値計算、システム設計など、専門的な成果物を生成するために使用する主要なソフトウェア群である。

【環境構築・仮想化】

【プログラミング・統計・データ処理】

【開発エディタ】

【エンジニアリング・CAD・GIS】

【文書作成】

12.2 その他のソフトウェア(ユーティリティ)

マルチメディア編集、データ整理、システム管理など、研究の周辺業務やPCの保守・管理を支援するツール群である。

【画像・図解・キャプチャ】

【動画・音声処理】

【テキスト・翻訳・閲覧】

【ファイル操作・ディスク管理】

【システム・ネットワーク・その他】

ツール選択ガイド

目的に応じて適切なツールを選択するための一覧である。

用途推奨ツール
ローカルLLM(コマンドライン)Ollama
指示からコードを自律生成Cline
コード補完GitHub Copilot Free
設定不要でAI支援Windsurf
拡張機能を自由に組み合わせVisual Studio Code
画像分類・物体検出opencv-python、PyTorch
音声分析librosa
自然言語処理transformers
RAG(検索拡張生成)LangChain、chromadb、sentence-transformers
クラウドAI API連携openai、google-generativeai、litellm
AIデモ作成Gradio
AI画像生成ComfyUI、Stable Diffusion 3.5
Python 3Dゲーム開発Panda3D
ネットワーク解析Wireshark
資料デザインCanva

追加コード(ここから先は作業中の未完成のものを掲載しています。現在、修正中。このままでは動きません)


echo ----------------------
cd c:\temp
curl -L -o Plateau-Blender-Importer-main.zip https://github.com/nneri-hin/Plateau-Blender-Importer/archive/master.zip

echo -----------------------------------------------
echo vsinstaller で追加「vs143」

echo -----------------------------------------------

REM Pythonパス設定
set "PYTHON_PATH=C:\Program Files\Python312"
set "PYTHON=%PYTHON_PATH%\python.exe"
set "PIP=%PYTHON_PATH%\Scripts\pip"

REM Python存在チェック(未インストールの場合はシステム領域にインストール、パス設定)
if not exist "%PYTHON%" echo Python 3.12 が見つかりません。インストールします... & winget install --id Python.Python.3.12 -e --scope machine --silent --accept-source-agreements --accept-package-agreements --override "/quiet InstallAllUsers=1 PrependPath=1 Include_test=0 Include_pip=1 Include_launcher=1 InstallLauncherAllUsers=1 TargetDir=\"C:\Program Files\Python312\"" & powershell -NoProfile -Command "$p='C:\Program Files\Python312'; $s=\"$p\Scripts\"; $c=[Environment]::GetEnvironmentVariable('Path','Machine'); if((Test-Path $p) -and (';'+$c+';' -notlike \"*;$p;*\") -and (';'+$c+';' -notlike \"*;$s;*\")){[Environment]::SetEnvironmentVariable('Path',\"$p;$s;$c\",'Machine')}"

REM Torch などのバージョン最終調整、キャッシュクリア

echo -------------------------------------------------
REM UE と reality capture のためにepicgames を起動チェック
start "" "com.epicgames.launcher://store"

echo -------------------------------------------------

REM DA3-blenderDepth Anything 3による画像群からの3D再構成。点群をGeometry Nodesで表示github.com/xy-gao/DA3-blender
手動

echo ------------------------------------------
chcp 65001
mkdir c:\image
cd c:\image
mkdir face_recognition 2>nul
mkdir medical 2>nul

REM 画像名: Official portrait of Donald Trump (47th), 出典: Library of Congress, ライセンス・再配布可否: No known restrictions on publication / 再配布可, 注釈有無: なし, 用途メモ: 実写顔写真の識別・照合用
curl.exe -L --fail --retry 3 -o "face_recognition\face_01_trump_47.jpg" "https://tile.loc.gov/storage-services/service/pnp/ppbd/11600/11614v.jpg"

REM 画像名: Official portrait of Joe Biden (46th), 出典: Library of Congress, ライセンス・再配布可否: No known restrictions on publication / 再配布可, 注釈有無: なし, 用途メモ: 実写顔写真の識別・照合用
curl.exe -L --fail --retry 3 -o "face_recognition\face_02_biden_46.jpg" "https://tile.loc.gov/storage-services/service/pnp/ppbd/01200/01261v.jpg"

REM 画像名: Official portrait of Donald Trump (45th), 出典: Library of Congress, ライセンス・再配布可否: No known restrictions on publication / 再配布可, 注釈有無: なし, 用途メモ: 同一人物の別条件照合用
curl.exe -L --fail --retry 3 -o "face_recognition\face_03_trump_45.jpg" "https://tile.loc.gov/storage-services/service/pnp/ppbd/00600/00608v.jpg"

REM 画像名: Official portrait of Barack Obama, 出典: Library of Congress, ライセンス・再配布可否: No known restrictions on publication / 再配布可, 注釈有無: なし, 用途メモ: 正面顔の識別・照合用
curl.exe -L --fail --retry 3 -o "face_recognition\face_04_obama.jpg" "https://tile.loc.gov/storage-services/service/pnp/ppbd/00300/00358v.jpg"

REM 画像名: Official portrait of George W. Bush, 出典: Library of Congress, ライセンス・再配布可否: No known restrictions on publication / 再配布可, 注釈有無: なし, 用途メモ: スタジオ撮影顔写真の識別用
curl.exe -L --fail --retry 3 -o "face_recognition\face_05_george_w_bush.jpg" "https://tile.loc.gov/storage-services/service/pnp/ppbd/00300/00371v.jpg"

REM 画像名: Official portrait of Gerald Ford, 出典: Library of Congress, ライセンス・再配布可否: No known restrictions on publication / 再配布可, 注釈有無: なし, 用途メモ: 解像度差を含む顔照合用
curl.exe -L --fail --retry 3 -o "face_recognition\face_06_gerald_ford.jpg" "https://tile.loc.gov/storage-services/service/pnp/ppmsc/02800/02800r.jpg"

REM 画像名: CDC PHIL 20474 fundoscopic retina image, 出典: CDC PHIL, ライセンス・再配布可否: Public Domain / 再配布可, 注釈有無: なし, 用途メモ: 眼底所見の医用画像分類用
curl.exe -L --fail --retry 3 -o "medical\med_01_phil_20474_retina.jpg" "https://wwwn.cdc.gov/phil///PHIL_Images/20474/20474_lores.jpg"

REM 画像名: CDC PHIL 20470 retinal image, 出典: CDC PHIL, ライセンス・再配布可否: Public Domain / 再配布可, 注釈有無: なし, 用途メモ: 眼底病変の医用画像分類用
curl.exe -L --fail --retry 3 -o "medical\med_02_phil_20470_retina.jpg" "https://wwwn.cdc.gov/phil///PHIL_Images/20470/20470_lores.jpg"

REM 画像名: CDC PHIL 28399 retina image, 出典: CDC PHIL, ライセンス・再配布可否: Public Domain / 再配布可, 注釈有無: なし, 用途メモ: 眼底所見の医用画像分類用
curl.exe -L --fail --retry 3 -o "medical\med_03_phil_28399_retina.jpg" "https://wwwn.cdc.gov/phil///PHIL_Images/28399/28399_lores.jpg"

REM 画像名: CDC PHIL 20469 retina image, 出典: CDC PHIL, ライセンス・再配布可否: Public Domain / 再配布可, 注釈有無: なし, 用途メモ: 眼底画像の医用画像分類用
curl.exe -L --fail --retry 3 -o "medical\med_04_phil_20469_retina.jpg" "https://wwwn.cdc.gov/phil///PHIL_Images/20469/20469_lores.jpg"

REM 画像名: CDC PHIL 28398 retina image, 出典: CDC PHIL, ライセンス・再配布可否: Public Domain / 再配布可, 注釈有無: なし, 用途メモ: 眼底異常所見の医用画像分類用
curl.exe -L --fail --retry 3 -o "medical\med_05_phil_28398_retina.jpg" "https://wwwn.cdc.gov/phil///PHIL_Images/28398/28398_lores.jpg"

REM 画像名: CDC PHIL 18398 skin lesion image, 出典: CDC PHIL, ライセンス・再配布可否: Public Domain / 再配布可, 注釈有無: なし, 用途メモ: 皮膚病変の医用画像分類用
curl.exe -L --fail --retry 3 -o "medical\med_06_phil_18398_skin_lesion.jpg" "https://wwwn.cdc.gov/phil///PHIL_Images/18398/18398_lores.jpg"

REM 画像名: CDC PHIL 18403 skin lesion image, 出典: CDC PHIL, ライセンス・再配布可否: Public Domain / 再配布可, 注釈有無: なし, 用途メモ: 皮膚病変の医用画像分類用
curl.exe -L --fail --retry 3 -o "medical\med_07_phil_18403_skin_lesion.jpg" "https://wwwn.cdc.gov/phil///PHIL_Images/18403/18403_lores.jpg"

REM 画像名: CDC PHIL 22243 histopathology image, 出典: CDC PHIL, ライセンス・再配布可否: Public Domain / 再配布可, 注釈有無: なし, 用途メモ: 病理組織像の医用画像分類用
curl.exe -L --fail --retry 3 -o "medical\med_08_phil_22243_histopathology.jpg" "https://wwwn.cdc.gov/phil///PHIL_Images/22243/22243_lores.jpg"

REM 画像名: CDC PHIL 16716 histopathology image, 出典: CDC PHIL, ライセンス・再配布可否: Public Domain / 再配布可, 注釈有無: なし, 用途メモ: 顕微鏡病理画像の分類用
curl.exe -L --fail --retry 3 -o "medical\med_09_phil_16716_histopathology.jpg" "https://wwwn.cdc.gov/phil///PHIL_Images/16716/16716_lores.jpg"

REM 画像名: CDC PHIL 20479 retina image, 出典: CDC PHIL, ライセンス・再配布可否: Public Domain / 再配布可, 注釈有無: なし, 用途メモ: 眼底画像の医用画像分類用
curl.exe -L --fail --retry 3 -o "medical\med_10_phil_20479_retina.jpg" "https://wwwn.cdc.gov/phil///PHIL_Images/20479/20479_lores.jpg"

echo Download commands finished.

追加ソフトウエアの検討中


REM 現時点では CUDA 12.8 を使用している。CUDA 12.8 は VS2022(MSVC v143)までを公式サポートしており,VS2026 は対応範囲外である。そのため,VS2026 内に VS2022 相当のツールセット(VC 14.43/v143)を追加し,-vcvars_ver=14.43.34808 でホストコンパイラを切り替えている。CMake では,VS2026 内の v143 ツールセットの cl.exe を CUDA の nvcc ホストコンパイラとして指定するオプション(-DCMAKE_CUDA_HOST_COMPILER)が必要である。なお,CUDA 13.2 では VS2026 が公式サポートされるため,移行すればこのワークアラウンドは不要になるが,CUDA 13.x では Maxwell/Pascal/Volta アーキテクチャのサポートが削除されている点に留意が必要である。

echo ーーーーーーーーーーーーーーーーーーーーーーーーーー
REM ============================================================
REM  ind-bermuda-opensfm ビルドスクリプト(完全版)
REM  対象: Windows + Python 3.12 + Visual Studio 2026
REM  実行: コマンドプロンプト (cmd.exe)
REM ============================================================

REM VS2022同等の環境をVS2026内に追加
cd /d %TEMP%
"C:\Program Files (x86)\Microsoft Visual Studio\Installer\setup.exe" modify --installPath "C:\Program Files (x86)\Microsoft Visual Studio\18\BuildTools" --add Microsoft.VisualStudio.Component.VC.14.43.17.13.x86.x64 --passive --norestart
python -m pip install --no-user -U pip setuptools wheel
for /f "usebackq delims=" %i in (`"%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe" -products * -latest -property installationPath`) do "%i\VC\Auxiliary\Build\vcvarsall.bat" amd64 -vcvars_ver=14.43.34808

REM vcpkg のセットアップと依存ライブラリのインストール ---
set "VCPKG_ROOT=C:\vcpkg"
setx VCPKG_ROOT "C:\vcpkg" /M
if exist "C:\vcpkg\.git" (cd /d C:\vcpkg && git pull --recurse-submodules) else (git clone https://github.com/microsoft/vcpkg.git C:\vcpkg)
if exist "C:\vcpkg\vcpkg.exe" (echo vcpkg already bootstrapped. Skipping.) else (C:\vcpkg\bootstrap-vcpkg.bat)
REM x64-windows-cuda-vs2022 に関する vcpkg の設定
copy /y C:\vcpkg\triplets\x64-windows.cmake C:\vcpkg\triplets\community\x64-windows-cuda-vs2022.cmake
echo set(VCPKG_CMAKE_CONFIGURE_OPTIONS "-DCMAKE_CUDA_HOST_COMPILER=C:/Program Files (x86)/Microsoft Visual Studio/18/BuildTools/VC/Tools/MSVC/14.43.34808/bin/Hostx64/x64/cl.exe") >> C:\vcpkg\triplets\community\x64-windows-cuda-vs2022.cmake
REM
%VCPKG_ROOT%\vcpkg install opencv4:x64-windows-cuda-vs2022 eigen3:x64-windows-cuda-vs2022 ceres:x64-windows-cuda-vs2022 glog:x64-windows-cuda-vs2022 gflags:x64-windows-cuda-vs2022
REM %VCPKG_ROOT%\vcpkg install opencv4:x64-windows eigen3:x64-windows ceres:x64-windows glog:x64-windows gflags:x64-windows

REM --- 0. 基本設定 ---
set INSTALL_DIR=c:\ind-bermuda-opensfm
set "PYTHON_EXE=C:\Program Files\Python312\python.exe"

REM --- 1. ソースコードの取得 ---
cd /d c:\
if exist "%INSTALL_DIR%" rmdir /s /q "%INSTALL_DIR%"
git clone --recursive https://github.com/inuex35/ind-bermuda-opensfm "%INSTALL_DIR%"
cd /d "%INSTALL_DIR%"

REM --- 3. requirements.txt の修正 ---
cd /d "%INSTALL_DIR%
"%PYTHON_EXE%" -c "import pathlib; p=pathlib.Path('requirements.txt'); lines=p.read_text(encoding='utf-8').splitlines(); out=[]; [out.append('opencv-python ; sys_platform == \"win32\"') if 'opencv-python==' in l and 'win32' in l else out.append(l.replace('==','>=')) for l in lines]; p.write_text('\n'.join(out)+'\n',encoding='utf-8')"

REM Pythonパス設定
set "PYTHON_PATH=C:\Program Files\Python312"
set "PIP=%PYTHON_PATH%\Scripts\pip"

REM --- 4. Python 依存パッケージのインストール、関連パッケージ (lightglue) のインストール ---
"%PIP%" install --no-user -r requirements.txt
"%PIP%" install --no-user git+https://github.com/cvg/LightGlue.git

REM --- 5. setup.py の修正(Sphinx BuildDoc 廃止対応)---
"%PYTHON_EXE%" -c "import pathlib; p=pathlib.Path('setup.py'); t=p.read_text(encoding='utf-8'); t=t.replace('from sphinx.setup_command import BuildDoc','try:\n    from sphinx.setup_command import BuildDoc\nexcept ImportError:\n    BuildDoc = None'); t=t.replace('\"build_doc\": BuildDoc,','**({\"build_doc\": BuildDoc} if BuildDoc else {}),'); p.write_text(t,encoding='utf-8')"

REM --- 6. pybind11 を Python 3.12 対応版 v2.13.6 に差し替え ---
rmdir /s /q opensfm\src\third_party\pybind11
git clone --branch v2.13.6 --depth 1 https://github.com/pybind/pybind11.git opensfm\src\third_party\pybind11

REM --- 6a. 各サブディレクトリ CMakeLists.txt の pybind11 ターゲット名修正 ---
REM      target_link_libraries 内の "pybind11" を "pybind11::pybind11" に置換
REM      add_subdirectory(third_party/pybind11) や pybind11_add_module は変更しない
"%PYTHON_EXE%" -c "import pathlib; dirs=['foundation','bundle','dense','features','geo','geometry','robust','sfm','map']; [p.write_text(p.read_text(encoding='utf-8').replace('    pybind11\n','    pybind11::pybind11\n').replace(' pybind11)','  pybind11::pybind11)'),encoding='utf-8') for d in dirs for p in [pathlib.Path(f'opensfm/src/{d}/CMakeLists.txt')] if p.exists()]"

REM --- 6b. トップレベル CMakeLists.txt: Ceres ターゲット判定とインクルードパス修正 ---
REM      Ceres 2.x では CERES_INCLUDE_DIRS が未設定のため
REM      Ceres::ceres ターゲットから INTERFACE_INCLUDE_DIRECTORIES を取得しグローバル設定
"%PYTHON_EXE%" -c "import pathlib; p=pathlib.Path('opensfm/src/CMakeLists.txt'); t=p.read_text(encoding='utf-8'); old_block='if(Ceres_ceres_FOUND)\n    set(CERES_LIBRARIES Ceres::ceres)\nelse()\n    set(CERES_LIBRARIES ceres)\nendif()'; new_block='if(TARGET Ceres::ceres)\n  set(CERES_LIBRARIES Ceres::ceres)\n  get_target_property(_ceres_inc Ceres::ceres INTERFACE_INCLUDE_DIRECTORIES)\n  if(_ceres_inc)\n    include_directories(${_ceres_inc})\n  endif()\nelse()\n  set(CERES_LIBRARIES ceres)\nendif()'; t=t.replace(old_block,new_block); p.write_text(t,encoding='utf-8')"

REM --- 6c. トップレベル CMakeLists.txt: glog ターゲット判定とレガシー変数復元 ---
REM      vcpkg の glog 0.7.x は glog::glog ターゲットのみを提供し
REM      GLOG_LIBRARY / GLOG_INCLUDE_DIR 変数を設定しない
REM      また GLOG_USE_GLOG_EXPORT の定義が必要(glog 0.7.x の要件)
REM      サブディレクトリの多くは glog::glog を直接リンクせず
REM      GLOG_INCLUDE_DIR でヘッダのみ参照するため定義が伝播しない
REM      グローバルに add_compile_definitions で対処する
"%PYTHON_EXE%" -c "import pathlib; p=pathlib.Path('opensfm/src/CMakeLists.txt'); t=p.read_text(encoding='utf-8'); old='find_package(Glog REQUIRED)'; new='find_package(glog QUIET CONFIG)\nif(TARGET glog::glog)\n  set(GLOG_LIBRARIES glog::glog)\n  set(GLOG_LIBRARY glog::glog)\n  get_target_property(GLOG_INCLUDE_DIR glog::glog INTERFACE_INCLUDE_DIRECTORIES)\n  if(NOT GLOG_INCLUDE_DIR)\n    set(GLOG_INCLUDE_DIR \"\")\n  endif()\n  set(GLOG_INCLUDE_DIRS ${GLOG_INCLUDE_DIR})\n  add_compile_definitions(GLOG_USE_GLOG_EXPORT)\nelse()\n  find_package(Glog REQUIRED)\nendif()'; t=t.replace(old,new); p.write_text(t,encoding='utf-8')"

REM --- 7. CMakeLists.txt: cmake_minimum_required を 3.15 に更新(CMake 4.x 対応)---
"%PYTHON_EXE%" -c "import pathlib; p=pathlib.Path('opensfm/src/CMakeLists.txt'); t=p.read_text(encoding='utf-8'); t=t.replace('cmake_minimum_required(VERSION 3.0)','cmake_minimum_required(VERSION 3.15)'); p.write_text(t,encoding='utf-8')"

REM --- 8. C++ 標準を C++17 に更新 ---
"%PYTHON_EXE%" -c "import pathlib; p=pathlib.Path('opensfm/src/CMakeLists.txt'); t=p.read_text(encoding='utf-8'); t=t.replace('set(CMAKE_CXX_STANDARD 14)','set(CMAKE_CXX_STANDARD 17)'); p.write_text(t,encoding='utf-8')"

REM --- 9. CMake 構成 ---
REM      OPENSFM_BUILD_TESTS=OFF: 同梱の gtest が古く std::tr1 を使用しており
REM      C++17 + Visual Studio 2026 ではコンパイルできないため無効化する
REM      テストは Python 拡張モジュールのビルドに不要である
if exist mybuild rmdir /s /q mybuild
mkdir mybuild
cd mybuild
cmake ..\opensfm\src -G "Visual Studio 18 2026" -A x64 -T v143 -DPYTHON_EXECUTABLE="%PYTHON_EXE%" -DCMAKE_TOOLCHAIN_FILE="%VCPKG_ROOT%\scripts\buildsystems\vcpkg.cmake" -DVCPKG_TARGET_TRIPLET=x64-windows-cuda-vs2022 -DCMAKE_CUDA_HOST_COMPILER="C:/Program Files (x86)/Microsoft Visual Studio/18/BuildTools/VC/Tools/MSVC/14.43.34808/bin/Hostx64/x64/cl.exe" -DOPENSFM_BUILD_TESTS=OFF
REM cmake ..\opensfm\src -G "Visual Studio 18 2026" -A x64 -DPYTHON_EXECUTABLE="%PYTHON_EXE%" -DVCPKG_TARGET_TRIPLET=x64-windows -DCMAKE_TOOLCHAIN_FILE="%VCPKG_ROOT%\scripts\buildsystems\vcpkg.cmake" -DOPENSFM_BUILD_TESTS=OFF



REM --- 10. ビルド ---
cmake --build . --config Release
cd /d "%INSTALL_DIR%"

"%PYTHON_EXE%" -c "import pathlib; p=pathlib.Path(r'opensfm\exif.py'); t=p.read_text(encoding='utf-8'); t=t.replace('            if np.all(ypr) is not None:\n','            if all(v is not None for v in ypr):\n'); p.write_text(t,encoding='utf-8')"

"%PYTHON_EXE%" -c "import pathlib; p=pathlib.Path(r'opensfm\dataset.py'); t=p.read_text(encoding='utf-8'); t=t.replace('                \"numpy.core.multiarray.scalar\": np.core.multiarray,\n','                \"numpy.core.multiarray.scalar\": np.core.multiarray,\n                \"numpy._core.multiarray._reconstruct\": np.core.multiarray,\n                \"numpy._core.multiarray.scalar\": np.core.multiarray,\n'); p.write_text(t,encoding='utf-8')"

"%PYTHON_EXE%" -c "import pathlib; p=pathlib.Path(r'opensfm\stats.py'); t=p.read_text(encoding='utf-8'); t=t.replace('            aspect=40,\n        )','            aspect=40,\n            ax=plt.gca(),\n        )'); p.write_text(t,encoding='utf-8')"

"%PYTHON_EXE%" -c "import pathlib; p=pathlib.Path(r'opensfm\stats.py'); t=p.read_text(encoding='utf-8'); t=t.replace('    plt.colorbar(\n        sm,\n        orientation=\"horizontal\",\n        label=\"Number of matches between images\",\n        pad=0.0,\n    )','    plt.colorbar(\n        sm,\n        orientation=\"horizontal\",\n        label=\"Number of matches between images\",\n        pad=0.0,\n        ax=plt.gca(),\n    )'); p.write_text(t,encoding='utf-8')"

REM --- 11. .pyd ファイルの配置確認 ---
dir opensfm\*.pyd >nul 2>&1
if errorlevel 1 (for /r build %f in (*.pyd) do copy "%f" opensfm\)

REM --- 12. 動作確認 ---
"%PYTHON_EXE%" -c "import opensfm; print('OpenSfM import OK')"

echo.
echo ============================================================
echo  ビルド完了
echo ============================================================

echo -----------------------------------------
echo テストコード
set INSTALL_DIR=c:\ind-bermuda-opensfm
set "PYTHON_EXE=C:\Program Files\Python312\python.exe"

REM ============================================================
REM テスト A: 付属 berlin データによるビルド検証
REM ============================================================
cd /d "%INSTALL_DIR%"

"C:\Program Files\Python312\python.exe" bin\opensfm_main.py extract_metadata data\berlin
"C:\Program Files\Python312\python.exe" bin\opensfm_main.py detect_features data\berlin
"C:\Program Files\Python312\python.exe" bin\opensfm_main.py match_features data\berlin
"C:\Program Files\Python312\python.exe" bin\opensfm_main.py create_tracks data\berlin
"C:\Program Files\Python312\python.exe" bin\opensfm_main.py reconstruct data\berlin
"C:\Program Files\Python312\python.exe" bin\opensfm_main.py mesh data\berlin


REM --- A-結果1: サマリ表示 ---
"%PYTHON_EXE%" -c "import json; d=json.load(open('data/berlin/reconstruction.json', encoding='utf-8')); r=d[0]; print('cameras:', len(r.get('cameras', {})), 'shots:', len(r.get('shots', {})), 'points:', len(r.get('points', {})))"

REM --- A-結果2: PLY エクスポート ---
"%PYTHON_EXE%" bin\opensfm_main.py export_ply data\berlin

REM --- A-結果3: 統計画像とPDFレポートの生成 ---
"%PYTHON_EXE%" bin\opensfm_main.py compute_statistics data\berlin
"%PYTHON_EXE%" bin\opensfm_main.py export_report data\berlin

REM --- A-結果4: 画像とPDFを表示 ---
for %f in ("%INSTALL_DIR%\data\berlin\stats\*.png") do start "" "%f"
start "" "%INSTALL_DIR%\data\berlin\stats\report.pdf"

set "INSTALL_DIR=C:\ind-bermuda-opensfm"
set "PYTHON_EXE=C:\Program Files\Python312\python.exe"
set "PLY_IN=%INSTALL_DIR%\data\berlin\reconstruction.ply"
set "PLY_OUT=%INSTALL_DIR%\data\berlin\reconstruction_mesh.ply"

"%PYTHON_EXE%" -m pip install open3d
"%PYTHON_EXE%" -c "import open3d as o3d; pcd=o3d.io.read_point_cloud(r'%PLY_IN%'); pcd.estimate_normals(); mesh,d=o3d.geometry.TriangleMesh.create_from_point_cloud_poisson(pcd, depth=9); o3d.io.write_triangle_mesh(r'%PLY_OUT%', mesh); print(r'%PLY_OUT%')"


REM ============================================================
REM テスト B: 360度画像(equirectangular)テスト
REM ============================================================
cd /d "%INSTALL_DIR%"
set DATASET_360=data\lg360
set DROPBOX_URL=https://www.dropbox.com/sh/3vabbmrhqqbagp5/AABi14O2tWMbxAX91jaaQY77a?dl=1

REM --- B1. Dropbox から360度サンプルデータをダウンロード ---
powershell -Command "Invoke-WebRequest -Uri '%DROPBOX_URL%' -OutFile '%INSTALL_DIR%\lg360.zip'"
powershell -Command "Expand-Archive -Path '%INSTALL_DIR%\lg360.zip' -DestinationPath '%INSTALL_DIR%\lg360_tmp' -Force"
if not exist "%DATASET_360%" mkdir "%DATASET_360%"
if not exist "%DATASET_360%\images" mkdir "%DATASET_360%\images"
copy /y "%INSTALL_DIR%\lg360_tmp\*.jpg" "%DATASET_360%\images\"
for /d %d in ("%INSTALL_DIR%\lg360_tmp\*") do copy "%d\*.jpg" "%DATASET_360%\images\"
del "%INSTALL_DIR%\lg360.zip"
rmdir /s /q "%INSTALL_DIR%\lg360_tmp"

REM --- B2. camera_models_overrides.json を配置 ---
copy sample\camera_models_overrides.json "%DATASET_360%\"

REM --- B3. config.yaml を配置 ---
copy sample\config.yaml "%DATASET_360%\"

REM --- B4. SfM パイプライン実行 ---
"%PYTHON_EXE%" bin\opensfm_main.py extract_metadata %DATASET_360%
"%PYTHON_EXE%" bin\opensfm_main.py detect_features %DATASET_360%
"%PYTHON_EXE%" bin\opensfm_main.py match_features %DATASET_360%
"%PYTHON_EXE%" bin\opensfm_main.py create_tracks %DATASET_360%
"%PYTHON_EXE%" bin\opensfm_main.py reconstruct %DATASET_360%

REM --- B-結果1: サマリ表示 ---
"%PYTHON_EXE%" -c "import json; d=json.load(open('data/lg360/reconstruction.json', encoding='utf-8')); r=d[0]; print('cameras:', len(r.get('cameras', {})), 'shots:', len(r.get('shots', {})), 'points:', len(r.get('points', {})))"

REM --- B-結果2: PLY エクスポート ---
"%PYTHON_EXE%" bin\opensfm_main.py export_ply %DATASET_360%

REM --- B-結果3: 統計画像とPDFレポートの生成 ---
"%PYTHON_EXE%" bin\opensfm_main.py compute_statistics %DATASET_360%
"%PYTHON_EXE%" bin\opensfm_main.py export_report %DATASET_360%

REM --- B-結果4: 画像とPDFを表示 ---
for %f in ("%INSTALL_DIR%\%DATASET_360%\stats\*.png") do start "" "%f"
start "" "%INSTALL_DIR%\%DATASET_360%\stats\report.pdf"

REM --- 補足: 3Dポイントクラウドの詳細表示 ---
REM reconstruction.ply を MeshLab 等で開くと3D表示が可能
REM berlin: %INSTALL_DIR%\data\berlin\reconstruction.ply
REM lg360:  %INSTALL_DIR%\data\lg360\reconstruction.ply

echo -------------------------
REM OpenMVS, 「カメラ位置」と「疎な点群」から「密な点群」→「メッシュ」→「テクスチャ」を生成

REM VS2022同等の環境をVS2026内に追加
cd /d %TEMP%
"C:\Program Files (x86)\Microsoft Visual Studio\Installer\setup.exe" modify --installPath "C:\Program Files (x86)\Microsoft Visual Studio\18\BuildTools" --add Microsoft.VisualStudio.Component.VC.14.43.17.13.x86.x64 --passive --norestart
python -m pip install --no-user -U pip setuptools wheel ninja pybind11
for /f "usebackq delims=" %i in (`"%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe" -products * -latest -property installationPath`) do "%i\VC\Auxiliary\Build\vcvarsall.bat" amd64 -vcvars_ver=14.43.34808

REM vcpkg のセットアップ
set "VCPKG_ROOT=C:\vcpkg"
setx VCPKG_ROOT "C:\vcpkg" /M
if exist "C:\vcpkg\.git" (cd /d C:\vcpkg && git pull --recurse-submodules) else (git clone https://github.com/microsoft/vcpkg.git C:\vcpkg)
if exist "C:\vcpkg\vcpkg.exe" (echo vcpkg already bootstrapped. Skipping.) else (C:\vcpkg\bootstrap-vcpkg.bat)
REM x64-windows-cuda-vs2022 に関する vcpkg の設定
copy C:\vcpkg\triplets\x64-windows.cmake C:\vcpkg\triplets\community\x64-windows-cuda-vs2022.cmake
echo set(VCPKG_CMAKE_CONFIGURE_OPTIONS "-DCMAKE_CUDA_HOST_COMPILER=C:/Program Files (x86)/Microsoft Visual Studio/18/BuildTools/VC/Tools/MSVC/14.43.34808/bin/Hostx64/x64/cl.exe") >> C:\vcpkg\triplets\community\x64-windows-cuda-vs2022.cmake

REM openMVS
cd C:\
if exist "C:\openMVS\.git" (cd /d C:\openMVS && git pull --recurse-submodules) else (git clone --recurse-submodules https://github.com/cdcseacave/openMVS.git C:\openMVS)
REM CUDA を使用しているかチェック
findstr /s /i CUDA C:\openMVS\CMakeLists.txt C:\openMVS\cmake\*.cmake
cd openMVS
if exist mybuild rmdir /s /q mybuild
mkdir mybuild
cd mybuild
cmake .. -G "Visual Studio 18 2026" -A x64 -T v143 -DPYTHON_EXECUTABLE="%PYTHON_EXE%" -DCMAKE_TOOLCHAIN_FILE="%VCPKG_ROOT%\scripts\buildsystems\vcpkg.cmake" -DVCPKG_TARGET_TRIPLET=x64-windows-cuda-vs2022 -DCMAKE_CUDA_HOST_COMPILER="C:/Program Files (x86)/Microsoft Visual Studio/18/BuildTools/VC/Tools/MSVC/14.43.34808/bin/Hostx64/x64/cl.exe"

REM
cd C:\openMVS\mybuild
REM 全ソースファイルをBOM付きUTF-8に一括変換(エンコーディング問題の防止のため)
powershell -NoProfile -Command "Get-ChildItem -Recurse C:\openMVS\libs,C:\openMVS\apps -Include *.cpp,*.h,*.hpp,*.inl | ForEach-Object { $c=[System.IO.File]::ReadAllText($_.FullName,[System.Text.Encoding]::UTF8); [System.IO.File]::WriteAllText($_.FullName,$c,[System.Text.UTF8Encoding]::new($true)) }"
cmake --build . --config Release -j4
cmake --install . --prefix C:/openMVS
REM
powershell -NoProfile -Command "$p='C:\openMVS\bin'; $c=[Environment]::GetEnvironmentVariable('Path','Machine'); if((Test-Path $p) -and (';'+$c+';' -notlike \"*;$p;*\")){[Environment]::SetEnvironmentVariable('Path',\"$c;$p\",'Machine')}"

echo ----------------------
REM OpenMVG, OpenMVG(Open Multiple View Geometry)は、画像群から3D構造を復元するためのオープンソースライブラリです。主にSfM(Structure from Motion)パイプラインを提供し、特徴点検出・マッチング、カメラ姿勢推定、疎な3D点群の生成を行います。出力をOpenMVSやMeshroomなどに渡すことで、密な点群やメッシュの生成に繋げられます。C++製で、研究・産業の両方で利用されています。
REM 依存: CMake, Git, Visual Studio (C++ワークロード)

REM openMVG
REM openMVG
cd C:\
if exist "C:\openMVG\.git" (cd /d C:\openMVG && git pull --recurse-submodules) else (git clone --recursive https://github.com/openMVG/openMVG.git C:\openMVG)
cd openMVG
if exist mybuild rmdir /s /q mybuild
mkdir mybuild
cd mybuild
cmake -G "Visual Studio 18 2026" -A x64 ^
  -DCMAKE_POLICY_VERSION_MINIMUM=3.5 ^
  -DEIGEN_INCLUDE_DIR_HINTS=C:/openMVG/src/third_party/eigen ^
  -DOSI_INCLUDE_DIR_HINTS=C:/openMVG/src/third_party/osi_clp/osi ^
  -DCLP_INCLUDE_DIR_HINTS=C:/openMVG/src/third_party/osi_clp/clp ^
  -DCOINUTILS_INCLUDE_DIR_HINTS=C:/openMVG/src/third_party/osi_clp/CoinUtils ^
  ..\src
cmake --build . --config Release

echo -------------------------------

REM === AliceVision ビルドスクリプト ===
REM C:\vcpkg                              — 共有 vcpkg(他プロジェクトと共用)
REM C:\AliceVision_source                 — ソースコード
REM C:\AliceVision_source\vcpkg_installed — 依存関係(cmake が自動作成,プロジェクトローカル)
REM C:\AliceVision_source\mybuild         — ビルド成果物
REM C:\AliceVision                        — インストール先
set "VCPKG_ROOT=C:\vcpkg"
REM 【非標準】setx /M はシステム環境変数を永続的に変更する(標準では set による一時設定のみで十分な場合が多い)
REM 管理者権限が必要であり,反映は新しいプロセスからとなるため,直前の set と併用している

REM VS2022同等の環境をVS2026内に追加
cd /d %TEMP%
"C:\Program Files (x86)\Microsoft Visual Studio\Installer\setup.exe" modify --installPath "C:\Program Files (x86)\Microsoft Visual Studio\18\BuildTools" --add Microsoft.VisualStudio.Component.VC.14.43.17.13.x86.x64 --passive --norestart
python -m pip install --no-user -U pip setuptools wheel ninja pybind11
for /f "usebackq delims=" %i in (`"%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe" -products * -latest -property installationPath`) do "%i\VC\Auxiliary\Build\vcvarsall.bat" amd64 -vcvars_ver=14.43.34808

REM vcpkg のセットアップ
set "VCPKG_ROOT=C:\vcpkg"
setx VCPKG_ROOT "C:\vcpkg" /M
if exist "C:\vcpkg\.git" (cd /d C:\vcpkg && git pull --recurse-submodules) else (git clone https://github.com/microsoft/vcpkg.git C:\vcpkg)
if exist "C:\vcpkg\vcpkg.exe" (echo vcpkg already bootstrapped. Skipping.) else (C:\vcpkg\bootstrap-vcpkg.bat)
REM x64-windows-cuda-vs2022 に関する vcpkg の設定
copy C:\vcpkg\triplets\x64-windows.cmake C:\vcpkg\triplets\community\x64-windows-cuda-vs2022.cmake
echo set(VCPKG_CMAKE_CONFIGURE_OPTIONS "-DCMAKE_CUDA_HOST_COMPILER=C:/Program Files (x86)/Microsoft Visual Studio/18/BuildTools/VC/Tools/MSVC/14.43.34808/bin/Hostx64/x64/cl.exe") >> C:\vcpkg\triplets\community\x64-windows-cuda-vs2022.cmake

cd C:\
REM 【非標準】git checkout vcpkg.json は,後続の powershell コマンドで vcpkg.json を書き換えるため,
REM git pull 前にローカル変更を破棄してコンフリクトを防止する目的である
if exist "C:\AliceVision_source\.git" (cd /d C:\AliceVision_source && git checkout vcpkg.json && git pull --recurse-submodules) else (git clone --recursive https://github.com/alicevision/AliceVision.git C:\AliceVision_source)
REM OpenCV の CUDA フィーチャーを除外する(OpenCV CUDA ビルドが vcpkg の構成検証で失敗するため)
REM AliceVision 本体の CUDA 機能(PopSift,デプスマップ計算等)には影響しない
REM 【非標準】上流の vcpkg.json を powershell で直接書き換えている(標準では vcpkg.json の編集は手動で行うか,
REM オーバーレイやカスタムトリプレットで対応する)
REM OpenCV の CUDA フィーチャーが vcpkg のビルド検証で失敗する問題への回避策である
powershell -Command "(Get-Content C:\AliceVision_source\vcpkg.json -Raw) -replace '\"eigen\", \"contrib\", \"nonfree\", \"cuda\", \"dnn\"', '\"eigen\", \"contrib\", \"nonfree\", \"dnn\"' | Set-Content C:\AliceVision_source\vcpkg.json"
REM liblemon の portfile を git clone + CMake直接修正方式に書き換える(lemon.cs.elte.hu がダウン中のため)
REM 【非標準】オーバーレイポートの portfile.cmake を python ワンライナーで丸ごと上書きしている
REM 標準では portfile.cmake をファイルとして直接編集するが,本スクリプトでは単一バッチファイルで
REM 完結させるためにインラインで生成している
REM liblemon 公式サイト(lemon.cs.elte.hu)のダウンロードサーバが停止しているため,
REM 取得先を GitHub(alicevision/lemon)に差し替え,さらに CMP0048 ポリシーエラーを回避する
REM CMakeLists.txt パッチを portfile 内で適用している
python -c "open(r'C:\AliceVision_source\vcpkg\overlay_ports\liblemon\portfile.cmake','w',newline='\n').write('vcpkg_check_linkage(ONLY_STATIC_LIBRARY)\n\nset(SOURCE_PATH \"${CURRENT_BUILDTREES_DIR}/src/lemon-github\")\nfile(REMOVE_RECURSE \"${SOURCE_PATH}\")\nfind_program(GIT git REQUIRED)\nexecute_process(\n    COMMAND \"${GIT}\" clone --depth 1 https://github.com/alicevision/lemon.git \"${SOURCE_PATH}\"\n    RESULT_VARIABLE GIT_RESULT\n)\nif(NOT GIT_RESULT EQUAL 0)\n    message(FATAL_ERROR \"Failed to clone alicevision/lemon from GitHub\")\nendif()\n\n# Fix CMP0048 policy error for modern CMake\nfile(READ \"${SOURCE_PATH}/CMakeLists.txt\" _contents)\nstring(REPLACE \"CMAKE_POLICY(SET CMP0048 OLD)\\n\" \"\" _contents \"${_contents}\")\nstring(REPLACE \"CMAKE_POLICY(SET CMP0048 OLD)\" \"\" _contents \"${_contents}\")\nstring(REGEX REPLACE \"cmake_minimum_required\\\\(VERSION [0-9.]+\" \"cmake_minimum_required(VERSION 3.10\" _contents \"${_contents}\")\nstring(REPLACE \"PROJECT(${PROJECT_NAME})\" \"project(${PROJECT_NAME} VERSION 1.3.1)\" _contents \"${_contents}\")\nfile(WRITE \"${SOURCE_PATH}/CMakeLists.txt\" \"${_contents}\")\n\nvcpkg_cmake_configure(\n    SOURCE_PATH \"${SOURCE_PATH}\"\n    OPTIONS\n        -DLEMON_ENABLE_GLPK=OFF\n        -DLEMON_ENABLE_ILOG=OFF\n        -DLEMON_ENABLE_COIN=OFF\n        -DLEMON_ENABLE_SOPLEX=OFF\n)\nvcpkg_cmake_install()\nvcpkg_cmake_config_fixup(CONFIG_PATH share/lemon/cmake PACKAGE_NAME lemon)\nvcpkg_fixup_pkgconfig()\nfile(GLOB EXE \"${CURRENT_PACKAGES_DIR}/bin/*.exe\")\nif(EXE)\n    file(COPY ${EXE} DESTINATION \"${CURRENT_PACKAGES_DIR}/tools/liblemon/\")\n    vcpkg_copy_tool_dependencies(\"${CURRENT_PACKAGES_DIR}/tools/liblemon\")\nendif()\nfile(REMOVE_RECURSE \"${CURRENT_PACKAGES_DIR}/debug/include\")\nfile(REMOVE_RECURSE \"${CURRENT_PACKAGES_DIR}/debug/share\")\nfile(REMOVE_RECURSE \"${CURRENT_PACKAGES_DIR}/bin\" \"${CURRENT_PACKAGES_DIR}/debug/bin\")\nfile(REMOVE_RECURSE \"${CURRENT_PACKAGES_DIR}/share/doc\")\nvcpkg_install_copyright(FILE_LIST \"${SOURCE_PATH}/LICENSE\")\n')"
REM liblemon のビルドキャッシュを削除(前回の失敗キャッシュが残っている場合のため)
REM 【非標準】vcpkg のビルドキャッシュを手動で削除している(標準では vcpkg remove またはクリーンビルドで対処する)
REM portfile を差し替えているため,前回の失敗キャッシュや古いパッケージが残っているとビルドが失敗する
if exist "C:\vcpkg\buildtrees\liblemon" rmdir /s /q "C:\vcpkg\buildtrees\liblemon"
if exist "C:\vcpkg\packages\liblemon_x64-windows-release" rmdir /s /q "C:\vcpkg\packages\liblemon_x64-windows-release"
REM 【非標準】--x-manifest-root で明示的にマニフェストルートを指定している(標準ではマニフェストディレクトリ内で
REM vcpkg install を実行すれば自動検出される)
REM 本スクリプトではカレントディレクトリがソースルートと一致しない場合があるため明示的に指定している
%VCPKG_ROOT%\vcpkg.exe install --triplet=x64-windows-cuda-vs2022 --host-triplet=x64-windows-cuda-vs2022 --x-manifest-root=C:\AliceVision_source
cd /d C:\AliceVision_source
REM 【非標準】ビルドディレクトリを毎回削除して再作成している(標準ではインクリメンタルビルドを活用し,
REM 必要な場合のみクリーンビルドを行う)
REM 依存関係やオプション変更時のキャッシュ不整合を防止する目的である
if exist mybuild rmdir /s /q mybuild
mkdir mybuild
cd mybuild
REM 【非標準】-DCMAKE_BUILD_TYPE=Release は Visual Studio ジェネレータ使用時には効果がない
REM (マルチコンフィギュレーションジェネレータではビルド時に --config で指定する)
REM 実害はないが,冗長な指定である
REM 【非標準】-DTARGET_ARCHITECTURE=core は AliceVision 固有のオプションで,SSE/AVX 等の
REM CPU 固有命令を使わず汎用的なバイナリを生成する設定である(標準では auto や native を使用する場合が多い)
cmake -G "Visual Studio 18 2026" -A x64 -T v143 ^
  -DCMAKE_TOOLCHAIN_FILE="%VCPKG_ROOT%\scripts\buildsystems\vcpkg.cmake" -DVCPKG_TARGET_TRIPLET=x64-windows-cuda-vs2022 -DCMAKE_CUDA_HOST_COMPILER="C:/Program Files (x86)/Microsoft Visual Studio/18/BuildTools/VC/Tools/MSVC/14.43.34808/bin/Hostx64/x64/cl.exe" ^
  -DCMAKE_BUILD_TYPE=Release ^
  -DBUILD_SHARED_LIBS=ON ^
  -DTARGET_ARCHITECTURE=core ^
  -DCMAKE_INSTALL_PREFIX=C:/AliceVision ^
  -DALICEVISION_USE_CUDA=ON ^
  ..
cmake --build . --config Release --target INSTALL
REM 【非標準】BUNDLE ターゲットは AliceVision 固有のカスタムターゲットで,
REM 実行に必要な DLL 等をインストール先にまとめてコピーする(CMake 標準には存在しないターゲットである)
cmake --build . --config Release --target BUNDLE

echo -------------------------
REM torchmcubes と TripoSR のインストール

REM VS2022同等の環境をVS2026内に追加
cd /d %TEMP%
"C:\Program Files (x86)\Microsoft Visual Studio\Installer\setup.exe" modify --installPath "C:\Program Files (x86)\Microsoft Visual Studio\18\BuildTools" --add Microsoft.VisualStudio.Component.VC.14.43.17.13.x86.x64 --passive --norestart
python -m pip install --no-user -U pip setuptools wheel
for /f "usebackq delims=" %i in (`"%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe" -products * -latest -property installationPath`) do "%i\VC\Auxiliary\Build\vcvarsall.bat" amd64 -vcvars_ver=14.43.34808

REM numpy と PyTorch(CUDA 12.8 対応 wheel)、pip キャッシュを全削除
set "CUDA_TAG=cu128"
"%PIP%" install --no-user -U numpy torch torchvision torchaudio --index-url https://download.pytorch.org/whl/%CUDA_TAG%
"%PIP%" install -U --no-user scipy pillow pandas
"%PIP%" uninstall -y opencv-python-headless opencv-contrib-python-headless opencv-python
"%PIP%" install --no-user --force-reinstall opencv-contrib-python
"%PIP%" cache purge


REM torchmcubes のインストール(tripoSR の前提)
where cl
cl /Bv
where nvcc
set "CC=cl"
set "CXX=cl"
set "CMAKE_GENERATOR=Ninja"
set "TORCH_CUDA_ARCH_LIST=7.5 8.0 8.6 8.9 9.0"
set "CUDAFLAGS=-Xcompiler=/permissive-"
python -c "import torch; print(torch.__version__); print(torch.version.cuda)"
python -m pip install --no-build-isolation --no-cache-dir git+https://github.com/tatsy/torchmcubes.git

REM インストール開始
REM ===== リポジトリをクローン =====
cd /d c:\
rmdir /s /q TripoSR
git clone https://github.com/VAST-AI-Research/TripoSR.git
cd TripoSR

REM ===== 2. requirements.txt の修正 =====
powershell -Command "(Get-Content requirements.txt) -replace 'transformers==4.35.0', 'transformers' | Set-Content requirements.txt"

REM ===== 3. コンパイラを指定してインストール =====
REM 依存関係のインストール
pip install --no-user -r requirements.txt

echo material.mtl
(echo newmtl material0
echo Ka 1.0 1.0 1.0
echo Kd 1.0 1.0 1.0
echo map_Kd texture.png) > C:\image\material.mtl

echo -----------------------------------------------
REM TripoSR のテスト
---

## 単一カラー画像から色付きポリゴンメッシュを再構成する手順
**Windows コマンドプロンプト完全ガイド(2026年版)**

### 1. 推奨ツール: TripoSR
TripoSR は Stability AI と Tripo AI が共同開発した、単一画像から色付き3Dメッシュを直接生成するモデルです。LRMアーキテクチャをベースに、約0.5秒での高速生成を実現しています。

| 項目 | TripoSR | 従来パイプライン (Open3D等) |
| :--- | :--- | :--- |
| **工程** | 画像 → メッシュ (1ステップ) | 画像 → 点群 → 法線推定 → Poisson再構成 |
| **実行** | `python run.py image.jpg` | 多段スクリプト |
| **出力** | OBJ / GLB (テクスチャ対応) | PLY / OBJ (頂点カラーのみ) |
| **速度** | 約0.5秒 (A100) / 数秒 (民生GPU) | 数十秒〜数分 |
| **ライセンス** | MIT (商用利用可) | ツールにより異なる |

### 3. 実行コマンド

#### 3-1. 基本実行(頂点カラー付きメッシュ)
python run.py examples/chair.png --output-dir output/


#### 3-2. テクスチャベイク付き(推奨)
UV展開され、テクスチャ画像が生成されます。
python run.py examples/chair.png --output-dir output/ --bake-texture --texture-resolution 2048
```
* **出力**: `output\0\mesh.obj` (UV付き), `output\0\texture.png`

#### 3-3. 高解像度メッシュ設定
```cmd
python run.py C:\photos\input.jpg --output-dir output\ --bake-texture --mc-resolution 256
```
* `--mc-resolution`: Marching Cubesの解像度。デフォルトは256。

#### 3-4. 背景除去の制御
* `--no-remove-bg`: 背景が既に単色(グレー等)の場合に使用。
* `--foreground-ratio`: 前景の占める割合(デフォルト 0.85)。

---

### 4. Blender による自動フォーマット変換(OBJ → GLB/FBX)
Blender 4.4 の Python API を使用した一括変換コマンドです。

**OBJ → GLB (Web/AR用)**
```cmd
"C:\Program Files\Blender Foundation\Blender 4.4\blender.exe" ^
    --background --python-expr ^
    "import bpy; bpy.ops.wm.read_factory_settings(use_empty=True); bpy.ops.wm.obj_import(filepath=r'output\0\mesh.obj'); bpy.ops.export_scene.gltf(filepath=r'output\0\mesh.glb', export_format='GLB')"
```

**OBJ → FBX (ゲームエンジン用)**
```cmd
"C:\Program Files\Blender Foundation\Blender 4.4\blender.exe" ^
    --background --python-expr ^
    "import bpy; bpy.ops.wm.read_factory_settings(use_empty=True); bpy.ops.wm.obj_import(filepath=r'output\0\mesh.obj'); bpy.ops.export_scene.fbx(filepath=r'output\0\mesh.fbx')"
```

---

### 5. トラブルシューティング

* **「Repository not found」エラーが出る**
    * **原因**: `git clone` のURLと `cd` コマンドが繋がっています。
    * **解決**: コマンドを2回に分けて実行するか、`git clone  && cd TripoSR` のように `&&` で繋いでください。
* **「torchmcubes was not compiled with CUDA support」**
    * **原因**: `torchmcubes` がCPU版としてインストールされています。
    * **解決**: 上記「手順2」の通り、`pip install git+...` を実行してソースからビルドし直してください(要:Visual Studio Build Tools)。
* **VRAM不足 (OOM)**
    * **解決**: `--tsr-chunk-size 4096` または `2048` を引数に追加してメモリ消費を抑えてください。

5-4. 背景除去を無効化(背景が既にグレーの場合)
cmdpython run.py C:\photos\my_photo.jpg --output-dir output\ --no-remove-bg
デフォルトでは背景が自動除去される(rembg使用)。入力画像が既に前景のみの場合はこのオプションを使用。
5-5. 複数画像を一括処理
cmdpython run.py C:\photos\img1.jpg C:\photos\img2.jpg C:\photos\img3.jpg --output-dir output\ --bake-texture
各画像に対して output\0\, output\1\, output\2\ にそれぞれメッシュが出力される。

6. 出力ファイル
ファイル説明mesh.objポリゴンメッシュ(--bake-textureなし: 頂点カラー / あり: UV+テクスチャ参照)texture.pngテクスチャ画像(--bake-texture 使用時のみ)input.png前処理済みの入力画像

7. MeshLab での確認・後処理(任意)
cmdREM MeshLab のインストール
winget install -e --id CNRS.MeshLab

REM メッシュを開いて確認
"C:\Program Files\VCG\MeshLab\meshlab.exe" output\0\mesh.obj

8. Blender でのフォーマット変換(任意)
cmdREM Blender のインストール
winget install -e --id BlenderFoundation.Blender

REM OBJ → GLB (glTF) 変換
"C:\Program Files\Blender Foundation\Blender 4.4\blender.exe" ^
    --background --python-expr ^
    "import bpy; bpy.ops.wm.read_factory_settings(use_empty=True); bpy.ops.wm.obj_import(filepath=r'output\0\mesh.obj'); bpy.ops.export_scene.gltf(filepath=r'output\0\mesh.glb', export_format='GLB')"

REM OBJ → FBX 変換
"C:\Program Files\Blender Foundation\Blender 4.4\blender.exe" ^
    --background --python-expr ^
    "import bpy; bpy.ops.wm.read_factory_settings(use_empty=True); bpy.ops.wm.obj_import(filepath=r'output\0\mesh.obj'); bpy.ops.export_scene.fbx(filepath=r'output\0\mesh.fbx')"

9. パラメータ一覧
パラメータデフォルト説明--output-diroutput/出力ディレクトリ--bake-textureoffテクスチャベイクを有効化(UV展開 + texture.png 出力)--texture-resolution1024テクスチャ解像度(ピクセル)。2048推奨--mc-resolution256Marching Cubes 解像度。高いほど詳細--no-remove-bgoff背景自動除去を無効化--foreground-ratio0.85前景のサイズ比率(背景除去時)--chunk-size8192メッシュ抽出のチャンクサイズ。VRAM不足時は小さくする--modelstabilityai/TripoSRモデルID(HuggingFace)またはローカルパス

10. 使用ツール一覧
ツール役割インストールTripoSR単一画像→色付きメッシュ直接生成git clone + pip install -r requirements.txtMeshLabメッシュ確認・後処理(任意)winget install -e --id CNRS.MeshLabBlenderフォーマット変換(任意)winget install -e --id BlenderFoundation.Blender

11. トラブルシューティング
torchmcubes was not compiled with CUDA support
→ ローカルのCUDAバージョンとPyTorchのCUDAバージョンが一致していない。以下を実行:
cmdpip uninstall torchmcubes -y
pip install git+https://github.com/tatsy/torchmcubes.git
VRAM不足
→ --chunk-size を小さくする(例: 4096, 2048)。--mc-resolution を下げる(例: 128)。
背景が除去されない / 不正に除去される
→ 入力画像の背景をあらかじめ除去し、グレー背景にした上で --no-remove-bg を使用する。
モデルのダウンロードが遅い
→ HuggingFace からモデルを手動ダウンロードし、--model でローカルパスを指定する。

12. 補足: さらに高品質を求める場合
TripoSRより高品質な3Dメッシュが必要な場合、以下のツールも選択肢に入る。ただしWindowsへのインストールは複雑になる。
ツール品質特徴Windows対応VRAMTRELLIS.2 (Microsoft)最高PBRテクスチャ、4Bパラメータ、MITコミュニティfork/ComfyUI経由16GB+SAM 3D Objects (Meta)高シーン内の複数物体を個別に再構成要調査16GB+InstantMesh (Tencent)高マルチビュー拡散+LRM、10秒要調査16GB+

2026/4/22以降の差分を反映させるためのコマンド

REM 手作業
echo cmake のPATHを確認してください

REM Pythonパス設定
set "PYTHON_PATH=C:\Program Files\Python312"
set "PYTHON=%PYTHON_PATH%\python.exe"
set "PIP=%PYTHON_PATH%\Scripts\pip"

echo ----------------------------------------------------------------------

REM ollama モデル更新
ollama rm qwen3.5:35b-a3b
ollama rm qwen3.5:27b
ollama pull gemma4:e4b
ollama pull qwen3.6:27b
ollama pull qwen3.6:35b-a3b

REM ComfyUI Manager, ComfyUI GGUF
git clone https://github.com/ltdrdata/ComfyUI-Manager C:\ComfyUI\custom_nodes\ComfyUI-Manager
"%PIP%" install --no-user -r C:\ComfyUI\custom_nodes\ComfyUI-Manager\requirements.txt
git clone https://github.com/city96/ComfyUI-GGUF C:\ComfyUI\custom_nodes\ComfyUI-GGUF
"%PIP%" install --no-user -r C:\ComfyUI\custom_nodes\ComfyUI-GGUF\requirements.txt

REM ============================================================
REM ComfyUI モデル一括ダウンロードスクリプト(2026年5月10日修正版)
REM 合計:8ファイル 約46.93 GB
REM 対応:コマンドプロンプト直接貼付 / バッチファイル実行 両対応
REM 繰り返し実行可:存在ファイルはスキップ
REM 失敗時:部分ファイル自動削除(次回実行で完全再取得)
REM VRAM 16GB / RAM 32GB 制約に適合
REM ============================================================
REM [1] z_image_turbo_bf16.safetensors              12.31 GB  Z-Image Turbo 拡散モデル本体(高速画像生成)
REM [2] wan2.2_ti2v_5B_fp16.safetensors             10.00 GB  Wan2.2 TI2V-5B 拡散モデル本体(T2V/I2V 両対応)
REM [3] flux-2-klein-4b.safetensors                  7.75 GB  FLUX.2 Klein 拡散モデル本体(高品質画像生成)
REM [4] qwen_3_4b.safetensors                        8.04 GB  Qwen-3 4B テキストエンコーダ(Z-Image Turbo & FLUX.2 Klein 共用)
REM [5] umt5_xxl_fp8_e4m3fn_scaled.safetensors       6.74 GB  UMT5-XXL fp8 テキストエンコーダ(Wan2.2 用)
REM [6] ae.safetensors                               0.34 GB  Z-Image Turbo 用 VAE
REM [7] wan2.2_vae.safetensors                       1.41 GB  Wan2.2 用 VAE
REM [8] flux2-vae.safetensors                        0.34 GB  FLUX.2 Klein 用 VAE
REM ============================================================

REM === 1. モデル格納ディレクトリ作成 ===
if not exist "C:\ComfyUI\models\diffusion_models" mkdir "C:\ComfyUI\models\diffusion_models"
if not exist "C:\ComfyUI\models\text_encoders"    mkdir "C:\ComfyUI\models\text_encoders"
if not exist "C:\ComfyUI\models\vae"              mkdir "C:\ComfyUI\models\vae"

REM === 2. [1] Z-Image Turbo 拡散モデル本体 ===
if not exist "C:\ComfyUI\models\diffusion_models\z_image_turbo_bf16.safetensors" (
    echo [DL] z_image_turbo_bf16.safetensors
    curl -L --fail --remove-on-error -o "C:\ComfyUI\models\diffusion_models\z_image_turbo_bf16.safetensors" "https://huggingface.co/Comfy-Org/z_image_turbo/resolve/main/split_files/diffusion_models/z_image_turbo_bf16.safetensors"
) else (echo [SKIP] z_image_turbo_bf16.safetensors)

REM === 3. [2] Wan2.2 TI2V-5B 拡散モデル本体 ===
if not exist "C:\ComfyUI\models\diffusion_models\wan2.2_ti2v_5B_fp16.safetensors" (
    echo [DL] wan2.2_ti2v_5B_fp16.safetensors
    curl -L --fail --remove-on-error -o "C:\ComfyUI\models\diffusion_models\wan2.2_ti2v_5B_fp16.safetensors" "https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged/resolve/main/split_files/diffusion_models/wan2.2_ti2v_5B_fp16.safetensors"
) else (echo [SKIP] wan2.2_ti2v_5B_fp16.safetensors)

REM === 4. [3] FLUX.2 Klein 拡散モデル本体 ===
if not exist "C:\ComfyUI\models\diffusion_models\flux-2-klein-4b.safetensors" (
    echo [DL] flux-2-klein-4b.safetensors
    curl -L --fail --remove-on-error -o "C:\ComfyUI\models\diffusion_models\flux-2-klein-4b.safetensors" "https://huggingface.co/Comfy-Org/flux2-klein/resolve/main/split_files/diffusion_models/flux-2-klein-4b.safetensors"
) else (echo [SKIP] flux-2-klein-4b.safetensors)

REM === 5. [4] Qwen-3 4B テキストエンコーダ(Z-Image Turbo & FLUX.2 Klein 共用) ===
if not exist "C:\ComfyUI\models\text_encoders\qwen_3_4b.safetensors" (
    echo [DL] qwen_3_4b.safetensors
    curl -L --fail --remove-on-error -o "C:\ComfyUI\models\text_encoders\qwen_3_4b.safetensors" "https://huggingface.co/Comfy-Org/z_image_turbo/resolve/main/split_files/text_encoders/qwen_3_4b.safetensors"
) else (echo [SKIP] qwen_3_4b.safetensors)

REM === 6. [5] UMT5-XXL fp8 テキストエンコーダ(Wan2.2 用) ===
if not exist "C:\ComfyUI\models\text_encoders\umt5_xxl_fp8_e4m3fn_scaled.safetensors" (
    echo [DL] umt5_xxl_fp8_e4m3fn_scaled.safetensors
    curl -L --fail --remove-on-error -o "C:\ComfyUI\models\text_encoders\umt5_xxl_fp8_e4m3fn_scaled.safetensors" "https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged/resolve/main/split_files/text_encoders/umt5_xxl_fp8_e4m3fn_scaled.safetensors"
) else (echo [SKIP] umt5_xxl_fp8_e4m3fn_scaled.safetensors)

REM === 7. [6] Z-Image Turbo 用 VAE ===
if not exist "C:\ComfyUI\models\vae\ae.safetensors" (
    echo [DL] ae.safetensors
    curl -L --fail --remove-on-error -o "C:\ComfyUI\models\vae\ae.safetensors" "https://huggingface.co/Comfy-Org/z_image_turbo/resolve/main/split_files/vae/ae.safetensors"
) else (echo [SKIP] ae.safetensors)

REM === 8. [7] Wan2.2 用 VAE ===
if not exist "C:\ComfyUI\models\vae\wan2.2_vae.safetensors" (
    echo [DL] wan2.2_vae.safetensors
    curl -L --fail --remove-on-error -o "C:\ComfyUI\models\vae\wan2.2_vae.safetensors" "https://huggingface.co/Comfy-Org/Wan_2.2_ComfyUI_Repackaged/resolve/main/split_files/vae/wan2.2_vae.safetensors"
) else (echo [SKIP] wan2.2_vae.safetensors)

REM === 9. [8] FLUX.2 Klein 用 VAE ===
if not exist "C:\ComfyUI\models\vae\flux2-vae.safetensors" (
    echo [DL] flux2-vae.safetensors
    curl -L --fail --remove-on-error -o "C:\ComfyUI\models\vae\flux2-vae.safetensors" "https://huggingface.co/Comfy-Org/flux2-dev/resolve/main/split_files/vae/flux2-vae.safetensors"
) else (echo [SKIP] flux2-vae.safetensors)

REM === 10. 最終存在確認(for ループ不使用・両環境対応) ===
echo.
echo ============================================================
echo 最終存在確認
echo ============================================================
if exist "C:\ComfyUI\models\diffusion_models\z_image_turbo_bf16.safetensors" (echo [OK] z_image_turbo_bf16.safetensors) else (echo [NG] z_image_turbo_bf16.safetensors)
if exist "C:\ComfyUI\models\diffusion_models\wan2.2_ti2v_5B_fp16.safetensors" (echo [OK] wan2.2_ti2v_5B_fp16.safetensors) else (echo [NG] wan2.2_ti2v_5B_fp16.safetensors)
if exist "C:\ComfyUI\models\diffusion_models\flux-2-klein-4b.safetensors" (echo [OK] flux-2-klein-4b.safetensors) else (echo [NG] flux-2-klein-4b.safetensors)
if exist "C:\ComfyUI\models\text_encoders\qwen_3_4b.safetensors" (echo [OK] qwen_3_4b.safetensors) else (echo [NG] qwen_3_4b.safetensors)
if exist "C:\ComfyUI\models\text_encoders\umt5_xxl_fp8_e4m3fn_scaled.safetensors" (echo [OK] umt5_xxl_fp8_e4m3fn_scaled.safetensors) else (echo [NG] umt5_xxl_fp8_e4m3fn_scaled.safetensors)
if exist "C:\ComfyUI\models\vae\ae.safetensors" (echo [OK] ae.safetensors) else (echo [NG] ae.safetensors)
if exist "C:\ComfyUI\models\vae\wan2.2_vae.safetensors" (echo [OK] wan2.2_vae.safetensors) else (echo [NG] wan2.2_vae.safetensors)
if exist "C:\ComfyUI\models\vae\flux2-vae.safetensors" (echo [OK] flux2-vae.safetensors) else (echo [NG] flux2-vae.safetensors)



echo -----------------------------------------------
REM 追加データ
echo -----------------------------------------------
REM MediaPipe sample images : mediapipe-tasks bucket
REM Hand / Gesture / Object Detection / Image Classification
mkdir C:\image\mediapipe

REM 21点ハンドランドマーク評価用 両手映り
curl -L -o C:\image\mediapipe\woman_hands.jpg https://storage.googleapis.com/mediapipe-tasks/hand_landmarker/woman_hands.jpg
REM ジェスチャー認識 Thumb_Up クラス検証
curl -L -o C:\image\mediapipe\thumbs_up.jpg https://storage.googleapis.com/mediapipe-tasks/gesture_recognizer/thumbs_up.jpg
REM ジェスチャー認識 Thumb_Down クラス検証
curl -L -o C:\image\mediapipe\thumbs_down.jpg https://storage.googleapis.com/mediapipe-tasks/gesture_recognizer/thumbs_down.jpg
REM ジェスチャー認識 Victory クラス検証
curl -L -o C:\image\mediapipe\victory.jpg https://storage.googleapis.com/mediapipe-tasks/gesture_recognizer/victory.jpg
REM ジェスチャー認識 Pointing_Up クラス検証
curl -L -o C:\image\mediapipe\pointing_up.jpg https://storage.googleapis.com/mediapipe-tasks/gesture_recognizer/pointing_up.jpg
REM 物体検出 COCO 多クラス同時検出 cat dog
curl -L -o C:\image\mediapipe\cat_and_dog.jpg https://storage.googleapis.com/mediapipe-tasks/object_detector/cat_and_dog.jpg
REM 画像分類 ImageNet 食品カテゴリ
curl -L -o C:\image\mediapipe\burger.jpg https://storage.googleapis.com/mediapipe-tasks/image_classifier/burger.jpg
REM 画像分類 ImageNet 動物カテゴリ
curl -L -o C:\image\mediapipe\cat.jpg https://storage.googleapis.com/mediapipe-tasks/image_classifier/cat.jpg
REM 画像セグメンテーション DeepLab V3 Pascal VOC 21クラス検証用
curl -L -o C:\image\mediapipe\segmentation_input_rotation0.jpg https://storage.googleapis.com/mediapipe-assets/segmentation_input_rotation0.jpg
REM 姿勢推定 BlazePose 単一人物全身 33点ランドマーク検証
curl -L -o C:\image\mediapipe\girl-4051811.jpg https://cdn.pixabay.com/photo/2019/03/12/20/39/girl-4051811_960_720.jpg
REM 顔ランドマーク検出 478点および52種ブレンドシェイプ検証
curl -L -o C:\image\mediapipe\business-person.png https://storage.googleapis.com/mediapipe-assets/business-person.png
REM 顔検出 BlazeFace 複数顔 6点キーポイント検証
curl -L -o C:\image\mediapipe\face_detector_sample.jpg https://i.imgur.com/Vu2Nqwb.jpeg
REM 画像埋め込み コサイン類似度検証 元画像
curl -L -o C:\image\mediapipe\burger_embed.jpg https://storage.googleapis.com/mediapipe-assets/burger.jpg
REM 画像埋め込み コサイン類似度検証 切り抜き画像
curl -L -o C:\image\mediapipe\burger_crop.jpg https://storage.googleapis.com/mediapipe-assets/burger_crop.jpg

echo -----------------------------------------------
REM AudioSet sample audio : 16 kHz WAV
REM YAMNet / AST audio classification benchmark
mkdir C:\image\audioset

REM 動物クラス検証 猫鳴き声 約6.7秒
curl -L -o C:\image\audioset\miaow_16k.wav https://storage.googleapis.com/audioset/miaow_16k.wav

REM 人間音声クラス検証 口笛
curl -L -o C:\image\audioset\speech_whistling2.wav https://storage.googleapis.com/audioset/speech_whistling2.wav

REM
REM マルチメディア
REM

REM FFmpeg をシステム領域にインストール
winget uninstall --id Gyan.FFmpeg --all-versions --force --silent --disable-interactivity --accept-source-agreements --silent --disable-interactivity --accept-source-agreements
REM 1. FFmpeg をインストール
winget install --id Gyan.FFmpeg -e --scope machine --location "C:\Program Files\FFmpeg" --silent --accept-source-agreements --accept-package-agreements
REM 2. インストールされた実体フォルダ名(ffmpeg-*)を自動取得して変数に格納
for /f "delims=" %i in ('dir /b /ad "C:\Program Files\FFmpeg\ffmpeg*"') do set "FFMPEG_DIR=%i"
REM 3. 既存のリンクがある場合は削除(エラー防止)し、新しいリンクを作成
if exist "C:\FFmpeg" rd "C:\FFmpeg"
mklink /D "C:\FFmpeg" "C:\Program Files\FFmpeg\%FFMPEG_DIR%"
REM 4. PowerShellを使用してPath設定(C:\FFmpeg\bin を先頭に追加)
powershell -NoProfile -Command "$p='C:\FFmpeg\bin'; $c=[Environment]::GetEnvironmentVariable('Path','Machine'); if((Test-Path $p) -and (';'+$c+';' -notlike \"*;$p;*\")){[Environment]::SetEnvironmentVariable('Path',\"$c;$p\",'Machine')}"

REM
REM プログラミング環境
REM

REM codium, vscode 拡張機能 python preview 削除、almenon.arepl 追加
"C:\Program Files\VSCodium\bin\codium.cmd" --extensions-dir "C:\ProgramData\vscodium-extensions" --uninstall-extension dongli.python-preview
"C:\Program Files\VSCodium\bin\codium.cmd" --extensions-dir "C:\ProgramData\vscodium-extensions" --install-extension almenon.arepl
set "CODE=C:\Program Files\Microsoft VS Code\bin\code.cmd"
"%CODE%" --extensions-dir "C:\ProgramData\vscode-extensions" --uninstall-extension dongli.python-preview
"%CODE%" --extensions-dir "C:\ProgramData\vscode-extensions" --install-extension almenon.arepl

REM
REM チャットAI
REM

REM === 1. Ollama 環境変数を Machine スコープで事前設定 ===
REM   インストール前に設定することで、Ollama起動時から正しい設定が読み込まれる
powershell -NoProfile -Command "[System.Environment]::SetEnvironmentVariable('OLLAMA_FLASH_ATTENTION', '1', 'Machine')"
powershell -NoProfile -Command "[System.Environment]::SetEnvironmentVariable('OLLAMA_KV_CACHE_TYPE', 'q8_0', 'Machine')"
REM コンテキスト長:Ollamaのデフォルトは4096。ここでは8192に設定。
REM 用途に応じて値を変更するか、この行を削除して auto に任せる
powershell -NoProfile -Command "[System.Environment]::SetEnvironmentVariable('OLLAMA_CONTEXT_LENGTH', '8192', 'Machine')"
powershell -NoProfile -Command "[System.Environment]::SetEnvironmentVariable('OLLAMA_MODELS', 'C:\Ollama\models', 'Machine')"
set "OLLAMA_FLASH_ATTENTION=1"
set "OLLAMA_KV_CACHE_TYPE=q8_0"
set "OLLAMA_CONTEXT_LENGTH=8192"
set "OLLAMA_MODELS=C:\Ollama\models"
REM === 2. 既存の Ollama プロセスを停止(ファイルロック解除のため) ===
taskkill /IM ollama.exe /F >nul 2>&1
taskkill /IM "ollama app.exe" /F >nul 2>&1

REM === 3. モデルフォルダの作成と権限設定 ===
if not exist "C:\Ollama\models" mkdir "C:\Ollama\models"
icacls "C:\Ollama\models" /grant *S-1-5-32-545:(OI)(CI)(M) /T /C

REM === 4. 既存モデルの移動(ユーザープロファイルに残っている場合) ===
REM   Ollama 停止状態で実行するためファイルロックが起きない
if exist "%USERPROFILE%\.ollama\models" robocopy "%USERPROFILE%\.ollama\models" "C:\Ollama\models" /E /MOVE
if exist "%USERPROFILE%\.ollama\models" rd /s /q "%USERPROFILE%\.ollama\models"

REM === 5. winget パッケージ一覧のローカルキャッシュを更新 ===
winget source update

REM === 6. Ollama のインストール(Inno Setup) ===
winget uninstall --id Ollama.Ollama -e --silent --disable-interactivity --accept-source-agreements
REM uninstall後にプロセスが残ることがあるため再度停止
taskkill /IM ollama.exe /F >nul 2>&1
taskkill /IM "ollama app.exe" /F >nul 2>&1
winget install --id Ollama.Ollama -e --silent --disable-interactivity --force --accept-source-agreements --accept-package-agreements --custom "/DIR=C:\Ollama"
winget upgrade --id Ollama.Ollama -e --silent --disable-interactivity --force --accept-source-agreements --accept-package-agreements --custom "/DIR=C:\Ollama"

REM === 7. Ollama のパス設定(システム PATH に未登録の場合のみ追加) ===
powershell -NoProfile -Command "$p='C:\Ollama'; $c=[Environment]::GetEnvironmentVariable('Path','Machine'); if((Test-Path $p) -and (';'+$c+';' -notlike \"*;$p;*\")){[Environment]::SetEnvironmentVariable('Path',\"$c;$p\",'Machine')}"

REM llama-cpp のインストール
cd /d %TEMP%
rmdir /s /q llama.cpp
git clone https://github.com/ggml-org/llama.cpp
cd llama.cpp
cmake -B build -DGGML_CUDA=ON -DCMAKE_CUDA_ARCHITECTURES="86;89;120" -DCMAKE_CUDA_FLAGS="-allow-unsupported-compiler" -DCMAKE_INSTALL_PREFIX="C:\llama.cpp"
cmake --build build --config Release -j 8
cmake --install build --config Release
powershell -NoProfile -Command "$p='C:\llama.cpp\bin'; $c=[Environment]::GetEnvironmentVariable('Path','Machine'); if((Test-Path $p) -and (';'+$c+';' -notlike \"*;$p;*\")){[Environment]::SetEnvironmentVariable('Path',\"$c;$p\",'Machine')}"

REM MediaPipe
"%PIP%" install -U --no-user mediapipe onnxruntime-gpu[cuda,cudnn] opencv-contrib-python protobuf==6.33.6
"%PYTHON%" -c "import mediapipe as mp; print('mediapipe:', mp.__version__)"
"%PYTHON%" -c "import onnxruntime as ort; print('providers:', ort.get_available_providers())"
"%PYTHON%" -c "import cv2; print('opencv:', cv2.__version__)"
REM MediaPipe Tasks API 動作確認
"%PYTHON%" -c "from mediapipe.tasks import python as mp_py; from mediapipe.tasks.python import vision; print('tasks API OK')"

REM numpy と PyTorch(CUDA 12.8 対応 wheel)、pip キャッシュを全削除
set "CUDA_TAG=cu128"
"%PIP%" install --no-user -U numpy torch torchvision torchaudio --index-url https://download.pytorch.org/whl/%CUDA_TAG%
"%PIP%" install -U --no-user scipy pillow pandas
"%PIP%" uninstall -y opencv-python-headless opencv-contrib-python-headless opencv-python
"%PIP%" install --no-user --force-reinstall opencv-contrib-python
"%PIP%" cache purge

REM
REM 終了処理
REM

プロファイル内	%USERPROFILE% 以下	REM 一時ファイル
del /f /s /q "%TEMP%\*" 2>nul
for /d %D in ("%TEMP%\*") do rmdir /s /q "%D" 2>nul

REM サムネイルキャッシュ
del /f /s /q "%LOCALAPPDATA%\Microsoft\Windows\Explorer\thumbcache_*.db" 2>nul

REM アイコンキャッシュ
del /f /s /q "%LOCALAPPDATA%\Microsoft\Windows\Explorer\iconcache_*.db" 2>nul

REM 最近使ったファイル
del /f /q "%APPDATA%\Microsoft\Windows\Recent\*" 2>nul
del /f /q "%APPDATA%\Microsoft\Windows\Recent\AutomaticDestinations\*" 2>nul
del /f /q "%APPDATA%\Microsoft\Windows\Recent\CustomDestinations\*" 2>nul

REM Internet Explorer / レガシー Edge のキャッシュ
del /f /s /q "%LOCALAPPDATA%\Microsoft\Windows\INetCache\*" 2>nul

REM Windows エラー報告のレポートファイル
del /f /s /q "%LOCALAPPDATA%\Microsoft\Windows\WER\*" 2>nul
del /f /s /q "%APPDATA%\Microsoft\Windows\WER\*" 2>nul

REM Windows キャッシュ
del /f /s /q "%LOCALAPPDATA%\Microsoft\Windows\Caches\*" 2>nul

REM クラッシュダンプ
del /f /s /q "%LOCALAPPDATA%\CrashDumps\*" 2>nul

REM DirectX シェーダーキャッシュ
rmdir /s /q "%LOCALAPPDATA%\D3DSCache" 2>nul

REM MobaXterm Cache(セッション定義・保存済みパスワード・設定ファイルは保持)
rmdir /s /q "%APPDATA%\MobaXterm\slash\tmp" 2>nul
rmdir /s /q "%APPDATA%\MobaXterm\slash\var\cache" 2>nul

REM 開発ツール系キャッシュ
rmdir /s /q "%LOCALAPPDATA%\pip\cache" 2>nul
rmdir /s /q "%APPDATA%\npm-cache" 2>nul
rmdir /s /q "%LOCALAPPDATA%\NuGet\v3-cache" 2>nul

REM Winget Cache(プロファイル内)
rmdir /s /q "%TEMP%\WinGet" 2>nul
del /f /q "%LOCALAPPDATA%\Packages\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe\LocalState\DiagOutputDir\*.log" 2>nul
for /d %D in ("%LOCALAPPDATA%\Packages\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe\LocalState\DiagOutputDir\*") do rmdir /s /q "%D" 2>nul

REM Winget Cache、ログファイル(プロファイル外)
rmdir /s /q "C:\Windows\Temp\WinGet" 2>nul
del /f /q "C:\Windows\Temp\*.log" 2>nul