WindowsTerminalは年内に正式版に
適した等幅フォントも開発しているようだ
マイクロソフトは、WindowsTerminalを年内に正式版とする予定だ。現時点の目標としては、CMD.EXEやPowerShell.exe、WSLのコンソールとしての利用が想定されている。一番の狙いは、文字コードの扱いや表示方法を変更することにある。
Windowsのコンソールは、文字コードを「コードページ」という形で扱っていた。また、表示にはWindows初期からあるGDI(Graphics Device Interface)を利用していた。
これに対して、WindowsTerminalでは、文字の描画にはDirectWriteを使い、高速で高品質の文字描画を可能にする。このため、UTF-8エンコード方式によるUnicodeの利用が可能になり、いわゆるフォントフォールバック機能も利用可能となるため、絵文字のように、指定フォントファイルにない文字でも、他のフォントファイルを使って表示できるようになる。
従来のコンソールでは、文字エンコードにコードページを使っており、一度に利用できる文字範囲に限界があった。このため、シフトJISのコードページ(932)が指定されているときには、他国語のフォントを表示することができなかった。
マイクロソフトでは、WindowsTerminalの開発に合わせてプログラミングなどに適した等幅フォントを開発している。これは、16進数を表記するのときの「0x」と通常文字の「x」を分けるなど俗に「Programing ligature」と呼ばれる表示が可能なものになるとされている。なお、従来のコンソールはそのまま、Windows付属のプログラムとして残ることになるという。
とりあえず、今年の夏には、プレビューが開始され、パッケージをMicrosoftストア経由で入手できるようになるとされる。また、最終配布は、今年の年末になるようだ。
コンソールホストとコンソールウィンドウが分離
過去を引きずらない、まともなコンソールがようやくWindowsに
もともと、Windowsでは、コンソールアプリケーションは、コンソールAPIを使ってコンソールを制御するものとされていた。
これに対して、Unix/Linuxでは、原則コンソールとは文字ベースでやりとりする。
WSLの導入により、標準入出力を使って文字のみをやり取りするLinuxの「シェル」が使われるようになった。このため、出力されるテキストからエスケープシーケンスを使って画面制御をおこなう必要が生じたわけだ。
こうした問題に対して、昨年8月には、コンソールAPIをつかさどるConHostと呼ばれるモジュールに仮想コンソール(ConPTY)が搭載され、コンソールウィンドウとは分離されることになった。これにより、従来型のコンソールAPIを使うアプリケーション(たとえば、CMD.EXEやPowerShell.exe)と、Unix/Linux型のシェルの両方に対応できるようになった。
なお、WindowsTermialでは、複数のConhostと接続可能で、それぞれを個別の「タブ」で表示する。
WindowsTerminalにより、WSLなど、CMDやPowerShell以外を利用する場合にようやく“まともな”コンソールが利用できるようになった。これなら、SSHなどを介して、Linuxマシンなどに接続して利用することも不可能ではないだろう。
この連載の記事
-
第459回
PC
WSL 2.4.4ではtar形式でのディストリビューションが配布でき、企業での利用が容易になってきた -
第458回
PC
Windows上でhostsファイルを活用する -
第457回
PC
IPv6アドレスは先頭を見ればどんな種類かわかる -
第456回
PC
あらためてIPv6基本のキ -
第455回
PC
Windowsで現在どのネットワークアダプタがインターネット接続に使われているかを調べる方法 -
第454回
PC
Windows 11 24H2では「デバイスの暗号化」の条件が変わり、より多くのPCでドライブが暗号化される -
第453回
PC
Windows 11 24H2の配布開始後もすぐにはやってこない Windows UpdateとSafeguard Holds -
第452回
PC
Windows 11 Ver.24H2が登場 Copilot+ PCとそうでないPCで実質Windowsが2つに分かれる -
第451回
PC
新しいWindowsサンドボックスではコマンドラインからの制御が可能に -
第450回
PC
ユニコードで文字数を数える方法 -
第449回
PC
WSLはプレビュー版でGUIでの設定が加わった! リリース2.3.xの新機能を見る - この連載の一覧へ