このページの本文へ

前へ 1 2 次へ

Windows Info 第175回

Windows 10に“まとも”に使えるコンソール「WindowsTerminal」が登場する

2019年06月02日 10時00分更新

文● 塩田紳二 編集● ASCII編集部

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

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を使ってコンソールを制御するものとされていた。

Windowsのコンソールは、シェル側からAPI経由で制御することを想定して作られていた

 これに対して、Unix/Linuxでは、原則コンソールとは文字ベースでやりとりする。

これに対して、UnixやLinuxでは、テキストでのやりとりに限定し、仮想端末(PTY)を介して、コンソールウィンドウとシェルプログラムを結びつける

 WSLの導入により、標準入出力を使って文字のみをやり取りするLinuxの「シェル」が使われるようになった。このため、出力されるテキストからエスケープシーケンスを使って画面制御をおこなう必要が生じたわけだ。

 こうした問題に対して、昨年8月には、コンソールAPIをつかさどるConHostと呼ばれるモジュールに仮想コンソール(ConPTY)が搭載され、コンソールウィンドウとは分離されることになった。これにより、従来型のコンソールAPIを使うアプリケーション(たとえば、CMD.EXEやPowerShell.exe)と、Unix/Linux型のシェルの両方に対応できるようになった。

現在のWindowsのコンソールホストは、表示ウィンドウとは分離され、間にConPTY(仮想コンソール)を挟んで接続するようになっている

 なお、WindowsTermialでは、複数のConhostと接続可能で、それぞれを個別の「タブ」で表示する。

複数のコンソールホストはそれぞれWindowsTerminalのタブと接続し、独立したシェルが動作できる

 WindowsTerminalにより、WSLなど、CMDやPowerShell以外を利用する場合にようやく“まともな”コンソールが利用できるようになった。これなら、SSHなどを介して、Linuxマシンなどに接続して利用することも不可能ではないだろう。

前へ 1 2 次へ

カテゴリートップへ

この連載の記事

注目ニュース

ASCII倶楽部

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

ピックアップ

ASCII.jp RSS2.0 配信中

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