🪟

大学生、パソコンを修理に出し工場出荷状態からWindowsの環境構築を行う

に公開
2025/12/23

序盤は貸出パソコンを使って環境構築を検証する内容、中盤は本番環境で環境を構築する内容、終盤はWindows用のセットアップスクリプトの説明となっています。

なお、セットアップスクリプトはソフトウェアのインストール、設定ファイルの設置、環境変数の自動設定までできました。

あらすじ

大学三年生、後半。
マザーボードが壊れた疑いでパソコンを修理に出しました。やっぱりBIOS自体が立ち上がってないじゃないか。しかし、よく言われている四年生でパソコンが壊れる[1]を想定して四年前半で壊れた後買いなおす予定だったんだけどな。

ということで貸し出しパソコンを借りたので、コイツを使って環境構築を練習してみます。それからソフトウェアの厳選も兼ねておきます。
ソフトウェアのインストールが可能、返却時にクリーンインストールしてくれるので自由にやっていきましょう。

そして、パソコンが戻ってきたら使いやすいWindows環境を構築します。
また、二年以内にまたWindowsをセットアップする必要があるので、これを機にセットアップスクリプトを作り直します。

読者対象

  • Windowsを最初から構築する手法を考えている人
  • Windowsをクリーンインストールした直後の環境構築に興味がある人
  • セットアップをスクリプトで自動化したい人
  • 時間を持て余している人

やりたいこと

  • ディレクトリが整理された環境構築
  • 簡単にプログラムのバージョンを切り替えられる環境が欲しい
  • キーボード操作を中心とした環境が欲しい
  • Windows用のセットアップスクリプトを作成する

どんな症状?

修理に出すときに故障内容を書く欄があったのを思い出したのでメールのごみ箱から探しました。

  • 長時間電源が付かない
  • MSIのロゴが5回起動し、windowsがようやく立ち上がる
  • MSI充電の80%充電を超えて、99%近く充電される
  • 充電ランプが光らない
  • USB-A、USB-Cの差し込みにより電源が落ちる
  • キーボードの入力中に電源が落ちる
  • キーボード(Ctrl、Enter)の破損、キーボードのぐらつき(左Shift左Caps lock)

状況からして非常に高い可能性でマザーボード側の問題ですね。
ちなみに思い出したのですが、Unityの新規プロジェクトが立ち上げられないバグもあったのでおそらくOS側にも問題がありそうです。

特定変数の読み替え

Windowsの環境変数でよく使われる特定の変数は、以下のように読み替えてください。

  • %USERNAME% : <UserName>
  • %USERPROFILE% : C:\Users<UserName>
  • %APPDATA% : C:\Users<UserName>\AppData\Roaming
  • %LOCALAPPDATA% : C:\Users<UserName>\AppData\Local

ちなみにPowershellでは$Env:USERPROFILEと、$Env:を付けて環境変数を指定できます。

貸し出しパソコンを借りて構築する

前に作ったドットファイルのインストーラーは動くの?

https://zenn.dev/yuhi_ili/articles/eaf5395e8bd493
結論、動きませんでした。前の記事で作成したドットファイルはまともに動きませんでした。なので手動で環境を構築していきます。
原因としては環境変数のパスにmiseがなかったせいでmise use -g uvとuv init自体が動いていませんでした。また、管理者権限で実行する前に通常ユーザーで実行していたのでそこも問題になった面があります。
まぁ、原因が分かっただけでもヨシ!

Caps LockをCtrlに変更する

今回は簡易的にCtrl2Capを使ってCaps LockをCtrlに変更します。
手法は下の記事が分かりやすいです。
https://note.com/yangpi_murakumo/n/nb46788ee5bf2
Zipファイルを解凍してディレクトリに入って以下のコマンドを打って再起動するだけです。簡単ですね。

ctrl2cap /install

上記以外の方法であればChange Keyを使ってレジストリを変更するのも手です。前のパソコンはこれで変えていました。
https://forest.watch.impress.co.jp/library/software/changekey/
PowerToysはキーボードのレスポンスが悪くなるのでおすすめしません。

ソフトウェアのインストール

WinGetでインストール

Microsoftが公式に出しているパッケージインストーラーです。非常に便利。
WinGetでインストールできるものはすべてこれでインストールするようにします。
このパッケージインストーラーを使うなら、このソフトと合わせて使うと幸せになれます。
https://github.com/marticliment/UniGetUI

基本的にはProgram Fileに入るようにします。
後ほど語りますが、wingetで指定できる--scope machine、--scope userの二つがありますが、一部ソフトは指定しないを選択しないとダウンロードできない場合があります。そのため、他にProgram Fileにインストールしようと考えている人は注意してください。

今回の構成はこのようになりました。もちろん、本番機体のほうで付け加えるかもしれないので暫定的な検証機の最終版です。

WinGet-All.md
## WinGet計画
`winget install --scope machine -e --id ~~~.~~~`

### 使用する
MartiCliment.UniGetUI
Microsoft.PowerShell
Microsoft.PowerToys
xanderfrangos.twinkletray
Logitech.OptionsPlus
Google.JapaneseIME
Datronicsoft.SpacedeskDriver.Server
RustDesk.RustDesk
ntwind.UploadRemote
voidtools.Everything
AntibodySoftware.WizTree

VivaldiTechnologies.Vivaldi
Perplexity.Comet
SumatraPDF.SumatraPDF
neelabo.NeeView
Notion.Notion

Valve.Steam
EpicGames.EpicGamesLauncher
Smilegate.Stove
DMM.GamePlayer
ElectronicArts.EADesktop
Discord.Discord

Spotify.Spotify
OBSProject.OBSStudio

Microsoft.VisualStudioCode
Codeium.Windsurf
Neovim.Neovim
zyedidia.micro
jdx.mise
Git.Git
Docker.DockerDesktop
DevToys-app.DevToys
Unity.UnityHub

KDE.Krita
Celsys.ClipStudioPaint
Inkscape.Inkscape
BlenderFoundation.Blender
Audacity.Audacity
sxyazi.yazi
Gyan.FFmpeg
7zip.7zip
jqlang.jq
oschwartz10612.Poppler
sharkdp.fd
BurntSushi.ripgrep.MSVC
junegunn.fzf
ajeetdsouza.zoxide
ImageMagick.ImageMagick
JesseDuffield.lazygit
JesseDuffield.Lazydocker

### 使用しない
FreeCAD.FreeCAD
KiCad.KiCad
AppByTroye.KoodoReader
IrfanSkiljan.IrfanView
EDRLab.Thorium
Ditto.Ditto
DenoLand.Deno

### 検討中
monkeyWie.Gopeed
ZedIndustries.Zed
M2Team.NanaZip
gstreamerproject.gstreamer
BandLab.Cakewalk
Musescore.Musescore
JGraph.Draw
ShareX.ShareX
DuongDieuPhap.ImageGlass
Atlassian.Sourcetree
BitSum.ProcessLasso
stakira.OpenUTAU
Digimezzo.Knowte

インストーラーでインストール

WinGetでインストールできないソフトです。
WinGetに登録されていないインストーラーやハッシュ値が異なるインストーラー、提供されていないバージョンなど様々な理由があります。
なお、使ったインストーラーはそのまま本番機体に移します。

WinGet-No.md
### インストーラー
DLsiteNest
SmoothCSV
Wezterm(Nightly)
MinecraftLauncher
MultiMC.MultiMC
Apple.iTunes
Huion Driver(HuionTablet)
XP-pen Driver
ELECOM MOUSE Assistant 6
Canon PIXUS MG5230 MP Driver Ver. 1.05
Canon PIXUS MG5230 XPS Printer Driver Ver. 5.56
Canon MP Navigator EX Ver. 4.03

設定ファイルをコピー

GitHubのリポジトリからドットファイルをインストールしてファイルを置きます。
ただ、今回は時間がないので使うソフトのみです。
ここで使うということは必然的に使うソフトでもありますので、GitHub以外のバックアップも必ず行います。

移行に必要な要素

確実に使うソフト

貸出パソコンでの経験もとい確実に使ったソフトを挙げると以下の通りになりました。

  • ブラウザ(今回はVivaldi、Comet)
  • PowerToys
  • Caps lockをctrlに変更するソフト
  • Windsurf
  • Microsoft TODO
  • Microsoft StickyNotes(付箋)
  • Huion Driver

これらは替えが効かず確実に必要になるため、最優先でインストールする必要があります。
WindsurfはVisual Studio Codeでもいいです。

こちらはスマホでもいいですが、効率を考えると必ず入れたいソフトです。

  • Discord

ディレクトリの整理

現在、ドキュメント内でディレクトリの名前を統一することでファイルの整理をしていますがそれでも所属不明のファイルが増えていきます。
なので対応できるようにディレクトリを分割していきます。

  • My_ProgramにあるMy_BookをMy_Romにしてドキュメントに置く
  • .configをMy_Dataに移し、dotfilesとして扱う
  • 自分のデータ(CreatやMemo)はMy_MemoやCreat_Gameではなく、My_Dataに保存する
  • Learn_UniversityではなくUniversityとして表記する

ここに上げたのはほんの一部の例ですが、様々な内容に対応できるよう調整していきます。

見積もり結果

マザーボードとOSの問題だそうです。Windows updateのせいかな?九月のやつかな?
無償で交換してくれます。点検会で説明されているロット共通の不具合で悪くなったっぽいしありがたい。
その他、キーボードユニットの破損(左コントロールキーとエンターキーと左シフトキー)とバッテリー容量が七割に消耗していることもあり、これらも交換します。

キーボードユニット ¥9,000(税抜)
バッテリ ¥13,000 (税抜)
作業代 ¥10,000 (税抜)

バッテリーに関しては変えなくてもいいのですが・・・親の金なので懐は痛みません。変えましょう。

本番環境で構築する

では、本番環境であるパソコンで環境構築していきましょう。

Windows Updateを実行する

まずアップデートしましょう。

真っ白い設定画面!

2022年?もう三年ですか?
2022-08 x64ベースシステム用 Windows 11 22H2のセキュリティ更新プログラム(KB5012170)がありますね。まさに工場出荷状態。

不要なアプリを削除する

待っている間に設定から使わないアプリを削除します。

嫌われ者のノートン
ウイルスのようなノートン360は使いませんし、Adobe Acrobatなんて16GBノートパソコンで動かしたらファンが爆音です。要りません。


消させてくれないプリインストール
『問い合わせ』など設定から削除できないアプリは後で別ソフトを経由して削除します。

22H2から25H2に更新する

WinGetが動きません。

WinGetのバージョンが古いようだ
症状はまさにの記事がありました。winget -vがv1.2.10691のときに起きる問題のようです。
https://qiita.com/kztktr/items/dcbeddd34a036ee670f3

Microsoft Storeで更新できないので、外部インストーラーからAdd-AppPackageでインストールしてもいいですがーーー。

まさかの22H2!
工場出荷状態のWindowsなので22H2でした。
23H2か24H2でWinGetが標準で使えるようになりましたので、Windowsのバージョンを上げる方針を取ります。

22H2から直接25H2に更新できないようだ
22H2だと直接更新できませんが。
そのため、MicrosoftからWindows 25H2のインストーラーをインストールします。

参考にしたURLです。Windows11InstallationAssistant.exeを入れて指示に従えばいいんですけどね。
https://note.com/nobita174/n/n21ed66ae8303
https://www.microsoft.com/ja-jp/software-download/windows11

WindowsPCHealthCheckSetup.msiをインストールしてアップデートできるかを検証します。

ソフトウェア:PC 正常性チェック
このパソコン24H2が入っていたので当然通りますね。
『PC 正常性チェック』が動作しているのを初めて見たかもしれない。

そこから二時間くらいのインストールをして何十分か待てば勝手にアップデートされます。


25H2に更新された!

WinGetも無事バージョンアップされました。

> winget -v
v1.12.350

セットアップスクリプトを実行する

貸出パソコンで作成したセットアップスクリプトを実行します。ただ、今回は不完全なセットアップスクリプトを実行するため、すべての設定が自動で変わるわけではありません。
今回はwingetによるインストールを検証します

セットアップスクリプトが動いている様子

セットアップスクリプトが終了した様子
最初はこんなものです。
エラーが出た箇所を検証していきましょう。
なお、実行したコマンドは以下の通り。

winget install --scope machine -e --id <Name> --accept-package-agreements --accept-source-agreements

Vivaldi

入力条件に一致するパッケージが見つかりませんでした。

Windsurf

入力条件に一致するパッケージが見つかりませんでした。

Notion.Notion

該当するインストーラーが見つかりません。詳細については、ログを参照してください。

DMM.GamePlayer

該当するインストーラーが見つかりません。詳細については、ログを参照してください。

Spotify.Spotify

該当するインストーラーが見つかりません。詳細については、ログを参照してください。

Discord.Discord

該当するインストーラーが見つかりません。詳細については、ログを参照してください。

DevToys-app.DevToys

該当するインストーラーが見つかりません。詳細については、ログを参照してください。

Celsys.ClipStudioPaint

該当するインストーラーが見つかりません。詳細については、ログを参照してください。

M2Team.NanaZip

見つかりました NanaZip [M2Team.NanaZip] バージョン 5.0.1263.0
このアプリケーションは所有者からライセンス供与されます。
Microsoft はサードパーティのパッケージに対して責任を負わず、ライセンスも付与しません。
インストーラーハッシュが正常に検証されました
現在のシステム構成では、このパッケージのインストールはサポートされていません。

インストールできるようにする

エラーが出たこれらをインストールできるようにします。

Vivaldi

誤:VivaldiTechnologies.Vivaldi
正:Vivaldi.Vivaldi
二週間の間に変わった感じですかね?

Windsurf

誤:Codium.Windsurf
正:Codeium.Windsurf
ただのタイプミス。

Userによるインストール

Spotify.Spotify、Discord.Discord、DevToys-app.DevToys、M2Team.NanaZipの四つはユーザーによるインストールしか受け付けないようです。
--scope machineを--scope userにすることでインストールできました。

スコープなしでインストール

DMM.GamePlayer、Celsys.ClipStudioPaintの二つはそもそもスコープを受け付けません。スコープなしでインストールする必要があります。

実行完了

これでファイルに設定していたすべてのソフトがインストールされました。あとはUniGetUIなどで自由気ままにインストールしていきましょう。
ちなみに、Microsoftのeditを入れ忘れてたなと思っていたら標準搭載されていました。また、このスクリプトを実行する一時間前にBlenderのバージョンが5に上がっていました。短い間にいろいろ変わりますね。
今回は複数アカウントを作る可能性のあるパソコンでの作業でしたのでProgram Fileに導入するようにしましたが、単一アカウントのパソコンであればスコープなしで全てインストールするのがいいでしょう。

ダークモードにする

世の中ダークモードです。Windowsも推奨しています。
個人用設定の色から変更します。

エンジニア御用達ダークモード

動作を即時にする

Windowsの最小化と最大化はぬるっと動くようですが、私にとっては心地悪いのですぐ閉じるようにします。
Windowsのパフォーマンスオプションから設定します。最新のWindowsであればアクセシビリティの視覚効果から変更できるはずです。

パフォーマンスオプション

右クリックをWindows10にする

Windows11の右クリックメニューは使いずらいのでWindows10の右クリックメニューに戻します。
いろいろ方法はありますが、今回はWindhawkを使って設定していきます。
WinGetでRamenSoftware.Windhawkをインストールし、「Classic context menu on Windows 11」をインストールして有効化するとWindows10以前の右クリックメニューに戻ります。

ソフトウェア:Windhawk
もう一つの「Modernize Folder Picker Dialog」は「古いほうのフォルダーの参照を強制的に新しいフォルダーの参照に入れ替える」プラグインです。
Aviutlも古いほうでしたので、こちらもおすすめです。

クリップボードの履歴を有効化する

Windows標準の機能でクリップボードの履歴を有効化できます。システムのクリップボードにあります。

標準搭載されたクリップボードの履歴
ただ、機能は少ないのでショートカットによる貼り付けなどがしたいならサードパーティのソフトですね。

タスクの終了を有効化する

タスクバーからソフトの強制終了ができるようにします。

タスクバーから強制終了!
他にも使えそうな設定があるので覗いてみるのもよし。

Shiftによる固定キーを解除する

設定>アクセシビリティ>固定キーでオフにします。

固定キーは使わないさ

キーボードレイアウトの変更をWindowsキー+Spaceのみにする

Google日本語入力を入れたことで切り替えができるようになりました。
しかし、デフォルトの状態ではShift+Ctrlで切り替わってしまいます。これではゲーム中に切り替わって操作できなくなりますね。
設定>時刻と言語>入力>キーボードの詳細設定>入力言語のホットキーから変更します。

快適なゲーム生活のために
これでWindowsキー+Spaceのみで変更できるようになりました。

クリーンアップ対象を削除する

Windows Updateで使用したデータ、以前のWindowsのインストールを削除していきます。ここまでかなりのアップデートがあったので容量が多いです。

30GBを超えるのは初めて見たかもしれない
設定>システム>ストレージ>クリーンアップ対象候補で削除できます。

必要ないソフトをアンインストールする

UniGetUIがインストールされたので、先ほど削除できなかったソフトを削除していきます。

さらばプリインストールされたソフトたちよ!

miseを使えるようにする

先ほどの一括インストールでmiseをインストールしました。
しかし、このままではmiseが使えるだけで、miseによってインストールされたコマンドは実行できません。

そのため、環境変数のパスに%LOCALAPPDATA%\mise\shimsを登録します。

ここに%LOCALAPPDATA%\mise\shimsを入れよう。

%LOCALAPPDATA%はユーザーディレクトリのRoamingを指すよ

これでmise use -gでインストールしたプログラミング言語が使用できます。

Rust

Rustをインストールする選択肢は三つ、公式経由のインストール、WinGet経由のインストール、mise経由のインストールがあります。
今回はmise経由のインストールで入れました。

~> mise ls
Tool                          Version           Source                                   Requested
rust                          1.91.1 (symlink)  C:\Users\Admin\.config\mise\config.toml  latest

ただ、ファイルエクスプローラーのAlt + DもしくはAlt + Lでアドレスバーに入力するとき、環境変数に設定してないコマンドが使えない問題があるので、%USERPROFILE%\.cargo\binを入れています。
これでdmがファイルエクスプローラーのアドレスバーから使えます。

.NET

.NETのインストールは、公式提供のasdfが使えないため以下のコマンドでvfoxを明示的に使う必要があります。

mise use -g vfox:version-fox/vfox-dotnet@10

また、Visual Studioをインストールしている場合、システム環境変数にC:\Program Files\dotnetが入っているためこっちが読み込まれます。そのため、システム環境変数からProgram Filesの.NETを削除します。
miseのパスが通っているならdotnet --versionで入れたバージョンが表示されるはずです。

miseで入れたOpenJDKでMinecraftを動かす

Minecraft Launcherで入れたMinecraft Javaは同時にインストールされる内蔵のJavaで動作しますが、外部のランチャーで起動する場合は別途Javaを用意する必要があります。
なのでmiseでJava、もといOpenJDKをインストールします。

mise use -g openjdk@21

今回使用するランチャーはMultiMCです。他にはPrismLauncherがありますね。

javax.exeを認識させるには環境変数のパスに%LOCALAPPDATA%\mise\installs\java\openjdk-21.0.2\binを入れます。
これによって自動的にjavax.exeを認識してくれます。miseのjavaw.cmdでは自動で認識してくれません。

MultiMCがjavaxを認識している
もしくはjavaw.exeを直接指定します。

直接指定しても起動するよ

これで無事に起動しました。

Minecraftの起動画面

cl.exeをPowershell 7で実行する

cl.exeを使うためVisual Studioをインストールします。
私の場合はVisual StudioのIDEを使用しないのでBuild Toolsを使います。今回はwinget instll -e --id Microsoft.VisualStudio.BuildToolsを実行します。
実行したらVisual Studio Installerも同時にインストールされますので、変更で三つのオプション(x64/x86用MSVCビルドツール、Windows11SDK、Windows用C++CMakeツール)にチェックを入れます。

Visual Studio Installerの設定画面

次にDeveloper Command Prompt for VS、x64 Native Tools Command Prompt for VS、x64_x86 Cross Tools Command Prompt for VS、x86 Native Tools Command Prompt for VS、x86_x64 Cross Tools Command Prompt for VSのどれでもいいので開きます。

このコマンドを実行して、INCLUDE、LIB、LIBPATHのパスをコピーします。

echo %INCLUDE%
echo %LIB%
echo %LIBPATH%

この三つのパスを環境変数に貼り付けます。

INCLUDE

LIB

LIBPATH

最後にcl.exeがあるC:\Program Files (x86)\Microsoft Visual Studio\18\BuildTools\VC\Tools\MSVC\14.50.35717\bin\Hostx64\x64、もといBuildTools\VC\Tools\MSVC\<Version>\bin\Hostx64\x64をPATHに登録します。
他にはHostx64\x86、Hostx86\x64、Hostx86\x86があります。使う環境に合わせましょう。

これでPowershell 7でもcl.exeでC/C++のコンパイルが可能になりました。

cl.exeが動いている様子

cl.exeとUTF-8でコンパイルされたファイルの文字化け問題

cl.exeをPowershell 7で実行できるようにしましたが、文字列がバグっています。UTF-8ではなくshift-jisで出力されていそうです。

文字化けしている実行画面
%USERPROFILE%\Documents\PowerShellのMicrosoft.PowerShell_profileに以下の文を入れます。

function cl { cl.exe /utf-8 @args}

これでcl.exeを実行すると/source-charset:utf-8と/execution-charset:utf-8が自動で挿入されます。さぁ、shift-jisを捨てよう!

ターミナルをUTF-8による出力に変える方法は下記のURLで書かれています。
https://zenn.dev/koh1nigeeee/articles/854c04fafa9c01

[Console]::InputEncoding = [System.Text.Encoding]::GetEncoding('utf-8')
[Console]::OutputEncoding = [System.Text.Encoding]::GetEncoding('utf-8')

yaziでファイルを開けるようにする

yaziで右の欄にファイルの中身を表示できるようにします。これをしないとyazi側からファイルを開けません。

表示されないyaziの右側

環境変数にYAZI_FILE_ONEという名前でC:\Program Files\Git\usr\bin\file.exeを登録します。

YAZI_FILE_ONE→C:\Program Files\Git\usr\bin\file.exe

これで表示されます。

file.exeが動き右側にファイルの中身が読み込まれている

その他環境変数

Gitの機能を使いたいならC:\Program Files\Git\usr\binをパスに追加する。

Gitを使えるようにする

WinGetでGit.Gitを入れただけでは動作しません。

git config --global user.name "Name"
git config --global user.email "email"

%USERPROFILE%/.gitconfigに入力した内容が登録されます。これで自身のリポジトリと接続できます。

マルウェアのようなTobii Eye Trackingを起動しないようにする

視線などを認識するためのソフトのようですが、顔認証もカメラも使いません。削除します。

Tobii Eye TrackingをUniGetUIで削除する

しかし削除したとしてもこのように勝手に起動しようとします。

迷惑!

しかも根本的に削除されていません。

最悪なプリインストール!

https://www.reddit.com/r/LenovoLegion/comments/1jpm07r/tobii_eye_tracker_is_a_plague/?tl=ja

なのでサービスを停止します。Windowsの検索欄から「サービス」を開き、Tobii Runtime ServiceとTobii Serviceを見つけます。

Tobii Runtime ServiceとTobii Service
Tobii Runtime Serviceを停止したら、Tobii Serviceも停止します。

スタートアップを無効にする

これで起動しないはずです。削除は面倒くさいのでこのままで。

Intel Driver & Support Assistantで必要なドライバーをインストールする

wingetでインストールできるようですが公式サイトからインストールします。
https://www.intel.co.jp/content/www/jp/ja/support/detect.html

これで後はインストーラーを起動し指示に従えばいいのですが、問題として起動するたびに更新しろとうるさいです。更新のチェックを起動時に起こさないようにします。

Intel Graphics Softwareを起動して更新のチェックを止めます。

ソフトウェア:Intel Graphics Software

これで止まらなかったらもう一つの方法として、Windowsキーを押して出る検索バーにサービスと入力して選択します。

Intel(R) Driver & Support Assistant、Intel(R) Driver & Support Assistant Updaterを自動から手動へ切り替えます。

Tobii Serviceと同じ手順

更新したい場合は手動で起動を行えばいいのです。

KeePassXCとBlueStacksによる競合の問題

WinGetでKeePassXCとBlueStacksをインストールしたところ、BlueStacksでこのようなエラーが出ました。

同じライブラリを使用している模様。バージョンの違いによりエラーが発生。
KeePassXCがCLIで使えるため、システムの環境変数に登録されるのが原因のようです。
公式からのexeによるインストールも試しましたが効果なし。
今のところCLIで操作することはないので、環境変数からKeePassXCのパスを消しておきます。
ただ、これは一時的な対策なので今後を考えると・・・keepassxc-cli.exeを特定のパスにシンボリックリンクでつなげたほうがいいですね。

Huionのドライバーの管理者権限

Huionのドライバーをインストールしたところ、HuionTablet.exeとHuionTabletCore.exeが管理者権限を要求し始めました。以前のバージョンでは見られなかった動きです。
これの問題は再起動するたびに出てくることです。チャイナ・リスクかな?
非常に鬱陶しいので最初から管理者権限で起動するようにしましょう。
C:\Program Files\HuionTabletのHuionTablet.exeとHuionTabletCore.exeの互換性で「管理者としてこのプログラムを実行する」にチェックを入れます。

なぜかスタートアップ時の起動が消滅しましたがタブレット自体は使えるので問題はなさそうです。
基本はモニター替わりなので起動していなくても問題はなさそうです。

ところでUnityは動いたの?

動きました。
OSの問題だったのでしょうか?

諸々設定する

Windowsを快適に使用するために設定を行っていきます。
https://qiita.com/MetroOsamu/items/3d8d55a205b2dca3da6a

設定ファイルの更新

パソコンが戻ってから二週間くらいですがちょくちょく変わった部分もあります。
その中でも面白めの設定を紹介します。

yaziでPowerToysのPeek.exeを起動させる設定です。

  { on = "<C-Space>", run = 'shell -- cmd /C ""C:\\Program Files\\PowerToys\\WinUI3Apps\\PowerToys.Peek.UI.exe" "%0""',desc = "Peek preview current file", orphan = true, for = "windows" },

Neovimの諸々の設定で知った記事です。
https://zenn.dev/uga_rosa/articles/9584c9b51e5476

セットアップスクリプトを完成させる

Windowsの環境構築と同時に進めていたセットアップのスクリプトを完成させます。
完成したドットファイルは以下のURLで確認できます。
https://github.com/c0b23092db/dotfiles

.gitignore

最初に全てのファイルを除外するようにし、例外的にファイルを追加するようにしています。
また、セキュリティのため特定の単語を含むファイルを除外するようにもしています。

##### all ignore #####
/*
/.**
private*
# 個人情報 #
.aws
.ssh
.bash_history
.zsh_history
Log
Resource/Font
Resource/Icon
Resource/Wallpaper
Resource/MouseCursor
Resource/Minecraft
Resource/Installers
Resource/Password

##### Git #####
!LICENSE
!README.md
!.gitignore
!Resource

##### セットアップスクリプト #####
!install.sh
!Windows_Installer.ps1
!Mac_Installer.sh
!Setup

# パッケージファイル #
!Package

##### 設定ファイル #####
!Config
Config/.Portable
!init.lua
!settings.json
!bindings.json
!keybindings.json
!theme.toml
!keymap.toml

# ファイル #
!.vimrc
!.zshrc
!.bashrc
!.bash_profile
!.bash_logout
!Microsoft.PowerShell_profile.ps1

##### 省くファイル #####

# Visual Studio Code系
globalStorage
History
workspaceStorage
snippets
# yazi
plugins
state
package.toml
!yazi.toml
# micro
backups
buffers
# NeeView
History.json
Cache.db

ディレクトリシステム

最終的にディレクトリの状態はこのようになりました。

  • Config
    • .config
    • .Ubuntu
    • .Windows
  • Log
  • Package
  • Resource
  • Setup

Config自体が%USERPROFILE%を指しており、内部に.configとディストリビューション別の設定ファイルを入れるディレクトリがあります。
WindowsはConfigPotision.csvでパスを指定する設定が必要になります。
Logは出力結果を記録しておくディレクトリです。現状はWindowsのみ対応しています。
Packageはインストールするパッケージを登録するディレクトリです。aptとWinGetのテキストファイルは#と//でコメントアウトできるようにしています。
Resourceは画像ファイルやマウスカーソルなどを入れています。ただ、ここに入っているファイルが流出するとパスワードが漏れたりするので、.gitignoreで事前に設定してやる必要があります。GitHubに上げないファイルは別の媒体で保存します。
Linux系だけを対象にするのであればここまでする必要はありませんが・・・Windowsも対象にするとなかなか面倒くさいです。

Windowsのセットアップスクリプト

説明するのが面倒くさいので・・・スクリプトの仕組みに興味がある人だけ読んでください。ここではスクリプトの役割を軽く説明します。
詳細は各リンク先のGitHubに置いてあるコードを参照してください。

https://github.com/c0b23092db/dotfiles/tree/main/Setup/Windows

Windows_Installer.ps1を起動して、Setup\Windowsにあるファイルを呼び出していきます。
具体的に言うと、他のスクリプトを順番に呼び出し、パッケージ導入・設定ファイル展開・シンボリックリンク作成・cl.exeのセットアップまでを半自動化する構成になっています。
https://github.com/c0b23092db/dotfiles/blob/main/Windows_Installer.ps1

ファイルの読み込み、読み込んだ文字列のコマンドを実行するファイルです。スクリプトのコア部分にあたります。
https://github.com/c0b23092db/dotfiles/blob/main/Setup/Windows/File-Load.ps1
https://github.com/c0b23092db/dotfiles/blob/main/Setup/Windows/Command-Run.ps1
後は指定したファイルを読み込めるようにしたりとなんやかんやして動くようにします。

設定ファイルを置く場合は、Config/.Windows/configpotision.csvに事前に設定する必要があり、特定の場所(Roaming、Local)と指定した場所に設置できるようにします。
https://github.com/c0b23092db/dotfiles/blob/main/Config/.Windows/configpotision.csv
PowershellにImport-CsvというCSVを読み込めるコマンドで読み込み、設定ファイルを指定された場所に置いていきます。
また、Roaming、Localである場合は%USERPROFILE%.configにNew-Item -ItemType SymbolicLinkでシンボリックリンクを作成します。
https://github.com/c0b23092db/dotfiles/blob/main/Setup/Windows/WindowsSetup-Config.ps1

cl.exeを実行できるようにするスクリプトです。バージョンの変更とかあったら使えなくなるのでどうにかしたいところ。
https://github.com/c0b23092db/dotfiles/blob/main/Setup/Windows/WindowsSetup-msvc.ps1

最後に

Windowsのセットアップはとてつもなく面倒くさいです。こんなことは二度とやりたくありませんが、二年以内にこのパソコンのクリーンアップ(もしかしたら行わないかも)と新規パソコンのセットアップで、最低でもまた一回ほど行う必要があるんですよね。
その時にセットアップスクリプトの検証が再び起きるので、すべてがうまく動作することを今からお祈りしておきます。
LinuxはZorin OSかPop! OSのどちらかに移行することになりました。どちらもUbuntu系統なのでセットアップスクリプトが動くのも確認しています。
後はRaspberry OSですね。セルフホスト計画を立てているのですが、Raspberry pi 3B+では力不足ということが分かったのでどうしようか悩んでいます。いっそのことクラウドファンディングにあるNASをサーバーとして動かすか・・・?
ZennのAIレビューが非常に優秀です。脱字誤字を認識して記事全体の流れを把握しているのは強い。この記事を書いている途中でZennにアップデートがありましたが、ものすごく見やすいエディタの提供がありました。ものすごく助かった。

Zennの新しいエディタ
大学のほうは第一候補の研究室に入れたので、卒業研究をしっかりと頑張っていきたいです。Cometが優秀すぎて手放せなくなりそう。

では、ノシ。

脚注
  1. 一般的なノートパソコンの寿命は3~5年 ↩︎

Discussion