December 2015

Volume 30 Number 13

最新のアプリ - Windows 10 アプリ開発について知っておくべきこと

Rachel Appel | December 2015

Rachel Appel今回は、Windows 10 アプリ開発についての現状や課題をいくつか紹介することで、開発者が Windows 10 アプリ開発について理解し、効率的よく利用できるようにサポートしたいと考えています。取り上げる特徴には、一般ユーザーが利用する場合に当てはまるものもいくつかありますが、開発者は、ユーザーの視点と、自身がビルドするソフトウェアにとってのメリットという視点の両面から考えることが大事だと思います。

Visual Studio 2015

マイクロソフト開発者のほどんどが使用する IDE は Visual Studio です。Visual Studio 2015 について最初に気付く変化は、新しい簡易インストーラーが含まれている点や、複数のアカウントを使用してサインインできる機能です。これは、日中は社内ネットワークを利用して仕事をし、夜間にアプリを社外のストアに発行するコンサルタントや企業開発者にとって便利な機能です。

Visual Studio のインストールに利用できるサードパーティ製ツールは非常にたくさんあります。重要なクロス プラットフォーム開発に必要なすべてのソフトウェアが含まれる Xamarin は、そのまますぐに利用できます。ただし、Xamarin をインストールに含めるオプションを選択しなければなりません。Xamarin と C# をインストールするオプションに加えて、Android 向け Javaと、iOS と Android の両方を対象とする C ベースの言語をインストールするオプションがあります。

一般に、Visual Studio のエディションとライセンスについて、どの機能がどのエディションに含まれているかを理解し、覚えるには、博士号の資格が必要なほど難解に思えます。さいわい、https://www.visualstudio.com/ja-jp/products/compare-visual-studio-2015-products-vs.aspx で Visual Studio 2015 の各エディションの機能やサービスを調べて、比較できます。

Visual Studio の新しいリリースにはすべて、新しい一連のテンプレートが付属してます。ASP.NET では、ASP.NET MVC 6 アプリ全体で利用できる依存関係の挿入を利用して疎結合される Web サイトを、テンプレートを使ってビルドできるようになります。Microsoft ストアにアプリを配置する場合は、ユニバーサル Windows プラットフォーム (UWP) アプリという考え方を重視します。そうすれば、開発者は、すべての Windows OS と、その Windows OS を実行するすべてのデバイスを対象に、共通コード ベースを基盤とするアプリをビルドできるようになります。C#、Visual Basic、JavaScript、C++ のいずれを使用しても、UWP アプリを作成できます。UWP アプリについては、後ほど詳しく取り上げます。

新しい Edge ブラウザーで優位に立つ

Windows における最も顕著な変化で、よく話題にされるのが、滑らかかつ高速のブラウジング エクスペリエンスを提供する Edge ブラウザーです。Edge を少し使用するだけでも、以前の Internet Explorer と大きく違うことがわかります。まず、ブラウジング エクスペリエンスに多くの強化が施されています (bit.ly/­1G49Cwe、英語を参照)。最も明らかな変化は Edge の見た目の滑らかさです。コンテンツ全体がカスタマイズ可能になっているスタート ページや、全体的なルックアンドフィールが変わっています。図 1 は、Windows 10 の Edge ブラウザーで開いた MSDN マガジンのホームページです。

柔らかく、滑らかなエクスペリエンスを備えた Edge ブラウザー
図 1 柔らかく、滑らかなエクスペリエンスを備えた Edge ブラウザー

何よりもまず、Edge ブラウザーと言えばその相互運用性です。

今日の Web ページを構成する HTML、CSS、JavaScript を処理するには、どのブラウザーでも 1 つ以上のエンジンが必要です。そこで、Edge チームは、EdgeHTML という HTML 処理エンジンを設計しました。相互運用性はいくつかメリットを生み出します。たとえば、さまざまなデバイスやフォーム ファクターで適切に表示される HTML を作成できると同時に、、クロス プラットフォーム Web アプリをシームレスに開発できます。チームは、EdgeHTML に 45 個の新しい HTML 標準を実装しています (bit.ly/1G49Cwe、英語)。

この Chakra エンジンは、Internet Explorer でも使用される予定です。Chakra は非常に高速かつパフォーマンスが高いため、これを調整しながら使い続ける価値があります。その高速性には複数の要因がありますが、中心になるのは GPU (グラフィックス処理装置) オフロードというテクニックです。Chakra は、GPU にスクリプトの処理をオフロード (送信) します。つまり、このスクリプトは GPU で実行されますが、それ以外の HTML などは通常どおり CPU で実行されます。Internet Explorer チームがこの機能を実装したら、他のブラウザーも実装を開始しました。Edge における Chakra のパフォーマンスの詳細については、Windows のブログ (bit.ly/1X0Npt0、英語) を参照してください。

Microsoft Edge 開発者向けガイド bit.ly/1jwFYec では、使用効率を念頭に置いて改良された F12 ツールの詳細を確認できます。新しい魅力的な機能には、XHR ブレークポイントの設定機能や、DOM Explorer でのページ閲覧機能などがあります。

ユニバーサル Windows プラットフォーム

スマートフォンやタブレットでの Web トラフィック量が膨れ上がっていますが、デスクトップで Web ページを閲覧するユーザー数もまだまだたくさんいます。そのため、Web サイトやアプリが複数のデバイスや最新フォーム ファクターをサポートするのは当然です。

Windows 10 は、正真正銘のユニバーサル Windows OS ファミリです。1 つのコード ベースでビルドやメンテナンスを行い、パッケージを 1 つ用意して、1 つのストアに提出するだけで、すべての Windows 10 デバイスをターゲットにすることができます。つまり、スマートフォン、タブレット、ノート PC から、デスクトップ、Ultrabook、サーバーまで、あらゆるフォーム ファクターをターゲットにできます。これらすべてのデバイスで実行できるのが UWP アプリです。

Windows 通知

スマートフォンや PC などで、さまざまな情報をその重要性を問わず、警告やお知らせとして受け取ることができると便利です。お隣さん、お友だち、兄弟姉妹の 36 才の誕生日はそろそろだったかも。それがわかったら便利ではありませんか。これからは、このような情報をアプリがお知らせします。ただし、ユーザーが許可している場合に限ります。ユーザーはこうした通知をオフにすることができます。通知を希望すれば、Windows に関するヒントや、システム通知、アプリ特有の通知を、システム設定で有効にできます。

新しいアクション センターがアプリの通知用に用意され、そのアイコンは、画面右下にある Windows 通知領域に配置されます。通知アイコンをクリックすると、待機状態のメッセージの下にタッチ操作可能なタイルを含む最新のポップアップ ウィンドウが表示されます。アプリからの通知は、当然、ユーザーが許可している場合に限り、通知領域に表示されます。

通知を作成するコードは基本的には以前と変わらず、通知のレイアウトや外観は Windows によって管理されます。もちろん、さまざまな既定の通知テンプレートからテンプレートを選択して、ルックアンドフィールを変えることも可能です。選べるテンプレートはたくさんあり、ニーズに合うものがすぐに見つかります。

ToastTemplateType toastTemplate = ToastTemplateType.ToastImageAndText01;
XmlDocument toastXml =
  ToastNotificationManager.GetTemplateContent(toastTemplate);

詳細については、MSDN ライブラリの記事「タイル、バッジ、トースト通知の操作 (XAML)」 bit.ly/1LPogJw を参照してください。

Cortana との対話

Windows Phone から Cortana が導入されています。Cortana は、マイクロソフトの音声対応のアシスタントです。Cortana は、音声コマンドを認識して、予定表への記入、乗り換え案内、最新ニュースや天気情報の提供など、さまざまな仕事を手伝います。Cortana は、日常生活の多くの行動を支援します。このように貴重で便利なソフトウェアは SDK に匹敵します。Windows 10 では、バックグラウンド音声コマンドや継続的なディクテーションなどの新機能も追加されています。また、Speech SDK を使用して、音声合成 (TTS) 機能を有効にすることもできます。音声コマンドや音声認識テクノロジの使用は、表示上の UI だけににとどまらない高品質の製品を生み出す優れた方法になります。

音声認識対応の Windows アプリをビルドするには、以前のバージョンの Windows と Visual Studio アプリで用意したのとまったく同じ、コマンド、単語、フレーズをリストする Voice Command Definition Files (.vcd) を作成して登録します。次に、C#、JavaScript などの任意の言語でアプリを作成し、用意したコマンドを Cortana が音声形式に変換できるようにします。コードは非常にシンプルで、図 2 のようになります。ここでは、OnActivated イベントをオーバーライドしてどのコマンドが実行されたかを検出し、アプリから操作を実行できるようにしています。

図 2 .vcd ファイルのコンテンツと付属の C# コード

<?xml version="1.0" encoding="utf-8"?>
<VoiceCommands xmlns="https://schemas.microsoft.com/voicecommands/1.0">
  <CommandSet xml:lang="en-us">
    <CommandPrefix> Options </CommandPrefix>
    <Example> Show Options</Example>
    <Command Name="showOptions">
      <Example> Show options </Example>
      <ListenFor> [Show] {optionViews} </ListenFor>
      <Feedback> Showing {optionViews} </Feedback>
      <Navigate Target="/options.xaml"/>
    </Command>
    <PhraseList Label="optionViews">
      <Item> today's specials </Item>
      <Item> best sellers </Item>
    </PhraseList>
  </CommandSet>
  <!-- Other CommandSets for other languages -->
</VoiceCommands>
protected override void OnActivated(IActivatedEventArgs args)
  {
    if (args.Kind ==
      Windows.ApplicationModel.Activation.ActivationKind.VoiceCommand)
    {
      var commandArgs =
        args as Windows.ApplicationModel.Activation.VoiceCommandActivatedEventArgs;
        Windows.Media.SpeechRecognition.SpeechRecognitionResult
      speechRecognitionResult =
        commandArgs.Result;
      string voiceCommandName = speechRecognitionResult.RulePath[0];
      string textSpoken = speechRecognitionResult.Text;
      string navigationTarget =
        speechRecognitionResult.SemanticInterpretation.
        Properties["NavigationTarget"][0];
      switch (voiceCommandName)
      {
        case "showOptions":
          // EventReminder(textSpoken, navigationTarget);
          break;
        // default:
        // There is no match for the voice command name
      }
    }
  }

Windows ストア

新しい Windows ストアは、あらゆるユーザーがターゲットです。ビジネスでは、管理者が Windows ストアを使って社員にアプリを公開できます。Windows ストアから選択したアプリを配布して、基幹業務アプリのプライベート版を配置することも可能です。また、注文書による決済方式がサポートされるようになります。Windows 10 の追加の収益化オプションとして、ストアはサブスクリプションを提供するようにもなります。

ストアの更新の一環として、Windows 10 Microsoft Advertising SDK により、動画広告がサポートされるようになります。あるマーケティングの専門家によれば、動画やマルチメディアの広告の方が、テキストベースの広告よりも販促効果が高いそうなので、この仮説を検証してみてはいかがでしょう。さいわい、マイクロソフトは、新機能としてインストールを追跡する機能をリリースしているため、この仮説の検証に利用することができます。

Continuum

ただし、このような UWP アプリ開発は、クロス デバイス エクスペリエンスだけが目的ではありません。Windows 10 の Continuum は、多機能デバイスで使用モードを切り替えるタイミングを検出します。航空機の機内にフランシーヌ フライヤーさんというユーザーがいるとします。彼女は Surface のデスクトップ モードで仕事を終え、映画を見ようと思いつきました。彼女がキーボードを取り外すだけで、ほとんど操作することなく、デスクトップ モードからタブレット モードに切り替えることができます。Windows はキーボードの取り外しを感知して、タッチ対応に切り替えるかどうかを問い合わせます。[はい] をタップすると、Windows はタッチ対応モードに切り替わり、煩わしいキーボードやマウスなしに、映画を楽しむことができます。Continuum は、Surface、ハイブリッド型のノート PC/タブレット、コンバーチブル型のノート PC/タブレットなどのさまざまな種類の多機能デバイスに適しています。コンバーチブル機能のないタッチ画面付きのノート PC の場合でも、Continuum はモードの切り替えに役立ちます。このメリットを利用できるデバイスは、大きなデバイスだけではありません。スマートフォン向けの Continuum では、スマートフォンにワイヤレス キーボード、マウス、画面を接続することで、ユーザーはスマートフォン アプリをデスクトップ アプリのように使用できます。ファブレット型のデバイスは多数あり、どれでも Continuum を適切に利用できます。

新しいスタート (メニュー)

今最も話題になっている最も明白な変化が Windows のスタート メニューです。コンピューティングの歴史の中でいわゆる UI の「トラブル メーカー」と呼ばれるものがいくつかありますが、Windows のスタート メニューは間違いなくその 1 つです。Windows が新しいバージョンに移行するときに、スタート メニューの変更を希望するユーザーと希望しないユーザーはちょうど同じぐらいです。Windows 10 では、スタート メニューにかなり大きな変化がいくつかあります。

現時点では、スタート メニューにタイルを移動したことは、以前よりもはるかに適切な設計だと言えますが、デスクトップとスタート ページ間のワークフローは少しぎこちないものでした。しかし、Continuum と組み合わせて、スタート メニューが強化されたことにより、タブレットやスマートフォンであれば、タッチ対応のデバイス必要なものだけがスタート ページに表示されるようになります。ショートカット キーに慣れていれば、おなじみの Windows キーがキーボードにあります。アプリの名前や実行したいことを入力し始めると、Windows がアプリを検索し、目的の操作を実行します。

アダプティブ UX への対応

Windows ファミリでのアダプティブ開発の考え方は、Web のレスポンシブ デザインと同じです。ただし、レスポンシブ開発は画面サイズをターゲットにするのに対し、アダプティブ開発はデバイス ファミリ全体をターゲットにします。ここ数年、さまざまなデバイスが市場にあふれ、その急増に追随するのは不可能に近いことでした。新しいスマートフォンが出回ると、分析できずに、対応不能に陥るものもあります。このようなデバイスすべてをターゲットにソフトウェアを開発する必要があると考えてください。さいわい、Windows 10 は実行時にアプリをホストしているデバイスを認識し、ユーザーのアプリ使用方法を特定して、状況に応じて UX を調整します。つまり、flyout などの要素や他のコントロールは、解像度に応じて自動的にサイズ変更される場合もあれば、大きいフォントや小さいフォントが適用される場合もあります。アダプティブ ソリューションを設計する前に、MSDN ライブラリの記事「ユニバーサル Windows プラットフォーム (UWP) アプリ用デバイスの基本情報」(bit.ly/1MpspVh) を参照してください。

One Windows Platform

Windows 10 の際立つ特徴の 1 つが UWP アプリです。UWP アプリは、1 つのコード ベースからすべてを作成し、すべての Windows OS に配置できます。これは、通常、バックエンドとロジックのみに作用します。ただし、UI をビルドするプロセスも以前よりはるかにスムーズになります。異なる OS をターゲットにして、同じ UI コードを複数バージョン作成するのではなく、デバイス ファミリ全体をターゲットにする UI を簡単にビルドできます。ただし、必要に応じて特定の OS のみをターゲットにすることもできます。さまざまなデバイス ファミリをターゲットにする場合は、最もサイズが大きな デバイス ファミリと最もサイズが小さなデバイス ファミリ内で適切に機能するように UI を作成し、Continuum を使ってデバイス ファミリに合わせてサイズを切り替えます。XAML や JavaScript 用 Windows ライブラリ (WinJS) では、いくつかの API やコントロールに変更点がいくつかあります。特に XAML では、新しい Calendar コントロールが、カレンダーを配置するための新しいアダプティブ パネル コントロールと共に採用されています。

開発者としては、「One Windows Platform」という基盤コード ベースのおかげで、Visual Studio で操作する単一のソリューションを活用できます。この単一ソリューション モデルを使用すると、コードをほとんどまったく必要としないで、アダプティブ コントロールやテクノロジをさまざまなデバイス ファミリに適応させることができます。

まとめ

Windows は、UX の展望をそのままに、ユーザーの希望をかなえます。アプリに組み込むことができる新しく魅力的な機能は、API やコントロールにおける変化など、多数あります。音声入力を利用できることを忘れずに、次のアプリでは Cortana について検討してください。Windows ストアから Visual Studio まで、Windows 10 はスムーズな開発と滑らかな UX. を提供します。


Rachel Appel は 20 年を超える IT 業界での経験を持つマイクロソフトの元社員で、コンサルティング、執筆活動、および指導を行っています。彼女は Visual Studio Live!、DevConnections、MIX など、業界トップ クラスのカンファレンスで講演しています。専門分野は、マイクロソフトの各種開発ツールやオープン Web を重視したテクノロジとビジネスを連携させるソリューションの開発です。Appel についてもっとよく知るには、彼女の Web サイト rachelappel.com (英語) を参照してください。

この記事のレビューに協力してくれたマイクロソフト技術スタッフの Frank La Vigne に心より感謝いたします。