Office 2010 のユーザー インターフェイスの機能拡張
Office 2007 のユーザー インターフェイスとしてリボンを導入する際に、RibbonX (リボンの機能拡張) モデル (Office の UI をプログラムでカスタマイズする新しい方法) も導入しました。RibbonX を利用して、サードパーティの開発者やソリューション プロバイダーは、それぞれの顧客に合わせた固有のシナリオに焦点を絞り、カスタムのタブやグループを作成することでリボンの機能をさらに強化することができます。
Office 2010 では、新しい Backstage ビューのカスタマイズをサポートすることで、ユーザー インターフェイスの機能拡張プラットフォームの適用範囲がさらに広くなりました。また、従来の RibbonX プラットフォームにもさらに新しい強力な機能がいくつか追加されています。
Backstage ビューの機能拡張
Backstage ビューは、Office の UI に欠かせない新しい要素です。リボンによってドキュメント作成機能が強化されたように、Backstage ビューによってファイル レベルの機能 (印刷、共有、配信、コラボレーションなど) が強化されます。サードパーティにとって、Backstage ビューの没入型ユーザー インターフェイスを意味のあるやり方で容易に拡張できることは、Office 2010 の機能拡張の対象範囲を大きく広げるものです。
このような疑問があるかもしれません。"どのような場合にリボンの機能を拡張し、どのような場合に Backstage ビューの機能を拡張したらよいのか" と。ドキュメント編集およびコンテンツ作成のシナリオを目標とするソリューションを開発する場合は (顧客がドキュメントを直接編集するときに役立つ機能)、リボンの機能を拡張する方法をとります。一方、ドキュメント、プロセス、およびそれらのドキュメントが関連付けられているカスタム ワークフローの操作に役立つ方法を顧客が必要としている場合は、Backstage の機能を拡張する方法をお勧めします。
例 1 – カスタム Backstage タブによる効率的なプロジェクト/プロセス管理
今日のドキュメントは、これまで以上に共有化され、さまざまな段階とサイクルを経て、内容が追加変更されて発展していきます。こうしたドキュメントに関わるプロセスは、多くの場合、かなりの部分がカスタマイズされ、組織独自のものに作り上げられています。Backstage ビューでは、ドキュメントや組織独自のプロセスに関するカスタム情報を確認でき、ユーザーがこれらのドキュメントをさまざまな段階に "移行" させることができます。
以下に示すのは、カスタマイズした [Contoso Process] タブを Backstage ビューに追加するアドインです。この例に示したカスタム UI は、すべて新しい Backstage の機能拡張モデルを使用して作成されています。[Contoso Process] タブには、スプレッドシートについての関連メタデータとそのスプレッドシートの現在のフェーズ、スプレッドシートを次の段階へ移行させるために必要な残りの手順が表示されます。赤く表示されている [Schedule For Design Phase] および [Open Design Issues] グループは、注意が早急に必要とされる問題があることを示します。右側のグラフに表示される "概略図" で、他のすべての関連スプレッドシートがプロセス中のどこに位置しているかを確認できます。このカスタム メタデータのすべてが、スプレッドシートをホストする SharePoint ライブラリから引き出せることは簡単に想像がつきます。
プロセス管理のためのカスタム メタデータとコンテキスト依存型のカスタム UI を表示する [Contoso Process] タブ
未解決の設計上の問題がすべて解決されれば、タブの一番上にある [Exit Design Phase] ボタンが有効になります。このボタンをクリックすると、スプレッドシートが正式なレビュー段階に移行し、タブの内容が動的に更新されて新しいステータスと新しい段階の要件が表示されます。
スプレッドシートの移行後の新しいフェーズを反映して動的に更新された [Contoso Process] タブ
例 2 – 組み込みの Backstage のタブへのカスタム機能の統合
たとえば、自分がソリューション開発者であると仮定します。ソリューションのユーザーにとって共通のシナリオはドキュメントの共有です。ユーザーは、Backstage ビューの組み込み [共有] タブの機能の使用を要望する一方、直接的な方法で Windows Live Hotmail および Facebook を介してドキュメントを交換することも要望しています。Backstage の機能拡張を使用すれば、このカスタムの機能を 2 つとも組み込みの [共有] タブに統合できます。
以下の図に、[Send via Hotmail] グループ (図の右下) を追加してカスタマイズされた [Send Using E-Mail] フォームを示します。
組み込みの [Send Using E-mail] フォームに統合されたカスタム [Send via Hotmail] グループ
同じく、新しい [Post to Facebook] タスク (および関連するフォーム) を追加してカスタマイズした [共有] タブを以下の図に示します。
カスタムの [Post to Facebook] タスクが追加された組み込みの [共有] タブ
例 3 – ファイルレベルのカスタム クイック コマンドの Backstage ビューへの追加
たとえば、自分がソリューション開発者であると仮定します。各ユーザーは、複数のドキュメントで同時に集中的なデータ編集を頻繁に行っています。ドキュメントを頻繁に開いたり閉じたりするため、ドキュメントを閉じるたびに保存を求めるメッセージが表示されない方がいいというのがユーザーの要望です。
Backstage ビューの機能拡張を使用すると、組み込みの [閉じる] コマンドをカスタムの [保存して閉じる] コントロール (ドキュメントを閉じる前に自動保存する) に置き換えることができます。
組み込みの [閉じる] をカスタムの [保存して閉じる] に変更した場合の、変更前と変更後の Backstage のナビゲーション ウィンドウ
Backstage ビューの機能拡張 – 開発者が全体の概要を把握できる
Backstage のカスタマイズは、リボンとコンテンツ メニューのカスタマイズを含んだマークアップ ファイルと同じファイルに定義されます。Backstage もまたトップ レベルの 1 つのノードにすぎません。Backstage の内部階層は、リボンの内部階層とほとんど同じです。特に、リボンとまったく同じように、Backstage のコア ビルディング ブロックにもタブが採用されています。Backstage のタブには、グループの列を 1 つまたは 2 つ含めることができます。前述した例のカスタム [Contoso Process] タブには、列が 2 つ含まれています。
リボンとは異なり、Backstage はトップ レベルのボタンもホストします。これらのボタンは、前述の例で示した [保存して閉じる] コマンドのように、ナビゲーション ウィンドウにクイック コマンドとして表示されます。
リボンのグループと Backstage のグループとではコンテンツの空間的構成が異なりますが、どちらも数多くの同じ種類のコントロールをホストします。それらのコントロールに対する コールバック関数 (各コントロールの固有の動作を定義し、Office コードによって呼び出されるカスタムの関数) の働きは、どちらのグループとも同じです。
Backstage 機能拡張の構造および機能の詳細については、今後のベータ版ドキュメントで公開される予定です。Office 2010 のベータ版ビルドの公開とともに、ドキュメントも Office 2010 (ベータ版) デベロッパー センターに公開される予定です。これらのドキュメントには、Backstage XML の全スキーマ、組み込みのコントロール ID のリスト、Backstage 機能拡張について包括的に説明する記事、および Backstage 機能拡張の多数のコード サンプルが含まれます。
Office 2007 でカスタマイズされた Office メニュー
Office 2007 で Office メニューをカスタマイズしたソリューションの場合、Office 2010 でも引き続きそのメニューは使用できます。Office メニューに追加したカスタムの機能はすべて Backstage ナビゲーション ウィンドウの [アドイン] に表示されます。
Backstage のナビゲーション ウィンドウに追加表示されたカスタムの Office メニュー (Office 2007 でカスタマイズされたもの)
RibbonX プラットフォームの機能強化
タブのアクティブ化とグループの自動サイズ変更は、リボン ソリューションの開発者から要望の多かった機能です。タブのアクティブ化機能により、開発者はタブをオンデマンドでアクティブ化でき、これにより、イベントに応じてタブを前面に表示できます (選択されている場合)。グループの自動サイズ変更では、ウィンドウの幅に合うようにリボンのカスタム グループのレイアウトが変更されます。コンテンツ メニューの機能拡張の強化も、よく寄せられる要望の 1 つです。Office 2010 ではこれらのすべての要望に対応しました。
タブのアクティブ化のサポート
カスタム タブのある Excel ソリューションの開発シナリオを考えてみましょう。各カスタム タブに特定のデータ型が含まれている場合、ユーザーがあるデータ型を操作したときに、適切なタブが前面に表示されるようにしたいとします。IRibbonUI オブジェクトの ActivateTab メソッドを使用する (カスタム タブのアクティブ化を指定する文字列型のパラメーターを渡す) ことでこの機能を実現できます。
IRibbonUI.ActivateTab(String tabID).
"並列" ActivateTabMso メソッドを使用すると、組み込みのタブをアクティブにでき、ActivateTabQ メソッドを使用すると、複数のアドインで共有されているタブをアクティブにできます (ActivateTabQ には、該当するアドインの名前空間を指定した文字列型パラメーターの追加が必要です)。
カスタムのグループの自動サイズ変更
ウィンドウのサイズを変更すると、組み込みのリボン グループのレイアウトが変化することにおそらく気がつくことでしょう。ウィンドウを拡大すると、リボンの各グループのスペースが広がりラベルが表示されるか、一部のコマンドのサイズが大きくなります。また、ウィンドウを縮小すると、各グループも小さくなり、狭い領域に多くの機能が詰め込まれます。
ソリューションのユーザーが、複数のアプリケーションを同時に表示できるよう、ウィンドウを最大化したくないと思っているとします。一方、アプリケーションのウィンドウを小さくしたときに、カスタム グループのコマンドがすぐにボタン 1 つにリサイズされ、余分なクリック操作が必要になったりするのは望ましくないとも思っています。カスタム グループのサイズを変更するタイミングや正確な方法を定義しなくても、Office 2010 では、グループが適切にレイアウト変更されるように指定 (autoScale プロパティを "true" に設定) するだけで、ウィンドウのサイズ変更に合わせて、カスタム グループのサイズが適切に変更されます。
autoScale=true によるアドイン グループのサイズ変更の例を以下の図に示します。グループが最終的に 1 つのボタンで表示されるときに使用されるアイコンとして、グループにそのアイコンを割り当てておく必要があります。
Office 2010 で、サイズ変更されたアプリケーション ウィンドウ内に収まるようにレイアウト変更されたカスタム グループ
コンテンツ メニューの機能拡張
Office のカスタマイズ ソリューションを開発しているときに、頻繁に使用するコンテキスト依存型の機能に効率的にアクセスできることがソリューションのユーザーにとって重要だということになった場合、おそらく右クリック メニューのカスタマイズを検討されたことでしょう。一部のコンテキスト メニューは、CommandBars オブジェクト モデルで拡張可能になっています。しかし、この方法では変更できないコンテキスト メニューがあります。たとえば、PowerPoint 2007 のコンテキスト メニューの中には、CommandBars オブジェクト モデルでアクセスできないものがあります。また、コントロールの一部の種類 (ギャラリー、スプリット ボタン) は、CommandBars オブジェクト モデルではコンテキスト メニューに追加できません。
Office 2010 では、コンテキスト メニューをカスタマイズする場合も、馴染みのある RibbonX モデルを使用できます。組み込みのメニューでサポートされるあらゆる種類のコントロールが、カスタマイズされたコンテキスト メニューに追加できるようになりました。Office 2010 では、コンテキスト メニューは、カスタム UI マークアップ (リボンを既にホストしているのと同じマークアップ) の新しいトップレベルのノードとしてアクセスできます。
Excel セルのカスタマイズされたコンテキスト メニュー (カスタムのスプリット ボタン、ギャラリー、および区切り線を追加)
結論
新しい Backstage 機能拡張プラットフォームとリボン機能拡張を組み合わせることにより、以前のソリューションよりも機能豊富な Office 2010 ソリューションを作成できます。Office 2010 のテクニカル プレビュー版でもう既にこれらの機能を使い始められていることと思います。引き続きご意見をお寄せいただければ幸いです。
参考サイト
- Office 2010 (ベータ版) デベロッパー センター
- Office Fluent ユーザー インターフェイス デベロッパー ポータル
- John Durant による Office 開発に関するブログ
- Brian Jones および Zeyad Rajabi による Office ソリューションに関するブログ
- Developer Resources on Jensen Harris による Microsoft Office 2007 UI に関するブログの開発者向けリソース
- Mirko Mandic、Office ユーザー エクスペリエンス プログラム マネージャー
更新日 – 11 月 3 日: 投稿の最後の「参考サイト」のセクションに、参照サイトのリンクを追加。
更新日 – 11 月 20 日: Office 2010 公開ベータ版のリリースとともに提供された技術情報の追加。詳細については、以下の Mirko のコメント (11 月 20 日投稿) を参照。
原文の投稿日: 2009 年 11 月 3 日 (木) 午前 6:04 投稿者: OffTeam
これはローカライズされたブログ投稿です。原文の記事は、https://blogs.technet.com/office2010/archive/2009/11/03/ui-extensibility-in-office-2010.aspx をご覧ください。