マイクロソフト研究所

クライアントの“AI化”を進めるWindows 10
Microsoftの開発者イベント「Windows Developer Day」の発表を振り返る
2018年3月16日 06:00
3月7日にMicrosoftが行った開発者向けのイベント「Windows Developer Day」では、次のWindows 10(Version 1803)の新機能よりも、内部の進化にフォーカスをあてて紹介されている。
本稿では、その内容をお届けしよう。
Windows 10のアップデートサイクル
まずは、Windows 10のアップデートサイクルをおさらいしてみよう。
Windows 10はWindows as a Service(WaaS)というコンセプトのもと、春と秋の年2回アップデートを行っている。
次のメジャーリリースについては、RS4(RedStone4)のコード名で開発が進んでおり、3月中には開発を終了し、最新機能をいち早く試したいユーザー向けのSACT(Semi-Annual Channel Target:半期チャネル指定、以前のCurrent Branch)が、4月中に提供される。
またSACTの3カ月後に、SAC(Semi-Annual Channel:半期チャネル、以前のCurrent Branch for Business)として企業に提供される。
そのRedStone4(Windows 10 Version 1803、名称はSpring Creators Updateになるのではと予想されている)には、2017年のMicrosoftの開発者向けカンファレンス「Build 2017」で紹介されたTimeline(タイムライン)機能が搭載される予定だ。
これ以外にも、ブラウザのMicrosoft Edgeをコンテナ化して、Windowsシステムとは完全に隔離されたサンドボックスでEdgeを動かし、不正なWebサイトなどからの攻撃をシャットダウンする「Windows Defender Application Guard(WDAG)」が、Windows 10 Proに搭載される。
WDAGは、2017年10月に提供されたWindows 10 Fall Creators Update(Version 1709)で、Windows 10 Enterpriseに搭載された。ただし、英語環境がベースとなっていたため、日本語環境で動かすには英語環境をインストールするなど、いくつかの問題点があった。
次のVersion 1803では、Windows 10 ProにもWDAGの機能が搭載されるとともに、日本語環境でも動作するようになるため、幅広いユーザーがWDAGを利用可能になる。
なお余談だが、UWPアプリしか動作しない主に学校向けのWindows 10 Sは、Version 1803から各エディション(Home、Pro、Enterprise)のモードとして提供されることが、Windows Developer Dayと同じタイミングで発表された。
つまり、Windows 10 Sというエディションはなくなり、Home、Pro、Enterpriseでは、UWPアプリしか動作しないSモードが用意される。昨年のIT管理者向けイベントMicrosoft Igniteでは、Windows 10 EnterpriseにSモードを用意すると発表されているが、Microsoftでは、すべてのエディションでSモードを提供することにしたようだ(ARM版Windows 10に関しては、最初の出荷PCではWindows 10 Sがインストールされているようだ。Windows 10 Proなどへアップグレードできるのか、といったことは現状ではわからない)。
3つの分野での発表があったWindows Developer Day
さて、ここからはWindows Developer Dayの発表を見ていく。
今回のWindows Developer Dayでは、
・「Modern applications for a modern workplace」
・「Artificial Intelligence for Modern Experiences」
・「Windows IoT in the Intelligent Cloud and Intelligent Edge」
の3つのポイントに絞って発表があった。
1つ目の「Modern applications for a modern workplace」では、WebViewとMSIX、Adaptive Cardsに関しての発表があった。
WebViewは、さまざまなアプリ内部にWebブラウザの機能を埋め込んで、Webページを表示したりナビゲーションしたりすることができる機能だ。
ただし、Windows 10のWebView機能は、IE11のレンダリングエンジンTridentをベースにしていたため、最新のWebテクノロジーへの対応ができなかった。そこでVersion 1803では、WebViewで使用するレンダリングエンジンを、Edgeが使用しているEdgeHTMLに変更した。
これにより、GridやFlexbox、リアルタイムコミュニケーションのWebRTCといった最新のWebテクノロジーが、Win32/WPF、Windows Formsなどのデスクトップアプリケーションで利用できるようになった。
MSIXは、アプリケーションのインストールパッケージの新しいフォーマットだ。現在、Win32などのデスクトップアプリケーションはMSI形式を使用し、UWP(Universal Windows Platform)ではAPPX形式が使用されている。
MSIXは、既存のWin32/WPF/Windows Formsアプリケーションなどを、APPX形式のメリット(コンテナ化)を生かすようにパッケージ化するものだ。
このイベントでは明確にはされなかったが、MSIXを作成した理由としては、Win32/WPF/Windows Formsアプリケーションに、UWPアプリのメリットを追加しようとしているようだ。
将来的には、MSIX形式のアプリケーションを直接Microsoft Storeから配信できるようにしようと考えているのだろう。
現在、Win32アプリケーションをStoreから配信できるようにするには、UWPでカプセル化するDesktop App Converterを使用して、APPX形式に変換する必要がある。新しいMSIX形式でパッケージ化することで、MSI形式の手軽さを生かしつつ、Storeから配信できるようにしたいのだろう。
MSIXに関しては、GitHubにオープンソースとして掲載されており、開発が進められている。なおパック/アンパックは、LinuxやAndroid、macOSなどのマルチプラットフォームとなっている。将来的には、マルチプラットフォームにおける統一されたインストールパッケージ方式にするつもりかもしれない。
Adaptive Cardsは、Skype、Bot Framework、Cortanaなどで表示されるカード型の情報ウィンドウ(カード)を、簡単に作成できるようにするフレームワークだ。
Adaptive Cardでは、JSONを使って非常に簡単にCardsを作成できる。また開発ツールを利用すれば、設定した情報をBot Framework WebChat/Other Channels、Cortana Skills、Windows Timeline、Skype、Outlook Actionable Message、Microsoft Teams、Windows Notificationsなどに簡単に変換できる。
Adaptive Cardsは、オープンフレームワークとして開発されているため、1つのソースが、UWP(Windows)、iOS、Android、HTMLなどに変換されて表示することができる。
AIを取り込むWindows 10
Windows Developer Dayで最も重要な発表と思われたのが、「Artificial Intelligence for Modern Experiences」として発表されたWindows ML(Machine Learning)フレームワークだ。
Windows MLは、GoogleのTensorFlowやMicrosoftのCNTKといったニューラルネットワークの機械学習フレームワークを動かし、大量のデータを使って機械学習を行うのではなく、クラウドなどであらかじめ学習された機械学習モデルをWindows 10にダウンロードし、特定のAI機能を自分のアプリに組み込んで実行できるようにするものだ。
機械学習などで学習モデルを作成するためには、大量のデータを高速に処理するためにパフォーマンスの高いCPUや大量のメモリが必要になるが、できた学習モデル自体はコンパクトだった。しかし、その学習モデルをコンパクトに動かせるフレームワークがWindowsにはなく、クライアント側で生かすことができなかった。
今回発表されたWindows MLにより、こうした状況は改善され、アプリケーション側でAI機能を簡単に利用できるようになるだろう。さらに、クラウドに接続したオンライン環境ではなく、オフライン環境でも機械学習が利用できる。
イベントのデモでは、電子基板にLSIをハンダ付けした後で、その作業がきちんとされているかをチェックするカメラシステムに応用していた。また別のデモでは、写真を特定のタッチの絵に変換するフィルタに機械学習が利用され、クラウドで作成された学習モデルをクライアントPCで高速に処理させていた。
Windows MLは、学習モデルとしてはONNX(Open Neural Network Exchange)を利用しているため、Facebookが開発したCaffe2、PyTorch、Microsoftが開発したCNTK(Cognitive Toolkit)、AWSのApache MXNet、Preferred NetworkのChainerなどがサポートされている。
Googleが開発したTensoflowとAppleが開発したCoreML(iOS11に搭載)に関しては、ONNXを正式にサポートはしていないが、ONNXプロジェクトが提供したコンバーターツールがGitHubに公開されている。
なおWindows MLは、IntelのAVX512命令に最適化されている。また、AMDやNVIDIAのGPUをDirectX12経由(DirectML)で機械学習処理に利用することもできる。これにより、CPUに負荷を掛けずにAI機能が利用できるわけだ。
将来的には、Intelが提供してるMovidius VPUなどのAIチップをサポートすることで、クライアントにおいてAI処理の負荷を小さくして、リアルタイムに利用できる環境を構築していく予定だ。
またMicrosoftでは、Azure上に構築されている画像認識機能のCognitive Service Vision、検索機能のSearchに関して、ユーザー独自の画像や検索を使用して追加学習できるサービスのプレビューを開始している。
このサービスでは、TensorFlowやCoreMLなどに学習モデルが出力できるため、AndroidやiOSにて、Azure上でトレーニングした機械学習モデルが利用できるようになる。将来的には、このようなサービスを利用して大量のデータをクラウド上で機械学習させ、その結果としての学習モデルをクライアントにダウンロードして使うようになるだろう。
クライアントOSにAI機能を実行するフレームワークが搭載されたことは、今後のコンピューティングにとって大きなターニングポイントになるかもしれない。現在は機械学習を行うために、大規模なコンピューティング環境と大量なデータが必要になる。しかし、学習済みのモデルをダウンロードして動かすだけなら、クライアント(Edgeコンピューティング)でも十分なパフォーマンスを持って動かすことができるだろう。
今後は、画像認識や画像変換などだけでなく、さまざまな用途が考えられるだろう。今後は、どのようにAIをアプリで利用していくのかを考える時代になるかもしれない。
Windows IoTのメリットを訴求
最後の「Windows IoT in the Intelligent Cloud and Intelligent Edge」では、Windows IoTのメリットを訴えかけた。
AzureなどのIntelligent Cloudと組み合わせるには、Edgeに関してもインテリジェント化が必要になる。Windows IoTは、Windows 10の各機能がそのまま利用できるため、Intelligent Edgeの構築が非常に簡単になるとしている。
あまり普及しているとはいえないWindows IoTをなんとか普及させていこうとして、開発者に訴えかけたというところだろうか。
ただ、Windows MLがWindows IoTに入ってきて、ARMプロセッサなどのGPUで採用されたAI機能などを利用できるようになれば、組み込み機器でAI機能を積極的に利用できるようになるだろう。そうなれば、組み込み機器も高度なインテリジェントを持つものになっていく。