このページの本文へ

前へ 1 2 次へ

Windows Info 第221回

Windows 10の新コンソール、Windows Terminalが完成直前のv0.11に

2020年04月26日 10時00分更新

文● 塩田紳二 編集● ASCII

  • この記事をはてなブックマークに追加
  • 本文印刷

 4月22日にWindows Terminal v0.11が公開された。今年になって、1月と2月にベータ版、3月にはv0.10としてRC(Release Candidate。製品候補)版となり、現在の予定では、5月にv1.0が登場する予定だ。v0.11は、その直前のバージョンにあたり、新機能は少ないが、これまでに追加されてきた機能の整理(特に設定ファイル関係)がなされ、多数のバグFixもある。

 そろそろ完成も近く、仕様もこのまま固まりそうなので、今回は、Windows Terminalについての情報を整理してみる。

v0.11では、国際化も進み、メニューなどに日本語が表示されるようになった。

そもそもWindows Terminalとは?

 すでに本連載では何回も紹介してきたが、初めて読む方のために、Windows Terminalをあらためて解説しておく。Windows Terminalとは、Windowsのコンソールウィンドウ(conhost.exe)に代わる、あたらしいコンソールウィンドウアプリケーションだ。

 これまでのWindowsでは、MS-DOS環境を模したconhost.exeを、すべてのコマンドラインアプリケーション用に利用していた。というか、Windows向けにコンソールアプリケーションを作れば、デフォルトではconhost.exeの中で動作するようになる。これは、Windows標準のコマンドラインインタープリターであるcmd.exeやPowerShell.exeだけでなく、さまざまな言語システムでも同様だった。

 しかし、conhost.exeは、MS-DOSの画面を手本とし、それに国際化などを追加してWindowsの進化に対応してきたため、問題も少なくない。たとえば表示文字セットは、もともとはASCIIコードのような1バイト文字セットを想定していて、ここに日本語などの複数バイトを使う文字コードを入れるために、16bit文字コードなどを扱うように改良されている。このために制限もある。わかりやすいものとしては絵文字を表示できないという点だ。さらにUTF-8が標準となるLinuxアプリケーションが動作するWSLの登場により、問題は複雑になってきた。

 マイクロソフトはconhost.exeの改良を進めてきたが、ついにそれを断念したのか、Windows Terminalというconhost.exeを代用するオープンソースプロジェクトを開始した。ただし、conhost.exeは、互換性のため現状維持したままWindowsには残り続けるようだ。

 Windows Terminalは、高性能なマルチタブ方式のコンソールウィンドウアプリケーションとして開発された。開発やシステム管理などで多数のコンソールウィンドウをタブというかたちで統合し、さらにタブ内をPaneで分割して利用することも可能だ。また、専用のCascadiaフォントは、開発者向けにプログラミング言語の記号をきれいに表示できる「プログラミングリガチャー」の機能を持つ。

Windows Terminal使いこなしのポイントは設定

 Windows Terminalは、設定をJSONファイルでする。このあたりが、従来のWindowsアプリケーションと大きく違うところだ。JSONは、元々JavaScript用に作られたテキスト型式のオブジェクトデータ表現形式だ。複雑なオブジェクトデータを表現できるものの、ルールが簡単でXMLほど面倒ではないし、CSVのように同一構造のレコードの並びに縛られるわけでもない。

 Windows Terminalでメニューから設定を選ぶと、JSON設定ファイルが出力される。もし、JSONファイル(拡張子が.json)に関連付けがあれば、該当のアプリケーションが起動するが、関連付けがない場合には、テキストファイルなのでメモ帳が開く。

 JSONには、JSONスキーマと呼ばれる仕様があり、これを解釈できるJSONエディターがあれば、編集時に補完入力や簡易文法チェックなどが可能になる。手軽に入手できるJSONエディターとしては、マイクロソフトのVS Code(ソフトウェア開発向けのテキストエディタ)がある。このあたりについては以前に解説した(「さらに開発が進む新コンソール「Windows Terminal」」)。

 JSONエディターやメモ帳でsettings.jsonファイルを編集したあと保存するとWindows Terminalはこれを自動的に読み込んで設定を完了させる。このときにエラーがあれば、ダイアログで通知される。

 なお、Windows Terminalは、設定項目にデフォルト値がある。Windows Terminalのメニューにある「設定」をAltキーを押しながら選択すると、settings.json同様にdefault.jsonというファイルが出力される。基本的な表記方法はどちらも同じだが、default.jsonは編集してもWindows Terminalはこれを無視する。なので、設定は必ずsettings.json側で行う。

 ただし、default.jsonにある記述と同じものをsettings.jsonで繰り返す必要はない。settings.jsonに記述するのは、default.jsonとの差分だけでよい。

 Windows Terminalのjsonファイルは、下の図のような構造になっている。

Windows Terminalはjsonファイルでこのような構造をしている。基本的にはdefault.jsonとsettings.jsonは構造は同じだが、settings.jsonは、default.jsonに対しての変更分だけを記述し、記述しない設定項目はdefault.jsonの設定が有効になる

 jsonファイル内は大きく4つのセクション「globals」「profiles」「schemes」「keybindings」に分かれている。このうち、「globals」「schemes」(カラー設定スキーム)と「keybindings」(キー割り当て)は、それぞれ専用の領域でその中で設定するものは限定されている。

 しかし、profilesセクションに指定可能な設定項目は、profilesセクション中のdefault領域もしくは、profile領域で設定が可能で、さらに一部の設定項目は、コマンドラインの起動オプションやキー割り当てでも設定ができる。こうした複数の設定には、優先順位が付けられており、それに従って最終的に有効な設定が決定される。このあたりをまとめたのが下の表である。

 profileは、Windows Terminalのタブで起動される「シェル」に関連する指定だ。cmd.exeやpowershell.exe、あるいはWSLのbashなどがタブ内で起動するプログラムとして指定でき、そのときのターミナル設定(たとえば、背景色や背景画像など)をprofile設定で指定できる。profileは複数設定が可能で、メニューやコマンドライン、あるいはキー割り当てでこれを指定してタブやペイン(タブ内を分割した表示領域)を開くことができる。

 「schemes」は、色指定をグループ化したもの。Windows Terminalでは、最大16色を文字や背景の色として使い分けることができるが、こうした設定を個別に設定するのは面倒なので、schemeとしてまとめて設定しておき、profile側ではschemeを指定することで利用する色をまとめて設定する。schemeは、以下の表のような構造になっている。なお、標準のschemeは、すべてdefualt.jsonで定義されている。

 これに対して「keybindings」は、キー割り当てをするもの。Windows Terminalのようなコンソールでは、テキストのコピーやペースト、画面スクロールなどはすべてキーで行う。また、タブを新規に開いたり、タブをペインに分割するといった操作もすべてキーで行う。keybindingsは、そのキー割り当てを行うものだ。ただし、このキー割り当てはすべてのprofileで共通である。キー割り当てに関しては、v0.11では、下の表のようになっている。

 同じものをキー名で並べ直したのが、以下の表だ。基本的には、default.jsonでキー割り当てが定義されており、これを変更したい場合には、settings.jsonのkeybindingsセクションを使って割り当てを変更する。

前へ 1 2 次へ

カテゴリートップへ

この連載の記事

注目ニュース

ASCII倶楽部

プレミアムPC試用レポート

ピックアップ

ASCII.jp RSS2.0 配信中

ASCII.jpメール デジタルMac/iPodマガジン