Windows 10の新しいコンソールウィンドウ「Windows Terminal」の開発状況を解説する。Windows Terminalは、2020年春提供の機能アップデート「20H1」と合わせて開発が進行しており、プレビュー版がMicrosoft Storeで公開されている。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
Microsoftは、新しいコンソールウィンドウとして「Windows Terminal(ウィンドウズターミナル)」を開発中だ。すでにプレビュー版がMicrosoft Storeで公開されており、現行のWindows 10 May 2019 Update(ビルド18362以降)でも利用可能となっている。
従来Windows OSには、「Conhost(コンソールウィンドウホスト)」と呼ばれるコンソールウィンドウがあった。Conhostは、コマンドプロンプト(cmd.exe)などを起動すると、キーボードからの入力やテキスト表示を担当するプログラムとして実行されている。Windows 10 October 2018 Update(バージョン1809)までは、タスクマネージャーを起動した状態で、コマンドプロンプトを実行すると、「アプリ」の「Windowsコマンドプロセッサ」の下に「cmd.exe」と「コンソールウィンドウホスト」(conhost.exe)が表示された(Windows 10 May 2019 UpdateからはWindows Terminalに対応するため、仕様が変更されている)。
Windows Terminalは、Conhostよりも強力なコンソール環境を提供できる。Windows 10 The Latest「PowerShellとLinuxシェルをタブ切り替え可能になる『Windows Terminal』を試用する」で紹介したように、さまざまな点が強化されている。
Microsoft Storeでプレビュー版のVersion:0.2(以下、v0.2)が公開されたのが2019年7月で、その後v0.3、v0.4、v0.5(1909)と3回のアップデートが行われている。そこで、本稿では最新のプレビュー版であるv1909を中心に、v0.2以降の変更点などについて解説を行う。
公開日 | バージョン | 概要 | 機能追加など |
---|---|---|---|
2019年05月06日 | v0.1 | プレビュー開始 | − |
2019年06月21日 | v0.2 | Microsoftストアでのプレビュー提供開始 | キーカスタマイズ |
2019年08月02日 | v0.3 | Version: 0.3.2112.0 | 設定強化、Azure Cloud Shell対応 |
2019年08月27日 | v0.4 | Version: 0.4.2342.0 | 設定強化、キー割り当て変更、クリップボードコピー強化 |
2019年09月18日 | − | Cascadia codeフォント提供開始 | フォント単独での配布が行われている |
2019年09月24日 | v1909 | Version: 0.5.2681.0 | JSONスキーマ対応、Cascadia Code対応 |
Windows Terminalの更新履歴 |
Windows Terminalは、2020年4月に完成予定で、v1.0として配布が開始される予定だ。2019年内には、v1.0に搭載される機能が確定するという。
なお、開発とプレビュー公開は、4週間周期を計画しているという。September 2019 release(1909:2019年09月版、以下v1909と表記)は9月24日に公開されたため、次回のプレビュー版は10月下旬に公開される予定だ。この9月のアップデートから、バージョン表記はWindows 10と同じく「西暦下2桁+2桁の月」になった。ただし、Windows Terminal自体の「About」の情報は変更されておらず、v0.5.2681.0と表示が行われる。
v1909以前の改良点は、設定項目の追加やローカル設定化、クリップボードコピーの強化などがある。当初のWindows Terminalの設定情報は、ユーザーデータの[Roaming]フォルダ(%UserProfile%\AppData\Roaming)内にあり、Windows 10の同期機能で同一ユーザーの他のマシンにもコピーされていた。
しかし、機種による画面などの違いや用途の違いなどもあり、ローミングは不適切と判断、各マシンで設定を保存するローカル設定に変更になった。
最新のv1909に搭載されている機能のうち大きなものとしては、「Cascadia codeフォントの搭載」「設定JSONデータのJSONスキーマ対応」の2つがある。
Microsoft Storeで公開されてから4回目のプレビュー版になるが、開発は着々と進んでいるようだ。動作は、比較的安定しているようだが、筆者の環境では、評価中に2度ほどクラッシュして落ちてしまった。プレビュー版ゆえ仕方がないことではあるが、実利用には時期尚早といえる。
気になるWindows Terminalの英語以外の言語対応だが、v1909で確認したところ、フォントフォールバック(指定されたフォントに存在しない文字コードが指定されたときに他のフォントファイルで代用する動作)などにも対応し、どのフォントを指定しても日本語やカラー絵文字の表示が可能であった。
ただし、欧文フォントを指定すると、日本語フォントなどを別途設定することができないため、日本語の間隔が妙に空いた間の抜けた表示になってしまう。「MSゴシック」などの日本語フォントを指定すると、日本語はきれいに表示されるようになるが、今度は欧文フォントが指定できないので、Cascadia Codeのプログラミングリガチャー(後述)などが使えなくなってしまう。以前のバージョンでは、設定で日本語フォントを指定するとWindows Terminalが起動しなかったので、その点では国際化対応が順次進んでいるようだが、まだまだという感じだ。
現在のプレビュー版v1909は、日本語入力が正しく動作していない(過去のバージョンでは正しく動いていた記憶があるのだが)。IMEのオン/オフが効かないため、日本語の入力を行うことができない。ただし、クリップボードから日本語を貼り付けるとコマンドラインでは、正しく受け取ることができる。
Windows Terminalは、オープンソースなので、バグ報告や対応に関しては、githubのIssues(Microsoft/Terminal Issues)を使う。
ここを見ると、前記のフォントフォールバックやIMEの制御に関しては、すでに報告が上がり、対応が予定されているようである。
プレビュー版1909の特徴の1つが、「JSONスキーマ」対応である。Windows Terminalの設定は、JSON(JavaScript Object Notation)と呼ばれるファイル(内容としてテキスト型式)を出力し、これを外部のエディタで編集し保存することで行われる。v1909以前は、JSONスキーマに対応していない形式のファイルが出力されていた。v1909からは、JSONファイルの先頭に「"$schema": "https://aka.ms/terminal-profiles-schema",」という行が付き、JSONファイルがJSONスキーマに対応していることを示すようになった。
Windows Terminal側の対応はこれのみで、他に何か機能が加わったわけではない。このあたり、単にJSONスキーマ対応としたニュース記事などもあり、何かスゴイ機能がWindows Terminalに搭載されたと勘違いしている方もいるようだが、Windows Terminal自体の変更は、前記の1行が出力されるのみである。
JSONスキーマを利用するには、JSONスキーマに対応した外部の「JSONエディタ」を使わなければならない。つまり、この機能は、ユーザーが利用するJSONエディタに依存するわけだ。
Windows 10には、標準ではJSONエディタは含まれないので、標準では設定を開くとメモ帳がJSONファイルを読み込んで起動する。しかし、メモ帳はJSONスキーマに対応していないため、JSONスキーマの恩恵を受けることができない。取りあえず手軽に試すなら、Microsoftが無償で配布しているエディタ「Visual Studio Code(以下、VS Codeと略す)」をインストールするのがいいだろう。VS Codeのインストール方法や使い方については「Visual Studio Codeの使い方、基本の『キ』」が大いに役立つだろう。
なお、Visual Studioがインストールされていると、Visual Studioが標準のJSONエディタとなるため、こっちが開いてしまう。Visual Studioは大きなソフトウェアであり起動にはちょっと時間がかかる。そこで、Visual Studioをインストールしている場合でもVS Codeをインストールした方がいいだろう。
ここでは、JSONスキーマに対応したVS CodeでWindows Terminalを設定(JSONファイルを編集)するときにどのようになるのかを見ていこう。Windows Terminalが出力するJSONスキーマを示す「$schema」が示すURLには、Windows Terminalの設定JSONファイルのスキーマJSONデータが置かれている。
JSONエディタは、この行からスキーマの公開先を知り、JSON編集時に利用する。具体的には、JSONファイル内の項目の注釈を表示したり、オブジェクトの名前を補完したり、値の選択肢を表示したりするといったことに使われる。また、キー割り当ての機能名などを間違えた場合、下線を表示しエラーを示す機能もある。マウスカーソルを当てると候補となる機能名を表示してくれる。VS CodeのJSONスキーマ対応はこうしたものだが、一般にどんな機能が利用できるようになるのかは、アプリケーションに依存する。JSONスキーマ対応だからといって必ずしも全てのアプリで同じことができるわけではない。
なお、Windows Terminalは、v0.4から設定JSONファイルを読み込んだときにエラー箇所を表示できるようになった。このため、テキストエディタなどで編集しても、以前のように「何が間違っているのか分からない」ということは少なくなっている。
v1909でのもう1つの大きな変更点であるCascadia Codeフォントについて見ていこう。Cascadia Codeフォントは、Windows Terminalと同じプロジェクトで開発が進められているプログラミングを想定した欧文フォントである。「Cascadia(カスカディア)」とは、Windows Terminalの開発コード名である。これに、「プログラミング」を想起させる「Code」と合わせてフォントの名称にしている。おそらく、Windows Terminalのユーザーとして、WSLを使ってEmacsやviなどのテキストエディタでプログラムなどを書く層を想定しているのであろう。
Copyright© Digital Advantage Corp. All Rights Reserved.