このページの本文へ

塩田紳二のWindows 8 IN-N-OUT 第7回

Windows 8の新機能「コントラクト」でアプリ連携が簡単に

2012年06月15日 12時00分更新

文● 塩田紳二

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

COMとコントラクトの違いとは?

 だがWindowsにはすでに、「COM」と呼ばれるコンポーネントを利用する仕組みがある。これは、さまざまな機能を持つコンポーネントをWindowsに登録しておくと、あとからインストールしたアプリケーションでも、該当の機能を使えるという仕組みだ。COMとコントラクトは似た部分があるが、COMでは利用する側が、最初からコンポーネントの機能や名前などを知っている必要がある点が大きく異なる。

 COMではコンポーネントを最新版に置き換えると、過去に作られたアプリケーションでも、最新のコンポーネントを利用できるようになるが、アプリケーションはあらかじめ、利用するコンポーネントを指定する情報を組み込んでおく必要がある(図2)。また、実行時に呼び出されるコンポーネントはひとつだけで、複数から選択することはできない。ただし特定のアプリケーションに対して、古いバージョンのコンポーネントを使わせるといった指定は可能だ(主として互換性維持のために)。

図2 Windowsにはコンポーネント機能(COMコンポーネント)があるが、こちらは機能の定まっているコンポーネントに名前を付けておき、利用側は名前を指定してコンポーネントを呼び出す。コントラクトは機能を呼び出すので、呼び出す側が相手の名前を知っている必要はない

 これに対して、コントラクトは最初から機能が指定されているため、これを利用するアプリケーションは、相手の名前などを知る必要もない。同様の機能を持つモジュールが複数あってもかまわない。

 コントラクトは、機能を提供するMetro Styleアプリケーション(提供側アプリ)が、自身が内部に持つモジュールをWindowsへと登録することで利用可能となる。コントラクトを利用する側のアプリケーション(利用側アプリ)は、必要に応じてコントラクトAPIを使って機能を呼び出す(図3)。

図3 「共有」コントラクトの場合、提供側アプリは開発時に、共有機能を持つことを定義しておく。利用側アプリから共有チャーム経由で「共有」が指定されると、利用側アプリは共有に利用できるデータをシステム側に転送する。Windows 8は共有先を選択して、必要なデータを提供先アプリに引き渡して共有処理を行なわせる。利用側アプリは共有先などについて知る必要はなく、自分が提供可能なデータのみ引き渡せばよい

 場合によっては、ユーザーから情報を指定させる必要もある。図3の共有の例ならば、共有先のサービスを選ぶといった場合だ。このような場合は提供側アプリが指定に必要な画面表示を行ない、ユーザーからの指示を受けてから、適切なデータを利用側アプリに引き渡す。

コントラクトの動作の実際

 コントラクトを利用する際には、提供側アプリが全画面を占有する独立したアプリとして動く場合と、利用側アプリの画面の一部に、ユーザーインターフェースを表示させる場合の2種類がある。

 検索コントラクトの場合は、提供側アプリが起動して、アプリ独自データの検索結果などを表示する。このような形態を「メインビューアクティベーション」(Main View Activation)という。

メインビューアクティベーションでは、提供側アプリが立ち上がる。検索チャームで「フォト」アプリを対象に検索を行なうと、フォトアプリが起動して検索結果を表示する(左)。この状態でタスクリストを見ると、「フォト」(右、赤枠内)が動作しているのがわかる

カテゴリートップへ

この連載の記事

注目ニュース

ASCII倶楽部

プレミアムPC試用レポート

ピックアップ

ASCII.jp RSS2.0 配信中

ASCII.jpメール デジタルMac/iPodマガジン