このページの本文へ

Windows Server 8でなにが変わる? ― 第3回

「非同期API呼び出し」にも対応へ

Metro Styleに対応するVisual Studio 11と開発ツール

2011年10月26日 06時00分更新

文● 塩田紳二

  • この記事をはてなブックマークに追加
  • 本文印刷

 Build Windowsでは、Windows 8やWindows Server 8だけでなく、Visual Studioの時期バージョンであるVisual Studio 11(コード名。以下VS11と略す)とExpression Blend 5(以下Blend5と略す)のDeveloper Previewが公開された。

 Windows 8のDeveloper Previewには、VS11のExpress版をあらかじめインストールしたISOイメージが配布されている。ただし、このVS11 Express版は、Metro開発のテンプレートのみを含む簡易版だ。フルセットのVS11を利用するためには、別途、ダウンロードを行なう必要がある。

Windows 8 Developer PreviewとともにインストールされるVS11 Expressは、Metro Styleアプリケーション開発専用のVS11。別途フルセットのVS11 Developer Previewもダウンロード可能

 また、Visual Studio Team Systemを使うには、これまではTeam Foundation Serverを設置する必要があったが、Windows AzureベースのサービスであるTeam Foundation Serviceが開始されることがあきらかになった。これにより、組織内にサーバー設置することが不要になるだけでなく、複数の組織、企業にまたがる開発プロジェクトをクラウドベースで統合することが可能になる。

 そのほか、言語関係としては、Windows Runtimeのサポート、そして.NET Framework 4.5(および対応するC#/VBなどの言語)などが発表されている。特にWindows Runtimeでは、非同期APIが標準となり、C#やVBには、非同期処理のための構文が追加されている。

VS11とMetro Styleアプリケーション対応の「Blend 5」

 VS11の大きな変更点の1つは、Metro Styleのサポートだ。Windows Runtimeのある環境(Windows 8もしくはWindows Server 8)では、Metro Styleアプリケーションのデバッグなどもサポートされる。Metro StyleのためのWindows Runtimeは、Windows 8にのみ搭載される。いまのところWindows 7などに提供される予定はないため、Metro Styleアプリケーションの実行やデバッグには、Windows 8(現時点ではDeveloper Preview)を使う必要がある。ただし、VS11自体は、Windows 7やWindows Server 2008 R2上でも動作する。

 また、Metro Styleでは、C++によるアンマネージコードアプリケーションの開発を可能にすることから、VS11全体でC++環境が整備された。たとえば、従来のVS2010では、C++でだけ、プロジェクトテンプレートを作ることができず、旧来のウィザードを使う方法でのみカスタムのプロジェクトテンプレートを作成できた。しかし、VS11では、VBやC#同様、Visual Studio Template Architectureによるテンプレート作成が可能になっている。

 また、Metro Styleでは、HTML5+JavaScriptでのアプリケーション開発もサポートされることから、HTML5やJavaScriptの編集(Code Editor)の強化が行なわれ、従来よりも編集中のコード解析がより進み、たとえば、「Go To Definition」などの機能が利用できるようになった。

 従来からHTMLやJavaScriptによる開発は可能だったが、おもに、Webサーバー(IIS)がホストするWebページの開発向けだった。しかし、Metro Styleでは、アプリケーション構築の言語としてHTML5、CSS3、JavaScriptが利用可能で、これらで記述したアプリケーションをMetro Styleアプリケーションとして動作させるホストプログラムがWindows 8には用意される。レンダリングやスクリプトエンジンは、IE10と同じものを共有する。

 Metro Styleアプリケーションでは、表示をおもにXAMLで行なうようになっており、そのためのツールとしてExpression Blend 5が用意される。また、前述のHTML5+JavaScriptでもMetro Styleアプリケーションが開発可能なことから、Blend5でも、HTML5の編集が可能になった。

Expression Blend 5では、XAMLだけでなくHTML5の画面デザインにも対応し、HTML5+JavaScriptでMetro Styleアプリケーションを開発する場合に利用できる

非同期プログラミング

 非同期API呼び出しとは、簡単にいえば、APIの機能リクエストと結果受け取りを、別のタイミング(呼び出し)で行なうものだ。これまでの、呼び出したら結果持って戻ってくるAPI呼び出しは、「同期API呼び出し」と呼ばれる。

 非同期API呼び出しは、1つのAPIの利用を2つの呼び出しに分けて行なう。最初の機能リクエストのAPIコールは、結果を持たずに戻り、次の呼び出しで結果を受け取る。これにより、時間のかかる処理があっても、アプリケーション側は別の処理を先行して進めることが可能になる。また、同様のAPIを複数呼び出し、結果の戻ってきたところから処理していくようなアプリケーションが作れる。

同期呼び出しと非同期呼びだしの例。C#でAsyncとAwaitキーワードを使い、API呼びだしを同期、非同期で呼び出す例。非同期呼びだしの場合、値が戻るのではなく、タスクが戻り、結果の参照は、タスクオブジェクトのメソッド呼びだしという型式になる。このとき、結果がまだ得られていないのであれば、結果が戻ってくるまで代入処理が待たされることになる

 非同期API呼び出しにより、結果を受け取るまでの時間をアプリケーションが他の作業に利用できる、あるいは、結果を受け取るまでの間、アプリケーションを完全に止め、他のアプリケーションにタイムスライスを分配できるというメリットがある。

 前者は、処理性能の向上に、後者は、電力消費やシステム全体の実行効率改善につながる。また、データのダウンロードなどAPI呼び出しに長い処理時間を取られてしまうと、その間UIの更新や応答などが行なえない可能性があり、反応の悪さとして体感されてしまう。こうした問題を防ぐためにも、APIの非同期処理は有効である。

 VBやC#では、このために「async」(VBではAsync)キーワードや「await」(同Await)キーワードが導入された。これらを使うと、APIの結果の取得のためにタスク(スレッド)が割り当てられ、結果を参照しようとした時に、まだ処理が終わっていなければ待たされるようになる。これまでの非同期呼び出しへの対応は可能だったが、ユーザーが個々のスレッドを自分で管理する必要があったが、.NET Framework 4.5では、スレッドプールからの割り当てから完了処理までを裏側で行ない、構文上は、非同期呼び出しであることをあまり意識せず利用できるようになった。

 これに伴い、.NET Frameworkは4.5となったが、これはMetro StyleおよびDesktop Styleアプリケーションの両方で利用できる。バージョン番号が4.5なので、基本的には、.NET Framework 4.0のマイナーチェンジとなり、4.0との互換性が保たれている。

カテゴリートップへ

この連載の記事
ピックアップ