ソフトウェアの開発は繊細な仕事です。一日の終わりには、すべての仕事は厳格なインタプリタのための奇妙な言語での命令の記述についてのものであり、それはあなたが取り組んだすべてのことをシャットダウンするでしょう。さて、Windows Terminalをインストールして、より良い方法を見つける時が来ました。
この究極のガイドでは、開発者向けの最高のコンソールの一つであるWindows Terminalについて学びます。Windows Terminalのほぼすべての機能について詳しく説明します。コマンドラインでWindows上の作業を助ける方法を学ぶことができます。
Windows Terminalは、タブ、ペイン、さらには背景画像などのモダンなターミナル機能でコンソールの体験を向上させます。コンソールセッションを切り替えることなく、Windows PowerShellやcmd.exeと並行して完全なLinuxシェルを実行することもできます。
この記事は、Windows Terminalの多くの機能についての手順書です。実践的なチュートリアルとなっているので、準備をして作業に取り組んでください!
前提条件
Windows Terminal自体をインストールして使用するための要件は非常に基本的です。必要なのは、Windows 10のビルド1903(2019年5月)以降がインストールされたマシンです。この記事のデモをすべて追いかけるためには、他にもいくつかのツールをインストールする必要があります:
- Windows Subsystem for Linux (WSL) 機能を有効にし、Linuxディストリビューションをインストールすること(すべてのデモはUbuntu 20.04を使用しています)
- Visual Studio Code (VS Code)
- Pythonをインストールしますリッチテキストライブラリをインストール
- Visual Studio 2019以降をインストールします:
- Windows 10 1903 SDK をインストール
- C++ 開発のデスクトップコンポーネントをインストール
- ユニバーサル Windows プラットフォーム開発コンポーネントをインストール
- C++ (v142) ユニバーサル Windows プラットフォームツールコンポーネントをインストール
ターミナル vs. コンソール vs. シェル
この記事では多くの用語をカバーするため、混乱しないように最初にいくつかの用語の違いを把握することが重要です。
これらの概念は似ていますが、ターミナルはコンソールとシェルとは異なる固有の目的を持っています。Scott Hanselman による素晴らしいブログ記事がありますが、以下ではこの記事での使用方法を説明します:
- ターミナル:Windows ターミナルアプリケーション。
- コンソール:Windows ターミナル以外のどのコンソールホストアプリケーションでもあります。ではないWindows ターミナル。
- シェル:ターミナルとオペレーティングシステムの間のプログラム(pwsh、cmd、zsh など)。
Windows ターミナルのインストール
Windows Terminalのインストール方法はいくつかありますが、最も簡単でMicrosoftが推奨する方法は、Microsoft Storeからインストールする方法です。ダウンロードできるバージョンは二つあり、標準のWindows TerminalとWindows Terminal Previewがあります。
この記事の目的上、どちらを使用しても構いません。インストールは直感的なので、この記事ではその手順は省略し、すでにインストール済みであると仮定します。
Windows Terminalを初めて開くと、見た目や感じがすごく良いとは思わないかもしれません。ここに到達するためには多くの調整が必要ですが、それはすべて以下のようなウィンドウから始まります。

Windows Terminalには主に4つの要素があることに注目してください。
- Terminal Window – ここで主に作業を行い、最もカスタマイズできます。
- Tab Name – Windows Terminalはタブをサポートしているため、異なるシェル
- New Tab – このボタンをクリックすると、デフォルトのプロフィールの新しいタブが開きます。
- Profiles list – これは開くことができるプロフィールのリストです。
Windows Terminalはミニマリストのレイアウトですが、その背後には多くの機能が隠れています。
ソースからTerminalをビルドする
これはWindowsターミナルであり、Microsoftから提供されていますが、完全にオープンソースです。つまり、貢献することも可能です。これは非常に活発なコミュニティを持つC++プログラムです。
このGA製品ではありますが、現在もいくつかの細かいバグが修正中であり、将来の開発計画にも新機能が含まれています。あなたがそれに貢献するかもしれません!
もし開発者であり、コードに本格的に取り組みたい場合は、以下の手順に従ってWindowsターミナルをPowerShellからビルドできます。
git submodule update --init --recursive
を実行してすべてのgitサブモジュールを更新します。- 以下のPowerShellコマンドを実行します。
settings.jsonファイル: すべてをカスタマイズ
最終的には、ターミナルを独自のものにカスタマイズしたくなるかもしれません。Windowsターミナルの最も一般的なカスタマイズ方法は、%LOCALAPPDATA%\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\ディレクトリにあるsettings.jsonファイルを編集することです。
また、プロファイルリストをクリックし、設定を選択することで、settings.jsonファイルにアクセスすることもできます。
settings.jsonファイルは、グラフィカルなオプションが利用可能になるまで、Windowsターミナルのほとんどのカスタマイズを行う場所です。
Windows Terminalチームは、近日中に設定を管理するためのGUIがリリースされることを約束しています!
すべての設定を便利な場所に保存するだけでなく、設定をJSONファイルに保存すると、ソースコントロールに設定を入れたり、異なるマシン間で移動する場合にバックアップを取ることができます。
さらに、他の人と設定を共有することもできます。例えば、settings.jsonの例を見たい場合は、こちらをチェックしてください。
settings.jsonスキーマ
もしVisual Studio Codeを使用している場合、ターミナルにはJSONスキーマが組み込まれており、settings.json内で行ったカスタマイズを自動的に補完します。
設定を保存した直後(settings.jsonが有効な場合)、新しい変更はすぐにターミナルに反映されます。リフレッシュする必要はありませんが、エラーが表示される場合もあります。
JSONを編集するためにはVisual Studio Codeは必須ではありませんが、Windows Terminalをカスタマイズする際にはおすすめです。
現在、Windows Terminalの外観や操作感を制御するsettings.jsonの4つのセクションがあります:Globals、Profiles、Schemes、およびKey Bindings。それぞれのセクションを見てみましょう。
Globals
グローバルセクションは、Windows Terminalの動作を決定する責任を持っています。ファイルの一番上に常に配置され、グローバルセクションは、クローズ時の確認、ビジュアルテーマ、およびデフォルトプロファイルなどを制御します。以下のコードスニペットに例が示されています。
Profiles
A profile is a configuration of the Windows Terminal that has its own shell, theme, and settings. When you open up a Windows Terminal profile, it will open a session with the assigned shell, environment, or WSL distribution. This means you can have different shells open at the same time, or different sessions of the same shell, which can be useful when testing code cross-platform or need to run a background process.
Windows Terminalには、デフォルトでWindows PowerShell、cmd.exe、Azure Cloud Shellの3つのプロファイルが付属しています。WSLがインストールされている場合、インストールされている各WSLディストリビューションに対してプロファイルも生成されます。また、settings.jsonのすべてのプロファイルに設定を適用するdefaultsセクションも含まれています。このセクションは、後述するUnicode互換のフォントを配置するのに適しています。
次のコードスニペットでは、プロファイルの例を見ることができます。
新しいプロファイルの作成
プロファイルの設定は、同じシェルのバリエーションを追加したり、カスタムのリモートプロファイルをターミナルに追加する場合に便利です。
settings.jsonで新しいWindows Terminalプロファイルを作成するには、次の手順を実行する必要があります:
JSONを有効にするため、最後以外の各プロファイルの後にカンマを追加してください。
- プロファイルセクションから任意のプロファイルをコピーしてください。これはJSONファイルのlistノードの下にある
[
から]
までの部分です。これは上記の7行目から14行目までの部分です。 - PowerShellセッションで
[guid]::NewGuid()
を実行して新しいGUIDを生成してください。生成したGUIDで新しいプロファイルのguid
の現在の値を置き換えてください。GUIDはターミナルがデフォルトのプロファイルを設定する際にランダムに生成されます。 - プロファイルをカスタマイズするために他のパラメータを追加または変更してください。
- settings.jsonの内容をコピーし、JSON Lintまたは他のJSONリンターを使用して有効であることを確認してください。問題があれば修正してください。
- 変更内容を保存してください。
プロファイルで構成可能なオプションは多数あります。ただし、settings.jsonのデフォルトセクションに設定がある場合、同じ設定を新しいプロファイルで設定すると、デフォルトが上書きされます。詳細については、Windows Terminal設定のドキュメントを参照してください。
スキーム
このセクションは、Windows Terminalのプロファイルに対するカラースキームに関連しています。カラースキームは、ターミナルに表示される各色に対して使用する16進数の値を指定します。ターミナルは24ビットで色をレンダリングできるため、これらの色は非常にクリエイティブになります。各スキームには名前と、16進数の値にマップされる色のリストがあり、以下のように簡単に変更できます。
Windows Terminalでそのスキームを使用している間、これらの色は背景色とテキスト色に対応します。Visual Studio Codeでsettings.jsonを開いている場合、実際の色が表示されるグラフィカルスライダーがある16進数の値をクリックできます。

ターミナルテーマ(Windows Terminalではschemesと呼ばれます)は、ターミナルプログラムの世界では珍しいものではありません。さまざまなターミナルアプリケーションで動作するテーマ(スキーム)を作成するための唯一の方法はありませんが、どのアプリケーションを使用していても、それらを作成するための多くのツールが存在します。簡単に作成済みのテーマを見つけることもできますし、自分で作成することもできます!

キーバインディング
キーバインディングは、Windows Terminalが新しいペイン、タブ、またはコピー&ペーストなどの基本的なアクションにホットキーを割り当てる方法です。カスタムホットキーを割り当てることができる多くのアクションがあり、ターミナルを自分に快適な方法でカスタマイズすることが簡単になります。
以下のコードスニペットでは、いくつかのデフォルトのキーバインディングが示されています。
これで、ターミナルは望むように動作し始めるかもしれませんが、まだ終わりではありません。これからは、ターミナルの見た目や感触をさらにカスタマイズする方法を学ぶ時です。
ビジュアル設定
あなたが働きながらほとんどの時間を画面のテキストを見つめることに費やしているなら、テキストを見やすくするために少しの手間をかける価値があります。フォントやサイズ、色を変更するかどうかに関わらず、新しいWindows Terminalの外観に少し時間をかけることは、それを一日中見つめた後に大きな利益をもたらすでしょう。
テキストの強化
Windows Terminalの最も宣伝されている機能の一つは、24ビットカラーサポートと高速テキストレンダリングです。これ自体はあまり印象的ではないかもしれませんが、powershell.exeやcmd.exeとのテキストとカラーのレンダリングの違いを比較すると、その能力の大きさがはっきりとわかります。Pythonのrichライブラリを使用してデモンストレーションすると、古いコンソールとWindows Terminalとのレンダリング能力の違いが非常に大きいことがわかります。

Windows TerminalとrichライブラリをPythonから開いて、powershell.exe
Windows TerminalはUnicode文字もサポートしているため、他のアルファベットや記号、キリル文字、漢字など、どんな文字でも問題なく表示することができます。それは後述するCascadia Codeフォントのおかげです。

Windows Terminalとpowershell.exeで日本語の漢字を書くこと
これには明らかな国際化の利点がありますが、UnicodeとUTF-8のサポートも意味します。
絵文字?
絵文字は、コマンドラインツールに含めるのにはあまり役に立たないように思えるかもしれませんが、開発の中でますます主流になっています。ソフトウェアエンジニアは、コミットやイシューにラベルを付けるためにそれらを使用しており、SlackやMicrosoft Teamsなどのアプリで迅速にメッセージに応答しています。また、絵文字プログラミング言語などもあります。これらのうちいくつかは確かに他よりも有用ですが、絵文字がどこかへ行くことは明らかです。
以下は、powershell.exeコンソールとWindows Terminalでの絵文字の表示例です。The Terminal is pretty
の行を見て、違いを確認してください。

pythonのrichライブラリを使用して絵文字を表示する例
Cascadiaフォント
先述のように、Cascadia Codeフォントはいくつかの文字を表示することができます。しかし、フォントには他の微妙な変更もあり、連結文字(ligatures)など、数時間見続けるのが容易になるようになっています。
ご参考までに:Windows Terminalを設計した同じチームが、Windows Terminalでの使用を目的としてCascadia Codeフォントを作成しました。
特殊文字に加えて、Cascadia Codeフォントはリガチャにも対応しています。リガチャとは、画面に表示される際に少し異なる形でレンダリングされる記号です。Cascadia Codeでサポートされているリガチャのリストはこちらで確認できます。

A printout of all the ligatures supported by Cascadia Code. Code here.
もしリガチャを使用したくない場合でも、Cascadia Codeの他の利点を享受したい場合は、Windows TerminalにはCascadia Monoというフォントも同梱されています。それぞれのフォントには、powerline用のバリアント(Cascadia Code PL
およびCascadia Mono PL
)も用意されています。これについては後述します。
Powerline
Powerlineは元々vimのプラグインであり、シェルに情報を追加するもので、Linuxの世界では長い間存在していました。そのアイデアは、プロンプトでより多くの情報を提供し、コンソールで作業する際に指先でより多くの情報を利用できるようにすることでした。
Powerlineは、PowerShellを含むすべてのモダンなシェルに移植、クローン、複製されてきましたが、以前のコンソールの制限のために何かが欠けていました。ターミナルは、パワーライン用の特定のシンボルであるグリフを含めることで、この問題を解決します。グリフは、パワーラインでプロンプトに一目で多くの情報を表示するために使用されます。
PowerShellでのPowerline
PowerShellでは、以下のサンプルコードを使用してoh-my-poshをインストールすることで、パワーラインのようなプロンプトを設定することができます。
それがインストールされると、PowerShellのプロンプトには、gitブランチ名とリモートとローカルリポジトリ間のコミットなど、より詳細な情報が表示されます。以下に例を示します。

これは、oh-my-poshのParadoxテーマで、現在のOSとPowerShellのバージョンを表示するためにカスタマイズされています。
Bashのパワーライン
Bashの場合、zshやfishshellなどのシェルライクなものをインストールする必要があります。これらは、ターミナルにいくつかの機能とカスタムハイライトを追加しますが、独自で使用するのは少し難しいかもしれません。zshのためのohmyzshなどのフレームワークもインストールすることをおすすめします。これにより、使用がはるかに簡単になります。ohmyzshには、oh-my-poshがPowerShellプロンプトに対して行うのと同様のテーマとbashプロンプトのカスタマイズが付属しています。
それがインストールされると、~/.zshrcファイルのZSH_THEMEプロパティを変更することでテーマを変更できます。これをvimやnanoなどのエディタを使用して変更し、ファイルを保存します。それが完了したら、source ~/.zshrc
を実行して変更を適用します。

zshでagnosterテーマからrobbyrussellテーマに変更する方法。
背景画像
Windows Terminalのリリース時に最も話題となった機能の1つは、各プロファイルで画像を使用できることでした。これまで、背景はsettings.jsonファイルのbackground
タグで定義された単一の色であることに気付いたかもしれません。
一部の人々は、コーディング中に画像が気を散らすと感じるかもしれません。もしあなたがそのような人の一人なら、以下はsettings.jsonで単一の色の背景を使用する例です。
単一の色が設定されると、その色がそのプロファイルの背景になります。プロファイルに背景タグが設定されていない場合、Windows Terminalはスキーマに設定されているものをデフォルトとします。

上記の例のプロファイルでは、この色が背景として表示されます。
背景画像を使用するには、画像をローカルのファイルシステムに持っている必要があります。現時点では、TerminalはURLからの背景画像をサポートしていません。settings.jsonで、背景画像を割り当てたいプロファイルに移動します。ここから、backgroundImage
タグを追加し、それに画像へのパスを値として設定します。以下は、プロファイルの背景を猫の写真に設定する例です。

自分自身の背景をカスタマイズすることを決めた場合、端末は背景に対してあなたの色を考慮しません。端末は現在のプロファイルのスキーマに従います。注意しないと、明るい色のフォントを明るい色の背景に配置してしまい、読みづらくなる可能性があります。すべての背景が適した端末の背景ではありません。
端末のキャットは、背景を占有します。
ただし、settings.jsonが有効なJSONファイルであり、端末のスキーマに従っている限り、手動でリフレッシュする必要もターミナルを閉じて再度開く必要もありません。以下にリアルタイムの更新の素晴らしい例があります。

Windows Terminalは、settings.jsonで変更を加えて保存するとすぐに更新されます。
画像の配置
画像はターミナルウィンドウで邪魔になるかもしれませんが、タブやプロファイルを頻繁に切り替える必要がある場合には、クイックな参照となることもあります。以下は、使用されているシェルを強調するために背景画像を使用する例です。
上記のように背景画像を設定するには、画面上の画像のサイズ、位置、透明度を制御するために、backgroundImage
で始まる3つの追加パラメータが必要です。使用可能なオプションを確認するために常にドキュメントをチェックすることを忘れないでください。以下は上記のプロファイルの例です。

Windows TerminalはアニメーションGIFもサポートしているため、気を散らすことなくもう少し楽しむこともできます。

高度なWindows Terminalコマンド
好みに合わせてカスタマイズされたターミナルが準備されたので、Windows Terminalのより高度な機能を探索する時が来ました。
異なるカーネルを持つペインの分割
Windows Terminalは複数のペインをサポートしています。つまり、同じターミナルウィンドウで並行セッションを実行できます。この挙動は新しいものではありません。他のコンソールアプリケーションも年数を経てペインをサポートしてきました。Windows Terminalの違いは、プロファイル(settings.jsonで)をサポートしているため、各セッションを独自のペインで開くことができる点です。各セッションがWSLやリモートプロファイル(リモートプロファイルについては後述)のように完全に異なるオペレーティングシステムであっても、各OS用にペインを表示することができます。
異なるプロファイルの分割ペインを作成するには、settings.jsonで各プロファイルに独自のsplitPane
キーバインディングを持たせる必要があります。Windows Terminalのプロファイルの名前またはGUIDを使用してprofile
パラメータを指定することで、それぞれのプロファイルを並べて表示することができます。
split
プロパティは、horizontal
、vertical
、auto
のいずれかに設定することができます。現在選択されているペインに基づいて最も広いスペースを提供する方向が選択されます。以下に、4つのペインのキーバインディングを設定する例を示します。

Windows Terminalのカスタマイズ方法
ホットキーが好きではない場合や、CLIでターミナルを素早く開きたい場合は、幸運です。Windows Terminalには、任意の構成で開くためのコマンドライン実行可能ファイルであるwt
が含まれており、自動化が可能です。
以下に、動作を変更するためのさまざまな引数を渡しながらターミナルを開く例を示します。

リモートプロファイル
ほとんどの場合、プロファイルはローカルシェルで実行されます。ただし、Windows Terminalはリモートセッションも表示できるようになっており、これをリモートプロファイルと呼ばれる概念を通じて行います。
Windows Terminalの他のサンプルプロファイルを見ると、.exeアプリケーションを使用していないものもあることに気付くかもしれません。Windows Terminalは柔軟性があり、ssh
コマンドやEnter-PsSession
PowerShellコマンドを使用して、リモートサーバーや他のシェルにマップされるプロファイルを作成することさえできます。さらに、terraform console
を使用してTerraformセッションを起動することもできます!以下のプロファイルの例をご覧ください。
settings.jsonのプロファイルセクションでcommandline
パラメータを使用することで、対話的にログインする必要のないWindows Terminalプロファイルとしてほぼ何でも開くことができます。

Python REPLとAWS EC2インスタンスへのSSH接続をWindows Terminalプロファイルで開く
要約
この時点で、Windows Terminalについてだけでなく、カスタム設定を構成し、比較的快適な設定を行うことができるようになっているはずです。ターミナルの見た目と動作を制御するためにプロファイルやキーバインディングをカスタマイズできるはずです。また、ターミナルで使用できるフォント、グリフ、文字を変更する方法も知っているはずです。
コマンドラインツールはどこにでもあります。開発者やエンジニアは引き続きそれらを使用する必要があります。新しいWindows Terminalは、ソフトウェア開発が画面上の小さなテキストを見つめる作業であることを止めることはありませんが、それを行うことをはるかに容易にするかもしれません!
Source:
https://adamtheautomator.com/install-windows-terminal/