検索
連載

【Windows Terminal開発動向】Cascadia codeフォント搭載とJSONスキーマ対応の意味とメリットWindows 10 The Latest

Windows 10の新しいコンソールウィンドウ「Windows Terminal」の開発状況を解説する。Windows Terminalは、2020年春提供の機能アップデート「20H1」と合わせて開発が進行しており、プレビュー版がMicrosoft Storeで公開されている。

Share
Tweet
LINE
Hatena
「Windows 10 The Latest」のインデックス

連載目次

2019年9月24日公開されたWindows Terminalの最新版「v1909」
2019年9月24日公開されたWindows Terminalの最新版「v1909」
Windows Terminalは、プログラミングリガチャーを利用可能なCascadia Codeフォントを同梱する。日本語の表示や絵文字の表示などフォントフォールバックにも対応している。

 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と表示が行われる。

Windows Terminalの[About]ダイアログ
Windows Terminalの[About]ダイアログ
Windows Terminalは、バージョンをWindows 10のように西暦下2桁+月2桁とした。最新版はv1909だが、ソフトウェアの[About]ダイアログの情報は変更されておらず、v0.5.2681.0と従来のバージョン表記のままだ。

v1909以前の改良点

 v1909以前の改良点は、設定項目の追加やローカル設定化、クリップボードコピーの強化などがある。当初のWindows Terminalの設定情報は、ユーザーデータの[Roaming]フォルダ(%UserProfile%\AppData\Roaming)内にあり、Windows 10の同期機能で同一ユーザーの他のマシンにもコピーされていた。

 しかし、機種による画面などの違いや用途の違いなどもあり、ローミングは不適切と判断、各マシンで設定を保存するローカル設定に変更になった。

 最新のv1909に搭載されている機能のうち大きなものとしては、「Cascadia codeフォントの搭載」「設定JSONデータのJSONスキーマ対応」の2つがある。

Windows Terminalの完成度

 Microsoft Storeで公開されてから4回目のプレビュー版になるが、開発は着々と進んでいるようだ。動作は、比較的安定しているようだが、筆者の環境では、評価中に2度ほどクラッシュして落ちてしまった。プレビュー版ゆえ仕方がないことではあるが、実利用には時期尚早といえる。

 気になるWindows Terminalの英語以外の言語対応だが、v1909で確認したところ、フォントフォールバック(指定されたフォントに存在しない文字コードが指定されたときに他のフォントファイルで代用する動作)などにも対応し、どのフォントを指定しても日本語やカラー絵文字の表示が可能であった。

 ただし、欧文フォントを指定すると、日本語フォントなどを別途設定することができないため、日本語の間隔が妙に空いた間の抜けた表示になってしまう。「MSゴシック」などの日本語フォントを指定すると、日本語はきれいに表示されるようになるが、今度は欧文フォントが指定できないので、Cascadia Codeのプログラミングリガチャー(後述)などが使えなくなってしまう。以前のバージョンでは、設定で日本語フォントを指定するとWindows Terminalが起動しなかったので、その点では国際化対応が順次進んでいるようだが、まだまだという感じだ。

 現在のプレビュー版v1909は、日本語入力が正しく動作していない(過去のバージョンでは正しく動いていた記憶があるのだが)。IMEのオン/オフが効かないため、日本語の入力を行うことができない。ただし、クリップボードから日本語を貼り付けるとコマンドラインでは、正しく受け取ることができる。

 Windows Terminalは、オープンソースなので、バグ報告や対応に関しては、githubのIssues(Microsoft/Terminal Issues)を使う。

 ここを見ると、前記のフォントフォールバックやIMEの制御に関しては、すでに報告が上がり、対応が予定されているようである。

設定JSONファイルのJSONスキーマ対応

 プレビュー版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のJSONスキーマ対応
Windows TerminalのJSONスキーマ対応とは、設定用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をインストールした方がいいだろう。

VS CodeでWindows Terminalを設定する

 ここでは、JSONスキーマに対応したVS CodeでWindows Terminalを設定(JSONファイルを編集)するときにどのようになるのかを見ていこう。Windows Terminalが出力するJSONスキーマを示す「$schema」が示すURLには、Windows Terminalの設定JSONファイルのスキーマJSONデータが置かれている。

 JSONエディタは、この行からスキーマの公開先を知り、JSON編集時に利用する。具体的には、JSONファイル内の項目の注釈を表示したり、オブジェクトの名前を補完したり、値の選択肢を表示したりするといったことに使われる。また、キー割り当ての機能名などを間違えた場合、下線を表示しエラーを示す機能もある。マウスカーソルを当てると候補となる機能名を表示してくれる。VS CodeのJSONスキーマ対応はこうしたものだが、一般にどんな機能が利用できるようになるのかは、アプリケーションに依存する。JSONスキーマ対応だからといって必ずしも全てのアプリで同じことができるわけではない。

VS CodeでWindows Terminalを設定する(1)
VS CodeでWindows Terminalを設定する(1)
VS Codeで設定項目にマウスカーソルを合わせると項目の注釈を表示できる。これは、JSONスキーマから情報を得て行われる。

VS CodeでWindows Terminalを設定する(2)
VS CodeでWindows Terminalを設定する(2)
プロパティ名のところで先頭文字を入力すると、候補となるプロパティ名が表示され、補完入力が可能だ。

VS CodeでWindows Terminalを設定する(3)
VS CodeでWindows Terminalを設定する(3)
プロパティ名を補完で入力した後、値が特定の文字列だけを取るような場合には、候補が表示され、選択して値とすることが可能だ。これもJSONスキーマ側の定義による。

VS CodeでWindows Terminalを設定する(4)
VS CodeでWindows Terminalを設定する(4)
JSONスキーマには構造や許されるプロパティ名などが登録されており、エラーを検出することもできる。VS Codeではエラーがあると下線を表示し、マウスカーソルを合わせるとメッセージを表示する。

 なお、Windows Terminalは、v0.4から設定JSONファイルを読み込んだときにエラー箇所を表示できるようになった。このため、テキストエディタなどで編集しても、以前のように「何が間違っているのか分からない」ということは少なくなっている。

設定JSONファイルのエラー表示
設定JSONファイルのエラー表示
現在のWindows Terminalでは、設定JSONファイルのエラーを読み込み時に表示できるようになっている。

Cascadia Codeフォント対応のメリット

 v1909でのもう1つの大きな変更点であるCascadia Codeフォントについて見ていこう。Cascadia Codeフォントは、Windows Terminalと同じプロジェクトで開発が進められているプログラミングを想定した欧文フォントである。「Cascadia(カスカディア)」とは、Windows Terminalの開発コード名である。これに、「プログラミング」を想起させる「Code」と合わせてフォントの名称にしている。おそらく、Windows Terminalのユーザーとして、WSLを使ってEmacsやviなどのテキストエディタでプログラムなどを書く層を想定しているのであろう。

Copyright© Digital Advantage Corp. All Rights Reserved.

ページトップに戻る