次の方法で共有


Outlook ソリューション開発用 API またはテクノロジを選択する

概要: この記事では、Microsoft Outlook を拡張する各 API およびテクノロジについて説明します。また、その API やテクノロジを評価し、その中からソリューション開発に適したものを選択できるようにサポートします。

適用対象: Office 2007 | Outlook | Outlook 2007 | Outlook 2010 | Visual Studio

この記事の内容
概要
客観的な評価基準
オブジェクト モデルまたは PIA の決定要因
MAPI の決定要因
補助 API の決定要因
インプロセス ソリューションとアウトプロセス ソリューション
マネージ ソリューションとアンマネージ ソリューション
特定分野の API およびテクノロジ
まとめ
その他の技術情報 - オブジェクト モデルと PIA
その他の技術情報 - 補助 API
その他の技術情報 - プライマリ参照、リソース、およびコード サンプル

公開: 2011 年 4 月

提供元:  Angela Chu-Hatoun、Microsoft Corporation

目次

  • 概要

  • 客観的な評価基準

  • オブジェクト モデルまたは PIA の決定要因

  • MAPI の決定要因

  • 補助 API の決定要因

  • インプロセス ソリューションとアウトプロセス ソリューション

  • マネージ ソリューションとアンマネージ ソリューション

  • 特定分野の API およびテクノロジ

  • まとめ

  • その他の技術情報 - オブジェクト モデルと PIA

  • その他の技術情報 - 補助 API

  • その他の技術情報 - プライマリ参照、リソース、およびコード サンプル

概要

Microsoft では、Microsoft Outlook を拡張するさまざまな API およびテクノロジ、たとえば、Outlook オブジェクト モデルと対応する Outlook プライマリ相互運用機能アセンブリ (PIA)、Messaging API (MAPI)、補助 API、Outlook Social Connector (OSC) プロバイダー拡張機能、および Microsoft Office Mobile Service (OMS) をサポートしています。オブジェクト モデル、PIA、MAPI、および補助 API は、ほとんどの Outlook ソリューションで使用されます。OSC プロバイダー拡張機能と OMS は用途が限定され、OSC プロバイダー拡張機能はソーシャル ネットワーク データを Outlook に統合し、OMS はモバイル デバイスを Outlook および Microsoft SharePoint のモバイル機能に統合します。既存の Outlook ソリューションのほとんどでオブジェクト モデル、PIA、および MAPI が使用されているので、この記事では、こうした API の選択基準について説明します。ソリューションで使用される API は必ずしも 1 つに絞る必要はありません。たとえば、C++ で記述された COM アドインは、同じソリューションでオブジェクト モデル、MAPI、および補助 API を使用することができます。

この記事を最大限に利用するには、Outlook についてユーザー レベルで理解している必要があります。また、一般的なソフトウェア開発に関する知識も必要です。ただし、これらの API またはテクノロジがサポートする機能を包括的に把握しておく必要はありません。この記事は、次の質問に対する回答を見つけるのに役立ちます。

  • ソリューションの目的、対象市場、および使用可能なリソースだけがわかっている場合、API を選択するには、他にどのような基準を検討する必要があるか。

  • ソリューションを以前のバージョンの Outlook (Outlook 2003 など) で実行する必要がある場合、これは API にどのように影響するか。

  • 数千のアイテムが含まれる Outlook フォルダーを反復処理する必要があるソリューションで、アイテムを変更できるようにするには、どの API が最適に動作するか。

  • ソリューションが Outlook ビジネス ロジックに大きく依存し、さらに他の Office アプリケーションを使用している場合、Outlook オブジェクト モデルを選択するのが最善か。

  • オブジェクト モデルおよび MAPI では、Outlook の何を拡張できるか。

  • オブジェクト モデルまたは MAPI を使用してタスクを行うことができる場合、どちらの API を使用するかを決めるにはどうするか。

この記事では、次のセクションで選択基準について説明します。

  • 客観的な評価基準 - オブジェクト モデル、PIA、および MAPI の機能、開発、セキュリティ、および展開の客観的な特性について説明します。

  • オブジェクト モデルまたは PIA の決定要因 - オブジェクト モデルまたは PIA を使用することを選択するときに検討すべき主なポイントを示します。

  • MAPI の決定要因 - MAPI を使用することを選択するときに検討すべき主なポイントを示します。

  • 補助 API の決定要因 - 補助 API を使用することを選択するときに検討すべき主なポイントを示します。

  • インプロセス ソリューションとアウトプロセス ソリューション - Outlook インプロセスまたはアウトプロセスで実行されているソリューションを実装するかどうかを決めるときに検討すべき主なポイントを示します。

  • マネージ ソリューションとアンマネージ ソリューション - マネージ ソリューションまたはアンマネージ ソリューションを作成するかどうかを決めるときに検討すべき主なポイントを示します。

  • 特定分野の API およびテクノロジ - OSC プロバイダー拡張機能と OMS の概要について説明し、追加情報を提供します。

客観的な評価基準

このセクションでは、オブジェクト モデル、PIA、および MAPI を比較し、どれが自分のニーズに対応するかを判断する際に使用できる基準について説明します。どの基準を優先するかは、プロジェクトおよび使用できるリソースによって異なります。

オブジェクト モデルおよび PIA の客観的な評価基準

クライアント コンピューターで実行されているソリューションは、Outlook オブジェクト モデルまたは PIA を使用して、連絡先、メッセージ、予定表アイテム、会議出席依頼、タスクなどの Outlook アイテムにプログラムでアクセスできます。MAPI とは異なり、Outlook オブジェクト モデルおよび PIA には、Outlook ユーザー インターフェイスの変更 (現在のフォルダーの変更、Outlook インスペクターの表示など) に対するイベント通知機能が用意されています。

注意

ソリューションが Microsoft Exchange メールボックスまたは個人用フォルダー (.pst) ファイルに保存されているデータにアクセスできるようにするには、アプリケーションが実行されているクライアント コンピューターに Outlook がインストールおよび構成されている必要があります。

Outlook オブジェクト モデルと PIA では、Outlook を拡張する機能として同じものをサポートしています。PIA では、マネージ インターフェイスが COM ベースのオブジェクト モデルにマップされ、マネージ ソリューションと対話できるように定義されます。このセクションで説明する機能、セキュリティ、および展開基準のほとんどは、オブジェクト モデルと PIA に同じように適用されます。COM と .NET Framework の間の相互運用性が PIA によってどのように促進されるかの詳細については、「COM と .NET の相互運用性の概要」および「Outlook PIA のアーキテクチャ」を参照してください。

このセクションの表では、次のカテゴリ別に評価基準を定義します。

  • 機能基準 - テクノロジによってできること、およびできないことについて説明します。

  • 開発基準 - テクノロジを使用するのに必要な開発ツールまたは情報について説明します。

  • セキュリティ基準 - テクノロジに関連するセキュリティおよびアクセス許可の問題について説明します。

  • 展開基準 - テクノロジの推奨の展開および配布方法について説明します。

以下の表は、Outlook オブジェクト モデルと PIA の評価基準を示しています。

機能基準

基準

Outlook オブジェクト モデルまたは PIA

アプリケーション ドメイン

Outlook オブジェクト モデルまたは PIA を使用するアドインあるいはスタンドアロンのアプリケーションは、通常、ユーザー固有のメッセージを処理したり、Outlook ユーザー インターフェイスをカスタマイズしたり、カスタマー リレーションシップ マネジメント (CRM) ソリューションなど、Outlook に統合する特別なソリューション用のカスタム アイテムを作成したりします。Outlook オブジェクト モデルまたは PIA は、特に Microsoft Exchange Server におけるアプリケーション開発が許可されていない場合に、非公式のワークフロー プロセスにおけるメッセージ処理で使用されることがあります。ブラウザー ベースのクライアントとは異なり、キャッシュモード操作により、ユーザーがオフラインの場合、または企業ネットワークから切断されている場合でも、Outlook ソリューションを動作させることができます。

主要オブジェクト

Outlook オブジェクト モデルおよび PIA のトップレベルのオブジェクトは Outlook Application オブジェクトです。ExplorersConversationInspectorsViewsNavigationPaneSolutionsModuleFormRegion、および関連オブジェクトは、Outlook ユーザー インターフェイスの要素を表します。NameSpaceStoresFoldersAccountsAccountSelectorAddressEntriesExchangeUser、および関連オブジェクトは、Outlook セッション、プロファイル、ユーザー アカウント、メッセージ ストア、およびフォルダーの拡張をサポートします。データ レベルでは、MailItemAppointmentItemContactItemTaskItem など、複数のアイテム レベル オブジェクトが組み込みの Outlook アイテムの種類を表します。PropertyAccessorTableSearchItemPropertiesUserDefinedPropertiesAttachmentsCategoriesRecipientsRecurrencePatternRemindersRules、および関連オブジェクトは、アイテム レベル オブジェクトのカスタマイズおよび操作をサポートします。

データアクセス モデル

Outlook オブジェクト モデルおよび PIA は、すべてのデータを、オブジェクトとコレクションの階層構造のセットとして表します。

スレッド モデル

Outlook オブジェクト モデルおよび PIA へのすべての呼び出しが Outlook のメインのフォアグラウンド スレッドで実行されます。Outlook オブジェクト モデルがサポートする唯一のスレッド モデルはシングルスレッド アパートメント (STA) です。バックグラウンド スレッドからの Outlook オブジェクト モデルまたは PIA の呼び出しはサポートされていないので、これを行うと、エラーおよび予期せぬ結果がソリューションで発生する可能性があります。

アプリケーション アーキテクチャ

通常、COM アドインおよび他の Microsoft Office アプリケーションが、Outlook オブジェクト モデルを使用して Outlook を拡張します。マネージ ソリューションは、Outlook PIA、および Microsoft Visual Studio および .NET Framework の COM 相互運用レイヤーを使用して、Outlook オブジェクト モデルにアクセスできます。Visual Studio には、テンプレートと追加のクラス ライブラリおよびマニフェストが用意されており、Office ドキュメントとアプリケーションのカスタマイズを容易に行えるようにします。Visual Studio を使用した Outlook の管理アドイン開発の詳細については、「Architecture of Application-Level Add-Ins」および「Outlook Solutions」を参照してください。Outlook オブジェクト モデルは、Visual Basic for Applications (VBA) マクロおよび Windows Scripting Host (WSH) もサポートします。ただし、Windows Service アプリケーションはサポートしていません。

リモートでの使用

Outlook オブジェクト モデルおよび PIA は、Outlook がインストールされているコンピューターでのみ使用できます。Outlook オブジェクト モデルを使用すると、Outlook アプリケーションで使用できる Exchange に保存されている情報にアクセスできます。

トランザクション

Outlook オブジェクト モデルおよび PIA では、トランザクションをサポートしていません。

可用性

Outlook オブジェクト モデルは現在すべてのバージョンの Outlook で使用できます。PIA は Outlook 2003 以降で使用できます。新しい Outlook バージョンがリリースされるたびに拡張機能と強化機能が追加されています。

開発基準

基準

Outlook オブジェクト モデルまたは PIA

言語とツール

Outlook オブジェクト モデル アプリケーションを実装するには、Visual Basic、C# などの任意の COM または自動化対応言語、およびネイティブ C、C++ などの非 COM 言語を使用します。Outlook 2010 および Outlook 2007 の管理アドインを開発する場合は、Microsoft Visual Studio 2010 の Microsoft Office 開発ツールを使用することをお勧めします。Outlook 2003 の場合は、Microsoft Visual Studio 2005 Tools for the Microsoft Office system を使用することをお勧めします。Visual Studio 2010 の Office 開発ツールを使用して、32 ビット バージョンと 64 ビット バージョンの Outlook 用ソリューションを作成することもできます。Visual Studio 2010 の Office 開発ツールまたは Microsoft Visual Studio Tools for the Microsoft Office system を使用してソリューションを構築するとき、ターゲット プラットフォームで [Any CPU] オプションを指定すると、作成されたマネージ ソリューションは、32 ビット バージョンと 64 ビット バージョンの両方の Outlook 2010 で動作するようになります。

管理された実装

Outlook PIA を使用すると、Outlook オブジェクト モデルをマネージ コード環境で使用できます。これは、豊富なクラス ライブラリおよびサポート テクノロジによってサポートされ、VBA および COM アドインの多数の制限に対処します。PIA は、マネージ環境と COM 環境の間のブリッジとして機能する COM ラッパーです。詳細については、「Outlook PIA を使用する理由」を参照してください。

スクリプト実行可能

Outlook オブジェクト モデルはスクリプトで使用できます。

テストおよびデバッグ ツール

Outlook オブジェクト モデルまたは PIA は、特別なデバッグ ツールがなくても使用できますが、Visual Studio を使用すると、アプリケーションのテストとデバッグを容易に行える統合開発環境を提供することができます。

上級者の有無

Outlook オブジェクト モデルまたは PIA を使用してアプリケーションを適切に開発できる開発者は比較的簡単に見つかります。Outlook オブジェクト モデルと PIA は、広く使用されている Visual Studio などの開発ツールを使用して作成されたアドインを対象としています。これらのツールは、開発プロセスを簡素化する設計時の環境を提供します。

使用できる情報

Outlook オブジェクト モデルを使用したプログラミングに関する情報は、Microsoft リソースとサードパーティ リソースの両方から入手できます。Outlook オブジェクト モデルの詳細については、「Outlook 2010 の開発者向けリファレンス」を参照してください。Outlook PIA の詳細については、「Outlook 2010 プライマリ相互運用機能アセンブリ リファレンス」を参照してください。Visual Studio の Office 開発ツールを使用して開発された Outlook マネージ ソリューションの例については、「Visual Studio を使用した Outlook ソリューション」を参照してください。

開発者と展開ライセンス

Microsoft Developer Network (MSDN) サブスクリプション ライセンス契約で、アプリケーションで Outlook および Outlook オブジェクト モデルを使用するのに追加ライセンスが必要かどうかを確認してください。

セキュリティ基準

基準

Outlook オブジェクト モデルまたは PIA

デザインタイムのアクセス許可

Outlook オブジェクト モデルまたは PIA を使用したアプリケーション開発に特別なアクセス許可は必要ありません。

設定時のアクセス許可

Outlook オブジェクト モデルまたは PIA を使用するアプリケーションのインストールに特別なアクセス許可は必要ありません。ただし、Office および Outlook をインストールするには、ローカル管理者のアクセス許可が必要です。

実行時のアクセス許可

Outlook オブジェクト モデルまたは PIA を使用するアプリケーションの実行に特別なアクセス許可は必要ありません。

組み込みセキュリティ機能

Outlook オブジェクト モデルと PIA は Exchange との通信に MAPI を使用し、Active Directory との通信に Active Directory Service Interfaces (ADSI) を使用します。アプリケーションを実行しているユーザーの現在のセキュリティ コンテキストは、そのコードがアクセスできるリソースを確認するときに使用されます。既定では、アドインは信頼され、Outlook オブジェクト モデルまたは PIA のすべてのオブジェクト、プロパティ、およびメソッドに完全にアクセスできます。IT 管理者は、どのアドインおよびオブジェクトが Outlook オブジェクト モデルまたは PIA にアクセスできるようにするかを制御できます。Outlook オブジェクト モデルおよび PIA は、Outlook 外で実行されているコードが、セキュリティで保護されたオブジェクトおよびメソッドにアクセスできないようにします。

セキュリティ監視機能

Outlook オブジェクト モデルおよび PIA には、追加のセキュリティ監視機能は用意されていません。

展開基準

基準

Outlook オブジェクト モデルまたは PIA

サーバー プラットフォームの要件

Outlook オブジェクト モデルおよび PIA はクライアント側のテクノロジです。

クライアント プラットフォームの要件

Outlook オブジェクト モデルまたは PIA を使用して Exchange データにアクセスするアプリケーションを使用するには、Outlook がローカル コンピューターにインストールされている必要があります。

展開方法

Outlook オブジェクト モデルまたは PIA を使用するアプリケーションは、標準のアプリケーション インストール ソフトウェアを使用して配布されます。

展開の注意事項

Outlook は Exchange Server にインストールできないので、Outlook オブジェクト モデルまたは PIA を使用するアプリケーションを Exchange Server で実行することはできません。

MAPI の客観的な評価基準

MAPI を使用して、パブリックおよびプライベート ストアのアイテムおよびフォルダー、および各アイテムに保存されているプロパティにアクセスできます。MAPI は Outlook のすべてのバージョンで使用されます。MAPI を使用するクライアントのほか、MAPI サーバーおよび MAPI フォーム ハンドラーを作成することもできます。このセクションの情報は、MAPI クライアント アプリケーションにのみ適用されます。

注意

MAPI は Exchange または個人用フォルダー (.pst) ファイルの情報にアクセスするときに使用する成熟したメカニズムです。MAPI には、他の API では使用できない機能がいくつか用意されています。ただし、MAPI はイントラネット外では適切に動作せず、MAPI セッション中はオープン接続が維持されるので習得が困難です。MAPI では Outlook ビジネス ロジックが適用されません。したがって、Outlook ビジネス ロジックは特に気を付けて維持する必要があります。

次の表は、MAPI の評価基準を示しています。

機能基準

基準

MAPI

アプリケーション ドメイン

MAPI を使用するクライアント アプリケーションは、Exchange に保存されているユーザー メールボックスまたはパブリック フォルダーの情報、および Active Directory に保存されているユーザー ディレクトリ情報にアクセスします。MAPI は、通常、Outlook などのメール クライアント、および複雑なメール処理が必要なクライアント アプリケーションで使用されます。

主要オブジェクト

MAPI オブジェクトはすべて IMAPISession : IUnknown インターフェイスを使用して取得します。セッション オブジェクトは、オブジェクトへのクライアント アクセスを提供し、MAPI プロファイル、ステータス、メッセージ サービス プロバイダー管理、メッセージ ストア テーブル、およびアドレス帳を操作できるようにします。メッセージ ストア テーブルには、メッセージ ストア、フォルダー、メッセージ、添付ファイル、および受信者のオブジェクトが含まれます。アドレス帳テーブルには、メッセージ ユーザーおよび配布リストのオブジェクトが含まれます。

データアクセス モデル

MAPI は、メッセージおよびユーザーを、オブジェクトの階層構造のセットとして表します。

スレッド モデル

スレッドに関する制約は特にありませんが、フリースレッドを使用するアプリケーションでは、スレッド間で MAPI オブジェクトを共有することは避けてください。これはオブジェクトのマーシャリングにコストがかかるからです。MAPI および MAPI サービス プロバイダーはフリースレッドを使用します。

アプリケーション アーキテクチャ

MAPI クライアント アプリケーションは、通常、Windows フォーム ベースのクライアント アプリケーションで使用されます。ただし、MAPI を使用して、N 層アプリケーションを記述できます。

リモートでの使用

MAPI は、リモート プロシージャ コール (RPC) を使用して Exchange Server と通信します。通常、RPC は、意図的にインターネット ファイアウォールを通じて渡されないようになっています。

トランザクション

MAPI では、トランザクションをサポートしていません。

可用性

すべてのバージョンの Windows に MAPI スタブが付属しています。Outlook のインストール時に、Office 独自の MAPI サブシステムがインストールされます。このとき、MAPI に対する変更は行われません。

開発基準

基準

MAPI

言語とツール

MAPI に直接アクセスするには、C または C++ を使用します。他の言語については、C/C++ 呼び出し規則にアクセスできれば MAPI にアクセスできる可能性があります。Visual Basic、C# などのマネージ言語の使用はサポートされていません。32 ビット版および 64 ビット版の Outlook 用に個別の MAPI ソリューションをコンパイルする必要があります。

管理された実装

MAPI はアンマネージ コンポーネントです。Visual Studio と .NET Framework の COM 相互運用レイヤーでは、MAPI をサポートしていません。マネージ コンポーネントの MAPI サポートの詳細については、Microsoft サポート技術情報「文書番号 266353: クライアント側のメッセージングの開発のサポート ガイドライン」を参照してください。

スクリプト実行可能

MAPI をスクリプトで直接使用することはできません。

テストおよびデバッグ ツール

MAPI を使用するアプリケーションは、特別なデバッグ ツールがなくてもデバッグできますが、MFCMAPI (英語) を使用することもできます。MFCMAPI は、MAPI を使用してグラフィカル ユーザー インターフェイスで MAPI ストアにアクセスできるようにして、Outlook の拡張に伴う問題の調査を容易にします。

上級者の有無

上級 MAPI プログラマを見つけるのは困難で、テクノロジの習得にはかなりの時間がかかります。Microsoft コミュニティの他に、有用な MAPI 開発情報を提供する質の高いサードパーティ Web サイトは、少数しかありません。

使用できる情報

MAPI プログラミングについて記載された Microsoft およびサードパーティの両方の書籍を入手できます。

開発者と展開ライセンス

MAPI を使用するアプリケーションは、特別なライセンスがなくても開発できます。

セキュリティ基準

基準

MAPI

デザインタイムのアクセス許可

開発者には、Exchange ストアのデータへのアクセス許可が必要です。Exchange では、Active Directory にユーザーおよび配布リスト情報が保存されるので、そのユーザーおよび配布リスト情報にアクセスする MAPI クライアント アプリケーションを作成する開発者は、その情報を受信および設定できなければなりません。

設定時のアクセス許可

MAPI ベースのアプリケーションを設定するには、通常、ローカル管理者であるか、ソフトウェアをインストールするアクセス許可が必要です。

実行時のアクセス許可

MAPI ベースのアプリケーションを実行するには、通常、Exchange ストアまたは個人用フォルダー (.pst) ファイルのデータに対するアクセス許可のみが必要です。

組み込みセキュリティ機能

MAPI プロファイルは、ほとんどのプラットフォームにおいてパスワードで保護できます。

展開基準

基準

MAPI

サーバー プラットフォームの要件

MAPI クライアント アプリケーションのユーザー用にユーザー データが保存されている Exchange Server は、MAPI クライアントによるアクセスを許可するように適切に構成されていなければなりません。

クライアント プラットフォームの要件

クライアント アプリケーション インストーラーは、適切なバージョンの MAPI がコンピューターで使用できること、およびその MAPI が Mapisvc.inf ファイルを使用して適切に構成されていることを確認します。

展開方法

MAPI を使用するアプリケーションをクライアント コンピューターに展開するには、標準のソフトウェア配布テクノロジを使用します。

展開の注意事項

インストーラーは、適切なバージョンの MAPI が使用可能であることを確認する必要があります。

オブジェクト モデルまたは PIA の決定要因

一般的に、ソリューションによって Outlook ユーザー インターフェイスがカスタマイズされている場合、またはソリューションが Outlook のビジネス ロジックに依存している場合は、オブジェクト モデルあるいは PIA を使用してください。図 1 は、Outlook ソリューションによるオブジェクト モデルまたは PIA の使用の主な基本シナリオを示しています。

注意

シナリオの詳細については、次の図の各ボックスをクリックしてください。

図 1. Outlook オブジェクト モデルまたは PIA によってサポートされている主な基本シナリオ

https://msdn.microsoft.com/ja-jp/library/ff866278(v=office.14)

Outlook ソリューションが、基本シナリオの他に図 2 に示すシナリオのいずれかをサポートし、Outlook 2007 または Outlook 2010 で実行されるように意図されている場合も (その前のバージョンは対象外)、オブジェクト モデルあるいは PIA を使用できます。図 2 は、各シナリオを拡張するために Outlook オブジェクト モデルで使用できるメインのオブジェクトまたはメンバーを示しています (ただし、Visual Studio 自動化オブジェクト モデルの IDTExtensibility2 インターフェイスおよび Office オブジェクト モデルの IRibbonExtensibility インターフェイスを除きます。これらは Outlook オブジェクト モデルに統合できます)。

図 2. Outlook 2007 および Outlook 2010 のオブジェクト モデルまたは PIA でサポートされる追加シナリオ

Outlook ソリューションが Outlook 2010 で実行されるように意図されている場合は (その前のバージョンは対象外)、オブジェクト モデルまたは PIA を使用して、図 3 で示すシナリオをサポートするように選択できます。図 3 は、各シナリオを拡張するために Outlook オブジェクト モデルで使用できるメインのオブジェクトまたはメンバーを示しています (ただし、Office オブジェクト モデルの IRibbonControlIRibbonExtensibilityIRibbonUI の各インターフェイスは除きます。これらは、Outlook オブジェクト モデルに統合できます)。

図 3. Outlook 2010 のオブジェクト モデルまたは PIA でサポートされるその他のシナリオ

https://msdn.microsoft.com/ja-jp/library/ff869218(v=office.14)

MAPI の決定要因

一般的に、MAPI を使用して、Microsoft Exchange サーバーなどの MAPI ベースのサーバーのデータにアクセスし、以下のタスクを実行します。

  • アドレス帳プロバイダー、転送プロバイダー、ストア プロバイダーなど、カスタム サービス プロバイダーを作成する。

  • シンク プロセスを作成する。

  • プロファイルを作成または操作する。

  • Windows NT サービスとしてアプリケーションを実行する。

  • バックグラウンド スレッドでタスクを実行する。たとえば、バックグラウンド スレッドでフォルダー内の多数のアイテムを列挙し、アイテムのプロパティを変更すると、パフォーマンスを最適化できる場合があります。

コード サンプルの詳細については、「Outlook 2010 MAPI リファレンス」および「MFCMAPI (英語)」を参照してください。

さらに、Outlook 2007 より前のバージョンでソリューションが実行され、以下のシナリオがソリューションに適用されている場合は、MAPI を使用してそのシナリオを拡張します。

  • オブジェクト モデルに公開されていない組み込みのアイテム レベルのプロパティを設定および取得する。

  • アカウント、添付ファイル、Exchange 配布リスト、Exchange ユーザー、またはストアを管理する。

  • ソリューションのプライベート データを保存する。

  • アカウントのメッセージ ストアを管理する。

Outlook 2007 以降のオブジェクト モデルでは、Outlook 2007 より前は MAPI またはその他の API (Microsoft Collaboration Data Objects (CDO) 1.2.1、Microsoft Exchange クライアント拡張機能など) を使用する必要があった機能の範囲をサポートしています。したがって、上記のシナリオのいずれかがソリューションに適用されている場合でも、ソリューションが Outlook 2007 または Outlook 2010 で実行されていれば、Outlook オブジェクト モデルあるいは PIA を使用できるので、これを使用してシナリオをサポートする必要があります。Outlook 開発テクノロジを統合する Outlook 2007 強化機能の詳細については、「What's New for Developers in Outlook 2007 (Part 1 of 2)」を参照してください。

補助 API の決定要因

Outlook の補助 API は、オブジェクト モデルまたは MAPI がソリューションを提供しない一部のシナリオで、Outlook ビジネス ロジックあるいは MAPI に統合できます。Outlook 補助 API を使用するシナリオは以下のとおりです。

  • アカウント管理: アカウント情報の管理、アカウントの操作、アカウント変更の通知、迷惑メールからのアカウントの保護などを行う。

  • データ低下: オブジェクトをネイティブ形式で公開するのではなく、推奨文字形式にラップする。

  • 予定表のタイムゾーンの変更のサポート: Outlook 予定表のタイムゾーンを変更し、夏時間をサポートする。

  • 空き時間情報: 空き時間情報を予定表に表示する。

  • 連絡先用の画像: 連絡先用の画像を Outlook に表示するかどうかを決定する。

  • アイテムの最新性: Outlook アイテムに未保存の変更があるかどうかを確認する。

  • アイテムの分類: Outlook アイテムを送信した後、そのアイテムを分類する。

補助 API の詳細については、「その他の技術情報 - 補助 API」セクションを参照してください。

インプロセス ソリューションとアウトプロセス ソリューション

Outlook では、Outlook プロセスと同じフォアグラウンド プロセスで実行されるアドインを使用し、Outlook プロセス外の独自の個別プロセスで実行されるスタンドアロン ソリューションによって自動化をサポートします。一般的には、アドインを使用して、オブジェクト モデル、MAPI、または HrProcessConvActionForSentItem などの補助 API で Outlook を操作します。アウトプロセス ソリューションは、必要な場合 (たとえば、Tzmovelib.dll ファイルを使用する MAPI クライアント アプリケーションを記述して顧客の Outlook 予定表のタイムゾーンを変更する場合、またはバックグラウンド スレッドでフォルダー内の多数のアイテムを列挙し、アイテムのプロパティを変更してパフォーマンスを最適化する場合) にのみ使用します。

アドインは、Outlook の推奨拡張ソリューションです。Outlook が信頼するのは、アドインの OnConnection(Object, ext_ConnectMode, Object, Array) 中にそのアドインに渡された Application オブジェクトに限られるからです。Object Model Guard のセキュリティ警告が表示されないようにするには、すべてのオブジェクト、プロパティ、およびメソッドをこの Application オブジェクトから派生させます。アドインが Application オブジェクトの新しいインスタンスを作成した場合、そのアドインが信頼されるアドイン リストに含まれていても、Outlook はそのオブジェクトを信頼しません。こうした Application オブジェクトから派生したオブジェクト、プロパティ、およびメソッドは信頼されず、ブロックされたプロパティとメソッドによって、セキュリティの警告が表示されます。詳細については、「Security Behavior of the Outlook Object Model」を参照してください。

マネージ ソリューションとアンマネージ ソリューション

Outlook では、マネージ言語またはアンマネージ言語で記述されたアドインおよびスタンドアロン アプリケーションにより自動化をサポートしています。よく使用されるマネージ言語は C# および Visual Basic です。C++ および Delphi ツールは、アンマネージ開発で一般的に使用されます。マネージ開発またはアンマネージ開発のどちらを選択するかを決める場合は、使用可能な技術を考慮します。

ソリューションによって使用されるのがオブジェクト モデルだけの場合は、PIA、Microsoft Visual Studio 2010 の Microsoft Office 開発ツール、または Microsoft Visual Studio Tools for Office を使用してマネージ ソリューションを開発することを検討できます。Visual Studio の Office 開発ツールには、カスタム ユーザー インターフェイスの作成と Office ソリューションの開発を簡素化するプロジェクト テンプレートとビジュアル デザイナーが用意されています。

一方、Microsoft .NET Framework の何年も前に開発された MAPI にはマネージ ラッパーが用意されていません。したがって、マネージ コードでは MAPI を使用することはできません。MAPI を使用する場合は、アンマネージ ソリューションを開発する必要があります。詳細については、「クライアント側のメッセージングの開発のサポート ガイドライン」を参照してください。

特定分野の API およびテクノロジ

Outlook Social Connector (OSC) プロバイダー拡張機能および Office Mobile Service (OMS) では、Outlook における非常に特殊な拡張シナリオをサポートしています。OSC プロバイダーの拡張機能は、ソーシャル ネットワークのプロバイダーの開発をサポートし、Outlook でのソーシャル ネットワークの友人やアクティビティの更新をユーザーが確認できるようにします。OMS は、Outlook および SharePoint のモバイル機能およびモバイル デバイスに統合されている OMS Web サービスの開発をサポートします。

Outlook の OSC を使用すると、Outlook ユーザーからの電子メール、添付ファイル、および会議出席依頼をユーザー ウィンドウで表示できます。組織の環境で、Microsoft SharePoint サイトを使用して共同作業を行っているユーザーは、SharePoint サイトにおけるドキュメント更新および対象ユーザーの他のサイトでのアクティビティを確認できます。Outlook Social Connector プロバイダー拡張機能は OSC 用のプロバイダー開発をサポートしており、ソーシャル ネットワークの更新を Outlook で同期および表示します。Outlook ユーザーは、インストールした OSC プロバイダーによっては、対応するソーシャル ネットワークの写真、ステータス、アクティビティなどの更新をユーザー ウィンドウで確認することができます。「OSC プロバイダ (Facebook 版)」は、OSC プロバイダー拡張機能の使用例です。LinkedIn、Myspace、Windows Live Messenger など、既存の OSC プロバイダーの詳細については、「Connect to your favorite social network using Outlook (英語)」を参照してください。

OMS では、Outlook および SharePoint の OMS クライアント、および OMS Web サービスの開発をサポートしています。通常、携帯電話会社またはモバイル メッセージ コンテンツ サービス プロバイダーは、OMS Web サービスを作成およびホストします。Outlook を OMS クライアントとして使用すると、ユーザーはテキストまたはマルチメディア メッセージを作成および送信できます。OMS クライアントは、メッセージを適切な OMS Web サービスに送信し、この Web サービスはメッセージを通信事業者のテキストまたはマルチメディア センターに配信します。SharePoint で OMS クライアントを使用すると、ユーザーはテキスト メッセージの形式で通知を受信できます。SharePoint 通知では、SharePoint ドキュメント ライブラリまたはリストにおける変更をユーザーに通知することができます。

さらに、Outlook では、ユーザーがモバイル メッセージング アカウントと電子メール アカウントを同時に管理し、テキストまたはマルチメディア メッセージ アイテムを電子メール メッセージ アイテムのように保存および管理できます。携帯電話番号はアドレスとして扱われ、ユーザーはオートコンプリートを使用するか Outlook アドレス帳から名前を直接選択することにより、受信者をモバイル メッセージに追加できます。また、電子メール メッセージ、予定、会議出席依頼をモバイル デバイスと他の電子メール アドレスに同様に送信することもできます。

OSC プロバイダー拡張機能または OMS の詳細については、「その他の技術情報 - プライマリ参照、リソース、およびコード サンプル」を参照してください。

まとめ

ソリューションに最適な API またはテクノロジを判断するには、まず、ソリューションの目的を定義する必要があります。

  • サポートするソリューションの対象となる Outlook のバージョン。

  • ソリューションの優先順位の高いシナリオ、および特にこれらのシナリオで、多数の Outlook アイテムが含まれるフォルダーを列挙、フィルター処理、または変更する必要があるかどうか。

シナリオを「オブジェクト モデルまたは PIA の決定要因」で説明した内容に合わせるようにします。対象となる Outlook バージョンのオブジェクト モデル (または PIA) がシナリオをサポートしている場合、あるいはソリューションで操作するフォルダーに大量のアイテムが含まれない場合は、マネージ言語またはアンマネージ言語のどちらかでソリューションをアドインとして実装します。

対象となる Outlook バージョンのオブジェクト モデル (または PIA) がシナリオの一部をサポートしていない場合は、「MAPI の決定要因」セクションあるいは「補助 API の決定要因」セクションのシナリオがニーズを満たしているかどうかを確認します。MAPI がニーズを満たしている場合は、マネージ コードでソリューションを実装します。補助 API によってシナリオのいずれかが解決する場合は、マネージ コードまたはアンマネージ コードを使用できます。

ソーシャル ネットワークの情報または更新を Outlook に表示するシナリオの場合は、OSC プロバイダー拡張機能を使用して、COM 表示 DLL を作成します。この作業は、マネージ言語またはアンマネージ言語のどちらかで行います。

MAPI が使用されているソリューションについては、C++ などのアンマネージ コードで実装する必要があります。それ以外の場合、マネージ コードまたはアンマネージ コードのどちらを使用してソリューションを作成するかは、一般的に、使用可能なリソースとそのリソースの技術によって異なります。ソリューションをアドインまたはスタンドアロンのアプリケーションのどちらで実装するかについては、大量のアイテムが含まれるフォルダーを操作しなければならない場合を除き、アドインを選択して、Outlook Object Model Guard が常時起動されるのを回避します。後者のシナリオで、バックグラウンド スレッドとして実行するようにソリューションを実装すると、Outlook のパフォーマンスを最適化できる場合があります。

ソリューションで使用する API またはテクノロジを決めたら、「その他の技術情報 - プライマリ参照、リソース、およびコード サンプル」セクションで詳細情報を参照することができます。

その他の技術情報 - オブジェクト モデルと PIA

オブジェクト モデルおよび PIA の使用に関する詳細情報については、以下のリソースを参照してください。

アカウント - プロファイルの Exchange 標準アカウント

アカウント - プロファイルの複数のアカウント

アドレス帳と Exchange ユーザー

添付ファイル

  • How to: Attach a File to a Mail Item

  • Outlook 2010 で制限される添付ファイルの種類

  • Attachment オブジェクト

  • AttachmentSelection オブジェクト

  • アイテム オブジェクトごとの AttachmentAdd イベント

  • アイテム オブジェクトごとの AttachmentRead イベント

  • アイテム オブジェクトごとの AttachmentRemove イベント

  • アイテム オブジェクトごとの BeforeAttachmentAdd イベント

  • アイテム オブジェクトごとの BeforeAttachmentPreview イベント

  • アイテム オブジェクトごとの BeforeAttachmentRead イベント

  • アイテム オブジェクトごとの BeforeAttachmentSave イベント

  • アイテム オブジェクトごとの BeforeAttachmentWrite イベント

添付ファイル: インスペクターでの選択

Outlook の自動化

カテゴリ

スレッド

イベント

アイテム: 基本プロパティ、フィールド、およびフォーム

アイテム: プロパティのカスタマイズ

アイテム: 列挙、フィルター処理、および並べ替え

アイテム: タスクとしてフラグ設定

以下に示す一部のアイテム オブジェクト (MailItem オブジェクトなど) のタスク関連のプロパティ参照してください。

アイテム: エクスプローラーでの選択

その他: 名刺、規則、およびビュー

セキュリティ

共有

ソリューション: ソリューション固有のフォルダー

ソリューション: データの並べ替え

ユーザー インターフェイス: フォーム領域のカスタマイズ

ユーザー インターフェイス: Outlook 2007 以降のカスタマイズ

ユーザー インターフェイス: Outlook 2010 でのカスタマイズ

ユーザー インターフェイス: ソリューション固有のフォルダー

その他の技術情報 - 補助 API

Outlook 補助 API の詳細については、以下のリソースを参照してください。

アカウント管理

アイテムの分類

連絡先用の画像

データ低下

空き時間スケジュール

アイテムの最新性

予定表のタイムゾーンの変更

その他の技術情報 - プライマリ参照、リソース、およびコード サンプル

Outlook プライマリ参照、リソース、およびコード サンプルの詳細については、以下のリソースを参照してください。

主な参照とリソース

コード サンプル