InfoPath のオブジェクト モデルと開発環境を理解する

適用対象: InfoPath 2010 | InfoPath Forms Services | Office 2010 | SharePoint Server 2010 | Visual Studio | Visual Studio Tools for Microsoft Office

Microsoft InfoPath 2010 は、フォーム テンプレートでのビジネス ロジック開発用に 2 種類のプログラミング モデルをサポートしており、マネージ コードからの外部の自動化もサポートしています。

Microsoft SharePoint Server 2010 で利用できる InfoPath Forms Services を使用すると、Web ブラウザーを使用して InfoPath のフォームに記入できます。ブラウザー互換のフォーム テンプレートを基にしたフォーム (.xsn) は、InfoPath Forms Services を実行しているサーバーに展開されると、InfoPath 2010 がインストールされていないコンピューターから Web ブラウザーで開くことができますが、インストールされていると InfoPath 2010 で開かれます。InfoPath Forms Services は、InfoPath フォーム テンプレートの公開と管理に関連したサーバー タスクを自動化するためのオブジェクト モデルも提供します。

InfoPath 2010 は、Microsoft Visual Studio Tools for Applications プログラミング環境および関連付けられたプログラミング言語をサポートしています (このトピックで後述します)。

InfoPath のプログラミング モデル

InfoPath 2010 は、フォーム テンプレートでのビジネス ロジック開発用に、次の 2 種類のプログラミング モデルをサポートしています。

  • InfoPath のマネージ コード オブジェクト モデル

  • InfoPath 2003 互換のマネージ コード オブジェクト モデル

また、InfoPath 2010 では、外部アプリケーションから InfoPath を自動化するためのマネージ コードを記述することができます。

InfoPath Forms Services は、サーバー タスクを自動化するためのオブジェクト モデルを提供します。このようなタスクには、サーバー管理者のアクセス許可が必要となる、サーバー上で実行されているコードからのフォーム テンプレートの検証とアップロードなどが含まれます。

注意

InfoPath Filler 2010 では、スクリプト言語 (JScript および VBScript) で書かれたビジネス ロジックを使用する、以前のバージョンの InfoPath で作成された InfoPath フォーム テンプレートのソリューションを開いて実行できます。ただし、InfoPath Designer 2010 は、スクリプトを使用して書かれたビジネス ロジックを使用するフォーム テンプレートの作成や変更をサポートしていません。

InfoPath のマネージ コード オブジェクト モデル

InfoPath 2010 マネージ コード オブジェクト モデルは 2 つのアセンブリで実装されており、どちらも Microsoft.Office.Infopath.dll という名前です。

1 つのバージョンのアセンブリには、Microsoft SharePoint Server 2010 で InfoPath Forms Services を使用して実行されるブラウザー対応のフォーム テンプレートとして展開された、フォーム テンプレートのビジネス ロジックでサポートされている型とメンバーのみを含む、InfoPath オブジェクト モデルのサブセットが実装されています。このアセンブリに対して書かれたビジネス ロジックを含むフォーム テンプレートは、InfoPath Filler および Web ブラウザー内で開いて実行することができます。

もう 1 つのバージョンのアセンブリには、ブラウザー対応のフォーム テンプレートのビジネス ロジックでサポートされていない機能を提供する追加の型とメンバーが実装されています。このアセンブリ内で追加のクラスとメンバーに対して書かれたビジネス ロジックを含むフォーム テンプレートは、InfoPath Filler のエディターでのみ開き、実行することができます。

注意

フォーム テンプレートが InfoPath Filler または Web ブラウザーのどちらの環境で実行されるかを指定するために、Environment クラスのプロパティを使用する条件付きロジックを書くことができます。この条件付きロジックを使用して、ビジネス ロジックを、Web ブラウザーで動作するコードと、InfoPath Filler のエディターでのみ動作するクラスおよびメンバーに対して書かれたコードの間で分岐することができます。詳細については、「[方法] 実行時の環境を指定する条件付きロジックを書く方法」を参照してください。

InfoPath Designer で新しいフォームの設計を開始する際に Microsoft Office Backstage の [新規作成] タブで [空白の​​フォーム] または [空白の​​フォーム (InfoPath Filler)] フォーム テンプレートのどちらを選択するかによって、フォーム テンプレートのためのビジネス ロジックの追加およびコンパイルの際に InfoPath で使用されるアセンブリは異なります。[空白の​​フォーム] フォーム テンプレートを使用して作成されたフォームは、ブラウザー対応のフォーム テンプレートとして展開されたフォーム テンプレートのビジネス ロジックでサポートされている型とメンバーのみを含むアセンブリを使用します。[空白の​​フォーム] フォーム テンプレートを使用して作成されたフォームは、Web ブラウザーおよび InfoPath Filler の両方で開くことができます。[空白の​​フォーム (InfoPath Filler)] フォーム テンプレートを使用して作成されたフォームは、ブラウザー対応のフォーム テンプレートのビジネス ロジックでサポートされていない機能を提供する追加の型とメンバーが実装されているアセンブリを使用し、InfoPath Filler でのみ開くことができます。

ヒント

フォーム テンプレートの設計を開始した後は、フォームの互換性の設定を変更することによって、使用されるアセンブリを変更できます。そのためには、[開発] タブで [言語] をクリックして、[カテゴリ] リストで [互換性] をクリックします。[フォームの種類] リストで [Web ブラウザー フォーム] を選択して、Microsoft SharePoint Server 2010 でブラウザー互換のフォームとして展開できるフォームを作成します。[InfoPath Filler フォーム] を選択して、InfoPath Filler のエディターでのみ実行可能なフォームを作成します。[フォームの種類] リストで他を選択すると、InfoPath 2007 および InfoPath 2003 との互換性がサポートされます。

この両バージョンのオブジェクト モデルのクラスとメンバーは、Microsoft.Office.InfoPath 名前空間によって公開されます。これらのアセンブリは、InfoPath 2010 をインストールした際に作成された次のディレクトリにあります。

アセンブリ

説明

Microsoft.Office.InfoPath.dll
(C:\Program Files\Microsoft Office\Office14\InfoPathOM\InfoPathOMFormServices ディレクトリ)

InfoPath Forms Services を実行しているサーバーに展開されるフォーム テンプレートのビジネス ロジックで実行される型とメンバーのみを含むオブジェクト モデルのサブセット。

Microsoft.Office.InfoPath.dll
(C:\Program Files\Microsoft Office\Office14\InfoPathOM ディレクトリ)

InfoPath Forms Services に展開されるフォーム テンプレートのビジネス ロジックで実行されない型とメンバーも含む "完全な" オブジェクト モデル。

注意

上記で参照されるアセンブリは、コードの作成とコンパイルを行う設計時に使用されます。実行時に、フォーム テンプレートが InfoPath 内で開かれるときに使用されるアセンブリは、InfoPath がインストールされているコンピューターのグローバル アセンブリ キャッシュ (GAC) にあります。InfoPath Forms Services を実行しているサーバーから Web ブラウザー内でフォーム テンプレートが開かれるときは、使用されるアセンブリはサーバーにあります。

2 つのアセンブリがあることで、ビジネス ロジックに、サポートされるフォーム エディター (Web ブラウザーまたは InfoPath Filler) に適したオブジェクト モデル メンバーへの呼び出しのみが含まれることが保証されます。たとえば、コードを編集する際、ステートメント入力候補やインライン ドキュメントなどの IntelliSense 機能は、対象となるフォーム エディターの適切なオブジェクト モデル メンバーに対してのみ表示および動作します。

Microsoft.Office.InfoPath アセンブリによって公開されるマネージ コード オブジェクト モデルのどちらのバージョンでも、ビジネス ロジック内での XML データ ストアのナビゲーションと更新には、System.Xml.XPath.XPathNavigator クラスのメンバーへの呼び出しが必要です。InfoPath 2003 での XML データ ストアのナビゲーションと更新には、JScript または VBScript を使用して作成したビジネス ロジックの場合は MSXML クラスのメンバーの呼び出しが必要となり、C# または Visual Basic と Microsoft Office InfoPath 2003 Toolkit for Visual Studio .NET を使用して作成したビジネス ロジックの場合は Microsoft.Office.Interop.InfoPath.SemiTrust 名前空間によって提供される MSXML クラスのラッパーをとおした呼び出しが必要となります。

XPathNavigator クラスのメンバーを使用することで、同じビジネス ロジック コードが、InfoPath クライアントと、Web ブラウザー内で InfoPath Forms Services を使用して Microsoft SharePoint Server 2010 から開かれた Web 対応フォームの両方で開かれるフォーム テンプレートの DOM 操作をサポートすることができます。

InfoPath マネージ コード フォーム テンプレートのビジネス ロジックでの XPathNavigator クラスのメンバーを操作する方法の詳細については、「[方法] XPathNavigator クラスおよび XPathNodeIterator クラスを操作する方法」を参照してください。

InfoPath 2003 互換のマネージ コード オブジェクト モデル

InfoPath 2003 互換のマネージ コード オブジェクト モデルは、マネージ コードを使用してフォーム テンプレートでビジネス コードを記述するために、Microsoft Office InfoPath 2003 Toolkit for Visual Studio .NET と共に InfoPath 2003 Service Pack 1 で提供されました。このオブジェクト モデルは、InfoPath 2003 との互換性を維持するため、今も InfoPath 2010 でサポートされています。

このオブジェクト モデルのクラスとメンバーは、Microsoft.Office.Interop.InfoPath.SemiTrust 名前空間によって公開されます。このオブジェクト モデルは、C:\Program Files\Microsoft Office\Office14 フォルダーにある以下のアセンブリ ファイル内に実装されています。

アセンブリ

説明

Microsoft.Office.Interop.InfoPath.SemiTrust.dll

C# または Visual Basic .NET を使用して書かれたフォーム テンプレート ビジネス ロジックのための、InfoPath COM オブジェクト モデルに対する COM 相互運用機能を提供します。

注意

Microsoft.Office.Interop.InfoPath.SemiTrust アセンブリによって提供される COM 相互運用機能のマネージ コード オブジェクト モデルを使用したビジネス ロジックの作成は InfoPath 2010でもサポートされていますが、このオブジェクト モデルを使用して記述されたビジネス ロジックは、InfoPath Forms Services で Microsoft SharePoint Server 2010 に展開されたブラウザー対応のフォーム テンプレートではサポートされていません。ブラウザー対応のフォーム テンプレートは、カスタム ビジネス ロジック用に、InfoPath マネージ コード オブジェクト モデルを使用する必要があります。

マネージ コードから InfoPath を自動化する

マネージ コードを使用してビジネス ロジックを作成するのに加え、開発者は外部アプリケーション内で実行されるマネージ コードを使用して InfoPath を自動化することもできます。この機能と、コードを記述するのに必要なアセンブリは、InfoPath 2003 Service Pack 1 で導入されました。InfoPath の自動化に使用するオブジェクトとメンバーは、InfoPath 2010 の外部自動化コードを書く際の追加機能を提供するために更新されました。

外部自動化に使用するクラスとメンバーは、Microsoft.Office.Interop.InfoPath 名前空間と Microsoft.Office.Interop.InfoPath.Xml 名前空間を使用して公開されます。自動化コードを書くために必要なアセンブリ ファイルは、C:\Program Files\Microsoft Office\Office14 フォルダーにあります。

アセンブリ

説明

Microsoft.Office.Interop.InfoPath.dll

C# または Visual Basic を使用して書かれた外部自動化コードのための、InfoPath COM オブジェクト モデルに対する COM 相互運用機能を提供します。

Microsoft.Office.Interop.InfoPath.Xml.dll

C# または Visual Basic を使用して記述された外部自動化コードのための、MSXML for XML DOM 操作に対する COM 相互運用機能を提供します。

外部アプリケーションからマネージ コードを使用して InfoPath アプリケーションを自動化するためだけに使用される、Microsoft.Office.Interop.InfoPath 名前空間と Microsoft.Office.Interop.InfoPath.Xml 名前空間によって提供されるオブジェクト モデルの詳細については、「InfoPath デベロッパー ポータル」を参照してください。

InfoPath Forms Services オブジェクト モデル

InfoPath Forms Services の管理タスクを自動化するマネージ コード オブジェクト モデルは、Microsoft SharePoint Server 2010 のインストールで作成された <ドライブ>:\Program Files\Microsoft Office Server\14.0\Bin にある Microsoft.Office.InfoPath.Server.dll 内に実装されています。

アセンブリ

説明

Microsoft.Office.InfoPath.Server.dll

ブラウザー対応のフォーム テンプレートを読み込んだり、アクティブ化、非アクティブ化するなどの InfoPath Forms Services タスクを自動化するオブジェクト モデル。

InfoPath Forms Services オブジェクト モデルの詳細については、MSDN にある Microsoft SharePoint Server 2010 ソフトウェア開発キット (SDK) を参照してください。

InfoPath 開発環境

InfoPath 2010 フォーム テンプレートのビジネス ロジックの開発は、Microsoft Visual Studio Tools for Applications の開発環境を使用して実行できます。

注意

InfoPath 2010 は、JScript または VBScript で記述されたビジネス ロジックを使用するフォーム テンプレートの作成や編集をサポートしていませんが、InfoPath Filler は、以前のバージョンの InfoPath で作成された、スクリプト ベースのフォーム テンプレートを開くことをサポートしています。また、InfoPath 2010 は、Visual Studio でのフォーム テンプレートの開発をサポートしていません。

Visual Studio Tools for Applications

コンピューターに Microsoft .NET Framework 2.0 以降のバージョンがインストールされている場合は、Microsoft Visual Studio Tools for Applications の開発環境を InfoPath 2010 と共にインストールできます。最初に InfoPath をインストールしたときに Microsoft .NET Framework 2.0 以降のバージョンのコンポーネントがインストールされていない場合は、Microsoft Visual Studio Tools for Applications の開発環境を使用する前にこれらのコンポーネントをダウンロードしてインストールする必要があります。

InfoPath のインストール時に、既定では Microsoft Visual Studio Tools for Applications の開発環境はインストールされません。Microsoft Visual Studio Tools for Applications をインストールするには、最初にインストールする際に [カスタマイズ] を選択するか、または [機能の追加/削除] を使用して Office または InfoPath のインストールを更新して Microsoft Visual Studio Tools for Applications を含めてください。Microsoft Visual Studio Tools for Applications をインストールするオプションは、セットアップ プログラムで [Microsoft Office InfoPath]、[.NET プログラミング サポート] の順に展開すると表示されます。

Microsoft Visual Studio Tools for Applications 環境は、InfoPath 2003 互換オブジェクト モデル (Microsoft.Office.Interop.InfoPath.SemiTrust 名前空間のメンバー) または新しいマネージ コード オブジェクト モデル (Microsoft.Office.InfoPath 名前空間のメンバー) に対して C# または Visual Basic でビジネス ロジックを作成するのに使用されます。

InfoPath 2003 オブジェクト モデルで動作するフォーム テンプレートの保守、作成、および変換

Microsoft Visual Studio Tools for Applications を使用して、Microsoft Office InfoPath 2003 Toolkit for Visual Studio .NET または Visual Studio 2005 Tools for the Microsoft Office system を使用して作成された InfoPath フォーム テンプレート プロジェクトを開き、作業を続行できます。

注意

Microsoft Visual Studio Tools for Applications でコンパイルされたフォーム テンプレートのユーザーのコンピューターには、Microsoft .NET Framework 2.0 以降のバージョンがインストールされている必要があります。ただし、Visual Studio .NET 2003 でコンパイルされたフォーム テンプレートのユーザーのコンピューターには、Microsoft .NET Framework 1.1 があればかまいません。

Microsoft Visual Studio Tools for Applications を使用して InfoPath 2003 との下位互換性を維持するには、新しいフォーム テンプレートを作成し、[開発] タブで [言語] をクリックし、[互換性] をクリックして、[フォームの種類] を [InfoPath Filler フォーム] にします。さらに、[プログラミング] をクリックして、[フォーム テンプレートのコード言語] を、使用する必要がある言語に設定します。

また、新しい InfoPath マネージ コード オブジェクト モデルを使用するために、InfoPath 2003 オブジェクト モデルで動作するフォーム テンプレートを変換することができます。フォーム テンプレートを変換する方法については、「[方法] InfoPath のツールキットで作成したフォーム テンプレートを開く方法と変換する方法」を参照してください。

関連項目

タスク

[ウォークスルー] 基本的なマネージ コード フォーム テンプレートを作成する方法

[ウォークスルー] InfoPath 2003 オブジェクト モデルを使用して基本的なフォーム テンプレートを作成およびデバッグする方法