Windows エコシステムにおける アプリケーションの互換性
※本ブログは、Mike Fortin and Mete Goktepe によって 2019 年 1 月 15 日に公開されたブログ “Application compatibility in the Windows ecosystem” の抄訳です。
マイクロソフトのアプリケーション エコシステムは実に多様です。数千万個のアプリケーション (アプリ) が存在し、そのバージョン、言語、アーキテクチャ、サービス、構成オプションは多岐にわたります。このようにエコシステムは複雑ですが、ビジョンはいたってシンプルで、「すべてのアプリケーションが Windows デバイスで問題なく動作すること」だけです。お客様は、Windows のバージョンによる互換性を気にすることなく、安心して更新を行える必要があります。そのためには、問題を予測、回避する革新的なアプローチと、動作テストのような従来のアプローチが欠かせません。今回の品質に関するブログ シリーズでは、Windows アプリケーション互換性チームの Mete Goktepe が、アプリの互換性を高めるためのさまざまな施策とテクノロジをご紹介します。
マイクロソフトはパートナー様と緊密に連携し、サポート対象のバージョンの Windows すべてにおけるアプリケーションの互換性を計測、検証、改善しています。テストは不可欠なステップですが、テストだけで絶えず変化するエコシステムをすべて把握することはできないため、新しい手法や製品の改善にも注力しています。OS の変更が、特定のアプリケーション、または特定の種類のアプリケーションに影響を及ぼしていることが明らかになれば、私たちは社内外の開発者と協力して、OS またはアプリケーションに緩和策を施します。こうした修正には時間がかかる可能性がありますが、お客様への影響を最小限に抑えることが目的であるため、お客様が不便を感じることがないよう具体的な措置を講じながら、修正プログラムの作成、フライト、展開を進めていきます。
マイクロソフトでは、予防措置、問題の発見と調査、内部チームや外部パートナーとの協力、互換性の問題緩和といった複数の面から互換性の確保に取り組んでいます。
■ 予防措置
Windows アプリケーション互換性チームは、アプリで問題が発生しないようにすることに重点を置き、互換性や回復性に優れた Windows にするために Windows 機能開発チームと連携しています。新機能をリリースする際は毎回両チームが作業に携わり、コード変更を Windows のコード ベースに組み込みます。マイクロソフトでは、静的解析ツールとランタイム解析ツールを使用して API の変更箇所を検出し、それらの変更によって互換性に関する障害が発生する可能性はないかを判断します。マルウェア対策ソリューション、ウイルス対策ソリューションなど、サードパーティや独立系ソフトウェア ベンダー (ISV) 製のアプリについては特に影響がありそうな変更点を注視し、各社と緊密に連携して新規リリースの前に必要に応じて対処します。また、新機能の開発に機械学習モデルを活用し、実際の開発サイクル中にコードがどのように変更されたかをきちんと理解し、リスク ベースの推奨モデルを構築してテストすべきアプリを見極めています。これらのモデルが洗練されていくにつれて、検出メトリックスが発行されるまでの時間が継続的に改善され、テスト カバレッジをカスタマイズして互換性の問題を迅速に把握できるようになることを期待しています。
■ 問題の発見と調査
コードを変更すると、アプリに影響が出る可能性があります。アプリへの影響を継続的に監視、評価し、イノベーションの実現と OS のセキュリティ水準の向上を両立させることが不可欠となります。Windows 10 の互換性を維持するため、チームは週に数千個のアプリを社内で検証しています。これらのアプリは、言わば危険を察知するカナリアで、エコシステムのテレメトリ (人気度) や、リスク レベル、パートナー様からのフィードバックに基づいて選定されます。また、API の使用状況や、基盤となる OS プラットフォーム機能の各アプリでの使い方もアプリの選定条件として採用しています。以下に一部をご紹介しますが、ご覧のとおり、たくさんのデバイス/フォーム ファクターとアプリケーション カテゴリを複雑なマトリックスで検討しています。
内部テスト マトリックスの対象となるカテゴリの一部
デバイス/フォーム ファクター | アプリケーション カテゴリ |
デスクトップ、PC マイクロソフト製デバイス サードパーティ製デバイス ARM64 デバイス タブレット PC ゲーム機 複合現実デバイス 仮想現実デバイス |
アクセシビリティ セキュリティ、マルウェア対策 会社、ファイナンス、ホーム オフィス コミュニケーション、ソーシャル ユーティリティ、開発者ツール エンタープライズ、クラウド、サーバー エンターテイメント グラフィックス、ゲーム 音楽、MP3、写真 & ビデオ 個人用設定 (写真 & ビデオ) ピア ツー ピア |
アプリの互換性の検証は継続的に行っています。新しいビルドの完了から数秒後に開始し、それぞれのフライト、品質と機能の更新プログラムごとに繰り返します。マイクロソフトの多層アプローチでは、次のようなテストを行っています。
- アプリケーション互換性自動統合テスト – Windows のような大規模で複雑なプロジェクトの場合、数千人のエンジニアが参加し、協力してソース コードのさまざまなブランチを毎日検証する必要があります。あるブランチが Windows のメイン開発ブランチに統合される前に、内部で「ゲート」と呼んでいる自動テストが実行されます。アプリ互換性のゲートでは、マイクロソフトとサードパーティのアプリの機能を主にテストします。デスクトップ版だけでも、Windows のビルドが完了するごとにすべてのブランチでテストされるアプリは何百個にも及びます。1 日あたり 28 万以上のアプリ互換性テストが行われています。テストの結果はビルド完了から 2 時間以内に報告され、問題点の把握と対処、Windows の安定性確保に活用されます。
- 日常的なアプリケーション互換性自動テスト – コード変更が Windows のメイン開発ブランチに組み込まれたら、約 2,500 個のアプリを対象とした幅広い自動テストを実行し、互換性に関連する新たな障害を検出します。この毎日実施されるテストの結果は、その日のうちに分析されます。これにより、エンジニアリング チームはブランチ レベルの統合テストでは見つからなかった問題を特定、修正することができます。
- 手動でのアプリケーション テスト – 現在マイクロソフトでは自動化を大いに活用しており、さらなる自動化に向けて今後も投資を続けていく考えです。しかし、エンド ユーザーのエクスペリエンスに支障が出ないよう、手動での検証も怠りません。通常、自動化ソリューションでは機能面の不具合を探します。しかし、エクスペリエンスを検証するには、私たちもエンド ユーザーと同じようにアプリケーションを操作する必要があります。以下に、手動での検証が必要となるシナリオの一部をご紹介します。
- 自動テストではメニューを表示することも、そのメニューの中から選択することも可能ですが、それぞれのメニュー項目がエンド ユーザーに正しく表示されること、正しく使用できることを検証するのは容易ではありません。
- 自動テストでは、特定の周辺機器がデバイスに接続された際にアプリの動作がどう変化するかを評価することはできません。
データと分析に基づく問題検出 : テレメトリのシグナルも活用して、アプリのエコシステムに影響する可能性のある不具合を、OS の新規リリースまたは Windows Insider へのフライトのたびに検出、予測しています。テレメトリからは、アプリのクラッシュのシグナルを入念に監視して、クラッシュの増加が見られないかを判断しています。同様に、自動ユーザー フィードバック監視システムが毎日数千件のフィードバックを仕分けしており、Windows ユーザーに影響する可能性のある互換性の問題検出に役立てています。またフィードバックを踏まえて、優先順位を付けて問題を解決しています。
アプリの互換性に関するこのレベルの継続的なテストと監視では、Windows 10 のリリースごとに高い合格率を維持することを目標としています。上記のテストは、Windows 10 の機能更新プログラムと月次品質更新プログラムの両方に対して実施し、可能な限り高いレベルの互換性を維持できるようにしています。
■ 内部チームや外部パートナーとの協力
テストやテレメトリから互換性の問題を発見することは、最初のステップにすぎません。パートナー様と協力して互換性の問題を解決し、アプリまたは OS を更新することも必要になります。そのために、多数の内部チームと外部チームが緊密に連携し、新たに発見された互換性の問題を開発サイクル中に解決できるように力を尽くします。外部パートナーとして含まれるのは、ISV や OEM (相手先ブランド供給) です。以下に外部との協力による取り組みを 2 つご紹介します。
Desktop App Assure プログラム : マイクロソフトは、自信を持ってアプリの互換性をお約束します。その一環として、2018 年 9 月の Ignite において Desktop App Assure プログラム (英語) を発表しました。このプログラムでは、一般企業のお客様が Windows 10、Office 365 ProPlus、後続の機能更新プログラムを展開する際にアプリの修復サービスを提供します。Desktop App Assure を利用すると、アプリケーションの互換性に関する正当な問題に追加コストなしで対処できます。このプログラムの目的は次のとおりです。
- カスタム開発された基幹業務アプリの修復においてお客様を支援
- サードパーティの ISV と共に、各社の Windows 10 アプリの修復と、Windows as a Service のサポートに関する声明の公表を支援
- マイクロソフト製品 (Office のマクロやアドインを含む) で見つかった問題に対処
ウイルス対策 (AV) ベンダーの関与 : 数多くの Windows 10 デバイスでサードパーティ製のマルウェア対策ソリューションやウイルス対策ソリューションが使用されており、それらのデバイスで互換性の問題が発生することもあります。エコシステムの 95% 以上をカバーする、約 80 社の ISV (Avast、Kaspersky、McAfee、Qihoo、Sophos、Symantec、Tencent、Trend Micro など) が、MVI (Microsoft Virus Initiative) プログラムに参加しています。マイクロソフトはこれらのベンダーとの関係を緊密にすることで、「より良い連携による」統合エクスペリエンスを提供し、共通するお客様を悪意のあるソフトウェアから保護します。多くの AV ベンダーは、セキュリティ更新プログラムの検証を行う Security Update Validation Program (SUVP) にも参加しています (2018 年 12 月のブログ記事 (英語) を参照)。同様に、マイクロソフトの互換性ラボでは、Windows 10 の機能更新プログラムと品質更新プログラムで数百の AV 製品を実行し、その結果を報告しています。マイクロソフトは AV ベンダーとの協力体制を継続的に拡大することで、引き続き高い互換性と安全なエクスペリエンスをお客様にお届けできるように鋭意取り組んでいます。
■ 互換性の問題緩和
問題の内容、スケジュール、内部チームまたは外部パートナーの問題対応能力に応じて、Windows アプリケーション互換性チームはさまざまな緩和策を検討し、お客様が互換性の問題に悩まされずに済むようにしています。この緩和策とは、「シム」と「ブロック」の 2 つに分けられます。シムは、アプリや機能が OS の機能で完全にサポートされない場合でも、または OS の機能が変更された場合でも、そのアプリや機能を想定どおりに動作させるための手法です。ブロックはもっとシンプルで、互換性の問題が生じる Windows 10 の更新プログラムをユーザーがインストールできないようにする方法です。あるアプリで互換性の問題が発生したためにブロックを実施した場合、そのアプリがインストールされているデバイスには、問題が解決するまでは更新プログラムがインストールされることはありません。問題の部分の修正、再テスト、完全な展開が完了したら、ブロック措置を解除します。マイクロソフトは先日 Windows 10 の更新履歴ページを開設し、ブロック措置についての透明性を高める取り組みを始めました。ブロックやシムによって問題を緩和する手立てはいくらでもありますが、あくまでもこれは応急処置であり、問題の部分を修正し、完全な解決へ向けて OS を更新することを最優先にすべきであると考えています。
マイクロソフトは、Windows デバイスでアプリに対して完全な互換性を提供することをお約束しています。そのために目下、予防措置、複数の検証アプローチ、活気のある多様なエコシステムの活用、互換性の問題緩和といった面から取り組んでいます。今後もそうした手法を変革してまいります。各更新プログラムとの完全な互換性の実現こそが私たちの目標です。