コンテンツにスキップ

Windows ユーザーアカウント移行手順書

概要

Windows のユーザープロファイルパスにスペースが含まれている問題を解消するため、新しいローカルアカウントを作成しデータを移行する。

  • 旧アカウント: Kazuma TeramachiC:\Users\Kazuma Teramachi\
  • 新アカウント: kazumaC:\Users\kazuma\
  • 作業目標: スペースなしのユーザープロファイルへ完全移行し、旧アカウントを削除する

前提条件

  • 外付けHDDまたはNAS等、バックアップ先のストレージが利用可能であること
  • 作業は旧アカウントに管理者権限がある状態で開始すること
  • 所要時間目安: 半日〜1日

Phase 1: 事前準備(旧アカウントで実施)

1-1. バックアップ先の準備

バックアップ先ディレクトリを作成する。パスは環境に合わせて変更すること。

$backupRoot = "D:\backup\migration"
New-Item -ItemType Directory -Path $backupRoot -Force

1-2. インストール済みソフトウェア一覧の記録

# レジストリからインストール済みアプリ一覧を取得(64ビット)
Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* |
  Select-Object DisplayName, DisplayVersion, Publisher, InstallDate |
  Sort-Object DisplayName |
  Export-Csv -Path "$backupRoot\installed_apps.csv" -NoTypeInformation -Encoding UTF8

# 32ビットアプリも取得(漏れ防止)
Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* |
  Select-Object DisplayName, DisplayVersion, Publisher, InstallDate |
  Sort-Object DisplayName |
  Export-Csv -Path "$backupRoot\installed_apps_x86.csv" -NoTypeInformation -Encoding UTF8

# winget管理のアプリ一覧(テキスト版 + インポート可能なJSON版)
winget list > "$backupRoot\winget_list.txt"
winget export -o "$backupRoot\winget-packages.json"

# scoopを使っている場合
# scoop list > "$backupRoot\scoop_list.txt"
# scoop export > "$backupRoot\scoop_packages.json"

1-3. ユーザープロファイルの重要データをバックアップ

$oldUser = "C:\Users\Kazuma Teramachi"

# 標準フォルダ
$standardFolders = @("Documents", "Desktop", "Downloads", "Pictures", "Videos", "Music")
foreach ($folder in $standardFolders) {
    if (Test-Path "$oldUser\$folder") {
        robocopy "$oldUser\$folder" "$backupRoot\Profile\$folder" /E /XJ /R:1 /W:1 /LOG+:"$backupRoot\robocopy_profile.log"
    }
}

# dotfiles(ホームディレクトリ直下の設定ファイル)
$dotfiles = @(
    ".gitconfig",
    ".npmrc",
    ".bashrc",
    ".bash_profile",
    ".wslconfig",
    ".vimrc",
    ".condarc"
)
New-Item -ItemType Directory -Path "$backupRoot\Dotfiles" -Force
foreach ($file in $dotfiles) {
    if (Test-Path "$oldUser\$file") {
        Copy-Item "$oldUser\$file" "$backupRoot\Dotfiles\$file" -Force
    }
}

# .ssh ディレクトリ(SSH鍵・config)
if (Test-Path "$oldUser\.ssh") {
    robocopy "$oldUser\.ssh" "$backupRoot\Dotfiles\.ssh" /E /R:1 /W:1
}

# .kube ディレクトリ(kubectl設定がある場合)
if (Test-Path "$oldUser\.kube") {
    robocopy "$oldUser\.kube" "$backupRoot\Dotfiles\.kube" /E /R:1 /W:1
}

# Salesforce CLI 認証情報
if (Test-Path "$oldUser\.sf") {
    robocopy "$oldUser\.sf" "$backupRoot\Dotfiles\.sf" /E /R:1 /W:1
}
if (Test-Path "$oldUser\.sfdx") {
    robocopy "$oldUser\.sfdx" "$backupRoot\Dotfiles\.sfdx" /E /R:1 /W:1
}

# Claude Code 設定
if (Test-Path "$oldUser\.claude") {
    robocopy "$oldUser\.claude" "$backupRoot\Dotfiles\.claude" /E /R:1 /W:1
}

# エージェント設定(Gemini CLI / AntiGravity IDE)
$agentDirs = @(".gemini", ".antigravity")
foreach ($dir in $agentDirs) {
    if (Test-Path "$oldUser\$dir") {
        robocopy "$oldUser\$dir" "$backupRoot\Dotfiles\$dir" /E /R:1 /W:1 /LOG+:"$backupRoot\robocopy_profile.log"
    }
}

# Mylab_SL フォルダ(手動確認後バックアップ)
if (Test-Path "$oldUser\Mylab_SL") {
    robocopy "$oldUser\Mylab_SL" "$backupRoot\Profile\Mylab_SL" /E /XJ /R:1 /W:1 /LOG+:"$backupRoot\robocopy_profile.log"
}

1-4. AppData の選択的バックアップ

AppData は丸ごとコピーしない。必要なアプリの設定のみ選択的にバックアップする。

$appDataTargets = @(
    # VS Code
    @{ Src = "$oldUser\AppData\Roaming\Code\User"; Dst = "$backupRoot\AppData\Roaming\Code\User" },
    # Windows Terminal
    @{ Src = "$oldUser\AppData\Local\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState"; Dst = "$backupRoot\AppData\WindowsTerminal" },
    # npm global config
    @{ Src = "$oldUser\AppData\Roaming\npm"; Dst = "$backupRoot\AppData\Roaming\npm" },
    # PowerShell プロファイル
    @{ Src = "$oldUser\Documents\PowerShell"; Dst = "$backupRoot\AppData\PowerShell" },
    @{ Src = "$oldUser\Documents\WindowsPowerShell"; Dst = "$backupRoot\AppData\WindowsPowerShell" },
    # PowerToys
    @{ Src = "$oldUser\AppData\Local\Microsoft\PowerToys"; Dst = "$backupRoot\AppData\PowerToys" },
    # Obsidian(ウィンドウ設定・プラグイン設定)
    @{ Src = "$oldUser\AppData\Roaming\obsidian"; Dst = "$backupRoot\AppData\Obsidian" },
    # calibre ライブラリ設定
    @{ Src = "$oldUser\AppData\Roaming\calibre"; Dst = "$backupRoot\AppData\calibre" },
    # LM Studio 設定(モデルは別途 1-11 で移動)
    @{ Src = "$oldUser\AppData\Roaming\LM Studio"; Dst = "$backupRoot\AppData\LMStudio" },
    # Tailscale
    @{ Src = "$oldUser\AppData\Local\Tailscale"; Dst = "$backupRoot\AppData\Tailscale" },
    # Sunshine(ゲームストリーミング設定)
    @{ Src = "$oldUser\AppData\Roaming\Sunshine"; Dst = "$backupRoot\AppData\Sunshine" }
)

foreach ($target in $appDataTargets) {
    if (Test-Path $target.Src) {
        robocopy $target.Src $target.Dst /E /R:1 /W:1 /LOG+:"$backupRoot\robocopy_appdata.log"
    }
}

注意: installed_apps.csv の内容に合わせて追加・削除すること。 追加候補: DaVinci Resolve、Docker Desktop 設定、MySQL Workbench など。

1-5. WSL2 ディストリビューションのエクスポート

# 現在のWSLディストリビューション一覧を確認
wsl --list --verbose

# 各ディストリビューションをエクスポート(名前は実際のものに合わせる)
wsl --shutdown
wsl --export Ubuntu "$backupRoot\wsl-ubuntu.tar"
# 他のディストロがあれば同様に
# wsl --export Debian "$backupRoot\wsl-debian.tar"

1-6. 環境変数の記録

# ユーザー環境変数
[System.Environment]::GetEnvironmentVariables("User") |
  Out-File "$backupRoot\env_user.txt" -Encoding UTF8

# システム環境変数
[System.Environment]::GetEnvironmentVariables("Machine") |
  Out-File "$backupRoot\env_machine.txt" -Encoding UTF8

# PATH を見やすく記録
$env:PATH -split ";" | Out-File "$backupRoot\env_path.txt" -Encoding UTF8

1-7. タスクスケジューラの記録

Get-ScheduledTask | Where-Object { $_.Principal.UserId -like "*Kazuma*" } |
  Select-Object TaskName, TaskPath, State |
  Export-Csv "$backupRoot\scheduled_tasks.csv" -NoTypeInformation -Encoding UTF8

1-8. 資格情報マネージャーの記録

Windows に保存されている資格情報(Git Credential Manager、リモートデスクトップ等)を記録する。

cmdkey /list > "$backupRoot\credentials_list.txt"

注意: パスワード本体はエクスポートされないが、どのサービスの認証情報が存在するかを把握できる。 移行後に再認証が必要なサービスの一覧として活用する。

1-9. レジストリのエクスポート

アプリ固有の設定が HKCU\SOFTWARE 配下に保存されていることが多い。丸ごとエクスポートしておくと復元時に役立つ。

reg export "HKCU\SOFTWARE" "$backupRoot\hkcu_software.reg" /y

1-10. バックアップ完了確認

# バックアップ先のディレクトリ構成を確認
Get-ChildItem -Path $backupRoot -Recurse -Depth 2 | Format-Table FullName, Length

チェックポイント: ここまで完了したら Phase 2 に進む。

1-11. 事前:大容量データのCドライブ解放(任意・推奨)

アカウント移行前に容量を圧迫している以下2点を対処しておくと、作業がしやすくなる。

LM Studio モデルをDドライブへ移動(約98GB 回収)

# LM Studio を起動し、設定 → Models Directory を "D:\LMStudio\models" 等に変更してから実施
robocopy "C:\Users\Kazuma Teramachi\.lmstudio" "D:\LMStudio" /E /MOVE /R:1 /W:1

注意: robocopy の /MOVE は移動後に元データを削除する。実行前に LM Studio を終了しておくこと。 移動後、LM Studio の設定で Models Directory を D:\LMStudio\models へ変更すること。

iCloud Photos をオンデマンドに変更(最大112GB 回収)

  1. iCloud for Windows を起動
  2. 写真「iPhoneのストレージを最適化」 を選択
  3. ローカルのオリジナルデータが削除され、サムネイルのみになる(クラウドには全データ保持)

注意: オンデマンド化後は Wi-Fi 環境下でないと高解像度写真を開けない。


Phase 2: 新アカウント作成(旧アカウントで実施)

2-1. 新ローカルアカウントの作成

GUI で行う場合: 1. 設定 → アカウント → 他のユーザー → アカウントの追加 2. 「このユーザーのサインイン情報がありません」を選択 3. 「Microsoft アカウントを持たないユーザーを追加する」を選択 4. ユーザー名: kazuma(スペースなし、ASCII文字のみ) 5. パスワードを設定

PowerShell で行う場合:

net user kazuma <パスワード> /add

2-2. 管理者権限の付与

net localgroup Administrators kazuma /add

2-3. 新アカウントでの初回サインイン

  1. 旧アカウントからサインアウト
  2. 新アカウント kazuma でサインイン
  3. Windows の初期セットアップを完了させる
  4. C:\Users\kazuma\ が作成されたことを確認
# 確認
Test-Path "C:\Users\kazuma"

チェックポイント: 以降の作業はすべて新アカウント kazuma で行う。


Phase 3: データ移行(新アカウントで実施)

3-1. 標準フォルダの復元

$backupRoot = "D:\backup\migration"
$newUser = "C:\Users\kazuma"

$standardFolders = @("Documents", "Desktop", "Downloads", "Pictures", "Videos", "Music")
foreach ($folder in $standardFolders) {
    if (Test-Path "$backupRoot\Profile\$folder") {
        robocopy "$backupRoot\Profile\$folder" "$newUser\$folder" /E /XJ /R:1 /W:1 /LOG+:"$newUser\restore.log"
    }
}

3-2. dotfiles の復元

# dotfiles
$dotfiles = @(".gitconfig", ".npmrc", ".bashrc", ".bash_profile", ".wslconfig", ".vimrc", ".condarc")
foreach ($file in $dotfiles) {
    if (Test-Path "$backupRoot\Dotfiles\$file") {
        Copy-Item "$backupRoot\Dotfiles\$file" "$newUser\$file" -Force
    }
}

# .ssh
if (Test-Path "$backupRoot\Dotfiles\.ssh") {
    robocopy "$backupRoot\Dotfiles\.ssh" "$newUser\.ssh" /E /R:1 /W:1
}

# .kube
if (Test-Path "$backupRoot\Dotfiles\.kube") {
    robocopy "$backupRoot\Dotfiles\.kube" "$newUser\.kube" /E /R:1 /W:1
}

# Salesforce CLI
if (Test-Path "$backupRoot\Dotfiles\.sf") {
    robocopy "$backupRoot\Dotfiles\.sf" "$newUser\.sf" /E /R:1 /W:1
}
if (Test-Path "$backupRoot\Dotfiles\.sfdx") {
    robocopy "$backupRoot\Dotfiles\.sfdx" "$newUser\.sfdx" /E /R:1 /W:1
}

# Claude Code
if (Test-Path "$backupRoot\Dotfiles\.claude") {
    robocopy "$backupRoot\Dotfiles\.claude" "$newUser\.claude" /E /R:1 /W:1
}

# エージェント設定(Gemini CLI / AntiGravity IDE)
foreach ($dir in @(".gemini", ".antigravity")) {
    if (Test-Path "$backupRoot\Dotfiles\$dir") {
        robocopy "$backupRoot\Dotfiles\$dir" "$newUser\$dir" /E /R:1 /W:1
    }
}

dotfiles 内の旧パス置換

復元した設定ファイルに旧ユーザーパスがハードコードされている可能性がある。以下で一括置換する。

# .gitconfig 内の旧パス置換
if (Test-Path "$newUser\.gitconfig") {
    (Get-Content "$newUser\.gitconfig") `
        -replace 'C:/Users/Kazuma Teramachi', 'C:/Users/kazuma' `
        -replace 'C:\\Users\\Kazuma Teramachi', 'C:\Users\kazuma' |
      Set-Content "$newUser\.gitconfig"
}

# .npmrc 内の旧パス置換
if (Test-Path "$newUser\.npmrc") {
    (Get-Content "$newUser\.npmrc") `
        -replace 'C:/Users/Kazuma Teramachi', 'C:/Users/kazuma' `
        -replace 'C:\\Users\\Kazuma Teramachi', 'C:\Users\kazuma' |
      Set-Content "$newUser\.npmrc"
}

# Claude Code 設定内の旧パス置換
if (Test-Path "$newUser\.claude") {
    Get-ChildItem "$newUser\.claude" -File -Recurse | ForEach-Object {
        $content = Get-Content $_.FullName -Raw -ErrorAction SilentlyContinue
        if ($content -and $content -match "Kazuma Teramachi") {
            $content `
                -replace 'C:/Users/Kazuma Teramachi', 'C:/Users/kazuma' `
                -replace 'C:\\Users\\Kazuma Teramachi', 'C:\Users\kazuma' `
                -replace 'C:\\\\Users\\\\Kazuma Teramachi', 'C:\\\\Users\\\\kazuma' |
              Set-Content $_.FullName
            Write-Host "Updated: $($_.FullName)"
        }
    }
}

# Salesforce CLI 設定内の旧パス置換
foreach ($sfDir in @("$newUser\.sf", "$newUser\.sfdx")) {
    if (Test-Path $sfDir) {
        Get-ChildItem $sfDir -File -Recurse -Include *.json | ForEach-Object {
            $content = Get-Content $_.FullName -Raw -ErrorAction SilentlyContinue
            if ($content -and $content -match "Kazuma Teramachi") {
                $content `
                    -replace 'C:/Users/Kazuma Teramachi', 'C:/Users/kazuma' `
                    -replace 'C:\\Users\\Kazuma Teramachi', 'C:\Users\kazuma' `
                    -replace 'C:\\\\Users\\\\Kazuma Teramachi', 'C:\\\\Users\\\\kazuma' |
                  Set-Content $_.FullName
                Write-Host "Updated: $($_.FullName)"
            }
        }
    }
}

3-3. SSH鍵のパーミッション修正

# SSH秘密鍵のアクセス権を現在のユーザーのみに制限
$sshKeys = Get-ChildItem "$newUser\.ssh" -File | Where-Object { $_.Name -notmatch "\.pub$" }
foreach ($key in $sshKeys) {
    icacls $key.FullName /inheritance:r /grant:r "${env:USERNAME}:(R)"
}

# config と known_hosts は読み書き可能に
foreach ($file in @("config", "known_hosts")) {
    $path = "$newUser\.ssh\$file"
    if (Test-Path $path) {
        icacls $path /inheritance:r /grant:r "${env:USERNAME}:(RW)"
    }
}

3-4. AppData の復元

# VS Code(アプリインストール後に実施)
if (Test-Path "$backupRoot\AppData\Roaming\Code\User") {
    robocopy "$backupRoot\AppData\Roaming\Code\User" "$newUser\AppData\Roaming\Code\User" /E /R:1 /W:1
}

# Windows Terminal
if (Test-Path "$backupRoot\AppData\WindowsTerminal") {
    $wtPath = "$newUser\AppData\Local\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState"
    if (Test-Path $wtPath) {
        robocopy "$backupRoot\AppData\WindowsTerminal" $wtPath /E /R:1 /W:1
    }
}

# PowerShell プロファイル
if (Test-Path "$backupRoot\AppData\PowerShell") {
    robocopy "$backupRoot\AppData\PowerShell" "$newUser\Documents\PowerShell" /E /R:1 /W:1
}
if (Test-Path "$backupRoot\AppData\WindowsPowerShell") {
    robocopy "$backupRoot\AppData\WindowsPowerShell" "$newUser\Documents\WindowsPowerShell" /E /R:1 /W:1
}

# PowerToys
if (Test-Path "$backupRoot\AppData\PowerToys") {
    robocopy "$backupRoot\AppData\PowerToys" "$newUser\AppData\Local\Microsoft\PowerToys" /E /R:1 /W:1
}

# Obsidian
if (Test-Path "$backupRoot\AppData\Obsidian") {
    robocopy "$backupRoot\AppData\Obsidian" "$newUser\AppData\Roaming\obsidian" /E /R:1 /W:1
}

# calibre
if (Test-Path "$backupRoot\AppData\calibre") {
    robocopy "$backupRoot\AppData\calibre" "$newUser\AppData\Roaming\calibre" /E /R:1 /W:1
}

# Sunshine
if (Test-Path "$backupRoot\AppData\Sunshine") {
    robocopy "$backupRoot\AppData\Sunshine" "$newUser\AppData\Roaming\Sunshine" /E /R:1 /W:1
}

3-5. WSL2 の復元

# WSLディストリビューションのインポート(インストール先はユーザーフォルダ外を推奨)
wsl --import Ubuntu "C:\WSL\Ubuntu" "$backupRoot\wsl-ubuntu.tar"

デフォルトユーザーの設定は以下のいずれかの方法で行う。

方法A: Windows側コマンド

# Ubuntuのバージョンに応じて実行ファイル名が異なる
# バージョン不明の場合: Get-Command ubuntu*.exe で確認
ubuntu2404.exe config --default-user kazuma
# ubuntu2204.exe config --default-user kazuma
# ubuntu.exe config --default-user kazuma

方法B: WSL内の設定ファイル(より確実)

# WSL内で /etc/wsl.conf を編集
sudo tee /etc/wsl.conf << 'EOF'
[user]
default=kazuma
EOF

設定後、WSL を再起動して反映:

wsl --shutdown
wsl -d Ubuntu -- whoami
# 期待値: kazuma

注意: ここでの kazuma は WSL 内の Linux ユーザー名。Windows のアカウント名とは別。

3-6. ソフトウェアの再インストール

winget import による一括インストール(推奨)

# Phase 1-2 でエクスポートしたJSONを使って一括インストール
winget import -i "$backupRoot\winget-packages.json" --accept-package-agreements --accept-source-agreements

注意: winget import では Microsoft Store アプリやインストーラが特殊なものは失敗することがある。 失敗したものは winget_list.txtinstalled_apps.csv を参照して個別対応する。

個別インストール(失敗したものや winget 非対応のもの)

# ========== 開発ツール ==========
winget install Git.Git
winget install GitHub.cli
winget install Microsoft.VisualStudioCode
winget install OpenJS.NodeJS          # Node.js 24.x
winget install Docker.DockerDesktop
winget install Microsoft.WindowsTerminal
winget install Microsoft.PowerToys

# ========== DB ==========
# SQL Server 2019 は C:\SQL2019 の installer から再インストール推奨
winget install Oracle.MySQL
winget install Oracle.MySQLWorkbench
winget install Microsoft.SQLServerManagementStudio
winget install Microsoft.AzureDataStudio

# ========== AI / LLM ==========
winget install LMStudio.LMStudio
# LM Studio 起動後、Models Directory を D:\LMStudio\models に設定

# ========== クラウド・同期 ==========
winget install Apple.iTunes          # iCloud も同梱
winget install Google.GoogleDrive
winget install Tailscale.Tailscale

# ========== メディア・映像 ==========
# DaVinci Resolve は Blackmagic サイトから手動インストール
winget install VideoLAN.VLC
winget install calibre.calibre

# ========== ユーティリティ ==========
winget install 7zip.7zip
winget install Obsidian.Obsidian
winget install CPUID.CPU-Z
winget install LizardByte.Sunshine

# ========== ドライバ(手動インストール)==========
# NVIDIA ドライバ: https://www.nvidia.com/ja-jp/drivers/
# Wacom ドライバ: https://www.wacom.com/ja-jp/support/product-support/drivers
# Corsair iCUE: https://www.corsair.com/ja/ja/s/downloads
# Logicool Options+: https://www.logicool.co.jp/ja-jp/software/logi-options-plus.html

Salesforce CLI の再認証

sf org login web --alias myorg
# DevHub の認証
sf org login web --set-default-dev-hub --alias devhub

3-7. 環境変数の復元

バックアップした環境変数を確認し、必要なものを再設定する。

# バックアップした環境変数を確認
Get-Content "$backupRoot\env_user.txt"
Get-Content "$backupRoot\env_path.txt"

# 必要に応じてユーザー環境変数を設定(例)
# [System.Environment]::SetEnvironmentVariable("GOPATH", "C:\Users\kazuma\go", "User")

注意: 旧ユーザーパスを含む環境変数は新パスに修正すること。 特に OLLAMA_MODELS 等、データディレクトリを旧パスで指定しているものに注意。


Phase 4: 検証(新アカウントで実施)

以下のチェックリストをすべて確認する。

4-1. 基本環境

# ユーザープロファイルパスの確認
echo $env:USERPROFILE
# 期待値: C:\Users\kazuma

# ホームディレクトリにスペースがないことの確認
$env:USERPROFILE -match "\s"
# 期待値: False

4-2. Git / SSH

git config --global --list
ssh -T git@github.com
# GitHubから認証成功メッセージが返ること

4-3. WSL2 / 開発ツール

wsl --list --verbose
# ディストリビューションが Running であること

WSL 内で以下を確認:

# Ollama
ollama --version
ollama list

# n8n
which n8n

# Node.js / npm
node --version
npm --version

4-4. Claude Code

# バージョン確認
claude --version

# 必要に応じて再認証
claude auth login

設定ファイル内の旧パス残存チェック(重要):

$claudeDir = "$env:USERPROFILE\.claude"
if (Test-Path $claudeDir) {
    $hits = Get-ChildItem $claudeDir -File -Recurse | Select-String -Pattern "Kazuma Teramachi" -List
    if ($hits) {
        Write-Host "旧パスが残存しています:" -ForegroundColor Yellow
        $hits | ForEach-Object { Write-Host "  $($_.Path):$($_.LineNumber) $($_.Line)" }
    } else {
        Write-Host "Claude Code 設定内に旧パスなし - OK" -ForegroundColor Green
    }
}

4-5. アプリケーション動作確認

手動で以下を確認する:

開発・ツール - [ ] VS Code: 拡張機能、設定が復元されていること - [ ] Windows Terminal: プロファイル設定が復元されていること - [ ] Docker Desktop: 起動・コンテナ操作が正常なこと - [ ] GitHub CLI (gh auth status): 認証が有効なこと - [ ] PowerToys: ショートカット等の設定が復元されていること

AI / LLM - [ ] LM Studio: モデル一覧が表示・ロードできること(Models Directory が D ドライブを向いていること) - [ ] .gemini / .antigravity: 各エージェント設定が復元されていること

DB - [ ] SQL Server 2019: サービスが起動していること (services.msc) - [ ] MySQL 8.0: 接続確認 (mysql -u root -p) - [ ] MySQL Workbench / Azure Data Studio: 接続設定が復元されていること

クラウド・同期 - [ ] iCloud: 写真同期、ドライブ同期が正常なこと - [ ] Google Drive: 同期が正常なこと - [ ] Tailscale: VPN 接続が正常なこと (tailscale status) - [ ] OneDrive: 同期が正常なこと

メディア・映像 - [ ] DaVinci Resolve: 起動・プロジェクト確認(ライセンス再認証が必要な場合あり) - [ ] Obsidian: Vault が開けること(パス: G:\マイドライブ\GeminiCLI\ObsidianVault) - [ ] Sunshine: ストリーミング設定が復元されていること

ハードウェア - [ ] Wacom タブレット: ドライバ認識・設定復元 - [ ] Logicool Options+: マウス・キーボード設定 - [ ] Corsair iCUE: ライティング等の設定

ライセンス再認証が必要なアプリ - [ ] Adobe Acrobat: 旧アカウントでデアクティベート → 新アカウントで再認証 - [ ] Microsoft Office: アカウント再サインイン

4-6. npm / pip グローバルパッケージの確認

# npm グローバルパッケージの確認
npm list -g --depth=0
# prefix が新パスを指していることを確認
npm config get prefix
# 期待値: C:\Users\kazuma\AppData\Roaming\npm(または新パス配下)

# pip パッケージの確認(Python を使っている場合)
pip list
pip config list

4-7. シンボリックリンク残存チェック

# 新プロファイル内に旧パスへのシンボリックリンクが紛れ込んでいないか確認
cmd /c "dir /AL /S C:\Users\kazuma\" 2>$null

4-8. パスにスペースが残っていないか最終確認

# 環境変数に旧パスが残っていないか確認
$env:PATH -split ";" | Where-Object { $_ -match "Kazuma Teramachi" }
# 期待値: 何も出力されない

# ユーザー環境変数全体をチェック
[System.Environment]::GetEnvironmentVariables("User").GetEnumerator() |
  Where-Object { $_.Value -match "Kazuma Teramachi" }
# 期待値: 何も出力されない

Phase 5: クリーンアップ(問題なく1週間運用できた後に実施)

重要: 最低1週間 は新アカウントで運用してから実施する。 週次バッチやタスクスケジューラなど、週1回しか動かない処理の問題を検知するため。

5-1. Microsoft アカウントの紐付け変更(必要な場合)

設定 → アカウント → 「Microsoft アカウントでのサインインに切り替える」から実行。

5-2. 旧アカウントの削除

# 管理者権限のPowerShellで実行
net user "Kazuma Teramachi" /delete

5-3. 旧プロファイルフォルダの処理

すぐに削除せず、まずリネームして1ヶ月程度様子を見る。

# バックアップが存在することを再確認
Test-Path "D:\backup\migration"

# 旧プロファイルフォルダをリネーム(即削除しない)
Rename-Item -Path "C:\Users\Kazuma Teramachi" -NewName "Kazuma Teramachi.old"

# 1ヶ月後、問題がなければ削除
# Remove-Item -Path "C:\Users\Kazuma Teramachi.old" -Recurse -Force

5-4. バックアップの保管

移行バックアップは最低1ヶ月は保持する。問題が発覚した場合に復元できるようにするため。


トラブルシューティング

症状 対処
SSH接続が拒否される .ssh 内の秘密鍵パーミッションを確認。icacls で現ユーザーのみに制限
WSLが起動しない wsl --unregister Ubuntu → 再インポート
VS Codeの拡張機能が消えた Settings Sync が有効なら再同期。無効なら拡張機能を手動再インストール
ライセンス認証エラー(Adobe等) 旧アカウントでデアクティベート → 新アカウントで再認証
タスクスケジューラが動かない scheduled_tasks.csv を参照し、新ユーザーで再登録
Docker Desktopが起動しない アンインストール → 再インストール。WSL2バックエンドの再設定
旧パスを参照するエラーが出る Phase 4-8 の手順で残存パスを特定し修正
LM Studio でモデルが見つからない Settings → Models Directory を D:\LMStudio\models に再設定
SQL Server サービスが起動しない services.mscSQL Server (MSSQLSERVER) を手動起動。接続ユーザー設定を確認
MySQL に接続できない services.msc で MySQL80 サービスを確認。root パスワードをリセットする場合は --skip-grant-tables で起動
Tailscale が接続できない tailscale login で再認証
iCloud 写真が同期しない iCloud for Windows を再インストール後、Apple ID で再サインイン
.gemini / .antigravity の設定が消えた $backupRoot\Dotfiles\.gemini / .antigravity から復元
npm install -g でパーミッションエラー npm config set prefix "C:\Users\kazuma\AppData\Roaming\npm" で再設定
Claude Code の hook/MCP 設定エラー ~\.claude\ 配下を Select-String "Kazuma Teramachi" で検索して旧パスを置換
Ollama のモデルが見つからない OLLAMA_MODELS 環境変数のパスを確認・再設定
Salesforce CLI の認証エラー sf org login web で再認証。.sf/ .sfdx/ 内のパスも確認
資格情報マネージャーの認証が消えた credentials_list.txt を参照し、各サービスで再認証