山田祥平のRe:config.sys

めくるめくスクリーン




 世の中にはさまざまなデバイスがあり、それぞれが異なるサイズのスクリーンを持ち、そして、大きいスクリーンなのに低解像度だったり、小さいスクリーンなのに高解像度だったりと、そのスペックはまちまちだ。今回は、そのことが引き起こす問題について考えてみることにしよう。

●スクリーン解像度の仮想化

 アップルの新しいiPadの美しいスクリーンが話題になっている。なにしろ、2,048×1,536ドット/264dpiと、かつてないほどの高解像度だ。それが9.7型に凝縮されている。確かに地図なんて見た日には、これまでのスクリーンに対する既成概念をくつがえされそうだ。

 もし、このサイズ、解像度のスクリーンを、Windowsのモニタとして接続することができたとしよう。おそらくデフォルトでは使いものにならないはずだ。Windowsはデフォルトで96dpiを想定しているので、約36%の大きさで表示されてしまう。それでは表示されるオブジェクトが小さすぎて、マウスで操作するのもたいへんだし、そもそも文字が見えなくなってしまう。

 だが、iPad用のアプリは、iPad 2までと同じようなイメージでオブジェクトを表示する。アイコンの大きさも同じだ。だから、操作のフィーリングを妨げることがない。

 これは、iOSが、スクリーンの解像度を仮想化し、1,024×768ドット/132dpiに見せかけているからだ。スクリーンサイズは同じ9.7型だから、つまり、4つのドットを1つのドットに見立てることで、表示サイズの矛盾を解消している。アプリは何も知らなくても、勝手にいつものように表示ができているというわけだ。

 これは、device-independent pixel(dip)という考え方で、本来の解像度とは独立した仮想的なスクリーン解像度を決めておき、1dipはnドットだと定義することで、矛盾が起こらないようにするということらしい。そして、それをデンシティ(密度)と呼ぶそうだ。

●スケーリングとデンシティ

 近頃のAndroidスマートフォンは、スクリーンサイズに対して、高解像度化が進む一方で、場合によっては読むのもつらいほどのサイズでしか文字を表示できないものもある。アプリにフォントを調整する機能があれば、なんとかなることもあるが、それでも自由度が低い。

 Andoroidは、もともとdipの考え方を実装しているのだが、これまで手にしてきた端末でデンシティをエンドユーザーが変更できるものは寡聞にして知らない。スマートフォンはもちろん、タブレットなど、いろいろなサイズのスクリーンサイズを持つ端末ごとに、アプリケーションを作る開発者が画面を最適化していたらキリがない。だからこその実装だ。OSがきちんとこの考え方をサポートし、それをユーザーが自在に変更できるのなら、スクリーンサイズにかかわらず、解像度は高ければ高いほどいいだろう。

 Windowsは、この問題をスケーリングという方法で解決しようとしてきた。画面全体を拡大縮小することで、小さくなりすぎるオブジェクト表示を何とかするという方法だ。

 Windows 7の場合、800×600ドットを下回ると、縦方向のドット数が足りなくなってしまい、ダイアログボックスなどで、OKボタンが押せなかったり、設定項目をすべて表示しきれなかったりするケースが出てくる。そんな低解像度のスクリーンを使っていることはないとは思うが、スケーリングを200%にすると、1,024×768ドットのスクリーンも、512×384ドット相当になってしまい、こうした問題が起こってしまうのだ。

 期待のWindows 8でも、残念ながらこの問題は完全に解決されているとはいえない。ちなみに、MetroStyleアプリでは100%、140%、180%という仮想的なスケーリングを決め打ちしておき、個々のアプリがそのためのリソースをあらかじめ持っておくことで、解像度とサイズが異なるスクリーンでも、極端な違いがなく表示ができるようになっている。ただ、この対応はWinRTつまり、MetroStyleアプリだけであって、クラシックデスクトップでは対応がなく、従来通りのスケーリングのみで対処しなければならない。

 さらに残念なのは、マルチディスプレイに対応できていない点だ。Windowsは、複数台のディスプレイを接続して、デスクトップを拡張したり、クローンを作ったりすることができるが、ここでも問題は発生する。ディスプレイごとに異なるスケーリングを設定できるようになっていれば、どのディスプレイ上でも、表示されるオブジェクトのサイズを統一できるのにと思うと残念でならない。Windows Vistaからは、マルチディスプレイ環境で、ディスプレイごとに、カラーマッチングのためのプロファイルを個別に適用できるようになったのだから、こちらもついでにできるようにしておいてほしかった。そうしておけば、ノートPCに大型ディスプレイを接続したときにも違和感なく快適にWindowsを使うことができたはずなのだ。

●3年先を見据えているか

 これからのデバイスでは、スクリーンサイズと解像度はますます多様化していくだろう。スティーブ・ジョブズ氏は生前、7型スクリーンのiPadや5型スクリーンのiPhoneはありえないといっていたそうだが、iOSが、デンシティをうまく扱う限り、スクリーンサイズが異なっても、ユーザー体験を著しく損なうことはないだろう。ホームスクリーンのアイコンサイズは同じままで、横に4つだったのが3つになったり、5つになったりするだけで、使い勝手はそのままというデバイスを実現できる。

 Windows 8は、3年先、5年先の世の中が、どうなっているかをきちんと考える使命を持っている。その近未来に一般的に使われているであろうデバイスが、どのようなスペックを持っているのかをそれなりに予想し、そのための機能を実装しておかなければならないんじゃないだろうか。にもかかわらず、今の実装では、破綻はまぬがれないだろう。

 以前に書いたように、TVコンテンツのようなものは、デバイスが小さければコンテンツそのものが小さく映るだけで破綻することはない。でも、OSのデスクトップや、アプリの操作画面は違う。それにタッチ操作を想定するなら、人によって指のサイズはまちまちだし、ペンを使うケースもあるだろう。また、視力だって異なるわけだ。こうしたことをきちんと考えたら、5年後に現役で使われているかもしれないOSとして、ちょっと志が低いんじゃないかと思うのだ。いっそのこと、MetroStyleアプリでは、ビットマップのグラフィックスリソースを禁止するといった極端なやり方でもよかったんじゃないだろうか。

 iOSのように、それが動くデバイスを1社のみでコントロールできるのとは違って、WindowsもAndroidも異なるベンダーからさまざまなデバイスが提供され、それぞれが異なるスクリーンを持っている。それは最初からわかっているのだから、きちんと対応して、ユーザーに不便を与えないようにしてほしいものだ。