Microsoft の Windows (Neo) および Android (Duo) 向けデュアル スクリーン Surface デバイスは今年後半にリリースされる予定ですが、開発者はこれらのデバイスをサポートするためにアプリをどのように作成または書き直すのでしょうか。
そこから新たな疑問が生まれます。NeoとDuoは異なるOSを搭載しているにもかかわらず、似たようなデバイスと考えていいのでしょうか?それとも、Surfaceブランド以外に共通点はほとんどないのでしょうか?
Surface Neo はほとんどの Windows アプリケーションを実行でき、Surface Duo はほとんどの Android アプリケーションを実行できます。ただし、2 つの画面のうちどちらかで実行しても問題ない場合、および Microsoft が画面分割の問題を回避できる場合に限ります。つまり、Windows ユーザーは Neo で、Android ユーザーは Duo で、それぞれが自分のアプリケーションを実行できることを期待しますが、両方で同じアプリケーションが実行されることを期待するわけではありません。
Windows向けに、Microsoftはコアアプリケーションフレームワークにデュアルスクリーンサポートを追加します。これには、TwoPaneViewコントロール、ユニバーサルWindowsプラットフォーム(UWP)アプリケーション用のApplicationView.GetSpanningRects関数、そしてWin32アプリケーション用の新しいGetContentRects関数が含まれます。GetSpanningRectsとGetContentRectsはどちらも、アプリケーションがどのように表示されているか(1ペインか2ペインか)を通知します。
MicrosoftのWindows 10Xエミュレーター
TwoPaneView のコンセプトはシンプルです。このコントロールでは、2つのペインを定義し、そのうちの1つをプライマリペインとします。アプリケーションが1つのペインに配置されている場合は、プライマリペインのみが表示されます。アプリケーションが2つのペインにまたがっている場合は、2つ目のペインも表示されます。
ワンダーバーについても考えてみましょう。これは、ノートパソコンなどのデュアルスクリーンデバイスを使用すると表示される多目的領域です。Neoでは、キーボードが下画面の一部を覆いますが、画面の一部は表示されます。これはトラックパッドとして使用したり、入力候補を表示したり、アプリの最小バージョンを表示したりすることができます。
ノートパソコンのように使う場合、Surface Neoの下部ディスプレイの一部が、さまざまな用途に使える「ワンダーバー」になる。
Androidでは、Surface Duo SDKが既に(プレビュー版として)提供されていますが、MicrosoftはGoogleがAndroid 10に追加した折りたたみ式デバイスのサポートを利用することを推奨しています。また、Surface Duo固有のAPIも用意されており、ヒンジ領域を覆う、仮想的に存在するものの物理的には存在しない画面領域(ディスプレイマスク)を扱います。さらに、アプリが2画面にまたがって表示されているかどうかを調べるisAppSpanned関数も存在します。Surface固有のAPIを呼び出す前に、アプリが実際にSurface上で実行されていることを確認する必要があります。
Windows と Android の間には大きな違いがあるにもかかわらず、Microsoft は開発者に対し、Surface デュアルスクリーン デバイスをアプリケーションの構築や最適化を行うべきカテゴリとして考えてもらうよう努めており、この目的のためにクロスプラットフォーム開発を奨励しています。
現在、いくつかのアプローチがあります。Webアプリケーションを構築し、新しいCSSプリミティブとJavaScript APIを使用してデュアルスクリーンをサポートする方法があります。JavaScriptまたはTypeScriptでコーディングでき、TwoPaneViewコンポーネントを含む新しいデュアルスクリーンサポートを備えたReact Nativeを使用する方法もあります。あるいは、Xamarin Formsを使用して、XAMLで定義されたユーザーインターフェイスを使用してC#でコーディングし、そこで新しいTwoPaneViewコントロールを使用する方法もあります。ただし、クロスプラットフォームツールキットを使用した場合でも、Surface NeoとDuoのすべての機能を適切にサポートするには、開発者はデバイス固有のコードも作成する必要があります。
Microsoft のデュアル スクリーン Surface デバイスの開発者向けの選択肢は、Windows 8 でのアプローチを反映しており、UWP の前身である Windows 8 の最新アプリケーション プラットフォーム向けのコードを作成するために、JavaScript、C#、C++ のいずれかを選択できます。
Windows 10Xエミュレータデバイスポータルには、オペレーティングシステムの状態に関する詳細情報が表示されます。
MicrosoftはSurface NeoとDuoの両方のエミュレーターを提供しており、前者は(バグはあるものの)素晴らしい出来です。フライアウト画面では、仮想デバイスを傾けたり回転させたりすることができ、3D画像でその外観を確認できます。また、Windows Device Portalでは、ファイルエクスプローラー、実行中のプロセス一覧、デバイスマネージャー、ネットワーク診断、パフォーマンストレースなど、オペレーティングシステムの状態に関する詳細な情報を確認できます。
マイクロソフトのCEO、サティア・ナデラ氏は昨年、OSは「もはや当社にとって最も重要なレイヤーではない」と述べた。しかし、Windowsを基盤として成功を収めてきたマイクロソフトにとって、必ずしもそうではないかもしれない。
Windows 10Xには従来のデスクトップはありません。この画像では、左側にスタートメニューが全画面表示され、右側に設定アプリケーションが表示されています。
Surface Duoは、その魅力にもかかわらず、GoogleのOSに独自の個性を刻む上では貢献しているものの、敗北を認めたかのような印象を与えます。一方、Surface Neoは大胆な新製品であり、Windows Phoneの撤退後、モバイルデバイスにおけるWindowsの最後のチャンス(ほぼ9インチ画面が2つ搭載されている)と言えるでしょう。Windows 10XはデスクトップのないWindowsであり、セキュリティ対策が強化され、UWPアプリケーション向けに最適化されています。ただし、Win32デスクトップアプリケーションは独立したコンテナで実行されます。
Windowsでのデュアルスクリーンの採用は目新しいものではありませんが、今回のデュアルスクリーンは、単に利便性のために2画面にするだけでなく、フォームファクターを最大限に活用するように設計されたアプリケーションの開発へと進化しています。Android開発者にSurface Duoのためだけに余分な作業をさせるのは容易ではありません。一方、Windows開発者は、Microsoftの新しい方向性が1、2年で行き詰まってしまうことにうんざりしています。
とはいえ、既存のアプリケーションとの互換性があるということは、両方のデバイスで動作するものがたくさんあることを意味します。特にSurface Neoは試してみるのが楽しく、優れたモバイル生産性を実現する可能性を秘めているようです。期待外れになる可能性もありますが、ここ数年で最も興味深いWindowsの新たな取り組みと言えるでしょう。®