コンポジット型ウィンドウマネージャ (英 : compositing window manager )は、ウィンドウマネージャ の一種である。ウィンドウマネージャはコンピュータディスプレイ 上のグラフィカルユーザインタフェース (GUI) を描画・管理するソフトウェアであり、ウィンドウの配置を行い、ボーダーやタイトルバー などのウィンドウの追加的部品を描画し、ウィンドウ間の相互作用や他のデスクトップ環境 要素との相互作用を制御する。初期のウィンドウマネージャでは、個々のプログラムのウィンドウを表示用メモリ にレンダリング することをそのプログラム自身に任せていた。コンポジット型ウィンドウマネージャは、アプリケーションにスクリーンとは対応しないバッファ をウィンドウメモリとして用意し、個々のウィンドウのイメージを合成 (compositing) することでスクリーンのイメージを生成して表示用メモリにその結果を書き込む[ 1] [ 2] 。
コンポジット型ウィンドウマネージャはバッファ化されたウィンドウ群にさらなる処理を施すこともあり、2D および3D のアニメーション化したエフェクトとして、ブレンディング 、フェーディング、拡大縮小、回転、複製、折り曲げとねじ曲げ、混ぜ合わせ、ぼやけ、アプリケーションのリダイレクト、複数のディスプレイおよび仮想デスクトップ 間でのウィンドウの移動などがある。コンピュータグラフィックス技術により、陰影をつける、ライブ・プレビュー、複雑なアニメーションなどの視覚効果がリアルタイムで描画可能となった[ 3] [ 4] 。技術的にはダブルバッファリング が行われているため、更新の際にフリッカー (ちらつき)が発生することはない。
主なコンポジット型ウィンドウマネージャとしては、以下のものがある。
スタック型ウィンドウマネージャとの比較
ウィンドウマネージャ は、サイズを変更したときや他のウィンドウに隠されていたものを前に出したときなど、必要に応じて再描画させるためウィンドウにメッセージ を送る。スタック型ウィンドウマネージャ では、プログラムが遅いとか、応答しないとか、バグ だらけといった場合に適当な時間内にそのメッセージに応答できず、再描画処理が失敗することがある[ 5] [ 6] 。悪意あるプログラムで意図的にウィンドウの再描画をさぼると、(そのシステムが、善意を前提としたシステムの場合には)システムを不安定にすることも可能である。システムを不安定にするまででなくとも、たとえば、以下のような状態が生じることがある。
クリッピング されたウィンドウの隠されていた領域を再描画せず、結果としてその部分は空白のままか、他のウィンドウのイメージをそのまま表示させておく。
ウィンドウの一部(装飾的な影など)が何かの後ろに隠され、再び上に出てきたときに正しく再描画されない。
画面の更新が我慢できないほど遅くなる[ 7] 。
画面全体が問題のプログラムが応答するか終了するまでフリーズする[ 8] 。
コンポジット型ウィンドウマネージャでは、ウィンドウマネージャが再描画を要求してもウィンドウが再描画しない場合、最後の再描画結果が表示され続け、場合によってはそのウィンドウを減光して表示する。そのとき、そのウィンドウが応答しないという状態を反映してタイトルを変更することが多い。プログラムによってはそのウィンドウを動かしたりアンマップしたりできないこともあるが、一般に再描画問題は生じない。
歴史
コンポジット型ウィンドウシステムの初期の例としてコモドールのAmiga がある。アプリケーションは、まずその時点の表示領域以外のメモリ領域を要求し、それをビットマップとして使用する。するとAmigaのウィンドウシステムはハードウェアに備わっているblitter を使って一連の bit blit を行い、表示用メモリ内でアプリケーション群のビットマップを合成し、ボタンやスライダーなどを付与する。その間、アプリケーションは自身のビットマップを再描画する必要はない。
Metacity ウィンドウマネージャ(GNOME の一部)
2001年3月24日、Mac OS X v10.0 は主要なOSで初めてソフトウェアベースの3D合成・視覚効果を実現した Quartz を搭載した。Mac OS X v10.2 と Quartz Extreme では、合成処理を専用のグラフィックス・ハードウェアに任せられるようになった[ 2] [ 9] 。
サン・マイクロシステムズ はSwing ツールキット上のレイヤーとして野心的な3Dグラフィックスシステムを開発した。それが Project Looking Glass であり、2003年の LinuxWorld Expo で一般に公開された。アップルはサンを知的財産権 の侵害で訴えると脅したが、Looking Glass の機能の一部は他のウィンドウマネージャに実装されている。その開発開始から数年後、企業向けのシステムが事業の主力だったサンは Project Looking Glass の開発をやめた。
マイクロソフト は2003年の Windows Hardware Engineering Conference で Project Longhorn の Desktop Window Manager を公開した[ 10] 。Longhorn の開発が遅延したため、マイクロソフトが3Dコンポジット型ウィンドウマネージャを実際にリリースしたのは、2007年1月の Windows Vista リリースのときだった[ 11] 。
X Window System では、コンポジット型ウィンドウマネージャを実現するにはいくつか再設計が必要で、徐々に対応していった[ 12] 。2004年8月、Metacity 2.8.4 がリリースされた[ 13] 。しかし、X 向けのコンポジット型ウィンドウマネージャとして最初に注目されたのはXfwm で、2005年1月にリリースされた[ 14] 。2005年1月26日にはCompiz がリリースされ、Linux上の初の完全アクセラレーションの3Dコンポジット型ウィンドウマネージャとなった[ 15] 。KDEのKwin もコンポジット型である。
各OSにおける合成(コンポジット)・3Dエフェクト
合成3Dエフェクトにより、ウィンドウには3次元デスクトップの視覚効果が与えられる。最近のコンポジット型ウィンドウマネージャは3Dハードウェア・アクセラレーションを利用している。コンポジット型ウィンドウマネージャは、OpenGL やDirect3D のようなプログラミングインタフェース を通してグラフィックス・ハードウェアとやりとりする。
そのような技法を最初に採用したのは Mac OS X v10.2 で、Linux ではLuminocity のプロトタイプが最初だった。OpenGLを使っているウィンドウマネージャとしては Compiz、KWin、Quartz Compositor があり、Desktop Window Manager は DirectX 9 を使っている。OpenGLは完全にハードウェアでサポートされているわけではなく、OpenGLベースの合成の性能は今後もハードウェアの進化と共に向上することが見込まれる。
Microsoft Windows
Windows 2000 のウィンドウマネージャは合成を行っていたが、ピクセル単位のアルファブレンディングなどの変換は行っていなかった。アルファブレンディングを利用した商用アプリケーションは少なかった。オプション設定を通してだが、いくつかのフリーウェア がいち早くアルファブレンディングの実験を行った[ 16] [ 17] 。コンポジット型となったのは Windows Vista の Desktop Window Manager からである[ 1] 。
Windows Vista と Windows 7 ではテーマを「Windows クラシック」にすることで Desktop Window Manager を使用停止できる。さらにオーバーレイミキサフィルタ によるハードウェア・オーバーレイを行うときは Windows 自身が自動的にDWMを使用停止する。
Unix系
Unix系 のシステムで広く使われている X Window System (のXサーバ)において、スタック型ウィンドウマネージャは X video extension のブルーバック 機能を必要とした。合成は "Composite" extension として導入された。コンポジット型ウィンドウマネージャは、可能ならばこの拡張を通してハードウェア・アクセラレーションを利用する。
Ubuntu 8.04 Hardy Heron でCompizのシフトスイッチャをフリップモードで動作させているところ
LinuxおよびUNIXで完全3Dアクセラレーションの合成を行うには、X11 自体がハードウェア・アクセラレーションに対応するよう根本的な変更を行う必要があった。まず、Xgl などのOpenGL を利用してX11を一部修正した実装が登場。AIGLX の登場によってXglなどを使わなくて済むようになり、標準のXサーバ上で3Dアクセラレーションの合成を行うウィンドウマネージャが可能となったが、ダイレクト・レンダリング も可能である。NVIDIA 、インテル 、ATI などがAIGLXをサポートしたグラフィックス・カードを発売している。
Compiz では cube というエフェクトが導入されており、ユーザーは6つの仮想デスクトップを一度に見ることができる。各デスクトップは立方体の1つの面のテクスチャに変換され、立方体を自由に回転させることができる。Compizは様々な2Dと3Dの視覚効果を表示でき、ハードウェアに要求される性能は比較的低くてすむ[ 18] 。CompizはUbuntu に含まれており、サポートされているハードウェアやドライバが利用可能ならば自動的に使用できる。
Mutter (Metacity + Clutter ) はMetacityの後継として、GNOME のデフォルトのウィンドウマネージャとなった。GNOME 3.0 の GNOME Shell のコンポーネントとなっている。Mutter が使っているディスプレイ・エンジン Clutter は主なOSに移植されており、ネットブック やスマートフォン でも動作する。
KDE のウィンドウマネージャはバージョン4以降 KWin となっており、コンポジット型である。KWinはCompizと同等の機能を有している。
Java
Project Looking Glass は3Dレンダリングが可能なウィンドウマネージャで、クロスプラットフォームのJava 言語をベースとしている。開発は停止しているが、GNU General Public License でリリースされた。Granular Linux の live CD ディストリビューション にはオプションのウィンドウマネージャとして Looking Glass が含まれている。
開発中止の後、その機能の一部(カバー式切換え、サムネイルによるライブ・プレビュー)は他のウィンドウマネージャで採用された。他にもウィンドウのタイリング、両面型のウィンドウフレーム、背景のパララックス(視差)スクロールなどのユニークな機能がある。
AmigaOS 4 と MorphOS
AmigaOS とMorphOS は3D対応ハードウェアでも動作可能だが、Amiga 1200 以降の古い Amigaコンピュータでも動作するよう設計されている。そのため、ウィンドウマネージャはほとんど平面的なレンダリングを行うが、レイヤーの合成、アルファブレンディング、マルチデスクトップ(スクリーン)などの機能がある。
ユーザビリティと視覚効果
コンポジット型の手法では、使いやすさと視覚効果を高めたユーザインタフェースのための様々な機能を容易に実装できる。
拡大表示
TrueType フォントや3Dアクセラレーション要素などのベクターイメージ は、(通常エイリアシング による)画質低下なしに拡大可能である。スクリーン・マグニファイヤー は画面の一部領域を拡大し、その部分のテキストを読みやすくするもので、眼精疲労 を防ぎ、視力の悪い人のためであったり、単に画面が離れて多人数で見るときなどに役立つ。ズームエフェクトなども同様の機能を提供する。
ライブ・プレビュー
タスクバー 上でマウスポインタを操作することでサムネイル をポップアップさせてウィンドウのプレビューを表示する。これによって、その時点で動作中のプログラム群を識別して管理できる。
ウィンドウ切換え
Xglにおける基本的なウィンドウ切換え機能
Compizでのフリップ式切換え
KWinでのカバー式切換え
Compiz Fusion におけるリング式切換え
似たような名前やアイコンのウィンドウが複数あると混乱が生じやすく、特にそれらのタイトルバーが重なっていると混乱しやすい。そのため、タスクバー上のそのようなウィンドウの位置を覚えておく必要がある。そのようなウィンドウが多数存在するとき、ユーザーはタスクバーのボタンを次々に押下して目的のウィンドウを捜すことになる。ウィンドウ切換え機能は、複数のウィンドウが装飾的な背景に対して目立つように一時的に配置変えし、素早くプレビューできるようにする。選択後はウィンドウ群の配置が元通りになる。
選択は、ユーザーがホットキー を入力するか、マウスポインタを画面上の所定のホットスポットに置くか、場合によってはマウスのホイールを回すことで起動する。アイテムのナビゲートはキーボードかマウスで行う。アイテムの選択は、ホットキーのリリース、エンターキー押下、マウスクリックなどでなされる。
フリップ式切換え
フリップ式は、Alt-Tab による切換え機能を拡張したものである。動作中のウィンドウ群が重なった形に再配置される。これが1950年代のジュークボックス のフリップ式の選曲装置やローロデックス (回転式名刺整理器)に似ていることからフリップ式と呼ぶ。システムによっては、Alt-Shift-Tab の押下で逆順でナビゲートできる。ナビゲート中は各アイテムの移動中も視覚効果が適用される。
フリップ式の主な実装としては、Windows の Flip 3D と Compiz の Shift Switcher がある。
カバー式切換え
カバー式切換えはフリップ式とほとんど同じだが、見た目だけがやや異なる。選択すべきアイテムを1つに重ねるように配置するのではなく、現在選択されているアイテムを中央に置き、左右対称に2つのアイテムのスタックが表示される。これは Looking Glass における window tilting 機能に似ている。
macOS にはカバーフロー というカバー式切換えが実装されている。最近のバージョンでは選択されていないアイテムをぼやけさせて、選択されているものを目立たせるようになっている。カバーフローはアップルの他のソフトウェア、例えば iTunes にも採用されている。
これを「フリックブック・ビュー」(flick-book view) と呼ぶこともある。
リング式切換え
リング式はフリップ式に似ているが、ウィンドウ群を環状に並べて回転させ、通常その輪の一番下に表示されているものが選択されるウィンドウになる。ほとんどのコンポジット型ウィンドウマネージャは最初からこの機能を備えているし、3d-desktop のようなサードパーティのアプリケーションも利用可能である。
グループ化
ユーザーはウィンドウ群をグループ化でき、各グループの中の1つのウィンドウだけが同時に表示されるようにできる。グループ内で表示すべきウィンドウを切り替えるとウィンドウが裏返ってそのウィンドウが表示される。
Exposé
Mac OS X v10.3 から搭載された機能で、全ウィンドウを整列してプレビュー表示できる。他のシステム(Microsoft Windows, Compiz, KWin, サードパーティのアプリケーション)の同様の機能は「Exposéクローン」と呼ばれることがあった。Mac OS X v10.7 以降からMission Control に統合された。なお Exposé を起動するホットキーは Alt-Tab ではなく F3 である。
Mission Control
Mac OS X v10.7 以降から、Exposé、Dashboard 、Spaces といったコンポジット系の機能が統合されてMission Control という1つの環境となった。
ウィジェットエンジン
Mac OS では、ホットキー を押下することで時計・メモ帳・電卓などの「ウィジェット」(単一用途のアプレット )を表示できる。ウィジェットエンジンはよく使われるウィジェットを普段からアクセス可能にしておくことで、作業を効率化する。Mac OS 上ではDashboard プログラムがそれらを取り扱う。
Compizのウィジェット・レイヤーには最初は何もなく、ユーザーがアプリケーションをクリックすることで追加可能である。様々なウィジェットがあり、Screenlets 、gDesklets 、SuperKaramba などがある[ 19] 。
Windows Vista では ガジェット を Windows サイドバー (サイドバー・ガジェット)、Windows Live のスタートページ(Webガジェット)、携帯電話などの外部の表示機器 (Windows SideShow ) に配置できる。サイドバーは Windows 7 では無くなったが、後継として Windows デスクトップ ガジェット が登場した。
遷移途中などの視覚効果
コンポジット型ウィンドウマネージャが開発される以前は、ウィンドウは突然現れ、突然消えるもので、デスクトップメタファー としては不適切である。GUI 要素が突然出現・消滅することは、経験の浅いユーザーにとっては混乱の元となる[要出典 ] 。変化の過程を視覚的に見せることで文脈を提供し、GUI要素の因果関係を理解する助けとなる。ウィンドウが突然消える代わりに、徐々にフェードアウトしたり、小さくなっていってタスクバーに収まるといった視覚効果がある。クリックされたプルダウンメニューはメニューバーから滑らかに延びてきて、その起点と目的を認識しやすくする。
ユーザインタフェース・ファサード
Metisse はユーザインタフェース・ファサードを実装しており、既存のグラフィカルなインタフェースをダイレクトマニピュレーション 技法を使って簡単に設定変更・修正・再結合することができる[ 20] 。
主なコンポジット型ウィンドウマネージャ
スタンドアロンなコンポジットマネージャの一覧
xcompmgr —Compiz のミニマムな代替ソフトウェア。
Compton –xcompmgr のフォークである dcompmgr から、さらにこのバグフィックスを行ってフォークされたもの。
Cairo Compmgr (Cairo コンポジットマネージャ)—既存のウィンドウマネージャ用のコンポジット・アドオン。これは、GTK+ も使用するベクターグラフィックスライブラリ Cairo を利用する。
Unagi コンポジットマネージャ —これは既存のウィンドウマネージャと一緒に使える合成マネージャである。XCB ライブラリを使用している。
MCompositor—これは、MeeGo ハンドセットで使用されている。
コンポジット型ウィンドウマネージャを採用しているOS
脚注・出典
関連項目
外部リンク