アットマーク・アイティ @IT@IT情報マネジメント@IT自分戦略研究所QA@ITイベントカレンダー  
 @IT > Visual Studio 2008快適活用ガイド 第3回
 
@IT Special

 

PR

@IT Special 記事企画
Visual Studio 2008 快適活用ガイド
― 開発生産性を高め、技術の幅を広める開発環境の活用方法 ―

第3回 利用者に優しいユーザー・インターフェイス

 あなたが構築しているシステムでは、利用者が本当に使いやすいユーザー・インターフェイス(以降、UI)を提供できているだろうか。

 例えば、ある営業部で担当者ごとの売り上げを入力/集計/グラフ化する業務アプリケーション(以降、業務アプリ)を開発する場合を考えてみよう。その営業部では、これまでは表計算ソフトのMicrosoft Excelを使っていたが、より高度な集計などの先進の機能を搭載した新しい業務アプリを導入しようということになった。その開発依頼を受けて、斬新かつ操作性にも優れた業務アプリを新しく構築した。しかしである。それを使ってみた営業担当者はあまりうれしそうな顔をしない。「使いづらい」「いままでとやり方が変わって面倒」「前の方がもっと速く入力できた」……さんざんないわれようである。開発者から見れば「確実にExcelよりも速く入力できるようになっている」はずなのだが、何が間違っていたのか。

 このようなケースでは、実は業務アプリの性能やUIデザインそのものが原因なのではなく、新しいUIを見た利用者が、Excelとの違いに困惑して拒絶反応を示しているだけということが少なくない。つまりこの業務アプリは、確かに素晴らしい機能性を提供しているのかもしれないが、利用者が「ストレスなく簡単に使える」という点で失敗しているわけだ。ソフトウェアを利用するのは開発者ではなく、あくまで利用者である。開発者が良かれかれと思って手間暇かけても、利用者が容易に使えなかったり、ストレスを感じて結局使わなくなったりするのでは意味がない。

 例えばこのケースのように、利用者がすでにExcel/Wordなどを使い慣れているのであれば、それ自体を業務アプリのUIとして活用することも検討すべきだ。業務アプリの利用者は、コンピュータの操作を主たる業務とする人たちばかりではない。例えば小売りチェーンの店長は、コンピュータの操作は業務のごく一部で、在庫管理や売り上げ管理で使っているExcelなら使えるが、それ以外となるとさっぱり使えない、ということもある。

 またUIだけでなく、高度なOfficeの機能を活用できれば、利用者の求める業務アプリを短時間で効率的に開発できる場合もあるだろう。マイクロソフトは、こうしたOfficeベースのカスタム・アプリケーションを開発するための環境として、「Microsoft Visual Studio 2008 Tools for Office」略して「VSTO」を提供している。

 

  VSTOとは何か? ソリューションとアドインの違い

 

 VSTOは「the Microsoft 2007 Office system(以降、Office 2007)やthe Microsoft Office System 2003(以降、Office 2003)を活用したクライアント・ソリューション」(以降、VSTOソリューション)、および「Office 2007/2003用のアドイン」(以降、VSTOアドイン)を構築するためのテクノロジで、Visual Studio 2008(以降、VS 2008)のProfessional Edition以上に搭載されている。

 VSTOソリューション(別名「ドキュメント・レベルのソリューション」)とは、(冒頭の営業部の例で紹介したような)業務アプリのフロントエンドUIとしてExcelワークブックやWordドキュメントを活用するための技術である。これにより業務アプリのUIを、Officeユーザーにとって親しみやすく、自由度の高いものにできる。

ExcelワークブックによるVSTOソリューションの例
このVSTOソリューションでは、「NorthWind」というデータベース内にある「Products by Category」ビューの内容を自動的に読み込んで、それをExcelシート上に表示している。

 もう一方のVSTOアドイン(別名「アプリケーション・レベルのアドイン」)とは、Word、Excel、PowerPointといったOfficeアプリケーション自体を拡張して、独自の機能を追加(=アドイン)する技術だ。これによりOfficeアプリケーションの利便性や利用者の生産性を高められる。

 VSTOアドインはOffice 2007/2003に対応しており、Office 2003以降で搭載された「作業ウィンドウ」や、Office 2007の新機能である「リボン」も実装できる。なお、作業ウィンドウとは、ExcelやWordアプリケーションの端(基本的には右端)にドッキングして表示される小さなウィンドウのこと。リボンとは、ExcelやWordアプリケーションなどの上部に表示される一種のツールバーのことである。

Excelアプリケーションに独自のVSTOアドインを適用した例
このExcelアプリケーションには、リボンと作業ウィンドウを実装した独自のVSTOアドインが適用されている。
  独自のリボン。VSTOアドインのリボンは基本的には[アドイン]タブに表示されるが、独自のタブを追加することも可能だ。この画面の[group1]グループ内にある[ [カレンダー] 作業ウィンドウ]トグル・ボタンが、今回追加した独自のリボンの内容。トグル・ボタンをクリックすると、の[カレンダー]作業ウィンドウの表示/非表示が切り替わる。
  独自の[カレンダー]作業ウィンドウ。Excelシート内のセルにカーソルを置いてセルを選択し、カレンダーの日付をクリックすると、選択されているセルにその日付が入力される。

 以下では、VSTOソリューションとVSTOアドイン、それぞれの簡単な実装例について見ていくことにしよう。紙面の都合でコードの説明は割愛。以下では実装方法を詳しく学ぶというよりも、VSTO開発の雰囲気を感じ取っていただきたい。

 

  ユーザー・フレンドリで自由度の高い「VSTOソリューション」

 

 まずはVSTOソリューションを構築する方法について紹介する。

 最初にプロジェクトの新規作成を行う。これには、VS 2008のIDEのメニュー・バーから[ファイル]−[新規作成]−[プロジェクト]を実行し、表示される[新しいプロジェクト]ダイアログで[Visual C#](もしくは[Visual Basic])−[Office]というカテゴリを選択し、適切なプロジェクト・テンプレートを選択する。VSTOソリューションを構築できるテンプレートは主に次の4つだ*1

  • Excel 2007 ブック
  • Word 2007 ブック
  • Excel 2003 ブック
  • Word 2003 ブック

 プロジェクト・テンプレートを選んでプロジェクトを作成すると、VS 2008の[ソリューション エクスプローラ]内に、「.xls/.xlsx/.xlsm/.xlsb」などの拡張子のExcelワークブック、もしくは「.doc/.docx/.docm」などの拡張子のWordドキュメントが作成される*2

*1 このほかにも、「Excel 2007 テンプレート」「Word 2007 テンプレート」など、名前に「テンプレート」が含まれているプロジェクト・テンプレートも選択可能。これらを選ぶと、「.xlt/.xltx/.xltm/.dot/.dotx/.dotm」などの拡張子を持つテンプレート・ファイルが作成される。なおテンプレートとは定型の文書を作る際の基になる型のことで、例えばいつも同じ形式の企画書を作成する場合にはテンプレート・ファイルを活用することで企画書の共通部分である枠やフォントなどを再利用できる。
*2 それぞれの拡張子に対応するドキュメント名は次の表のとおり。なお「バイナリ ブック」は読み込みと保存が素早く行える形式である。

2007 Office System Office System 2003
拡張子 ドキュメント名 拡張子 ドキュメント名
.xlsx Excel 2007 ブック .xls Excel 97-2003 ブック
.xlsm Excel 2007 マクロ有効ブック
.xlsb Excel 2007 バイナリ ブック
.xltx Excel 2007 テンプレート .xlt Excel 97-2003 テンプレート
.xltm Excel 2007 マクロ有効テンプレート
.docx Word 2007 文書 .doc Word 97-2003 文書
.docm Word 2007 マクロ有効文書
.dotx Word 2007 テンプレート .dot Word 97-2003 テンプレート
.dotm Word 2007 マクロ有効テンプレート

 ここでは「Excel 2007 ブック」テンプレート(.xlsxファイル)を選択して新規プロジェクトを作成してみよう。

 プロジェクトを新規作成すると、Excelファイル(ExcelWorkbook1.xlsx)が生成される。これを開くと、VS 2008の編集領域にExcelシート・デザイナが表示される。Excelシート・デザイナでは、通常の開発と同じように[ツールボックス]ウィンドウからコントロールやコンポーネントをドラッグ&ドロップしてExcelシート上に配置できる。

コントロール/コンポーネントの追加

 それでは[ツールボックス]ウィンドウの[Excel コンポーネント]タブ内の「ListObject」コントロールを、Excelシート・デザイナ上に配置してみよう。

VSTOソリューションでのコントロールの配置(Excelシート・デザイナ)
Excelシート・デザイナでは、通常のWindowsフォーム・デザイナと同じように、[ツールボックス]ウィンドウからドラッグ&ドロップするだけで、Excelシート上へのコントロールやコンポーネントが配置できる。
  [ソリューション エクスプローラ]内の「ExcelWorkbook1.xlsx」ファイル項目をダブルクリックしてUIデザインを開始する。
  「ListObject」コントロールを配置する。これにより、[ListObject コントロールの追加]ダイアログが表示され、どの範囲のセルをListObjectコントロールに対応させるかを指定できる。この例では「A列1行目〜E列1行目($A$1:$E$1)」の範囲のセルを指定している。

 ListObjectコントロールはデータベースなどと連携してデータの一覧をExcelシート上に表示するためのもの。そこでここでは、ListObjectコントロールと、「NorthWind」というデータベース内にある「Products by Category」ビューを連携させてみよう。これを行っているのが次の画面だ。

ListObjectコントロールのデータソースの設定
ListObjectコントロールとデータベースを結び付けるデータソースを設定する。
  [プロパティ]ウィンドウの[DataSource]プロパティを編集すると、この画面のようにデータベースとの連携に必要なコンポーネント(データセットやテーブルアダプタなど)が自動的に追加され、ListObjectコントロールを対応させたセルの見出しタイトルがそのデータベースのデータに合わせて自動的に設定される。

 以上でデータベースとの連携は完了だ。これを実行すると冒頭で示した画面「ExcelワークブックによるVSTOソリューション」と同じ動作になる。

操作ウィンドウについて

 VSTOソリューションでは、「操作ウィンドウ」が利用できる。操作ウィンドウ(ActionsPane、正式名称「[ドキュメント アクション]作業ウィンドウ」)は、後述する「作業ウィンドウ」の一種で、Officeドキュメントに対して独自の操作を実行するために用意されているウィンドウである。操作ウィンドウの実装方法は、後述の作業ウィンドウの実装とあまり変わらないので、説明を割愛する。なおVSTOソリューションでは、操作ウィンドウ(=[ドキュメント アクション]作業ウィンドウ)以外の独自の作業ウィンドウは実装できないので注意してほしい。

リボンについて

 VSTOソリューションでは、独自の「リボン」も利用できる。実装方法はVSTOアドインの場合と同じなので、後述の説明を参考にしてほしい。

 

  Officeを拡張して利便性や生産性を高める「VSTOアドイン」

 

 次にVSTOアドイン開発の方法について紹介する。

 最初にVSTOアドインのプロジェクトを作成する。VS 2008で利用できるプロジェクト・テンプレートは以下のとおり。

  • Excel 2007 アドイン
  • Word 2007 アドイン
  • Outlook 2007 アドイン
  • PowerPoint 2007 アドイン
  • Visio 2007 アドイン
  • Project 2007 アドイン
  • InfoPath 2007 アドイン
  • Excel 2003 アドイン
  • Word 2003 アドイン
  • Outlook 2003 アドイン
  • PowerPoint 2003 アドイン
  • Visio 2003 アドイン
  • Project 2003 アドイン

 このうち、本稿では「Excel 2007 アドイン」テンプレートを選択した。

独自の作業ウィンドウの作成

 プロジェクトが新規作成されたら、[ソリューション エクスプローラ]のプロジェクト項目を右クリックして、表示されるコンテキスト・メニューから[追加]−[ユーザー コントロール]を選択し、ユーザー・コントロールのソース・ファイル(UserControl1.cs)を追加する。これが作業ウィンドウのUIとなる。

 次に「Excel」アドイン項目の配下に用意されている「ThisAddIn.cs」ファイルを編集する。ここでは、Excelアドインの起動時に、先ほど追加したユーザー・コントロールと、Excelアプリケーションの作業ウィンドウを結び付けて、表示する処理を記述する。次の画面はそのコーディング例である。

VSTOアドインでの独自処理の追加
VSTOアドインのメインの処理が実装されているThisAddIn.csファイルを編集しているところ。
  [ソリューション エクスプローラ]内の「ThisAddIn.cs」ファイル項目をダブルクリックして編集を開始する。
  独自の処理を行うコードを追加する。この例では、ExcelアドインのStartupイベント・ハンドラ内で、先ほど追加したユーザー・コントロールのインスタンスを生成し、そのインスタンスを作業ウィンドウに追加する処理を行う。また、作業ウィンドウが最初から表示されるようにする。

 以上で独自の作業ウィンドウが表示されるようになったので、後はユーザー・コントロール(UserControl1.csファイル)に機能を追加していくだけだ。ここではカレンダーを配置してみよう。

独自の作業ウィンドウのUIデザイン
作業ウィンドウ(UserControl1.csファイル)のUIデザインは、通常のユーザー・コントロールの開発と同じ。[ツールボックス]からコントロールなどをフォーム・デザイナ上にドラッグ&ドロップで配置する。
  [ソリューション エクスプローラ]内の「UserControl1.cs」ファイル項目をダブルクリックしてUIデザインを開始する。
  コントロールを追加する。この例では、「MonthCalendar」コントロールをユーザー・コントロール上に追加している。

 そして、次の画面のようにユーザー・コントロール(UserControl1.csファイル)のコードを編集して、このカレンダーで日付が選択されたときに、Excelシート内の現在選択されているセルにその日付を入力する処理を実装する。

独自の作業ウィンドウのコード編集
作業ウィンドウ(UserControl1.csファイル)のコード編集も通常のユーザー・コントロールの開発と同じで、コントロールをダブルクリックしたりして各種イベントに対するイベント・ハンドラを追加し、その内部に処理コードを実装する。
  日付が選択されたときに発生するDateSelectedイベントのイベント・ハンドラを追加し、その内部に、選択されているセルすべてに日付の文字列を設定する処理を記述している。

 以上で完成だ。これを実行すると冒頭で示した「ExcelアプリケーションのVSTOアドイン」という画面の「独自の[カレンダー]作業ウィンドウ」と同じ動作を行う。

独自のリボンの作成

 続いて、独自のリボンを作成する。なおリボンが利用できるのは、次の4つのアプリケーションのみである。

  • Excel 2007
  • Word 2007
  • Outlook 2007
  • PowerPoint 2007

 ここでは、先ほど実装した作業ウィンドウの表示/非表示を切り替えるトグル・ボタンを持つリボンを作成してみよう。

 まず、[ソリューション エクスプローラ]のプロジェクト項目を右クリックして、表示されるコンテキスト・メニューから[追加]−[新しい項目]を選択。[新しい項目の追加]ダイアログで「Office」カテゴリにある「リボン (ビジュアル デザイナ)」テンプレートを選択して、リボンのソース・ファイル(Ribbon1.cs)を追加する。

 これにより、VS 2008の編集領域にリボン・デザイナが表示される。ここでも、[ツールボックス]ウィンドウからのドラッグ&ドロップで、コントロールやコンポーネントをリボン・フォーム上に配置できる。次の画面は、オンとオフを表現する「ToggleButton」コントロールを配置して、絵やテキストなどのプロパティ設定を行っているところだ。

独自のリボンのUIデザイン
リボン・デザイナでのUIデザインは、Windowsフォーム・デザイナでの場合と変わらない。
  [ソリューション エクスプローラ]内の「Ribbon1.cs」ファイル項目をダブルクリックしてUIデザインを開始する。
  コントロールを追加する。この例では、「ToggleButton」コントロールをリボン・フォーム上に追加している。
  ToggleButtonコントロールを選択した状態で[プロパティ]ウィンドウでプロパティの設定を行う。

 次に、リボン(Ribbon1.csファイル)のコードを編集する。ここでは、次の画面のように、ToggleButtonコントロールがクリックされたときに、[カレンダー]作業ウィンドウの表示/非表示を切り替える処理を記述する。

独自のリボンのコード編集
リボン(Ribbon1.csファイル)のコード編集もこれまでと同様に各種イベントのイベント・ハンドラなどを記述する。
  ToggleButtonコントロールのClickイベント・ハンドラを追加し、その内部で[カレンダー]作業ウィンドウ(=Globals.ThisAddIn.myTaskPane)の表示/非表示を切り替える処理を記述している。
  作業ウィンドウ(=Globals.ThisAddIn.myTaskPane)のVisibleChangedイベントのイベント・ハンドラを(Ribbon1.csファイル内に)追加し、その内部に「作業ウィンドウの表示/非表示が切り替わったと同時にToggleButtonコントロールのオン/オフの表示も切り替える処理」を記述している。

 以上でリボンも完成した。これを実行すると冒頭の画面「ExcelアプリケーションのVSTOアドイン」の「独自のリボン」と同じ動作を行う。

 以上、VSTOの機能と実装例を概観してきた。紙面の都合ですべてを紹介しきれなかったが、VSTOにはもっと多くの機能が搭載されている。例えば、企業の情報共有ポータル・サイトを構築できるOffice SharePoint Server 2007のカスタム機能の実装に対応している。この機能をうまく活用すれば、企業内で部署を超えた情報共有が実現でき、業務のコラボレーションが向上するだろう。また、イントラネットやインターネット経由でセキュリティを保ったままプログラムを配布/更新するテクノロジであるClickOnceによるソリューションやアドインの配布にも対応している。VS 2008よりも前のVSTOではプログラムの配布の大変さが問題となることがあったが、この問題は解消されている。

 VSTOの良さは何といっても.NET Frameworkのパワーを存分に生かせることだ。強力な.NETのクラス・ライブラリはもちろん、これまでの.NET開発で築き上げてきた資産を.DLLファイル経由などで利用することも可能だ。.NET開発に慣れた開発者であれば、そのスキルを生かせるのも魅力の1つである。これらは、従来のVBA(Visual Basic for Applications)マクロやOffice COM(Component Object Model)アドインでは得られない、VSTOならではのメリットである。業務アプリにおけるVSTO活用は、.NET開発者であれば現実的かつ有力な選択肢の1つとなり得るだろう。




「本物の実力を備えた、真のプロフェッショナル」を目指す意欲的なデベロッパーに向け、開発環境「Visual Studio 2008」のさまざまな活用方法を紹介。
インデックス
第2回 チーム開発を円滑に進めて作業効率を高める
第3回 利用者に優しいユーザー・インターフェイス
 

提供:マイクロソフト株式会社
企画:アイティメディア 営業局
制作:デジタル・アドバンテージ
掲載内容有効期限:2008年5月31日
 



Visual Studio 2008 情報
Visual Studio 2008 情報
開発ツールの最新版、Visual Studio 2008 に関するページです。
Visual Studio Team System 2008 情報
より高品質なソフトウェア開発を支援する Visual Studio Team System の最新版に関するページです。
Visual Studio 2008 プレスリリース
Visual Studio 2008 開発完了についてのプレスリリースです。
Visual Studio 2008 基本情報
Visual Studio 2008 の基本的な情報をまとめたページです。
Visual Studio 2008 の入手方法
Visual Studio 2008 の入手方法についてまとめたページです。

Visual Studio 2008 オンラインショップ情報
Visual Studio 2008 をご購入いただけるオンラインショップ、および各オンラインショップで行っているキャンペーン情報を紹介します。

Visual Studio 2008 関連情報
.NET Framework Developer Center
.NET Framework に関する技術情報や入手方法はこちらから。
MSDN サブスクリプション
Windows 環境におけるソフトウェア開発を包括的にサポートするサービスに関するページです。
Expression Studio
様々なアプリケーションにおいて、リッチなユーザエクスペリエンスを実現するためのツールに関するページです。



 
@ITトップ@IT Special インデックス会議室利用規約プライバシーポリシーサイトマップ