スキューモーフィズムのデスクトップはレンダリングの難題
スキューモーフィズムなWaylandデスクトップ「DEsk」は、フラットUIにはないGPU負荷を生みます。レイトレーシングの実コストを解説します。

正直、両陣営を怒らせそうな主張から始めます。スキューモーフィズムが消えたのは、ユーザーが嫌ったからではありません。ピクセル、GPUサイクル、デザイナーの工数のすべてにおいて高くついたからで、フラットデザインが勝ったのは美学ではなく経済性の問題でした。最近話題の DEsk は、Linux向けの本格的なスキューモーフィックなWaylandデスクトップで、ウィンドウはレイトレーシングで描かれたウォールナットの机の上に置かれた紙として表現されます。何年かぶりにこの論点を実地で試すプロジェクトで、しかもその主張を見事に裏付けています。部屋全体が一つのデスクランプで照らされていると決めた瞬間、GNOME Shellよりもゲームエンジンに近いレンダリング基盤を背負い込むことになるのです。
スキューモーフィックなデスクトップが実際に描画しなければならないもの
フラットデザインはレンダラーにとって優しい存在です。MutterやKWinのような現代的なコンポジターは、大半の時間をテクスチャ合成に費やしています。アプリがバッファを渡し、クワッドを描画し、角丸のシェーダーと影を少し適用するだけ。直近10年に作られたGPUならフレーム全体はほぼ無料で、解像度を問わず単純な変換で拡大できます。だからこそフラットUIが主流になったのです。
スキューモーフィズムは、この取り決めを全面的に崩します。デザイン言語が「このウィンドウは繊維と厚みがあり、端が折れたクリーム色の紙だ」と宣言した瞬間、次のものが必要になります:
- マテリアルのシェーディング — 紙は単なる色ではなく、繊維のテクスチャを持つ準拡散的な反射です。塗りつぶし矩形ではなく、ピクセル単位の処理が必要になります。
- 一貫した照明 — シーン内のすべてのオブジェクトが光源の位置について合意していなければなりません。デスクランプは一つのシャドウマップ(またはレイクエリ)を意味し、ライブのウィンドウ内容を含むすべてがそれに参加します。
- 接触影 — 「机の上に置かれた」ウィンドウには、紙とウォールナットが接する場所にアンビエントオクルージョンが必要です。さもなければ錯覚は一瞬で崩れます。
- 変形 — DEskでは紙の角を持ち上げて裏面をのぞいたり、閉じたウィンドウを丸めてボール状にしたりできます。これはスケールのアニメーションではなく、ライブテクスチャに対する頂点変位です。
どれも個別に見れば難しいことではありません。ゲームエンジンは何十年も前からこれをやっています。しかし、デスクトップコンポジターにはゲームにはない制約があります。「紙」の中身は任意のアプリの出力で、最大60fpsで更新され、事前計算できることは何もありません。つまり、ライブの映像フィードを繊維の上のインクであるかのようにシェーディングしているのです。
コンポジターがゲームエンジンになる
DEskのアーキテクチャ文書は、この転換を率直に説明しています。部屋(机、棚、コンソール、郵便ポスト)はGLES 3を使ってGPU上でレイトレーシングされ、CPUトレーサーがフォールバックとして用意され、結果は画面サイズごとにキャッシュされます。この一文に、エンジニアリング戦略のすべてが詰まっています。これを実現する唯一まともな方法なので、少し掘り下げてみましょう。
肝になるのは静的/動的の分離です。部屋を毎フレームレイトレーシングするのはばかげています。中程度のパストレーサーでも、ミッドレンジのハードウェアで1フレームに数秒かかります。しかし部屋は静的です。机もランプも動きません。そこで、ログイン時に一度だけトレースし(「初回ログイン時に部屋を一度描画します。GPUがあれば数秒、なければもっとかかります」)、放射輝度をキャッシュします。以降は部屋が単なるテクスチャ付きの背景になります。動的なオブジェクト(紙のウィンドウ、引き出し、郵便ポストの中の手紙)はその上にフォワードレンダリングされ、キャッシュされたシーンに合わせて照らされます。
// Sketch of the two-layer architecture a skeuomorphic shell converges on
struct frame {
// Layer 1: the room. Traced once at login, cached per output size.
texture room_cache; // desk, shelf, post box, baked lamp light
// Layer 2: dynamic objects, forward-rendered each frame.
vector<object> paper_windows; // app buffers mapped onto paper quads
vector<object> drawer_items;
vector<object> notifications;
};
void render(frame *f) {
blit(f->room_cache); // one textured quad, nearly free
for (auto &o : f->paper_windows)
draw_paper(o); // fibre shader + fake AO + dog-ear
composite(f->drawer_items, f->notifications);
}
これは偶然ではなく、1993年の『Myst』の仕組みそのものです。事前レンダリングされた静的なシーンに、動的なスプライトを合成する方式です。複数の観察者がDEskについて「『Myst』感が強い」と指摘しており、その指摘は思った以上に的を射ています。美的な親和性だけでなく、同じレンダリング構造なのです。大域照明は高価で、合成は安いという同じ制約がいまも成り立つため、同じ答えに行き着いています。歴史好きとしては、たまりません。30年にわたるGPUの進歩を経ても、「デスクトップにレイトレーシングをかけるにはどうすればいいか」への正直な答えは、いまだに「やらない。一度トレースして、そう見せかける」なのです。
マルチモニター設計にも同じ実利主義が見られます。画面ごとに大きな部屋をレイトレーシングするのではなく、追加のディスプレイには「机の板がそのまま続いている様子」が表示されます。静的な背景が拡張され、キャッシュされたシーンが出力間で償却されるのです。セッション中にモニターを抜いても、ウィンドウは残りの画面に付け替えられるだけです。単純ですが、ホットプラグのたびに再トレースするという本当に難しい問題を回避しています。
スキューモーフィズムは、フラットUIでは決して生じないGPU負荷を生む
負荷について具体的に見てみましょう。「重い」という言葉は、このスタイルの議論の大部分で、その正当性以上の仕事をしています。1つのウィンドウに対して、フラットなコンポジターと、DEskの紙のメタファーがそれぞれ何を要求するかを比べてみます。
フラット:クライアントのwl_bufferをテクスチャとしてバインドし、それをサンプリングするシェーダーで1つのクワッドを描画します。必要なら符号付き距離関数で角を丸め、安価な9タップの影を適用します。ウィンドウあたりのコストは、キャッシュに優しい領域からのわずかなテクスチャ読み取りだけです。
紙:クライアントのバッファは「インク」にすぎません。それに加えて、紙の基底レイヤー(繊維テクスチャ、縁の濃淡、厚みのリップ)、別のジオメトリとして独立した照明を持つ折れた角、シーン内のウィンドウ位置に依存する机との接触影、そして部屋のキャッシュに焼き込まれたランプに合う照明が必要です。さらにユーザーが縁をドラッグして「紙を引き出す」と、紙のクワッドは内容とは独立にリサイズされます。つまり、ウィンドウのジオメトリとサーフェスのジオメトリを切り離しているのですが、これは通常のコンポジターではどれもやっていません。

ただ、本当のコストはスループットではありません。現代のGPUは、テクスチャレイヤーを数枚増やしたくらいでは音を上げません。本当のコストはパイプラインの複雑さです。フラットなコンポジターのシェーダー予算は、セッション全体で1つか2つのプログラムで済みます。一方スキューモーフィックなシェルには、小さなマテリアルシステムが必要です。紙、ウォールナット、真鍮、ガラス(時計のランプのレンズ)、布地。マテリアルごとにシェーダーのバリアントがあり、バリアントごとに特定のドライバーで壊れる可能性があり、それぞれが共有のランプ照明と相互作用するため、個別に作成することはできません。これこそが、EnlightenmentやGTK2の時代のテーマ文化が消えていった理由であり、実務家からの最も強力な反論です。ウィンドウマネージャーは簡単な部分にすぎません。各アプリケーションはGTKやQtで自分の内容を描画し続けるので、コンポジター側のウォールナットをどれだけ足しても、libadwaitaのアプリが物理的な机の上にあるように見えることはありません。DEskはこれを部分的にしか解決していません。クライアント側で装飾されたウィンドウは「紙の上にも乗る」が、つまりメタファーはアプリを変えるのではなく、アプリを包むだけなのです。
Waylandは、これを易しくもし難しくもする
こうしたプロジェクトが2010年ではなく今存在する理由があります。Waylandの中核的なアーキテクチャ上の賭け、つまりコンポジターがフレーム全体を所有し、すべてのピクセルがそこを通るという考え方は、スキューモーフィックなシェルが必要とする賭けそのものです。X11では、アプリは好きな場所に描画でき、できることといえば、必死にウィンドウを付け替えて祈るコンポジットマネージャーくらいでした。Waylandでは、シェルは独立した綺麗なサーフェスバッファを受け取り、それをどう表示するかを完全に自由に決められます。角が折れた変形可能な紙のシートにサーフェスをマッピングしたいなら、Waylandは、それが不整合ではなく単に難しいだけになった最初のディスプレイシステムです。
しかしWaylandは同時にコストも押し上げます。デスクトップ環境はレンダラーではなく、レンダラー+20年分のプロトコルの積み重ねです。レガシーアプリのためのXwayland、入力メソッドのためのIBusブリッジ(DEskでは本棚の索引やメモ帳に入力できます)、音量つまみのためのPipeWire、輝度やフタの処理のためのlogind、時計のメディアページのためのMPRIS、ロック画面のためのPAM。どれも、GNOMEのような何百人もの貢献者が分担する統合ポイントです。DEskは「作るものと借りるもの」の間に明確な線を引いています。ネットワーク、Bluetooth、印刷、そして他のアプリのテーマ設定は既存のフリーソフトウェアに任せています。この借用戦略は、小さなチームがデスクトップ全体を出荷できる唯一の方法ですが、スキューモーフィックな錯覚がその境界で突然途切れることも意味します。Wi-Fiの設定は、他人のフラットなGTKパネルなのです。
試してみたい人のために補足すると、部屋は画面サイズごとにキャッシュされ、動的レイヤーは素のGLES 3によるフォワードレンダリングなので、定常状態のコストは特筆すべきものではないはずです。重いエフェクトを使うどのコンポジターとも同程度でしょう。問題となるのは、GPUのないマシンでのログイン時のトレース(CPUフォールバックはあるものの遅い)と、v0.1ベータ版全般の粗さです。レビュワーからは、コントロールパネルの電源キーのような状態を持つコントロールでアニメーションが不安定だという報告がありました。スキューモーフィックなUIでは、これは見た目だけの不具合ではありません。キーを回すアニメーションが誤動作すると、マシンが本当にシャットダウンするのかどうかがわからなくなります。アニメーションそのものが状態表示になるため、スキューモーフィズムはアニメーションの正しさへの要求を高めます。フラットデザインの見過ごされがちな美点は、トグルスイッチの描画状態がちょうど2つで、その中間がないことです。
なぜこのような作り方をやめたのか
定説では、スキューモーフィズムは松葉杖だったとされます。タッチスクリーンを人々に教えるための、実物らしく感じさせるメタファーであり、ユーザーが成長すると革のステッチは捨てられた、というわけです。しかしその話はほぼ誤りで、DEskが有用なのは、まさにその実際の経済性を露わにしているからです。スキューモーフィズムが消えたのは、2つのことが同時に起きたときでした。Retinaディスプレイによって、手描きのテクスチャが覆うべきピクセル数が4倍になったこと、そしてモバイルによってUIが、バッテリーを消費する非力なGPUで動くようになったことです。フラットなベクターUIは無料で拡大できますが、ブラッシュドメタルのテクスチャは1x、2x、3xすべてで用意しなければなりません。AppleのiOS 7のリデザインは趣味の進化ではなく、レンダリング予算の大幅な削減でした。GPUアクセラレーションされたターミナルが、TTYのグリフグリッドからシェーダーパイプラインへと進化した話を読んだことがあれば、反対側から同じトレードオフを見たことになります。アプリのコンテンツの中ではGPUを惜しみなく使うのに、クローム(UI枠)そのものはダイエットさせられたのです。
GPUとは無関係な、より深い理由もあります。一貫性は合成できないのです。一人のデザイナーは見事な物理的メタファーを作れますが、数千のサードパーティ開発者にはそれができません。本棚のメタファーはDEskの自社アプリでは機能します。しかしFirefoxが独自のフラットなグレーのUIを紙の上に描画した瞬間、小道具に貼られたスクリーンショットを見ているようなものになります。Hacker Newsのスレッドは、二方向からこれを言い当てていました。あるコメントはテーマ可能だったGTK2の時代を懐かしみ、別のコメントは最近のツールキットは「テーマを拒むように設計されているように見える」と指摘しました。デスクトップは机になれても、アプリが机になることは決してありません。メタファーは漏れ出し、テーマ環境を作った人なら誰でも、その漏れが錯覚にとって致命的だと知っています。これは、UXのアンチパターンがしぶとく残るのと同じ隔たりです。表面は直しやすいが、エコシステムは直しにくいのです。
逆張りの主張が崩れるところ
私はスキューモーフィズムが経済性で負けたと言いましたし、その考えは今も変わりません。ただ誠実であるためには譲歩も必要で、DEskの粗い部分がそれを示しています。
第一に、コストの一部はレンダリングではまったくなく、操作の曖昧さです。物理的なメタファーはユーザーの現実世界での期待を借りますが、物理には取り消しがありません。ウィンドウを閉じるのが「ボール状に丸めて投げ捨てる」ことだと、それは最初の一回は愛嬌がありますが、間違ったウィンドウを反射的に閉じてしまう40回目にはちょっと不安になります。フラットなクロームの抽象性は機能です。小さな×は約束であって、演出ではありません。第二に、状態の扱いです。物理的なオブジェクトは常に実際の状態どおりに見えなければなりません。引っかかったキー回しのアニメーションは、ぎこちない遷移ではなく、マシンが電源を切るかどうかについての嘘なのです。スキューモーフィックなUIは、フラットUIなら大まかでも許される場所で正確でなければならず、アニメーションの正確さはQAの時間として途方もなく高くつきます。UIが分散状態を忠実に反映しなければならないシステムを出荷したことがある人なら、それを身にしみて知っているでしょう。
フラットデザインの見過ごされがちな美点は、トグルスイッチの描画状態がちょうど2つで、その中間がないことです。真鍮のキーは無限の状態を持ち、そのすべてがバグ報告の候補になります。
第三に、アクセシビリティと発見しやすさは両方向に作用します。複数のコメントが、ファイルシステムのメンタルモデルを持ったことがない高齢のユーザーにとって、文字通りの机のメタファーは本当に役立つかもしれないと指摘していました。彼らは場所を丸暗記してクリックし、それが変わると回復できません。フラットUIには「彼らにとって内在的な論理がない」からです。机には論理があります。手紙は郵便ポストへ、書類は紙、残しておきたいものは引き出しへ。これは実在する論点で、ノスタルジーとして退けるのは怠慢です。しかし、同じ物理性が別のユーザーには機能を隠してしまいます。Super+Dで引き出しが開くことや、折りたたまれたウィンドウを中に入れられることをどうやって発見するのか。物理的なアフォーダンスは、オブジェクトが手の届く場所にあるときに機能しますが、キーボードショートカットは、どちらにせよ純粋に学習された抽象です。

DEskが本当に目指すもの
DEskを、今すぐ誰もがレイトレーシングされた机で作業すべきだという提案として読むのは誤りです。そんなことは起きません。冒頭で述べた経済性は今も成り立ちます。何十億台ものデバイスに出荷するプラットフォーム企業は、クロームへのピクセル単位のマテリアルシェーダー、手作業で調整したランプ照明、アニメーションの正しい真鍮のキーを負担できません。フラットデザインは、システムソフトウェアにとって正しい標準であり続けます。ちょうど橋にとってコンクリートが正しい標準であるように。
DEskが実際に示しているのは、Linuxデスクトップが10年にわたって証明する必要があったことです。コンポジターのレイヤーは、もはや媒体となるほど表現力を持っているということです。Waylandと現代のGPUは、意欲的な一人の開発者にも、長方形を並べるだけでなく、首尾一貫した世界を描ける十分な余裕を持つフルフレームのキャンバスを与えます。『Myst』時代の手法、つまり高価な光を焼き込み、動的レイヤーをフォワードレンダリングするという方法は、かつてこれを不可能にしていた性能の溝を埋めました。誰かが作る世界が、ノスタルジックなウォールナットの机であれ、あるコメント投稿者が夢想した『ノストロモ号』の操縦デッキであれ、まだ誰も想像していない何かであれ、それは趣味の問題です。ニュースなのは、その能力があるということです。
コンピューティングには繰り返し現れるパターンがあります。技術が成熟し、主流が最も安価で十分な美学に収束し、やがて趣味家が高価な美学を、職人技の一形態として再発見するのです。メカニカルキーボード、1ビットのディザリングアート、エミュレーターのCRTシェーダーでも同じことが起きました。スキューモーフィックなデスクトップは、その列の次に来るものです。何かを取って代わることはないでしょう。ただ、DEskの一つのデスクランプが部屋全体のレイトレーシングを照らしているように、フラットなグレーの長方形は最初からずっと予算上の判断だったのだと思い出させてくれるはずです。予算は、好みと違って議論の余地があるのです。


