令和最初の1年も、あっという間に終わってしまいました。仕事は今週で納めて、週末は大掃除......というご家庭も多いのではないでしょうか。ついでにPCもOSをクリーンアップして、環境を再構築するなんてユーザーも筆者だけではないでしょう。10ではOSの初期化が簡単になっており、インストールディスクが不要になりました。「OneDrive」や「Dropbox」といったオンラインストレージにファイルを保存するようにしておけば、わざわざバックアップファイルから復元しなくても、まっさらな環境にいつも使うファイルがすぐにダウンロードされます。“窓の杜”はいろんなアプリを試す関係で定期的にOSの初期化を(テスト端末・仮想環境の数だけ!)行う必要があるのですが、環境の再構築は以前よりも随分手軽になりました。オンラインストレージにファイルを保存するようにしておけば、わざわざバックアップファイルから復元しなくても、まっさらな環境にいつも使うファイルがすぐにダウンロードされるとはいえ、いまだに手作業で行わなければならないセットアップ処理も少なくありません。アプリのダウンロードとインストール有償アプリのライセンス登録アプリのカスタマイズオンラインサービスのアカウントセットアップ「WSL」など、追加機能の有効化とセットアップ作業円滑化のための追加処理(NASへのショートカット作成、社内VPNの登録)環境を丸ごとイメージバックアップして復元するという手もあるのですが、筆者の場合、OSの初期化で“クリーンな環境”を得ることも目的の1つなので、あまり使いたくありません。イメージバックアップでは余計なデータやカスタマイズまで再現されてしまうし、OSの初期化にあわせてハードウェア構成に手を入れる(ディスクを増設したり、GPUを入れ替えたり)と、復元に失敗する可能性もあります。少々面倒ですが、やはり自分で作業環境を再構築する方が目的にあっています。いえ、面倒ごとはなるべく避けた方がよいでしょう。アプリのカスタマイズ作業の場合であれば、日頃からデフォルトの設定でアプリを使うように心がけることでカスタマイズの必要は減りますし、設定ファイルのコピーで済むアプリであればオンラインストレージからの復元で済ませることができるでしょう。Store”から有償アプリを購入するようにすれば、ライセンスの登録を省くことができます。なかでもお勧めは、毎回行うような定型処理はスクリプトにしてしまうことです。オンラインストレージにセットアップスクリプトを置いておけば、OSの初期化とオンラインストレージの同期のあとにスクリプトを実行するだけで、いつも使っている環境を再構築できます。そこで今回は、OS初期化後のセットアップをスクリプトで行う方法を2回に分けて紹介したいと思います。前編となる本稿では、「Chocolatey」を利用していつも使うアプリのダウンロードとインストールを自動化します。「Chocolatey」とは“パッケージ管理システム”と呼ばれるソリューションの1つで、コマンドラインでアプリケーションの導入や削除が行えるようにしたものです。アプリには“これを利用するには、まずあれをインストールしておかなければならない”といった“依存性”を持つものが少なくないですが、パッケージ管理システムはこの解決も自動で行ってくれます。GUIのインストーラーでアプリをセットアップする方が初心者にとってはわかりやすく、インストールの際にこまごまとしたカスタマイズが目視で行えるのも魅力ですが、スクリプトで処理を自動化したい場合はコマンドラインでインストールできるのがメリットになります。Software実はWindows環境で利用できるパッケージ管理システムは「Chocolatey」だけではありません。最近では管理者権限不要の「Scoop」を利用する人が増えているようですし、OS標準でも「PackageManagement」(“Install-Package”コマンド)が用意されています。今回「Chocolatey」を用いることにしたのは、単に筆者が数年来愛用しており、馴れているからというだけに過ぎません。実行の際に管理者権限が必要アプリのアンインストールがうまくいかない場合があるなど、不満に感じるところも少なくないので、「Scoop」を試してみるのもよいでしょう。「PackageManagement」を利用する場合は、結局「Chocolatey」をソースとして追加することになるので、「Chocolatey」の使い方を学んでおいて損はないです。「Chocolatey」をインストールし、実際に使ってみるまず、「Chocolatey」の動作環境を確認しましょう。通常はこれらが問題になることがないはずです。「Chocolatey」をインストールするには、シェルを管理者権限で起動し、インターネット経由でセットアップスクリプトを取得して実行します。プロンプト」の場合は、あとで解説)。Bypass”は、「PowerShell」のセキュリティを一時的に緩めるためのコマンドです。“iex”は“Invoke-Expression”の略(エイリアス)で、指定された文字列(今回は“WebClient”を生成して“install.ps1”スクリプトをダウンロードするというコマンド)を評価・実行します。本来、このようにインターネットから(訳のわからない、怪しい)スクリプトを取得してそのまま実行するのは推奨されることではありませんが、“install.ps1”は内容を事前に確認できる上、多くのユーザーがすでに利用しているのも関わらず問題はないので、十分に信頼できるとみなしてよいでしょう。「Chocolatey」のアプリパッケージ(ほとんどはMSIインストーラーにスクリプトを添付してZIPで固めたものです)も、最低限のチェックと署名が施されており、信頼できるものとみなせます。本当であれば安全かどうか自分でチェックすべきものですし、セキュリティ対策を怠ってはなりません。(アプリパッケージ名)”コマンドで簡単にアプリをインストールできるようになります(要管理者権限)。Chrome」をインストールするというユーザーは少なくないと思いますが、それは以下のコマンドで行えます。googlechrome「Chocolatey」でインストール可能なアプリは、「Chocolatey」のWebサイトで検索するとよいでしょう。アプリパッケージのページにはインストールコマンドが掲載されており、ワンクリックでコピーできるようになっています。Chrome」アプリパッケージのWebページ。uninstall”さえ覚えていれば使えますが、余裕があれば以下のコマンドも覚えておくとよいでしょう。search”などを利用します。install”では追加オプションを指定することで、バージョンの指定やサイドバイサイド(複数バージョンの共存)インストールが可能です。-m:サイドバイサイドインストールを行うたとえば、複数バージョンの「Ruby」を同一環境へインストールし、インストールの確認をスキップしたい場合は、以下のようにします。-myスクリプトにするには?スクリプトで処理を完全に自動化するさて、「Chocolatey」の基本の基本がわかってきたところで、今度はこれをスクリプトにしてみます。スクリプト化するにあたって解決しなければならないのは、以下の3点です。install”の確認をスキップする(でないと、毎回スクリプトが止まる)1つ目の“管理者権限で実行する”をクリアするため、今回はスクリプトをバッチファイル(*.bat)にすることにしました。右クリックメニューから簡単に[管理者権限として実行]コマンドが利用できるからです。PowerShellスクリプト(*.ps1)の右クリックメニューには残念ながらこのコマンドがありません(管理者権限付きで起動するようにスクリプトを書くことは可能ですが、今回は割愛)。バッチファイルなら右クリックメニューから簡単に[管理者権限として実行]コマンドを利用できる2つ目の問題は、「PowerShell」の“Set-ExecutionPolicy”コマンドレットを利用でポリシーを“Restricted(制限する。初期値)”から“RemoteSigned(Webから入手したスクリプトには署名が必要)”に緩めることで解決。「Chocolatey」によるアプリのインストールが完了したら、セキュリティ上の理由で初期値へ戻しておくことにします。install”コマンドに“-y”オプションを追加することで解決できます。これらの3つを踏まえると、セットアップスクリプトは以下のようになるでしょう(“REM”はコメント行です)。"すべての処理が完了しました。"PAUSEインストールするアプリは、それぞれ環境に合わせて選んでください。筆者の場合は、これに加え、以下のアプリなどを足しています。