互換性は問題ないが、ハードウェアの変革により
タッチ操作への対応が必要に
Windows 8では、大きく分けて2種類のアプリケーションが存在する。一つは、タッチ操作に最適化されたWindowsストアアプリ(旧称:Metroスタイルアプリ)。そしてもう一つが、デスクトップ上で実行される従来型の「Windowsデスクトップアプリケーション(以下、デスクトップアプリケーショ ン)」だ。
Windows 8に関して、「Windowsストアアプリ(旧称:Metroスタイルアプリ)」の情報は多数公開されているものの、デスクトップアプリケーションについての情報を目にすることは少ない。Windowsアプリケーション開発者としては、これまでのアプリケーション資産がデスクトップでそのまま問題なく使えるのか、また、今後デスクトップアプリケーションを開発する上で何が変わるのかといったことも気になるところだろう。
八巻氏はまず、マイクロソフトのWindows開発者向けイベント「Build 2011」の基調講演で示された「Windows 8では、Windows 7で動作していたものがすべて動く」というメッセージを引用しながら、「アプリケーションの互換性については、ほとんど心配する必要はない」と説明。Windows 8では、Windows 7 と同様にVB6(Visual Basic 6.0)のランタイムがサポートされることも補足した。
総じて、Windows 8ではWindows 7との高い互換性が保たれており、デスクトップアプリケーションの移行自体に大きな問題はないといえるだろう。とはいえ、「まったく変える必要がないわけではない」と八巻氏は強調する。
「ソフトウェアは変わらなくても、今後ハードウェアが大きく変わっていく。そのハードウェアの変革にデスクトップアプリケーションも対応することが求められる」
「ハードウェアの変革」の具体例として八巻氏が挙げるのは、タッチ操作可能なデバイスの普及だ。Windows 8の一般向けリリースと同時にマイクロソフトが発売する「Surface」(2012年9月時点で日本での発売は未定)のように、スレートPCとしてもノートPCとしても使える「ハイブリッド型PC」が登場し、今後ますます普及していくことが予想される。
ノートPCとしてしか使えない従来のPCとハイブリッド型PCとの価格差がそれほどなければ、多くのユーザーは特にタッチ操作対応を望んでいないとしても後者を選ぶだろう。また、Windows 8はタッチ操作に最適化されたOSであることが広く認知されているため、ハードウェアメーカーとしても、タッチ操作に対応したWindows PCに主力製品をシフトしていくと考えられる。
しかし、そもそもWindows 8でタッチ操作向けのアプリケーションに適しているのは、新しい「Windowsストアアプリ」のほうだ。あえてデスクトップアプリケーションをタッチ操作に対応させる必要はあるのだろうか? これについては、八巻氏は次のように説明した。
「今後、ハイブリッド型PCのようにタッチ操作可能なPCが普及していくに従って、たとえタッチ操作をまったく考慮していないデスクトップアプリケーションであっても“タッチ操作されてしまう”というケースが増えていく。これは不可抗力であり、アプリケーション側でそれを拒むことはできない」
なお、タッチ操作をまったく考慮していないデスクトップアプリケーションでも、ある程度はタッチ操作に対応できるように担保されている。Windows 7から搭載されている「レガシーサポート」と呼ばれる機能により、所定のタッチ操作に対応するマウス操作がエミュレートされるのだ。
例えば、タッチ(タップ)したときにはマウスの左クリックに相当する操作(WM_LBUTTONDOWNメッセージ)となり、ブラウザなどで指2本を使ってピンチ操作したときには[Ctrl]キーを押しながらマウスホイールをスクロール操作するのと同じように拡大・縮小が行える(lParamでMK_CONTROLが設定されたWM_MOUSEWHEELメッセージ)。
(次ページ:「ディスプレイの高精細化」への対応も考慮すべきポイント)
「ディスプレイの高精細化」への対応も考慮すべきポイント
もちろん、レガシーサポートですべての操作をカバーできるわけではない。例えば、シンプルな例として「UIのサイズがマウス用には小さすぎて、正確なタッチ操作を行うことが不可能」という場合がある。単純にパーツを大きくすればタッチ操作自体は可能になるかもしれないが、一つ一つのパーツを大きくしたら元の画面には収まらなくなってしまう。
「特に業務アプリケーションの場合などは、いかに1画面にうまく要素を配置して収めるかを重視して設計されているものが多いので、1つの要素を大きくしただけでもレイアウトが崩れ、収まりきらない要素が出てくるはず」(八巻氏)
この解決策としては、「レイアウトを保ったままサイズを確保する」方法があるという。八巻氏は参考例として「おそらく、マイクロソフトのデスクトップアプリケーションの中で初めてタッチ操作を意識したもの」だという、Office 2013(Preview版)を挙げた。
Office 2013では、通常モードのほかに「タッチモード」が用意されており、リボン部分などを通常モードよりも拡大してタッチ操作しやすいように表示できる。ただし、レイアウトを崩さず、表示範囲や機能を犠牲にしない範囲でバランスをとって拡大するので、特にメインの画面を拡大できる範囲には限界がある。逆に、カラーピッカーなどのポップアップウィンドウのようにメイン画面から独立して表示され、他に影響しないものなら、十分な大きさまで拡大可能だ。
続いて八巻氏は、タッチ操作可能なデバイスの普及のほかにもう一つあるという、デスクトップアプリケーションに大きく影響する「ハードウェアの変革」について触れた。それは、ディスプレイの高精細化だ。
「インテルが予測したロードマップによれば、2015年の時点で、24~30インチのデスクトップ用ハイエンドディスプレイは4800×2700ピクセルにまで達するとされている。そこまでは到達しなかったとしても、早いか遅いかの違いだけであって、今後もディスプレイの高精細化が進むこと自体は確実と思われる」(八巻氏)
例えば、既存の業務アプリケーションでは1024×768ピクセルの固定ウィンドウサイズというパターンが比較的多いと思われるが、それを高精細ディスプレイにそのまま表示すると、判読することもマウスで操作することも不可能なほど小さくなってしまう。そのような表示とならないように、Windowsには、フォントやUIのサイズをスケーリングする「DPIスケーリング」という機能がある。
「Windows 7まではDPIスケーリングの値はユーザーが任意に設定するものであり、既定値は常に100%だったが、Windows 8では表示するディスプレイの物理サイズ、解像度、ピクセル密度(PPI)に合わせて、システムが自動的に既定値を設定するようになった」(八巻氏)
八巻氏はほかにも、Windowsのスケーリングについて、XP以前とVista以降の2つの形式の違いや、Windowsフォームのスケール処理の注意点として、異なるシステムフォントサイズ/DPI設定の開発環境でプロジェクトを共有できないこと、動的に位置やサイズを設定する際には比率を乗算して求める必要があること、スケール処理は各コントロールの実装に依存することなどを説明。
最後にまとめとして、「グレープシティでも、Windowsフォーム、WPF、ASP.NET Webフォームの主力製品において、タッチ操作や高DPIへの対応を予定している。皆さんがこれからデスクトップアプリケーションを開発される際にも、ぜひ今回お話ししたようなことを意識しながら、Windows 8時代にも十分対応できるアプリケーションを作っていっていただきたい」と語り、セッションを結んだ。
なお、グレープシティでは同社Webサイトにて今回の講演内容をより詳しく解説したPDF資料「Windows 8がデスクトップ開発に与える影響とその対応」を公開している(下記ページの右上のリンクより)。