InfoPath のオブジェクト モデルと開発環境を理解するUnderstanding InfoPath Object Models and Development Environment

Microsoft InfoPath 2013 は、フォーム テンプレートでのビジネス ロジック開発用に 2 種類のプログラミング モデルをサポートしており、マネージ コードからの外部自動化もサポートしています。Microsoft InfoPath 2013 supports two kinds of programming models for developing business logic in form templates, and supports external automation from managed code.

SharePoint Server 2013 で利用できる InfoPath Forms Services を使用すると、Web ブラウザーで InfoPath フォームに入力できるようになります。InfoPath Forms Services を実行しているサーバーに、ブラウザー互換フォーム テンプレートに基づくフォーム (.xsn) を展開すると、コンピューターに InfoPath がインストールされていなくても Web ブラウザーでフォームを開くことができます。InfoPath がインストールされている場合は、InfoPath でフォームが開きます。InfoPath Forms Services は、InfoPath フォーム テンプレートの発行と管理に関連するサーバー タスクを自動化するためのオブジェクト モデルも提供します。InfoPath Forms Services, which is available in SharePoint Server 2013, provides a Web browser experience for filling out InfoPath forms. When deployed to a server that runs InfoPath Forms Services, forms that are based on browser-compatible form templates (.xsn) can be opened in a Web browser from computers that do not have InfoPath installed, but they will open in InfoPath when it is installed. InfoPath Forms Services also provides an object model for automating server tasks related to InfoPath form template publishing and administration.

InfoPath 2013 は、Visual Studio 2012 プログラミング環境および関連付けられたプログラミング言語をサポートしています (このトピックで後述します)。InfoPath 2013 supports the Visual Studio 2012 programming environment and its associated programming languages, which are described later in this topic.

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

InfoPath 2013 は、フォーム テンプレートでのビジネス ロジック開発用に、次の 2 種類のオブジェクト モデルをサポートしています。InfoPath 2013 supports two object models for developing business logic in form templates:

  • InfoPath のマネージ コード オブジェクト モデルThe InfoPath Managed Code Object Model

  • InfoPath 2003 互換のマネージ コード オブジェクト モデルThe InfoPath 2003-Compatible Managed Code Object Model

また、InfoPath 2013 では、外部アプリケーションから InfoPath を自動化するためのマネージ コードを記述することもできます。Additionally, InfoPath 2013 enables writing managed code to automate InfoPath from an external application.

InfoPath Forms Services は、サーバー タスクを自動化するためのオブジェクト モデルを提供します。このようなタスクには、サーバー管理者のアクセス許可が必要となる、サーバー上で実行されているコードからのフォーム テンプレートの検証とアップロードなどが含まれます。InfoPath Forms Services provides an object model for automating server tasks, such as verifying and uploading form templates from code running on the server, which requires server administrator access and permissions.

注意

InfoPath Filler 2013 では、スクリプト言語 (JScript および VBScript) で記述されたビジネス ロジックを使用する、以前のバージョンの InfoPath で作成された InfoPath フォーム テンプレート ソリューションを開いて実行できます。ただし、InfoPath Designer 2010 では、スクリプトで記述されたビジネス ロジックを使用するフォーム テンプレートの作成または変更をサポートしていません。The InfoPath Filler 2013 can open and run InfoPath form template solutions created in earlier versions of InfoPath that use business logic written with scripting languages (JScript and VBScript). However, InfoPath Designer 2010 does not support creating or modifying form templates that use business logic written with script.

InfoPath のマネージ コード オブジェクト モデルThe InfoPath Managed Code Object Model

InfoPath 2013 マネージ コード オブジェクト モデルは 2 つのアセンブリで実装されており、どちらも Microsoft.Office.Infopath.dll という名前です。The InfoPath 2013 managed code object model is implemented in two assemblies both of which are named Microsoft.Office.Infopath.dll.

一方のバージョンのアセンブリには、InfoPath Forms Services を実行する SharePoint Server 2013 で動作する、ブラウザー対応のフォーム テンプレートとして展開されたフォーム テンプレートのビジネス ロジックでサポートされている型とメンバーのみを含む、InfoPath オブジェクト モデルのサブセットが実装されています。このアセンブリに対して記述されたビジネス ロジックを使用するフォーム テンプレートは、InfoPath Filler および Web ブラウザーで開いて実行できます。One version of the assembly implements a subset of the InfoPath object model that contains only the types and members that are supported in the business logic of form templates deployed as browser-enabled form templates running on SharePoint Server 2013 with InfoPath Forms Services. Form templates with business logic written against this assembly will open and run in the InfoPath Filler and in a Web browser.

もう 1 つのバージョンのアセンブリには、ブラウザー対応のフォーム テンプレートのビジネス ロジックでサポートされていない機能を提供する追加の型とメンバーが実装されています。このアセンブリ内で追加のクラスとメンバーに対して書かれたビジネス ロジックを含むフォーム テンプレートは、InfoPath Filler のエディターでのみ開き、実行することができます。The other version of the assembly implements additional types and members that provide functionality that is not supported in the business logic of browser-enabled form templates. Form templates with business logic written against the additional classes and members in this assembly will open and run only in the InfoPath Filler editor.

注意

フォーム テンプレートが InfoPath Filler または Web ブラウザーのどちらの環境で実行されるかを指定するために、Environment クラスのプロパティを使用する条件付きロジックを書くことができます。It is possible to write conditional logic that uses the properties of the Environment class to determine which environment (InfoPath Filler or a Web browser) the form template is running in. この条件付きロジックを使用して、ビジネス ロジックを、Web ブラウザーで動作するコードと、InfoPath Filler のエディターでのみ動作するクラスおよびメンバーに対して書かれたコードの間で分岐することができます。By using this conditional logic, your business logic can branch between code that works in a Web browser and code written against classes and members that work only in the InfoPath Filler editor. 詳細については、「実行時の環境を指定する条件付きロジックを書く方法」を参照してください。For more information, see How to: Write Conditional Logic That Determines the Run-time Environment

InfoPath Designer で新しいフォームの設計を開始する際に Microsoft Office Backstage の [ 新規作成] タブで [ 空白のフォーム] または [ 空白のフォーム (InfoPath Filler)] フォーム テンプレートのどちらを選択するかによって、フォーム テンプレートのためのビジネス ロジックの追加およびコンパイルの際に InfoPath で使用されるアセンブリは異なります。[ 空白のフォーム] フォーム テンプレートを使用して作成されたフォームは、ブラウザー対応のフォーム テンプレートとして展開されたフォーム テンプレートのビジネス ロジックでサポートされている型とメンバーのみを含むアセンブリを使用します。[ 空白のフォーム] フォーム テンプレートを使用して作成されたフォームは、Web ブラウザーおよび InfoPath Filler の両方で開くことができます。[ 空白のフォーム (InfoPath Filler)] フォーム テンプレートを使用して作成されたフォームは、ブラウザー対応のフォーム テンプレートのビジネス ロジックでサポートされていない機能を提供する追加の型とメンバーが実装されているアセンブリを使用し、InfoPath Filler でのみ開くことができます。The assembly that InfoPath uses when you add and compile business logic for the form template depends on whether you select the Blank Form or Blank Form (InfoPath Filler) form template on the New tab of the Microsoft Office Backstage when you start to design a new form in the InfoPath Designer. Forms created by using the Blank Form form template use the assembly that contains only the types and members that are supported in the business logic of form templates deployed as browser-enabled form templates. Forms created by using the Blank Form form template can be opened in both the Web browser and the InfoPath Filler. Forms created by using the Blank Form (InfoPath Filler) form template use the assembly that implements additional types and members that provide functionality that is not supported in the business logic of browser-enabled form templates, and can only be opened in the InfoPath Filler.

ヒント

フォーム テンプレートのデザインを開始した後で、フォームの互換性設定を変更することによって、使用するアセンブリを変更できます。そのためには、[ 開発] タブで [ 言語] をクリックし、[ カテゴリ] リストで [ 互換性] をクリックします。SharePoint Server 2013 にブラウザー互換フォームとして展開できるフォームを作成する場合は、[ フォームの種類] リストで [ Web ブラウザー フォーム] を選択します。InfoPath Filler のエディターでのみ実行できるフォームを作成する場合は、[ InfoPath Filler フォーム] を選択します。[ フォームの種類] リストの他のオプションは、InfoPath 2007 および InfoPath 2003 との互換性をサポートしています。After you start to design a form template, you can change which assembly is used by changing the form compatibility settings. To do that, click Language on the Developer tab, and then click Compatibility in the Category list. In the Form type list, select Web Browser Form to create a form that can be deployed as a browser-compatible form on SharePoint Server 2013. Select InfoPath Filler Form to create a form that can run only in the InfoPath Filler editor. The other selections in the Form type list provide support for compatibility with InfoPath 2007 and InfoPath 2003.

この両バージョンのオブジェクト モデルのクラスとメンバーは、Microsoft.Office.InfoPath 名前空間で公開されています。これらのアセンブリは、InfoPath 2013 インストールの次のディレクトリにあります。The classes and members of both versions of this object model are exposed through the Microsoft.Office.InfoPath namespace. The following table lists where the assemblies are located in the directories of an InfoPath 2013 installation.

アセンブリAssembly 説明Description
Microsoft.Office.InfoPath.dll (C:\Program Files\Microsoft Office\Office15\InfoPathOM\InfoPathOMFormServices ディレクトリ)Microsoft.Office.InfoPath.dll (located in C:\Program Files\Microsoft Office\Office15\InfoPathOM\InfoPathOMFormServices)
InfoPath Forms Services を実行しているサーバーに展開されるフォーム テンプレートのビジネス ロジックで実行される型とメンバーのみを含むオブジェクト モデルのサブセット。The subset of the object model that contains only types and members that will run in the business logic of a form template deployed to a server that runs InfoPath Forms Services.
Microsoft.Office.InfoPath.dll (C:\Program Files\Microsoft Office\Office15\InfoPathOM ディレクトリ)Microsoft.Office.InfoPath.dll (located in C:\Program Files\Microsoft Office\Office15\InfoPathOM)
InfoPath Forms Services に展開されるフォーム テンプレートのビジネス ロジックで実行されない型とメンバーも含む "完全な" オブジェクト モデル。The "full" object model including types and members that will not run in the business logic of a form template deployed to InfoPath Forms Services.

注意

上記で参照されるアセンブリは、コードの作成とコンパイルを行う設計時に使用されます。実行時に、フォーム テンプレートが InfoPath 内で開かれるときに使用されるアセンブリは、InfoPath がインストールされているコンピューターのグローバル アセンブリ キャッシュ (GAC) にあります。InfoPath Forms Services を実行しているサーバーから Web ブラウザー内でフォーム テンプレートが開かれるときは、使用されるアセンブリはサーバーにあります。The assemblies referenced earlier in this section are used at design time when you write and compile code. At run time, the assembly used when a form template is opened in InfoPath is located in the Global Assembly Cache (GAC) of the computer on which InfoPath is installed. When a form template is opened in a Web browser from a server that runs InfoPath Forms Services, the assembly used is located on the server.

2 つのアセンブリがあることで、ビジネス ロジックに、サポートされるフォーム エディター (Web ブラウザーまたは InfoPath Filler) に適したオブジェクト モデル メンバーへの呼び出しのみが含まれることが保証されます。たとえば、コードを編集する際、ステートメント入力候補やインライン ドキュメントなどの IntelliSense 機能は、対象となるフォーム エディターの適切なオブジェクト モデル メンバーに対してのみ表示および動作します。Providing two assemblies helps ensure that your business logic will contain only calls to the appropriate object model members for the supported form editors (Web browser or InfoPath Filler). For example, when you edit your code, IntelliSense features such as statement completion and in-line documentation will only display and work against the appropriate object model members for your target form editors.

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 クラスのラッパーをとおした呼び出しが必要となります。In both versions of the managed code object model exposed by the Microsoft.Office.InfoPath assembly, navigating and updating XML data stores in business logic requires calls to the members of the System.Xml.XPath.XPathNavigator class. In InfoPath 2003, navigating and updating XML data stores requires calling members of MSXML classes (for business logic created by using JScript or VBScript) or by calling through the wrappers for MSXML classes that are provided by the Microsoft.Office.Interop.InfoPath.SemiTrust namespace (for business logic created by using C# or Visual Basic and the Microsoft Office InfoPath 2003 Toolkit for Visual Studio .NET).

XPathNavigator クラスのメンバーを使用すると、InfoPath クライアントで開くフォーム テンプレートと、Web 対応のフォーム (Web ブラウザーで InfoPath Forms Services を実行する SharePoint Server 2013 から開くフォーム) で開くフォーム テンプレートの DOM 操作を、同じビジネス ロジック コードでサポートできます。Using members of the XPathNavigator class allows the same business logic code to support DOM manipulation for form templates that are opened in both the InfoPath client and in Web-enabled forms opened from SharePoint Server 2013 with InfoPath Forms Services in a Web browser.

InfoPath マネージ コード フォーム テンプレートのビジネス ロジックでの XPathNavigator クラスのメンバーを操作する方法の詳細については、「XPathNavigator クラスおよび XPathNodeIterator クラスを操作する方法」を参照してください。For information about how to work with members of the XPathNavigator class in the business logic of InfoPath managed code form templates, see How to: Work with the XPathNavigator and XPathNodeIterator Classes.

InfoPath 2003 互換のマネージ コード オブジェクト モデルThe InfoPath 2003-Compatible Managed Code Object Model

InfoPath 2003 互換のマネージ コード オブジェクト モデルは、マネージ コードを使用してフォーム テンプレートでビジネス ロジックを記述するために、Microsoft Office InfoPath 2003 Toolkit for Visual Studio .NET と共に InfoPath 2003 Service Pack 1 で導入されました。このオブジェクト モデルは、InfoPath 2003 との互換性を維持するために、InfoPath 2013 でも引き続きサポートされています。The InfoPath 2003-compatible managed code object model was introduced in InfoPath 2003 Service Pack 1 together with the Microsoft Office InfoPath 2003 Toolkit for Visual Studio .NET for writing business logic in form templates with managed code. This object model is still supported by InfoPath 2013 to provide compatibility with InfoPath 2003.

このオブジェクト モデルのクラスとメンバーは、Microsoft.Office.Interop.InfoPath.SemiTrust 名前空間で公開されています。このオブジェクト モデルは、C:\Program Files\Microsoft Office\Office14 フォルダーにある次のアセンブリ ファイルに実装されています。The classes and members of this object model are exposed through the Microsoft.Office.Interop.InfoPath.SemiTrust namespace. This object model is implemented in the following assembly file which is located in the C:\Program Files\Microsoft Office\Office14 folder.

アセンブリAssembly 説明Description
Microsoft.Office.Interop.InfoPath.SemiTrust.dllMicrosoft.Office.Interop.InfoPath.SemiTrust.dll
C# または Visual Basic .NET を使用して書かれたフォーム テンプレート ビジネス ロジックのための、InfoPath COM オブジェクト モデルに対する COM 相互運用機能を提供します。Provides COM interop against the InfoPath COM object model for form template business logic written using C# or Visual Basic.

注意

Microsoft.Office.Interop.InfoPath.SemiTrust アセンブリによって提供される COM 相互運用マネージ コード オブジェクト モデルを使用したビジネス ロジックの作成は InfoPath 2013 で引き続きサポートされていますが、このオブジェクト モデルを使用して記述されたビジネス ロジックは、InfoPath Forms Services を実行する SharePoint Server 2013 に展開されたブラウザー対応のフォーム テンプレートではサポートされていません。ブラウザー対応のフォーム テンプレートでは、カスタム ビジネス ロジックに InfoPath マネージ コード オブジェクト モデルを使用する必要があります。Although creating business logic with the COM interop managed-code object model provided by the Microsoft.Office.Interop.InfoPath.SemiTrust assembly is still supported by InfoPath 2013, business logic written using this object model it is not supported for browser-enabled form templates deployed to SharePoint Server 2013 with InfoPath Forms Services. Browser-enabled form templates must use the InfoPath managed code object model for custom business logic.

マネージ コードから InfoPath を自動化するAutomating InfoPath from Managed Code

マネージ コードを使用したビジネス ロジックの作成に加え、開発者は外部アプリケーションで実行されるマネージ コードを使用して InfoPath を自動化することもできます。この機能と、コードを記述するために必要なアセンブリは、InfoPath 2003 Service Pack 1 で導入されました。InfoPath の自動化に使用するオブジェクトとメンバーは、InfoPath 2013 の外部自動化コードを記述する際の追加機能を提供するために更新されました。In addition to writing business logic with managed code, developers can automate InfoPath by using managed code running in an external application. This functionality and the assemblies required for writing code were introduced in InfoPath 2003 Service Pack 1. The objects and members for automating InfoPath have been updated to provide additional functionality when you write external automation code for InfoPath 2013.

外部自動化に使用するクラスとメンバーは、 Microsoft.Office.Interop.InfoPath 名前空間と Microsoft.Office.Interop.InfoPath.Xml 名前空間で公開されています。自動化コードを記述するために必要なアセンブリ ファイルは、C:\Program Files\Microsoft Office\Office14 フォルダーにあります。The classes and members used for external automation are exposed through the Microsoft.Office.Interop.InfoPath and Microsoft.Office.Interop.InfoPath.Xml namespaces. The assembly files that are required for writing automation code are located in the C:\Program Files\Microsoft Office\Office14 folder.

アセンブリAssembly 説明Description
Microsoft.Office.Interop.InfoPath.dllMicrosoft.Office.Interop.InfoPath.dll
C# または Visual Basic を使用して書かれた外部自動化コードのための、InfoPath COM オブジェクト モデルに対する COM 相互運用機能を提供します。Provides COM interop against the InfoPath COM object model for external automation code written using C# or Visual Basic.
Microsoft.Office.Interop.InfoPath.Xml.dllMicrosoft.Office.Interop.InfoPath.Xml.dll
C# または Visual Basic を使用して記述された外部自動化コードのための、MSXML for XML DOM 操作に対する COM 相互運用機能を提供します。Provides COM interop against the MSXML for XML DOM operations in external automation code written using C# or Visual Basic.

外部アプリケーションからマネージ コードを使用して InfoPath アプリケーションを自動化するためだけに使用される、 Microsoft.Office.Interop.InfoPath 名前空間と Microsoft.Office.Interop.InfoPath.Xml 名前空間で提供されるオブジェクト モデルの詳細については、 InfoPath デベロッパー ポータルを参照してください。For more information about the object models provided by the Microsoft.Office.Interop.InfoPath and Microsoft.Office.Interop.InfoPath.Xml namespaces, which are used exclusively to automate the InfoPath application by using managed code from external applications, see the InfoPath Developer Center.

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

InfoPath Forms Services の管理タスクを自動化するマネージ コード オブジェクト モデルは、Microsoft SharePoint Server 2013 インストールの <ドライブ>:\Program Files\Microsoft Office Server\15.0\Bin にある Microsoft.Office.InfoPath.Server.dll に実装されています。The managed code object model for automating InfoPath Forms Services administration tasks is implemented in the Microsoft.Office.InfoPath.Server.dll which is located at <drive>:\Program Files\Microsoft Office Server\15.0\Bin on a Microsoft SharePoint Server 2013 installation.

アセンブリAssembly 説明Description
Microsoft.Office.InfoPath.Server.dllMicrosoft.Office.InfoPath.Server.dll
ブラウザー対応のフォーム テンプレートを読み込んだり、アクティブ化、非アクティブ化するなどの InfoPath Forms Services タスクを自動化するオブジェクト モデル。The object model for automating InfoPath Forms Services tasks such as uploading, activating, or deactivating browser-enabled form templates.

InfoPath Forms Services オブジェクト モデルの詳細については、MSDN で提供される SharePoint Server 2013 ソフトウェア開発キット (SDK) を参照してください。For more information about the InfoPath Forms Services object model, see the SharePoint Server 2013 Software Developers Kit (SDK) which is available on MSDN.

InfoPath 開発環境InfoPath Development Environment

InfoPath 2013 フォーム テンプレートでのビジネス ロジックの開発は、Microsoft Visual Studio Tools for Applications 2012 アドオンがインストールされた Visual Studio 2012 を使用して行うことができます。The development of business logic in InfoPath 2013 form templates can be performed by using Visual Studio 2012 with the Microsoft Visual Studio Tools for Applications 2012 add-on installed.

注意

InfoPath 2013 は、JScript または VBScript で記述されたビジネス ロジックを使用するフォーム テンプレートの作成や編集をサポートしていませんが、InfoPath Filler では、以前のバージョンの InfoPath で作成されたスクリプト ベースのフォーム テンプレートを開くことができます。InfoPath 2013 does not support creating or editing form templates that use business logic written with JScript or VBScript, although the InfoPath Filler supports opening script-based form templates that were created in previous versions of InfoPath.

関連項目See also

チュートリアル: コードを含む基本的なフォーム テンプレートの作成Walkthrough: Creating a Basic Form Template with Code

[ウォークスルー] InfoPath 2003 オブジェクト モデルを使用して基本的なフォーム テンプレートを作成およびデバッグする方法Walkthrough: Creating and Debugging a Basic Form Template Using the InfoPath 2003 Object Model