Windows 7 タスク バー関連の開発 - ジャンプ リストの活用 (その 1)

みなさん、こんにちは。Windows 開発統括部の古内です。

中断してしまった Windows 7 のタスク バー特集ですが、また今週から再開したいと思います。今日は、Developing for Windows Blog に 2009 年 6 月 22 日に投稿された 「Developing for the Windows 7 Taskbar – Jump into Jump Lists – Part 1」 の翻訳です。明日は Part 2 をお届けします。


Windows 7 タスク バー関連の開発 - ジャンプ リストの活用 (その 1)

今回の記事でも、Windows 7 タスク バーについて触れていきたいと思います。前回のブログ記事 「Windows 7 タスク バー関連の開発 - Application ID」 では、タスク バーの基盤アーキテクチャのコンポーネントとして、アプリケーション ID (AppID) がいかに大切かということをご説明しました。1 つのタスク バー ボタンにさまざまなアプリケーションをグループ化するうえで、AppID はきわめて重要なコントロールとなります。またこの AppID は、ジャンプ リスト項目を集約し、ジャンプ リストに表示する方法においても直接的な影響力を持っています。

Windows 7 のタスク バーは、ユーザーが最も頻繁に使用する "対象" にすばやく簡単にアクセスできるようにするために設計されました。 この "対象" とは、写真、音楽、Word ドキュメント、そしてアプリケーションやフォルダーへのリンクやショートカットなど、Windows の "クリック可能な" あらゆる種類のコンテンツを指しています。またすばやく簡単なアクセスとは、よく使用するプログラムにワンクリックで移動できたり、より少ないクリック数で操作を実行できたりすることを意味しています。つまり開発者は、ユーザーが使用したい対象にワンクリックで "ジャンプ" し、操作を直接開始できるようにする必要があります。これを実現するために、Windows 7 タスク バーでは "ジャンプ リスト" という概念が導入されました。タスク バー ジャンプ リストの作成に至ったその他の理由と作成過程については、Chaitanya のブログ記事 (「Engineering Windows 7 ブログ: Windows 7 のタスク バー」) と Channel 9 のビデオ (「Windows 7 の新しいタスク バー - 概要 (英語)」) をご覧ください。

私も新しいタスク バーを作成した理由について書きたいところですが (ユーザー機能とユーザビリティ全般に興味があるので)、ここではこのタスク バーの使用を可能にする API について説明しようと思います。開発者の皆さんには、ジャンプ リストをアプリケーション固有のミニ [スタート] メニューと考えていただきたいと思います。ジャンプ リストには、プログラムで一般的に使用される移動先 (名詞) とタスク (動詞) を表示することができます。ジャンプ リストを使用すると、アプリケーションを起動して関連コンテンツを読み込む必要がなくなるほか、事前にアプリケーションを起動しなくても一般的なタスクを実行できるようになるため、ユーザーは簡単に目的の移動先にアクセスすることができます。下の画像は、Microsoft Office Word 2007 で表示されるジャンプ リストの例です。[最近使ったもの] カテゴリの下に、Office Word で最近使用したドキュメントの一覧が表示されています。[最近使ったもの] に一覧された項目の 1 つをクリックすると、Office Word が起動され、すぐに関連するドキュメントが読み込まれます。

イメージ

Word 2007 は、Windows 7 タスク バーが利用可能になるずっと以前にリリースされたアプリケーションであるにもかかわらず、Windows 7 タスク バーで正常に機能することがわかっています。タスク バー ボタンはすべて同じタスク バー アイコンにグループ化され、ジャンプ リストに最近使用した Word ドキュメントが自動的に表示されます。この Office Word 2007 と Word ドキュメントのように、ジャンプ リストが自動的に作成されるしくみの詳細については、次回の投稿で説明します。ここでは、ジャンプ リストのさまざまな構成要素を見ていくことにしましょう。

製品出荷時には既定のタスクとして、アプリケーションの新しいインスタンスの起動、アプリケーションのタスク バーへの固定と固定解除、およびアプリケーションの終了があらかじめ設定されています。ジャンプ リストにアクセスするには、タスク バーのアプリケーション アイコンを右クリックします。ただし、下の画像のようにアプリケーションのジャンプ リストのコンテキストをカスタマイズすれば、タスク バーのエクスペリエンスをより詳細に制御することができます。

Windows 7 SDK では次のように定義されています。

"... 移動先は、[最近使ったもの]、[よく使うもの]、またはカスタムのカテゴリ (たとえば、この図の [Important] カテゴリ) に表示される項目のことで、ユーザーの使用状況に基づいて構成されます。移動先には、ファイル、フォルダー、Web サイトなどのコンテンツベースの項目を使用できます。ファイルベースでなくてもかまいません。移動先はユーザーがジャンプ リストに固定したり、ジャンプ リストから削除することができます。一般的に移動先は IShellItem オブジェクトとして表わされますが、IShellLink オブジェクトの場合もあります。..."

"...タスクは、アプリケーションで実行される共通のアクションです。個人の利用パターンには関係なく、アプリケーションのすべてのユーザーに適用されます。タスクは固定したり、削除することはできません。タスクは実際には各種コマンド (アクション) へのリンク (任意でパラメーターを付加) であるため、IShellLink オブジェクトとして表わされます。..."

開発者は次の作業を実行できます。

  1. アプリケーションの移動先の制御(ユーザーが直接 "ジャンプ" し、作業を開始できるように項目を制御すること)
    1. 対象となる移動先は、[最近使ったもの] や [よく使うもの] といった、よく知っているカテゴリです。
    2. カスタム カテゴリも他のすべてのカテゴリと同様に制御できますが、新しいカテゴリ名を作成し、格納する項目を選択できる点が異なります。
    3. [いつも表示 (ピン留め)] カテゴリは、ユーザーがジャンプ リストに永続的に表示されるように指定した、固定項目に対して使用されます。ジャンプ リストに項目を固定できるのはユーザーのみである点に注意してください。開発者がプログラムによって項目を固定することはできません。
    4. [いつも表示 (ピン留め)] カテゴリをジャンプ リストから完全に削除し、ユーザーが項目を固定できないようにすることも可能です。ただし、開発中のアプリケーションでユーザーによる項目の固定を禁止する場合は、事前に十分検討することをお勧めします。
  2. 共通のユーザー タスクの定義
    1. タスク バーには、アプリケーションの起動、固定/固定解除、終了といった、あらかじめ設定されたタスクが表示されます。これらのタスク バー タスクは、開発者が制御することはできません。ただし、ユーザー タスクを制御することは可能です。
    2. ユーザー タスクとは、アプリケーション開発者がジャンプ リスト レベルで表示させる共通のタスクのことであり、これにより、ユーザーがジャンプ リストから直接タスクを実行できるようになります (たとえば、アプリケーションを切り替えることなく Media Player で音楽をすべて再生できます)。通常は、アプリケーションのインスタンスを起動して目的のタスクを実行したり、下の Windows Live Messenger のジャンプ リストの画像のように、[MSN ホーム ページに移動] タスクをクリックして Internet Explorer などのアプリケーションを起動したりする場合に使用されます。繰り返しになりますが、ジャンプ リスト機能を使用すると、ユーザーはより短い時間や少ないクリック数で最終的な目的を達成できるようになります。これは、ユーザーの満足度を向上するために非常に効果的です。

イメージ

次の投稿では、タスク バー ジャンプ リスト API について詳しく説明します。しかし、まず、タスク バーのプログラミング モデルについて触れておく必要があります。タスク バーでは、他のすべての Windows Shell コンポーネントと同様に、各種の API を一連の COM インターフェイスを通じて提供します。ただし開発者は、Windows タスク バーの COM API を使用しなくても、いくつかの作業を実行することができます。