久しぶりにWindowsの環境構築をした

WindowsのノートPCがやっと修理(交換)から帰ってきたので、あらためてWindowsの環境を構築しました。 用途は主にプログラミングと大学の電子ノートです。今回はそのメモ。

環境

昔と比べて、環境を取り戻すのが非常に楽になっています。

1.初期設定とアップデート

空っぽのWindowsを起動し、言われるままに初期設定をします。
WiFiの接続や言語の選択、Surfaceペンの接続(スキップ可能)などが行われます。言語は深い意味がなければ日本語にしとくのが無難です。よくわかんないとこで不愉快な思いをするので。
以前は起動時にMicrosoftアカウントを聞かれ、素直にログインするとホームディレクトリが日本語になるというトラップがありましたが、現在はローカルアカウントのみが聞かれるようです。復旧が非常に手間だったので、ありがたい限り。

初期設定が完了すると即座にWindowsのアップデートが行われます。 全画面でダウンロードを始めますが、左下のボタンでデスクトップに戻れるので、すぐにWindowsUpdateの設定を開き、更新をダウンロードします。
Windows10では以下の大規模なアップデートがあります。(旧来のサービスパックかな?)

残念ながらまとめてアップデートはしてくれないみたいで、その都度再起動がかかります。 設定をしておけば順次ダウンロード→再起動をしてくれるのかな?ものすごい勢いでファンが回りますが、寝てる間とかにアップデートをさせておくのが一番効率が良いのかも。

2. Chocolatey

今回はWindowsUpdateと並行して、他のソフトを導入して環境を再構築します。
といっても、手順はかなり圧縮されています。まずはChocolateyでまとめてパッケージを導入します。

これで8割程度のソフトが入ります。本当に楽になりました・・・
途中でWindowsUpdateの再起動が入るようならそこでCtrl+Cで止めて再起動後にまた走らせれば続きから始まります。
なお、パッケージの内容が悪かったり、スペルが間違っていたり、ダウンロード先のURLが壊れているなどの場合、最後にまとめてエラーメッセージが出ます。また、異様にダウンロードが遅いパッケージがあったりするようなら、しょうがないので一度コメントアウトしましょう・・・

3. Chocolatey以外のソフトの導入

あとはあえて入れてないソフトやChocolateyに無いソフトを個別に導入します。

4. 各種ソフトの設定

こんなもんですかね。めんどくさい。
次回以降、自動化したり設定を引き継ぐ方法を今度探したいところです。
ソフト自体はすべてChocolateyではいっています。

# 要管理者権限
if( -not ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole(`
        [Security.Principal.WindowsBuiltInRole] "Administrator"))
        {
            echo "Please run as an admin.";
            exit;
        }

# chocolateyパッケージのインスコ
cinst packages.config

#npmとgemでいつも使うツールを入れる。途中でrubyのファイアウォール警告で一度止まるので注意
npm install -g typescript typings webpack react react-dom babel-loader babel-core vue-cli
gem install jekyll

# vimの設定ファイルのシンボリックリンクを貼る
if( -not ( Test-Path ~/.vimrc )){ cmd /c "mklink `"%userprofile%/.vimrc`" `"../.vimrc`"" }
if( -not ( Test-Path ~/.gvimrc )){ cmd /c "mklink `"%userprofile%/.vimrc`" `"../.gvimrc`"" }


# Windowsの機能の有効化で、Bash on ubuntu on windowsを入れる。要再起動。
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

最近のWindowsでは珍しく、WindowsUpdate以外でもBoWのインストール後には再起動が必須です。再起動してbash.exeを起動すると、Ubuntuイメージのインストールが始まります。 完了後に日本語への設定と、UNIXアカウントを作成したら完了です。

まとめと反省

以上で、環境の再構築は大体終わりです。構築にかかった時間はまる一日ぐらい。ただ、大部分はダウンロードやインストールの待機時間で、実質的に時々再起動やコマンドを叩くぐらいで終わります。
本当にChocolateyさまさま。

あとはVisualStudioの設定同期とかもしなければ。 次回再インストールに備え、反省点をまとめておきます。

WindowsUpdateが遅すぎる

初期バージョンにもよりますが、Windowsのアップデートとパッチ適用がむちゃくちゃ時間がかかります。 再起動を即時にするように設定しておけば一晩寝てる間に最新にしてくれるのかなぁ・・・ Chocolateyによるパッケージインストールはほぼこれに並行して行えるのでそこまで時間の肥大には繋がりはしないでしょう。

一方で、厄介なのが一部の設定項目がWindowsの新バージョンに依存していることです。 具体的には、一括の開発者モードやWindows Subsystem for Linux、タッチパッドの設定あたりです。 また、Visual Studioやウイルス対策ソフト(私はdefenderですが)あたりも最新のWindowsにしてから導入した方が間違いがないかと思います。

Chocolatey

インストール中にFoxit Readerのダウンロードが異様に遅いという問題にぶつかりました。10kbytes/secも出てなかったのではないでしょうか・・・
こうなると、おそらくpackages.configを書き換えてコメントアウトする必要が出てきます。
また、自作のfonts-ricty-diminishedがPowerShellのセキュリティ設定を変更しないと追加のps1を実行できないのでこけてしまうようでした。利用者目線からよろしくないと思うので、解消したいところ。
未対応のパッケージの作成も進めたいです。

設定スクリプト

結局、Windows Updateが遅いのと、非公開のGitHubにログインする手間を含めて初期化スクリプトが活かせませんでした・・・
スクリプトの更新目標