Windows 7/8.1アプリ開発者のための アプリケーション移行ガイド

 

移行ガイド

新しいプラットフォームとして登場する Windows 10では、もちろんこれまでと同様に既存のアプリケーションが動作する環境も提供されていますが、さらに新しいアプリケーションプラットフォームも登場しています。そこで、ここではこれまでのアプリケーションをWindows 10上で動作するように対応する方法について紹介します。

Windows 10 はこれまでの Windows 7や8.1と異なり、スマートフォンやXBOXなど様々なデバイスに対しても共通したプラットフォームとなっています。ですがここではあくまで Windows 10 Desktop つまりこれまでと同じPCベースのプラットフォームを対象として紹介します。

 

Windows 10 で動作するアプリケーション

Windows 10 上で動作するアプリケーションはいくつかの種類がありますが、Windows 10 Desktop 上で動作するアプリケーションは以下のものになります。

  • Win32 デスクトップ アプリケーション
  • Windows 8.1 アプリケーション
  • Universal Windows Platform アプリケーション (UWPアプリ)

 2apps

前述のとおり、Windows 10 はスマートフォン(Windows 10 Mobile)もPCも同じ Windows 10 ファミリーなりましたが、Windows Phone 8.1 ストアアプリケーションに関しては、スマートフォン専用となっているため、Windows 10 Desktop では動作させることはできません。

勿論、これまで Windows 7や8.1で使ってきた、いわゆるデスクトップアプリケーションはそのまま Windows 10 Desktop 上で動作させることができます。しかし、アプリの仕様によっては動作するものの、いくつかの問題が生じる場合があります。特に自身でアプリを開発している方は以下の点についてチェックし、対応できるものは対応することをお勧めします。

Point !:基本的には既存のアプリはそのまま動きますが、以下の方法でチェックを

 

Windows 8.1 ストアアプリにおけるチャームを使った操作について

2860.food_thumb_55969781Windows 8.1 では、いくつかのメニューは、画面右端からスワイプ操作をしたときに表示される「チャーム」の「設定」を通じて、アプリケーションの設定項目を表示することができました。しかし、Windows 10ではこのチャームメニューが廃止されているため、アプリのタイトルバー左にある、ハンバーガーメニューをクリックすると、これまで「設定」で表示されていたものと同等のメニュー項目が表示され、操作することができます。

もしアプリが全画面表示されている場合は画面上部からスワイプを2回行うか、マウスを画面上部まで移動させることにより、アプリのタイトルとハンバーガーメニューを表示させることができます。 

Privacyまた、Windows 8.1 ストアアプリでは「設定」の中に表示されていた「アクセス許可」の項目は、新しいハンバーガーメニューから表示される項目には含まれておりません。アクセス許可の設定を行う場合は、Windwos 10 の「設定」の中にある「プライバシー」項目を起動し、各設定項目からアプリでのアクセス許可設定を変更します。

Point !:アプリの設定はWindows 8.1 から変わっているので注意

 

タブレットモードでの画面チェック

tabletWindows 10 Desktop では、新しくタブレットモードというモードが提供されています。タブレットモードをONにした場合、アプリはすべてフルスクリーンで表示されます。これは Windows 8.1 でのストアアプリケーションに近い動作です。デスクとアプリでも、同じように強制的にフルスクリーンで表示されます。また同様に、アプリを上からドラッグし左右にスナップ表示することもできます。

そのため、アプリの画面が正しく表示されているかどうか、レイアウトが崩れていないか、必要な場所が正しく表示されているか、確認する必要があります。特に、これまでアプリの設定でウィンドウサイズを固定して表示させていたアプリも、タブレットモードでは強制的に全画面表示します。このため意図しないレイアウトになってしまう場合があるため、確認する必要があります。

Point !:タブレットモードで全画面、左右にスナップさせたときにレイアウトをチェックする

 

システムフォントをチェックする

yugothic2

Windows 7/8.1 ではシステムフォントとして、Meiryo UI が使われていました。しかし、Windows 10 では新しい Yu Gothic UIがシステムフォントとして使われています。これらのフォントは文字幅や改行幅の違いなどにより、表示の際には若干文字全体のサイズが異なる場合があります。

そのため、アプリの実装方法によっては、文字が目的のサイズよりも大きくなってしまったり、これまでは発生していなかった改行などが起きて、ユーザーインターフェースが崩れてしまう場合も考えられます。ですので、ポップアップを含むアプリ内の各画面が正しく表示されている稼働が確認が必要です。

Point !:システムフォントの違いによる表示崩れが起きていないかチェックする

 

High DPI のチェック

imageWindows 8.1 からは、あたらしい DPI モデルが採用されており、小型で高解像度のモニターを使っている場合は、極端に文字サイズが小さくならないように、自動的に画面の表示内容を拡大して表示する設定が用意されています。これはWindows 10 の「設定」の中にある「システム」「ディスプライ」で設定されています。例えばSurface Pro 3 の場合は標準で150%の拡大設定となっています。

property 多くのアプリはこの設定に従って画面が表示されますが、WinForm で作成された一部の古いデスクトップアプリケーションがHight DPIの設定に対応していないため、表示が崩れたり、表示品質が落ちる場合があります。(WPFの場合は基本的にHigh DPIに対応しています)

もし自動拡大によって画面のレイアウトが崩れてしまう場合、ユーザーは実行ファイルのプロパティに用意されている、「互換性」タブの名から、「高DPI設定では、画面のスケーリングを無効にする」設定にチェックを入れることでこの問題を回避することができます。

また、ユーザーないし開発者はアプリケーションの app.manifest ファイル内にある <dpiAaware>設定をTrue にする(<dpiAware>true</dpiAware>) ことによっても互換性設定を強制することができます。

なお、Web アプリケーションはそれぞれのブラウザが高DPIに対応しているかどうかの設定によって変わるため、設定する対象はブラウザとなっています。

Point !:High DPI 設定でも表示が崩れないかチェックする。問題がある場合は互換性設定を行う

 

アプリケーションが起動しない場合

mail_propertyアプリが起動しない場合の多くは、アプリのインストール時や実行時に OSのチェックを行い、対象とするバージョンでない場合はインストールもしくは実行を行わない、処理になっていることが要因です。

この場合も、アプリの実行ファイルもしくはインストーラーファイルのプロパティの「互換性」タブから、互換モード設定のチェックを入れ、動作対象となっている Windows を選ぶことで、正しく実行できるようになる場合があります。 尚このような場合、アプリの多くは OSのチェック方法として Windows の内部バージョン番号を使っています。各OSの内部バージョン番号は以下のようになっています。

Windows Windows 7 Windows 8 Windows 8.1 Windows 10
Version 6.1 6.2 6.3 10.0

開発者が自身のアプリの中でこのような内部バージョンを使ってアプリの起動チェックを行っている場合は、Windows 10 のバージョン 10 も実行対象とするために VersionHelper 関数を使うように修正する必要があります。

Point !:アプリが起動しなかった場合は互換性設定を行う

 

そのほかアプリを使いやすくするための方法

touchWindows 10 Desktop ではタブレットなど、タッチを使ってアプリを操作する場合があります。通常タッチ操作を行った場合、同時にマウス操作のイベントも発生するため、多くの場合はアプリの修正なしにタッチでもアプリを操作することはできます。

しかし、デスクトップアプリケーションなどマウスでの操作を前提にしたアプリの場合、ボタンやテキストボックスなどのコントロールが小さく、タッチでは操作しづらい場合があります。もちろん多くの場合 High DPI設定によって、サイズが大きくなる場合もありますが、拡大処理が行われない環境でもタッチで使いやすいようにコントロールのサイズを大きくしておいた方良い場合もあります。

マイクロソフトの調査では、コントロールの実サイズを7mm以上にすると、ミスタッチ率は1%以下になるという結果が出ており、コントロールのサイズを変更する場合はこの値を参考にするとよいでしょう。

msstouch_chart

Point !:タッチしやすいサイズに

 

将来は既存のデスクトップアプリをストアに公開

既存のデスクトップアプリは、インストールメディアやファイルからインストールします。例えばもし新しいPCに移行する場合は、インストールメディアを用意しておいて、個別にインストールする必要があります。

しかし、Windows 8.1 のストアアプリや Windows 10 の UWP アプリの場合、ユーザーがインストールしたアプリはすべてマイクロソフトアカウントと紐づけられ、新しいPCをセットアップする場合も、これまでインストールしてきたアプリをまとめてインストールすることができます。さらにインストールメディアやファイルを保存しておく必要もありませんし、常に最新版を利用することができます。

しかし、デスクトップアプリは Windows 10 のUWPとは仕様が異なるため、ストアに公開することはできませんでした。

現在、Microsoft が開発を進めている Project Centennial は既存のデスクトップアプリをストアに公開させるための新しい仕組みです。これは、デスクトップアプリのインストールファイルである MSIファイルを変換し、UWPのパッケージである AppX を作ります。あとはこれをアプリの情報をもとに開発者がストアに公開します。

Centennial

Project Centennial はデスクトップアプリをストアに公開させるための仕組みです。そのためアプリ自体は変更を加えません。ですから、Project Centennial で変換されたアプリは、あくまでデスクトップアプリであり、Windwos 10 Desktop でのみ動作します。また、アプリはApp-V をベースにした仮想環境上で動作するため、通常のデスクトップアプリに比べてシステムへのアクセス権などが限定しており、それが要因で正しく動作しない場合もあります。この場合はアプリの修正が必要です。

現在は開発中のProject で、2015年夏に追加情報が出てくる予定です。興味がある場合は下記サイトから登録して追加場を入手してください。

https://dev.windows.com/ja-jp/uwp-bridges/

Point !:Project Centennial に注目。まずは登録を

 

まとめ:まずは動作チェックから始めましょう

Windows 10 Desktop 上では既存のほとんどのデスクトップ・ストアアプリをそのまま実行することができます。まずは、改めて新しい環境上で期待していた動作が実現しているかどうか確認してから必要に応じてアプリケーションの修正をします。多くの場合は、上記で指定した項目を調べ対応することができるでしょう。

残念ながらアプリが正しく動作しない場合も、上記の内容を参考に修正していくか、またそのほか下記サイトに移行時に参考となる情報が用意されていますので、ご利用ください。

 

参考情報

Windows デベロッパーセンター
UX ガイドライン
古いプログラムをこのバージョンの Windows で使用できるようにする
Windows ランタイム 8 から UWP への移行

 

執筆

shinobu

日本マイクロソフト株式会社 デベロッパーエバンジェリズム統括本部 プラットフォームエバンジェリスト 高橋忍 https://blogs.msdn.com/b/shintak