1. トップ
  2. 新着ニュース
  3. IT
  4. IT総合

Windows 10で正式に導入され、11で改良が進んだ「仮想デスクトップ」

ASCII.jp / 2023年5月7日 10時0分

「仮想デスクトップ」には長い歴史と面倒な事柄が

 Windows 11には「仮想デスクトップ」と呼ばれる機能がある。Windows 10で標準搭載された機能を継承したものだ。この「仮想デスクトップ」には、長い歴史と面倒な事柄がある。

Windows 11では、タスクビューアイコンの上にマウスカーソルを置くと仮想デスクトップのフライアウトが開く。ここでは、新規仮想デスクトップの追加の他、右クリックメニューで名前の変更や並べ替え(ドラッグ&ドロップでも可)などができる

 そもそも、Windowsには「仮想デスクトップ」と呼ばれるものが2つある。1つは、Windows 11に搭載されている「仮想デスクトップ」で、デスクトップ画面を複数切り替えて利用する機能だ。歴史的には、この機能が「仮想デスクトップ」(Virtual Desktop)と呼ばれている。

 もう1つの「仮想デスクトップ」は、Windowsの「VDI」(Virtual Desktop Infrastructure)で使われるものだ。簡単に言えば、他のマシンや仮想環境で実行したWindowsのデスクトップをローカルマシンに表示するとき、これを「仮想デスクトップ」と表現している。Windows以外では、「デスクトップ仮想化」(Desktop Virtualization)と表記することが多い。

 しかし、勝てば官軍、質よりも量、Microsoftが「デスクトップ仮想化」を「仮想デスクトップ」と表記してしまえば、これが多く場合で通ってしまう。ただ、VDIは、一般消費者ではなく、主にシステム管理者やIT技術者といった範囲で使うことが多いので、人間同士が話をする場合にはさほど混乱はなかった。VDIを知っている人は、仮想デスクトップに2つの意味があることを知っていることが多かったためだ。

 ところが、インターネット検索はこうした意味が複数ある用語の区別をきちんとしてくれるわけではない。「Windowsの仮想デスクトップ」と検索すれば、検索結果には両方の意味が含まれる。かくして、「仮想デスクトップ」がよくわからないものになってしまったわけだ。

 仮想デスクトップ自体は、Windowsよりも歴史が古い存在だ。最初の仮想デスクトップは、有名なXeroxのPARC(Palo Alto Research Center)で開発され、1986年に「Rooms」というソフトウェアの論文として発表された。実際にはこれ以前に開発されていたと考えられるが、いろいろと調べてみたが明確な文書が見つからなかった。

 商業システムでは、1990年のSWM(Solbourne Window Manager、X Windows System用のウィンドウマネージャーの1つ)に「Virtual Desktop」として搭載された。そもそも「Virtual Desktop」という名称は、ここから始まり、Solbourne Computer社の商標だった。Solbourne Computerは、同社が設計し、松下電器が製造したSPARC互換チップKAP(MN10501)を採用したことでも知られる。

 XeroxのRoomsは、のちにWindows 3.0(1990年)のアプリケーションとして発売された。この時代、仮想デスクトップは、サードパーティのアプリケーションとして作られていて、Microsoftからは提供されていなかった。

 曲がりなりにもMicrosoftから提供された最初の仮想デスクトップは、Windows XP用のPowerToys(2009年)に含まれていた「Virtual Desktop Manager」である。その後継のWindows Vistaは開発が遅れたためPowerToysはリリースされなかった。しかし、2006年にMicrosoftに買収されたsysinternalsは、Desktopsという仮想デスクトップソフトウェアを開発していた。これにより、Windows VistaからWindows 8.xまで、Windows用の仮想デスクトップソフトウェアが提供されることになった。

Windows 10で正式採用、11で改良

 仮想デスクトップが正式なWindowsの機能として搭載されたのは、Windows 10のことだ。Windows 10では、最初のTH1(Windows 10 ビルド10240、バージョン1507)から仮想デスクトップが導入されたが、途中、仮想デスクトップに名前を付ける機能が追加された程度だった。

 しかし、Windows 11になるときに改良が進み、背景の個別指定やタスクビューアイコンでのマウスホバーによるサムネイル表示、ドラッグ&ドロップでの並び替えなどの機能が追加された。Windowsの標準機能になり、ようやくデスクトップの一員となった感じだ。

 Windowsの仮想デスクトップは、ウィンドウの表示状態を制御して実現されている。ウィンドウあるいはアプリケーション(プロセス)と、仮想デスクトップを紐付け、選択されている仮想デスクトップに紐付けられたウィンドウのみを表示し、それ以外のウィンドウは隠すというやりかたで実現されている。

 このため、別の仮想デスクトップに表示されているアプリケーション自体はずっと起動したままだ。デスクトップアプリでは、プロセス状態に変化はないが、UWPではフォアグラウンド状態でない(バックグラウンド状態の)アプリはスリープ状態となる(必要に応じてバックグラウンドタスクを実行することは可能)。

 このときUIのレンダリングやアニメーションを止め、不要なリソースを解放することが推奨されている。つまり仮想デスクトップは、UWPアプリケーションとは相性がよい。これに対して、デスクトップアプリは、非フォアクラウンド状態では、リソースを解放するわけでもなく、場合によってはプロセスが動作したままになる。

 Windows 11では、作成した仮想デスクトップは、再起動しても維持される。「設定」→「アカウント」→「サインインオプション」で「再起動可能なアプリを自動的に保存し、再度サインインしたときに再起動する」がオンになっていると、再起動したときアプリ(再起動可能なもの)が起動されて仮想デスクトップに配置される。

 逆に言えば、このオプションが有効になっていなければ、再起動前に仮想デスクトップ内で動作していたアプリが元の仮想デスクトップに表示されることはない。仮想デスクトップの利用頻度が高いなら上記の設定は便利だが、たまにしか使わない場合、別の仮想デスクトップでアプリが起動したままになっていて、気づかない可能性もある。

APIも用意されてはいる

 Windows 10/11には、仮想デスクトップ用のAPIがあるが、可能なのは、

・アプリのウィンドウが存在する仮想デスクトップのID(GUID) ・現在の仮想デスクトップにウィンドウがあるかどうか(TrueかFalse) ・指定した仮想デスクトップへウィンドウを移動させる機能

の3つだけ。仮想デスクトップIDは、バージョン4のGUIDが使われており、仮想デスクトップが作られるときに乱数を用いて生成されていると考えられる。

 APIは、自分のウィンドウがある仮想デスクトップIDしか得ることができないため、ウィンドウを移動させるAPIは、自分のウィンドウが存在する仮想デスクトップしか行き先を指定できない。これは、ユーザーの操作で別の仮想デスクトップにウィンドウが移動させられたときに、残りのウィンドウを移動させる、2重起動されたときに前に起動したアプリのウィンドウを現在の仮想デスクトップ移動させるぐらいしか使い道がない。

 仮想デスクトップでは、アプリやウィンドウをすべての仮想デスクトップに表示させる設定をユーザーができる。テストプログラムを作って確認してみたところ、アプリに対してこの指定がされると、アプリは存在する仮想デスクトップとは異なるIDを得る。つまり、この設定をして、仮想デスクトップを切り替えていっても、アプリケーションは、固定した別のID(強いて言えばすべての仮想デスクトップに対応するID)しか得られない。

 仮想デスクトップに関する情報は、レジストリに記録がある(Windows 11 Ver.22H2で確認)。レジストリキー「HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\VirtualDesktops」以下に仮想デスクトップの状態が記録されている。Desktopsキー以下に仮想デスクトップIDと同じGUIDでキーが作られており、ここを見れば、仮想デスクトップに付けた名前(ただし、ユーザーが指定したときのみ)や背景画像を知ることが可能だ。

 仮想デスクトップは外出中のノートPCなど、マルチディスプレイが利用できない環境で複数の作業を並行して進める場合に便利なことがある。ただ、常に仮想デスクトップを利用していることを意識していないと、すでにアプリを起動しているのにもかかわらず、二重起動することがある。

 またWin32アプリは、起動したまま資源を専有した状態になるため、メモリの少ないノートPCなどでは、リソース不足に陥りやすい。やけにマシンの動きが悪いとおもったら、多数のプログラムが起動されていたなんてことにもなる。せめてタスクマネージャー程度は起動して、メモリ残量程度は監視しておきたいところだ。

この記事に関連するニュース

トピックスRSS

ランキング

記事ミッション中・・・

10秒滞在

記事にリアクションする

記事ミッション中・・・

10秒滞在

記事にリアクションする

デイリー: 参加する
ウィークリー: 参加する
マンスリー: 参加する
10秒滞在

記事にリアクションする

次の記事を探す

エラーが発生しました

ページを再読み込みして
ください