🐧

Linux 使いになりたい人向けの Intel N100 ミニ PC で構築する開発環境(4)- 必須ソフトウェア

2024/01/28に公開

はじめに

これは、Linux 使いになりたい人向けに Intel N100 ミニ PC を使って開発環境を構築する方法を解説する記事の第4弾です。第1弾はLinux 使いになりたい人向けの Intel N100 ミニ PC で構築する開発環境(1) - 構築する開発環境について にあり、そこから第2弾へと続いています。そちらからご覧ください。

ここで使用する Intel N100 ミニ PC の仕様は次のものを前提とします。

項目 内容
OS Windows 11 Pro
CPU Intel N100
メモリ 16GB
ストレージ SSD 512 GB
画面出力端子 HDMI×2
WiFi 5G/2.4G
イーサネット RJ45×1
Bluetoot BT4.2
USB USB3.0×2/USB2.0×2

このマシンで最終的に Windows と Ubuntu Desktop が使えるように環境構築することを目指します。zenn.dev を購読している人のレベルを考えると、画面キャプチャはそれほど必要がないと考えているため少なめです。また、説明についても明示しないとわかりにくいと思われるものに絞っているので少なめです。

なお、実際に作業するときは、ネットワーク回線については数GBのデータをダウンロードしても問題ないものを使うようにしてください。作業の中には、数GBのデータをダウンロードするものも含まれてますので、テザリング環境では使用可能なパケットを使い切ってしまうこともあります。

インストールするソフトウェアと Hyper-V 仮想マシンの設定

今回は必須ソフトウェアをインストールします。インストールするソフトウェアは次のとおりです。

ソフトウェア名 winget の id 説明
Ubuntu 22.04 Canonical.Ubuntu.2204 WSL2 用 Ubuntu OS
VirtualBox Oracle.VirtualBox 仮想化ソフトウェア VirtualBox
Visual Sutdio Code Microsoft.VisualStudioCode 高機能テキストエディタ
Docker Desktop Docker.DockerDesktop Docker コンテナー管理用アプリ
Git for Windows Git.Git バージョン管理システム

インストール対象には WSL2 用の Ubuntu が含まれています。これを Hyper-V の仮想マシンで使うためには、Nested Virtualization の設定が必要です。最初にHyper-V のホストマシン側の Windows で、Nested Virtualization の設定をしてから、仮想マシンへソフトウェアをインストールします。

Nested Virtualization の設定

Hyper-V の仮想マシンを起動する前に、ホスト OS 側で Nested Virtualization の設定をします。

Windows 評価版では、最初から WSL2 がインストールされています。通常の物理マシンへインストールした場合はすぐに使えますが、Hyper-V の仮想マシンで Windows 評価版を動作させている場合は、「必要な仮想化機能がプロセッサにありません」といったエラーになってしまい、そのままでは使えません。

これは、仮想マシン上で、さらに仮想マシンを動かそうとしているからです。英語では Nested Virtualization というキーワードで関連した情報を見つけることができます。これを使えるようにするには、Run Hyper-V in a Virtual Machine with Nested Virtualization | Microsoft Learn に説明がある通り、Set-VMProcessor コマンドを使います。

次のコマンドを ホストマシンで実行してから、Windows 評価版の仮想マシンを起動することで、指定した仮想マシンでさらに仮想マシンを動かすことができるようになります。

Set-VMProcessor -VMName <仮想マシン名> -ExposeVirtualizationExtension $true

実際に Hyper-V 仮想マシンの Win11Eval を使って確認してみましょう。コマンドを実行する前に Win11Eval が停止していることを確認します。もし起動していたら停止します。それから、管理者権限で PowerShell を起動して、次のコマンドを実行します。

Set-VMProcessor -VMName Win11Eval -ExposeVirtualizationExtension $true

これで、Win11Eval 仮想マシン内で WSL2 の Ubuntu が動作するようになります。後で使ってみることにしましょう。

Hyper-V のホストマシンである n100 での設定は以上です。

仮想化ソフトウェア (WSL2)

WSL2 は、Windows Subsystem for Linux 2 の略で、Windows で Linux を実行するためのものです。WSL2 を使うと Windows マシンで Linux を動作させることができ、他の仮想化ソフトウェアを使った Linux 環境よりも高パフォーマンスで利用ができるようになります。

仮想化ソフトウェアとしては、ハードウェアの仮想化の視点で開発された Hyper-V がありますが、WSL2 は Linux を動作させることに特化した Windows 用の仮想化ソフトウェアです。WSL2 の主な機能は次のとおりです。

  • Linux カーネルに対しての完全な互換性
  • 高速なファイルアクセス
  • 少ないメモリ使用量で動作

WSL2 は、Linux のすべてのコマンドとシステムコールを完全にサポートしているため、本物の Linux システムで Linux 用アプリを実行しているのと同じように使うことができます。また、Windows のサブシステムとして Linux カーネルを実行するため、ファイルアクセスが高速で、使用するメモリも少ないです。

WSL2 の機能を有効化するには、Windows の設定画面を使うのが基本です。ただし、WSL2 に対応した Ubuntu アプリなどの Linux ディストリビューションを Microsoft ストアからインストールすると、WSL2 の機能は自動で有効となります。そのため、使用する Linux ディストリビューションのアプリが決まっているなら、それを Microsoft ストアからインストールすれば良いだけです。

とはいえ、そうやってインストールした Linux ディストリビューションが動作しなかった場合には、WSL2 がきちんと動作していることを確認する必要があります。そういった場合は、設定画面から確認することになるので、簡単に説明しておきます。WSL2 有効化の設定手順は次のようになります。

  1. Windows のスタートから「設定」アプリを起動
  2. 設定アプリの画面で「アプリ」をクリック
  3. 「アプリと機能」をクリック
  4. 「Windows 機能の有効化または無効化」をクリック
  5. 「Windows サブシステム for Linux」をチェック
  6. 「OK」 をクリック

WSL2 では仮想化ソフトウェアの Hyper-V とは違って、マシン単位ではなく Linux ディストリビューション単位での管理となります。管理するときには、ディストリビューション名を指定して管理することになる点は意識してください。

WSL2 は、Windows と Linux の両方の機能を活用したいユーザーにとって便利なツールです。Windows 上で Linux アプリケーションを実行するための最良の方法です。

Win11Eval では、WSL2 に対応した Ubuntu のアイコンがタスクバーに用意されていますが、winget のパッケージにあるディストリビューションの Ubuntu 22.04 をインストールしてみます。

winget install -e --id Canonical.Ubuntu.2204

実際にコマンドを実行すると次のようになります。

PS C:\Users\User> winget install -e --id Canonical.Ubuntu.2204
見つかりました Ubuntu 22.04 LTS [Canonical.Ubuntu.2204] バージョン 2204.1.7.0
このアプリケーションは所有者からライセンス供与されます。
Microsoft はサードパーティのパッケージに対して責任を負わず、ライセンスも付与しません。
インストーラーハッシュが正常に検証されました
パッケージのインストールを開始しています...
  ██████████████████████████████  100%
インストールが完了しました

これで、Windows のスタートから「すべてのアプリ」をクリックすると、アプリの一覧に「Ubuntu」が新規追加されます。

/images/20240126_win11eval_app/windows-app-list-ubuntu.png
アプリの一覧の Ubuntu

アプリの一覧の「Ubuntu」をクリックすると、インストール処理を実行するためのターミナルが起動して、次のように表示されます。

Installing, this may take a few minutes...

しばらく待つとユーザー名を入力するためのプロンプトが表示されます。ユーザー名を入力すると続いてパスワードの入力用のプロンプトが表示されます。Ubuntu を使うときのパスワードをここで指定します。それを入力するとパスワード再確認用のプロンプトが表示されるので、パスワードで入力したものと同じ文字列を再度入力すると、Ubuntu 用のユーザーアカウントが作成されます。

Installing, this may take a few minutes...
Please create a default UNIX user account. The username does not need to match your Windows username.
For more information visit: https://aka.ms/wslusers
Enter new UNIX username:

Windows のユーザーと同じでなくても良いというメッセージが表示されているので、ここでは、user001 というユーザー名でアカウントを作ることにします。Enter new UNIX username: に対して user001 を指定します。

続いて New password: と、パスワード入力用のプロンプトが表示されるので、パスワードを指定します。このとき、パスワードは人に知られてはいけないので、入力しても表示はされません。

さらに確認用のパスワード入力のためのプロンプト Retype new password: が表示されるので、パスワードとして指定した文字列を再度入力します。こちらについてもパスワードと同様に入力した値は表示されません。

実行例は次のようになります。

Enter new UNIX username: user001
New password:
Retype new password:
passwd: password updated successfully
Installation successful!
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

Welcome to Ubuntu 22.04.1 LTS (GNU/Linux 5.15.133.1-microsoft-standard-WSL2 x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

This message is shown once a day. To disable it please create the
/home/user001/.hushlogin file.
user001@WinDev2401Eval:~$

これで Ubuntu が使えるようになりました。最後の行の user001@WinDev2401Eval:~$ はプロンプトです。初期設定では ユーザー名@ホスト名:カレントディレクトリーパス$ というプロンプトになっています。ホームのディレクトリーパスは Linux では ~ と省略して書くことができるので、このような表示になっています。また、この表示から Ubuntu のホスト名は WinDev2401Eval となっていることがわかります。これは、Win11Eval の Windows の設定で確認したときのホスト名と一致しているはずです。

ここでは、winget のパッケージである Canonical.Ubuntu.2204 が動作することを確認できたら良しとして終了します。終了するには Linux のプロンプトで exit コマンドを実行します。

exit

これで、Ubuntu が終了します。

なお、Windows ターミナルを起動すると、選択できるシェルの一覧に Ubuntu が追加されます。Ubuntu を指定してシェルを起動すると、Ubuntu のシェル画面になります。

仮想化ソフトウェア (VirtualBox)

Oracle VirtualBoxは、x86およびx86-64プロセッサを搭載したコンピューターで仮想マシンを実行できる仮想化ソフトウェアで、Oracle 社がオープンソースソフトウェアとして開発しているものです。Hypre-V とは違って、ホスト OS として、Windows 以外にも macOS と Linux を使うことができます。無償で使えるため、いろいろな OS やソフトウェアを試してみたい人には、とても役に立ちます。

VirtualBox の主な機能は次のとおりです。

  • Windows、macOS、Linux のサポート
  • 仮想マシンで実行可能な OS の種類が多い
  • 高度な仮想化機能
  • GUI で、仮想マシンの作成、構成、管理が簡単

VirtualBox は次のような、さまざまな目的で使用できます。

  • ホスト OS とは異なる OS を実行
  • 複数の OS を同時に実行
  • 仮想マシンと仮想ネットワークを使った通信の実験や調査
  • 仮想マシンと仮想ディスクを使った実験や調査

個人的には、物理マシンで練習がしにくいディスク操作の練習をするのに便利だと考えています。VirtualBox は仮想ディスクだけでなく、ホストマシンに接続した USB メモリや USB ストレージを操作することができます。ディスク操作をする際に、フォーマット操作などを間違えて使用中のディスクに対して実行してしまうと取り返しがつかないことになります。仮想マシンを使っていれば、間違ったとしても、仮想マシンの仮想ディスクをフォーマットしてしまう程度で済みます。

VirtualBox は winget のパッケージにあるので、次のようにしてインストールできます。

winget install -e --id Oracle.VirtualBox

コマンドを実行すると、管理者権限が必要なため「このアプリがデバイスに変更を加えることを許可しますか?」という画面が表示されます。「はい」をクリックして進めます。

/images/20240126_win11eval_app/vbox-install.png
このアプリがデバイスに変更を加えることを許可しますか? の画面

全体の結果は次のようになります。

PS C:\Users\User> winget install -e --id Oracle.VirtualBox
見つかりました Oracle VM VirtualBox [Oracle.VirtualBox] バージョン 7.0.14
このアプリケーションは所有者からライセンス供与されます。
Microsoft はサードパーティのパッケージに対して責任を負わず、ライセンスも付与しません。
このパッケージには次の依存関係が必要です:
  - パッケージ
      Microsoft.VCRedist.2015+.x64
      Microsoft.VCRedist.2015+.x86
ダウンロード中 https://download.virtualbox.org/virtualbox/7.0.14/VirtualBox-7.0.14-161095-Win.exe
  ██████████████████████████████   106 MB /  106 MB
インストーラーハッシュが正常に検証されました
パッケージのインストールを開始しています...
インストールが完了しました

これで、Windows のスタートから「すべてのアプリ」をクリックすると、アプリの一覧に「Oracle VM VirtualBox」のフォルダが新規追加されます。

/images/20240126_win11eval_app/windows-app-list-vbox.png
アプリの一覧の Oracle VM VirtualBox

アプリの一覧にある「Oracle VM VirtualBox」を開いて、中にある「Oracle VM VirtualBox」のアイコンをクリックすると、VirtualBox の画面が表示されます。

/images/20240126_win11eval_app/vbox-01.png
Oracle VM VirtualBox の画面

ここでは VirtualBox が起動して画面表示されるところまでの確認だけとして、次に進みます。VirtualBox の画面を終了するにはメニューにある「ファイル」-「終了」をクリックします。

Visual Studio Code

Visual Studio Code は、Microsoft が開発したオープンソースのコードエディタで、VS Code とか vscode と省略されることもあります。無償で利用することができ、次の特徴があります。

  • 軽量かつ高速
  • 高機能
  • 高い拡張性

VS Code が軽量かつ高速なのは、メモリや CPU の使用量が少ないからです。性能が低いパソコンでも動作するので、コードを編集したいだけでプログラムの実行やデバッグまではしなくても良いといった場合でも使うことが出来ます。

高機能なエディタなので、エディタ以外の基本的な開発用機能を搭載しています。デフォルトでプログラミング言語 JavaScript に対応する基本的な開発用機能が含まれています。JavaScript 以外にも多くのプログラミング言語に対応しています。基本的な開発機能としては、バージョン管理システムである Git をすぐに利用できる機能、各プログラミング言語に対応したデバッグ機能、といったものも備えています。

高い拡張性のために、拡張機能が標準で用意されています。VS Code の拡張機能をインストールすることで、標準では用意されていない機能を後から追加することができます。そのため、自分が必要としている機能を持つ、より使いやすいエディタにすることができるという魅力があります。

VS Code は、クロスプラットフォーム対応のコードエディタです。Windows、macOS、Linux で動作するため、プログラムを開発するときの開発環境として VS Code を前提とすることができます。そうすることで、各 OS を利用する開発者の開発環境を統一することができます。

VS Code は、Web 開発やモバイル開発、ゲーム開発など、さまざまな開発で利用されていて人気があります。Visual Studio Code のサイト に公式の情報があり、GitHub の microsoft/vscode サイト に開発プロジェクトがあります。

ソースコードは MIT license というオープンソースソフトウェア(OSS)のライセンスですが、実行ファイルについては別になります。Visual Studio Code のライセンス に説明があります。MIT license だと勘違いして、VS Code の再配布をしたり自分のソフトウェア製品の中に組み込むといったことのないように気をつける必要があります。

GitHub の microsoft/vscode のソースコードを使ってビルドされた実行ファイルについては MIT license のものが VSCodium というプロジェクトで公開されています。VS Code で使える拡張機能について、一部が使えなかったりしますが、基本的には VS Code と同じ機能を持つので、覚えておくと役に立つことがあるでしょう。

VS Code は winget でもパッケージがあります。公式サイトからダウンロードしてインストールすることもできます。VS Code のインストーラーにはユーザー向けの User Installer とシステム向けの System Installer がありますが、winget を使うとユーザー向けのものがインストールされます。公式サイトからダウンロードする場合もユーザー向けのものを使えば良いでしょう。

ここでは winget を使ってインストールします。

winget install -e --id Microsoft.VisualStudioCode

実際に実行すると次のようになります。

PS C:\Users\User> winget install -e --id Microsoft.VisualStudioCode
見つかりました Microsoft Visual Studio Code [Microsoft.VisualStudioCode] バージョン 1.85.2
このアプリケーションは所有者からライセンス供与されます。
Microsoft はサードパーティのパッケージに対して責任を負わず、ライセンスも付与しません。
ダウンロード中 https://vscode.download.prss.microsoft.com/dbazure/download/stable/8b3775030ed1a69b13e4f4c628c612102e30a681/VSCodeUserSetup-x64-1.85.2.exe
  ██████████████████████████████  90.4 MB / 90.4 MB
インストーラーハッシュが正常に検証されました
パッケージのインストールを開始しています...
インストールが完了しました

インストールが完了すると、Windows スタートから表示できる「すべてのアプリ」の一覧に「Visual Studio Code」が追加されます。

/images/20240126_win11eval_app/windows-app-list-vscode.png
アプリの一覧の Visual Studio Code

これをクリックすると、VS Code が起動します。右下に WSL 用の拡張機能のインストールをするかの通知が表示されますが、これは無視して良いです。

/images/20240126_win11eval_app/vscode-01.png
Visual Studio Code の画面

ここでは、メニューを日本語化する拡張機能をインストールしましょう。VS Code の左のアクティビティバーの拡張機能用のアイコンをクリックして、表示された画面の左上に「EXTENSIONS: MARKETPLACE」という文字列があります。この下に検索用の入力欄があるので、japanese と入力します。

/images/20240126_win11eval_app/vscode-02.png
拡張機能の表示画面

これで Japanese Language Pack for Visual Studio Code の拡張機能が表示されるので、「install」をクリックしてインストールします。インストールが終わったら再起動が必要です。右下の通知にある「Change Language and Restart」をクリックします。

/images/20240126_win11eval_app/vscode-03.png
Change Language and Restart の通知

これで VS Code が日本語メニューで起動します。

/images/20240126_win11eval_app/vscode-04.png
Change Language and Restart の通知

VS Code が日本語メニューで起動するのを確認できたら、メニューの「ファイル」-「終了」をクリックして VS Code を終了し、次に進みます。

Docker Desktop

Docker Desktop は、Windows、macOS、Linux 上で Docker 環境を構築・利用するための GUI ツールです。Docker は、アプリをコンテナー化するためのソフトウェアです。コンテナー化とは、アプリのプログラムとそれが依存するプログラムをまとめて、単一の実行可能ファイルにパッケージ化することです。コンテナー化されたアプリは、Docker が動作する環境なら、どこでも同じように動作するので、簡単に利用することができるようになります。

Docker Desktop の特徴は、次のとおりです。

  • インストールが簡単
  • 使いやすいユーザーインタフェース
  • 高いセキュリティ機能

winget を使うことでインストールが簡単にできます。公式サイトからインストーラをダウンロードして実行する方法も簡単です。これをインストールするだけで、Docker 環境を構築することができます。

ユーザーインタフェース(UI)としては、専用の管理画面が用意されています。画面上の操作で、コンテナの起動や停止、管理などが簡単に行えます。

Docker 環境に必須なものは Docker Engine というソフトウェアで、これが Docker Desktop に含まれています。Docker Engine 単体で使うよりも、Docker Desktop を使った方がセキュリティ機能が強化されていて、安全に Docker 環境を利用することができます。

Docker Desktop は、Web 開発を始めとして、さまざまなアプリケーションの開発や運用に利用されています。

Docker Desktop に含まれる具体的な機能は、次のとおりです。

  • コンテナの起動、停止、再起動、削除
  • コンテナのログ表示
  • コンテナのネットワーク設定
  • コンテナのストレージ設定
  • コンテナのセキュリティ設定

Docker Desktop は、Docker 環境を管理するために必要な基本的な機能をすべて備えています。また、Docker Compose や Kubernetes などのコンテナオーケストレーションツールと言われるものとの連携も可能です。

Docker Desktop を winget のパッケージを使ってインストールする場合のコマンドは次のとおりです。

winget install -e --id Docker.DockerDesktop

コマンドを実行すると、管理者権限が必要なため「このアプリがデバイスに変更を加えることを許可しますか?」という画面が表示されます。「はい」をクリックして進めます。

/images/20240126_win11eval_app/docker-desktop-install.png
Docker Desktop Installer このアプリがデバイスに変更を加えることを許可しますか? の画面

実行結果の全体は次のようになります。

PS C:\Users\User> winget install -e --id Docker.DockerDesktop
見つかりました Docker Desktop [Docker.DockerDesktop] バージョン 4.27.0
このアプリケーションは所有者からライセンス供与されます。
Microsoft はサードパーティのパッケージに対して責任を負わず、ライセンスも付与しません。
ダウンロード中 https://desktop.docker.com/win/main/amd64/Docker%20Desktop%20Installer.exe
  ██████████████████████████████   590 MB /  590 MB
インストーラーハッシュが正常に検証されました
パッケージのインストールを開始しています...
インストーラーは管理者として実行するように要求するため、プロンプトが表示されます。
インストールが完了しました

インストールすると、初期設定のためのウィザード画面が表示されます。基本的にデフォルトの設定のまま進めれば良いです。

最初にサービス利用のための同意を求められるので「Accept」をクリックして承諾します。

/images/20240126_win11eval_app/docker-desktop-01-accept.png
サービス利用のための同意画面

設定については「Use recommended settings」を選択して「Finish」をクリックします。

/images/20240126_win11eval_app/docker-desktop-02-recommand-setting.png
設定選択の画面

設定にあたり管理者権限が必要なため「このアプリがデバイスに変更を加えることを許可しますか?」の画面が表示されます。「はい」をクリックします。

/images/20240126_win11eval_app/docker-desktop-03-admin-yes.png
Docker Desktop Privileged Helper このアプリがデバイスに変更を加えることを許可しますか? の画面

「Welcome to Docker Desktop」の画面では Docker Hub という Docker レジストラへのアカウント登録もしくはサインインを求められます。アカウントがあるならサインインをします。ない場合はスキップするために「Continue without signing in」をクリックして進みます。ここではスキップしたとして説明を続けます。

/images/20240126_win11eval_app/docker-desktop-04-signup.png
Sign up 画面

「Tell us about the work you do」のアンケート画面では協力する場合は回答をして「Continue」をクリックします。そうでない場合は「Skip」をクリックしてスキップします。ここではスキップしたとして説明を続けます。

/images/20240126_win11eval_app/docker-desktop-05-tell.png
アンケート画面

これで Docker Desktop の画面が表示されたら OK です。

/images/20240126_win11eval_app/docker-desktop-06-init.png
Docker Desktop の画面

Docker Desktop の画面が表示されると、裏側では Docker Engine が起動します。Docker Engine の起動状況はタスクバーにもアイコンが追加されるので、そこから確認することができます。

/images/20240126_win11eval_app/docker-desktop-taskbar-01.png
タスクバーの Docker Desktop 用の画面

最初に設定を確認しておきます。Docker Desktop の画面上部にある歯車のアイコンをクリックして「Settings」の画面を表示します。

左にあるメニューの「General」の画面で、「Use the WSL 2 based engine」にチェックが入っていることを確認し、「Add the *.docker.internal names (略)」をチェックします。それから、設定の反映と Docker Engine の再起動をするために「Apply & restart」をクリックします。

/images/20240126_win11eval_app/docker-desktop-config-01-host.docker.internal.png
Add the *.docker.internal names の設定画面

次に左にあるメニューの「Resources」-「WSL integration」をクリックして、「Resources WSL integration」の画面を表示します。「Enable integration with my default WSL distro」にチェックがあることを確認し、「Enable integration with additional distros」にある一覧で「Ubuntu」に対応するスライドボタンをオンにします。一覧に「Ubuntu」がない場合は「Refresh」をクリックして表示を更新してから指定します。それから、設定の反映と Docker Engine の再起動をするために「Apply & restart」をクリックします。

/images/20240126_win11eval_app/docker-desktop-config-02-ubuntu.png
WSL integration の設定画面

「このアプリがデバイスに変更を加えることを許可しますか?」の画面が表示されたら「はい」をクリックします。

/images/20240126_win11eval_app/docker-desktop-config-03.png
設定時の Docker Desktop Privileged Helper このアプリがデバイスに変更を加えることを許可しますか? の画面

以上で Docker Desktop のインストールと設定は終了です。次に進みます。

Git for Windows

Git for Windows とは、分散型バージョン管理システムである Git の Windows 用クライアントです。

Git を使うと、テキストファイルの変更履歴を記録し、過去の状態を確認したり、戻したりすることが簡単にできるようになります。複数のユーザーが同時に同じファイルを編集したりするときに使うと便利です。

個人でもファイルの変更履歴を管理したいときに良く利用されています。特に複数のマシンを所有していて同じファイルを編集することが多い場合は必須と言っても過言ではありません。

Git for Windows には、コマンドラインツールと GUI ツールの両方が含まれています。コマンドラインツールは、Git のすべての機能を利用できる強力なツールですが、使いこなすにはある程度の知識が必要です。GUI ツールは、初心者でも簡単に使えるように設計されています。

Git for Windows は winget のパッケージをインストールするだけで使えるようになります。公式ウェブサイトからインストーラーをダウンロードして実行する方法もあります。インストールは簡単で、数分で完了します。

Git for Windows の機能の一部を以下に示します。

  • ファイルの変更履歴を記録する
  • 過去の状態に戻す
  • 複数のユーザーが同時に同じファイルを編集する
  • リモートマシンとローカルマシンのファイルを同期する
  • タグやブランチなどの機能を利用して、プロジェクトを管理する

Git for Windows は、ソフトウェア開発やその他のプロジェクトにおいて、ファイルの管理を効率化するのに役立つツールです。

Git for Windows を winget のパッケージを使ってインストールする場合のコマンドは次のとおりです。

winget install -e --id Git.Git

コマンドを実行すると、管理者権限が必要なため「このアプリがデバイスに変更を加えることを許可しますか?」という画面が表示されます。「はい」をクリックして進めます。

/images/20240126_win11eval_app/git-install.png
Git for Windows このアプリがデバイスに変更を加えることを許可しますか? の画面

実行結果の全体は次のようになります。

PS C:\Users\User> winget install -e --id Git.Git
見つかりました Git [Git.Git] バージョン 2.43.0
このアプリケーションは所有者からライセンス供与されます。
Microsoft はサードパーティのパッケージに対して責任を負わず、ライセンスも付与しません。
ダウンロード中 https://github.com/git-for-windows/git/releases/download/v2.43.0.windows.1/Git-2.43.0-64-bit.exe
  ██████████████████████████████  58.0 MB / 58.0 MB
インストーラーハッシュが正常に検証されました
パッケージのインストールを開始しています...
インストーラーは管理者として実行するように要求するため、プロンプトが表示されます。
インストールが完了しました

winget を使うと Git for Windows の設定についての調整はできないので、後で設定ファイルを確認して調整します。

インストールが終わると Windows のスタートメニューの「すべてのアプリ」の一覧に「Git」フォルダーが追加されます。その中に Git Bash、Git CMD、Git GUI といったメニューが含まれています。

/images/20240126_win11eval_app/windows-app-list-git.png
アプリの一覧の Git

それでは Git が動作するか、Git Bash というシェルを使って確認します。ここで Git Bash では、内部的に MinGW-w64 プロジェクトの成果物が使われています。これを使うことで、Windows OS 内でも Linux でよく使われている Bash シェルの環境で Git が使えるようになります。

Bash シェルはターミナルで使うものなので、Windows ターミナルへ統合して使えるように設定しましょう。この設定にあたっては、Windows ターミナルの設定画面を使います。

なお、Windows ターミナルの設定は JSON フォーマットで C:\Users\User\AppData\Local\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json に保存されているので、そこへ新しいターミナルのプロファイルを追加しても良いです。

設定画面での指定について説明する前に、ターミナルのプロファイル用 JSON データがどのようなものか説明しておきます。わかる人は、これを設定ファイルにある "profiles": { "list": [] }[] 内へ追加すれば良いので、そちらが簡単だと思う人はそうしてください。慣れていない人は設定画面から追加した方が良いでしょう。

{
    "commandline": "C:\\Program Files\\Git\\bin\\bash.exe",
    "guid": "{5a73df18-ed31-431d-9c82-bd53840d65c4}",
    "hidden": false,
    "icon": "C:\\Program Files\\Git\\mingw64\\share\\git\\git-for-windows.ico",
    "name": "Git Bash",
    "startingDirectory": "%USERPROFILE%",
    "tabTitle": "Git Bash"
}

なお、設定ファイルへ JSON データを追加するときは次の内容を参考してください。

{
    "$help": "https://aka.ms/terminal-documentation",
    "$schema": "https://aka.ms/terminal-profiles-schema",
    "profiles": 
    {
        "defaults": {},
        "list": 
        [
            {
                "commandline": "%SystemRoot%\\System32\\WindowsPowerShell\\v1.0\\powershell.exe",
                "guid": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}",
                "hidden": false,
                "name": "Windows PowerShell"
            },
            // 略
            {
                "commandline": "C:\\Program Files\\Git\\bin\\bash.exe",
                "guid": "{5a73df18-ed31-431d-9c82-bd53840d65c4}",
                "hidden": false,
                "icon": "C:\\Program Files\\Git\\mingw64\\share\\git\\git-for-windows.ico",
                "name": "Git Bash",
                "startingDirectory": "%USERPROFILE%",
                "tabTitle": "Git Bash"
            }
        ]
    },
    // 略
    "themes": []
}

追加する内容については以上です。

それでは、Windows ターミナルの設定画面を使って追加しましょう。その場合の手順は次のとおりです。

  1. Windows ターミナルのメニューで「設定」をクリックして設定画面を表示
  2. 「新しいプロファイルを追加します」をクリック
  3. 表示される画面で「新しい空のプロファイル」をクリック
  4. 名前、コマンドライン、開始ディレクトリ、アイコン、タブタイトルを指定
  5. 「保存」をクリック

キャプチャーでもわかるようにしておきます。

/images/20240126_win11eval_app/git-bash-windows-terminal-setting-01.png
Windows ターミナルの設定画面

/images/20240126_win11eval_app/git-bash-windows-terminal-setting-02.png
「新しいプロファイルを追加します」をクリックした後の画面

/images/20240126_win11eval_app/git-bash-windows-terminal-setting-03.png
名前、コマンドライン、開始ディレクトリ、アイコン入力後の画面

/images/20240126_win11eval_app/git-bash-windows-terminal-setting-04.png
タブタイトル入力後の画面

/images/20240126_win11eval_app/git-bash-windows-terminal-setting-05.png
Git Bash プロファイルの設定画面

これで、Windows ターミナルのメニューに「Git Bash」が追加されます。このメニューを使って Git Bash を起動できます。

/images/20240126_win11eval_app/git-bash-windows-terminal-menu-01.png
Windows ターミナルのメニューに「Git Bash」が追加

Git Bash を起動すると、プロンプトとして、User@WinDev2401Eval MINGW64 ~ の表示の後に改行があり、それから $ が表示されます。$ の改行前の文字列は、WSL2 Ubuntu と似ていて、<アカウント名>@<ホスト名> MINGW64 <カレントディレクトリーのパス となっています。MINGW64 という固定文字が含まれるので、WSL2 Ubuntu の bash シェルを使っているときと間違うことはなさそうです。

/images/20240126_win11eval_app/git-bash-windows-terminal-01.png
Git Bash の画面

Git Bash を使う際の注意点としては、Bash なのでファイルパスなどが Linux で使うのに適した表示になっています。例えば pwd コマンドという、現在のディレクトリーを表示するコマンドを実行するとパスが /c/Users/User と表示されます。これは Windows のパス形式だと C:\Users\User に対応します。

また、Git Bash の環境設定ファイルとして、Git Bash のターミナル内では /etc のパスにファイルが置いてあります。この実体は C:\Program Files\Git\etc にありますが、Git Bash がうまくパス変換をして対応を取っています。ただ、この自動パス変換が問題になってうまく動作しないこともあります。Git Bash でコマンドがうまく動作しない場合に、自動パス変換が原因かもしれないと思いつけるように、覚えておいてください。

さて、ここでは、Git Bash で git コマンドのバージョンを確認できたら OK です。次のように git version と入力してバージョンが表示されたら OK です。

User@WinDev2401Eval MINGW64 ~
$ git version
git version 2.43.0.windows.1

Git の設定ファイルは、システム全体のもの、ユーザーカスタマイズ用のもの、リポジトリー単位でカスタマイズするためのものがあります。

  • システム全体のもの
  • ユーザーカスタマイズ用のもの
  • リポジトリー単位でカスタマイズするためのもの

システム全体のものは C:\Program Files\Git\etc\gitconfig にあります。メモ帳などでファイルを開いて確認することができます。ここでは、次の2つの設定について変更することにします。

(略)
[core]
  autocrlf = true
(略)
[init]
  defaultBranch = master

コマンドで確認することもできて、その場合は git config-l --system オプションを指定します。

git config -l --system

実際に実行すると次のようになります。

$ git config -l --system
diff.astextplain.textconv=astextplain
filter.lfs.clean=git-lfs clean -- %f
filter.lfs.smudge=git-lfs smudge -- %f
filter.lfs.process=git-lfs filter-process
filter.lfs.required=true
http.sslbackend=openssl
http.sslcainfo=C:/Program Files/Git/mingw64/etc/ssl/certs/ca-bundle.crt
core.autocrlf=true
core.fscache=true
core.symlinks=true
pull.rebase=false
credential.helper=manager
credential.https://dev.azure.com.usehttppath=true
init.defaultbranch=master

ユーザー用の設定は ${HOME}/.gitconfig ファイルに記述します。ここでは C:/Users/User/.gitconfig になります。設定変更は直接ファイルを編集するか、git config コマンドを使って指定します。

autocrlf = true は改行コードを自動変換する指定で、各 OS の環境に合わせた改行コードになります。便利そうに見えますが、今回構築している WSL2 Ubuntu や Docker Desktop を使うような開発環境では、この改行コード自動変換が原因でトラブルになることが多くあります。そのため、autocrlf = false としておきます。

defaultBranch = master は最近になって master の変わりに main をデフォルトの値として使う Git のシステムが増えてきているので、それに合わせて変更して defaultBranch = main としておきます。

ファイルを用意するときは次のような内容になります。

[core]
        autocrls = false
[init]
        defaultBranch = main

コマンドを使う場合は git config--global オプションをつけて、設定項目と設定値をパラメーターに指定します。

git config --global <設定項目> <設定値>

設定項目には、設定ファイルの [セクション]設定項目セクション.設定項目 というフォーマットで指定します。例えば [core]autocrls の設定項目を指定するなら、core.autocrls という文字列になります。

これらを考慮すると、今回実行が必要なコマンドは具体的には次のようになります。

git config --global core.autocrls false
git config --global init.defaultBranch main

実際に実行すると次のようになります。

User@WinDev2401Eval MINGW64 ~
$ git config --global core.autocrls false
User@WinDev2401Eval MINGW64 ~
$ git config --global init.defaultBranch main

指定ができたら、C:/Users/User/.gitconfig ファイルの内容を確認してみましょう。Git Bash ではファイルの内容を確認するために cat コマンドを使うことができます。

User@WinDev2401Eval MINGW64 ~
$ cat ~/.gitconfig
[core]
        autocrls = false
[init]
        defaultBranch = main

リポジトリー単位でカスタマイズするための設定ファイルについては、リポジトリーを作ってから使うものなので、ここでは省略します。

ここでは、設定ファイルが実際に有効となっていることの確認まではしませんが、どのファイルを確認すれば良いかの説明までしました。

以上で、Ubuntu 22.04、VirtualBox、Visual Sutdio Code、Docker Desktop、Git のインストールができました。

Discussion