SharePoint アドインを開発およびホストするためのパターンを選択するChoose patterns for developing and hosting your SharePoint Add-in

SharePoint のアドイン モデルでは、さまざまなホスティング パターンと開発パターンが導入されています。一部のパターンは、相互に組み合わせて使用できます。たとえば、アドインでは SharePoint によってホストされるコンポーネントとリモートでホストされるコンポーネントを組み合わせることができます。使用するパターンを決定する最も有効な方法は、独自の要件、テクノロジ、目標を基にして、それらを SharePoint アドインによって有効になるオプションおよび可能性と一致させることです。The SharePoint add-in model introduces a wide range of hosting and development patterns. Some of these patterns can be used in combination with each other. For example, your add-ins can mix SharePoint-hosted and remotely hosted components. The most useful way to determine which patterns you'll want to use is to start with your own requirements, technologies, and goals and match them with the options and possibilities that are enabled by SharePoint Add-ins.

開発パターンを選択する際の考慮事項What to think about when choosing your development pattern

SharePoint アドインによって、SharePoint のリソースやサービスを利用するときに使用できるプログラミング言語や技術スタックの範囲が広がります。オプションの正確な範囲は、アドインの種類と、選択するホスティング パターンにより変わります。パターンを組み合わせることもできます。SharePoint Add-ins widen the range of possible programming languages and technology stacks that you can use when you work with SharePoint resources and services. The precise range of options depends on both the type of add-in and the hosting pattern that you choose. It's also possible to mix patterns.

SharePoint ホスト型アドインSharePoint-hosted add-ins

最も簡単なオプションから始めます。SharePoint ホスト型アドイン、つまりすべてのコンポーネントがオンプレミスまたは Office 365 の SharePoint ファームでホストされるアドインです。Start with the simplest option: SharePoint-hosted add-ins, or add-ins where all components are hosted on either an on-premises or Office 365 SharePoint farm. SharePoint ホスト型アドインは、ホスト Web と呼ばれる SharePoint Web サイトにインストールされます。SharePoint-hosted add-ins are installed on a SharePoint website, called the host web. SharePoint ホスト型アドインのリソースは、アドイン Web と呼ばれる、ホスト Web とは別のサブサイトでホストされます。They have their resources hosted on an isolated subsite of a host web, called the add-in web. ホスト Web とアドイン Web の違いを理解しておくことが重要です。It's important to know the difference between host webs and add-in webs.

図 1 は、SharePoint ホスト型アドインの基本的なアーキテクチャを示しています。Figure 1 illustrates the basic architecture of a SharePoint-hosted add-in.

図 1. SharePoint ホスト型アドインのアーキテクチャFigure 1. SharePoint-hosted add-in architecture

SharePoint ホスト型アプリのコンポーネントは、SharePoint ファームの appweb でホストされます。

SharePoint ホスト型アドインとリモートにホストされるコンポーネントを含むアドインを組み合わせることができますが、アドイン Web 上で実行するアドインまたはアドインの一部には、アドインがホストされる場所、アドインが承認される方法、使用できる言語の 3 つの重要なコンポーネントに関して、以下の一連の要件があります。You can combine a SharePoint-hosted add-in with add-ins that have remotely hosted components, but any add-in or portion of an add-in that runs on an add-in web has the following set of requirements for three key components: where the add-in is hosted, how the add-in gets authorization, and what language it can use.

コンポーネントComponent SharePoint ホスト型アドインの要件SharePoint-hosted add-in requirement
アドイン コンポーネントをホストする場所Where the add-in components are hosted SharePoint ファームの別のアドイン ドメイン内In the isolated add-in domain of your SharePoint farm
アドインが承認される方法How the add-in gets authorized サインインしているユーザーの特権The privileges of the signed-in user
アドインが使用できる言語What language the add-in can use JavaScript (および SharePoint JSOM ライブラリ) + HTMLJavaScript (with the SharePoint JSOM library) + HTML
メリットGet these benefits 考慮事項But consider this
リストや Web パーツなどの共通 SharePoint アイテムの再利用。Reuse common SharePoint items, like lists and Web Parts. アドインでは JavaScript しか使用できず、サーバー側コードは使用できません。You can use only JavaScript in the add-in—you can't use any server-side code.
比較的簡単に作成して展開できるので、小規模なチームの生産性を向上させるアドイン、およびビジネス ルールがあまり複雑ではないビジネス プロセスの自動化に適しています。Relatively easy to create and deploy, so they are good for small team productivity add-ins and business process automation, with lower complexity business rules. アドインには、サインインしたユーザーの承認された特権のみが与えられます。Your add-in has only the authorization privileges of the signed-in user.

SharePoint ホスト型の SharePoint アドインの作成を始めるGet started creating SharePoint-hosted SharePoint Add-ins

プロバイダー ホスト型アドインProvider-hosted add-ins

プロバイダー ホスト型 SharePoint アドインには、SharePoint ファームの外部で展開およびホストされるコンポーネントが含まれます。Provider-hosted SharePoint Add-ins include components that are deployed and hosted outside the SharePoint farm. これらはホスト Web にインストールされますが、そのリモート コンポーネントは SharePoint ファームのサーバー以外の別のサーバーでホストされます。They are installed to the host web, but their remote components are hosted on another server that should not be a server in the SharePoint farm.

図 2 は、プロバイダー ホスト型アドインの基本的なアーキテクチャを示しています。Figure 2 illustrates the basic architecture of a provider-hosted add-in.

図 2. プロバイダー ホスト型アドインのアーキテクチャFigure 2. Provider-hosted add-in architecture

プロバイダー ホスト型アプリのコンポーネントは、任意の Web サーバーまたはホスティング サービスでホストされます。

次の表では、プロバイダー ホスト型アドインのホスティング場所、アドインの承認、および言語に関する要件が、SharePoint ホスト型アドインほど厳密ではないことを示します。The following table shows how the requirements for hosting location, add-in authorization, and languages are much less fixed for provider-hosted add-ins than they are for SharePoint-hosted add-ins.

コンポーネントComponent プロバイダー ホスト型アドインの要件Provider-hosted add-in requirement
アドイン コンポーネントをホストする場所Where the add-in components are hosted 任意の Web サーバーまたはホスティング サービスAny web server or hosting service
アドインが承認される方法How the add-in gets authorized OAuth または JavaScript クロス ドメイン ライブラリOAuth or the JavaScript cross-domain library
アドインが使用できる言語What language the add-in can use Web サーバーまたはホスティング サービスでサポートされている任意の言語Any language supported by your web server or hosting service

プロバイダー ホスト型アドインは、SharePoint サイトと対話しますが、リモート サイトのリソースやサービスも使用します。プロバイダー ホスト型アドインの作成を決定する前に、以下のことを考慮する必要があります。A provider-hosted add-in interacts with a SharePoint site but also uses resources and services that are located on the remote site. You'll want to consider the following before deciding to create a provider-hosted add-in.

メリットGet these benefits 考慮事項But consider this
Microsoft Azure または Microsoft 以外のプラットフォームを含む任意のリモート Web プラットフォーム上でアドインをホストします。Host the add-in on Microsoft Azure or any remote web platform, including non-Microsoft platforms. リモート コンポーネントのインストール、アップグレードおよびアンインストール ロジックの作成に責任を持つ必要があります。You are responsible for creating the installation, upgrade, and uninstallation logic of the remote components.
SharePoint クライアント オブジェクト モデル、JavaScript クロスドメイン ライブラリまたは SharePoint REST/OData ベースの Web サービスのうち 1 つを使用して、SharePoint とやり取りします。Use one of the SharePoint client object models, the JavaScript cross-domain library, or the SharePoint REST/OData-based web service to interact with SharePoint. SharePoint とのやり取りのそれぞれの方法には、データ アクセスへのアプローチに対応するオプションがあります。Each way of interacting with SharePoint has corresponding options for approaches to data access.
3 つの認証システムのうちの 1 つを使用して、SharePoint データへの認証を取得します。Gain authorization to SharePoint data using one of the three authorization systems. SharePoint へのアドインのアクセスを認証するために、OAuth とクロスドメイン ライブラリのどちらを使用するかを決定する必要があります。You need to decide between OAuth and the cross-domain library to authorize your add-in's access to SharePoint.

ホスティング パターンと開発目標を一致させるMatch your hosting pattern with your development goals

技術的な利点と各オプションの制約を考慮するだけでなく、ホスティング パターンを決定するときは、開発目標についても考える必要があります。次の表を参考にして、ニーズに最適なホスティング パターンを選択してください。In addition to considering the technical advantages and constraints of each option, you'll also need to think about your development goals when deciding on a hosting pattern. You can use the following table to help sort out which hosting pattern best fits your needs.

要件Your requirements 推奨ホスティング パターンRecommended hosting pattern Example
新しい SharePoint エンティティを操作し、排他的にプロビジョニングするWork with and provision new SharePoint entities exclusively SharePoint ホスト型SharePoint-hosted ユーザー選択コントロールを含むアドイン、および SharePoint ユーザーに関する情報を SharePoint リストに格納するアドインAn add-in that includes a people picker control and that stores information about SharePoint users in a SharePoint list
既存の SharePoint エンティティを使用し、外部の (SharePoint 以外の) Web サービスと対話するUse existing SharePoint entities and interact with external (non-SharePoint) web services プロバイダー ホスト型Provider-hosted ホスト Web の既存の SharePoint リストから顧客の住所を取得し、Web アプリケーションの地図サービスを使用してその場所を表示するアドインAn add-in that gets customer addresses from an existing SharePoint list in the host web and uses a mapping service in a web application to display their locations
新しい SharePoint エンティティをプロビジョニングし、外部の Web サービスと対話するProvision new SharePoint entities and interact with external web services SharePoint ホスト型とプロバイダー ホスト型の組み合わせCombined SharePoint-hosted and provider-hosted ユーザーによって提供された、または既存の SharePoint リストから取得した住所の緯度と経度の座標を格納できるように、アプリ Web に SharePoint リストをプロビジョニングする地図アドインA mapping add-in that provisions a SharePoint list on the appweb so that it can store latitude and longitude coordinates for addresses that are supplied by the user or pulled from an existing SharePoint list

プロバイダー ホスト型アドインのホスティング パターンを選択する際の考慮事項What to think about when choosing your hosting pattern for provider-hosted add-ins

SharePoint ホスト型アドインは、アドイン Web でホストされるため、ホスティング パターンが固定されています。SharePoint-hosted add-ins have a fixed hosting pattern because they are hosted on the add-in web. プロバイダー ホスト型アドインは、アドインのさまざまなコンポーネントのホスティングに関してより柔軟であるため、この型のアドインを作成する場合は、目標と要件を適切なホスティング パターンに一致させる必要があります。Provider-hosted add-ins provide more flexibility for hosting the various components of your add-in, so if you choose to create one, you'll need to match your goals and requirements to the appropriate hosting pattern.

OAuth またはクロスドメイン ライブラリOAuth or the cross-domain library

プロバイダー ホスト型アドインとその構築方法を検討するときに考慮しなければならない最も重要なことの 1 つは、SharePoint と対話するためのアドインの承認方法です。プロバイダー ホスト型アドインには、JavaScript クロスドメイン ライブラリと OAuth という 2 つの選択肢があります。One of the most important questions you need to ask when considering provider-hosted add-ins and how you'll build them is how the add-in will get authorization to interact with SharePoint. Provider-hosted add-ins give you two choices: the JavaScript cross-domain library and OAuth.

クロスドメイン ライブラリ を使用すると、プロキシを介してアドインのリモート コンポーネントから複数のドメインと対話できます。The cross-domain library lets you interact with more than one domain from the remote components of your add-in through a proxy. クライアント側コードと、SharePoint にサインインしているユーザーの権限が十分な場合は、クロスドメイン ライブラリが適切なオプションとなります。If client-side code and the permissions of a user who is signed in to SharePoint are sufficient, the cross-domain library is a good option. クロスドメイン ライブラリは、ファイアウォール経由でリモート呼び出しを行う場合にも便利です。The cross-domain library is also convenient whenever you are making remote calls through a firewall.

OAuth は承認用のオープン プロトコルであり、管理しやすい方法で、クライアント アプリケーション (デスクトップ、Web、モバイル アプリケーション) から安全に承認できます。OAuth is an open protocol for authorization that enables secure authorization from client applications (desktop, web, and mobile applications) in an easily manageable way. リモート Web アプリケーションで実行し、SharePoint と通信する SharePoint アドインを構築しようとしているなら、多くの場合は OAuth を使用する必要があります。If you plan to build a SharePoint Add-in that runs in a remote web application and communicates back to SharePoint, you will often need to use OAuth. クライアント側コード (HTML + JavaScript) を排他的に使用できない、リモートでホストされる Web アプリケーションから SharePoint を呼び出すときは、常に OAuth が必要です。OAuth is required whenever you are calling into SharePoint from a remotely hosted web application that can't use client-side code (HTML + JavaScript) exclusively. SharePoint アドインでの OAuth の動作について詳細を参照しますLearn more about how OAuth works in SharePoint Add-ins.

SharePoint アドインのセキュリティで保護されたデータ アクセスとクライアント オブジェクト モデル」および「 SharePoint アドインの 3 つの承認システム」では、OAuth とクロスドメイン ライブラリの選択について詳しく説明されています。Secure data access and client object models for SharePoint Add-ins and Three authorization systems for SharePoint Add-ins explain the choice between OAuth and the cross-domain library more thoroughly.

オンプレミスの SharePoint ファームによる OAuthOAuth with on-premises SharePoint farms

SharePoint のオンプレミス展開を使用している場合は、OAuth を使用できますが、高信頼性アドインを作成するか、Office 365 テナンシーを使用するかを選択する必要があります。If you are using an on-premises deployment of SharePoint, you can use OAuth, but you will have to choose between creating high-trust add-ins and using an Office 365 tenancy. Office 365 は Microsoft Azure アクセス制御サービス (ACS) を信頼ブローカーとして使用しており、Office 365 テナンシーにアクセスできない場合は、高信頼性 SharePoint アドインを作成する必要があります。このアドインは、証明書を使用して、アドインと SharePoint の間の信頼を確立します。Office 365 uses Microsoft Azure Access Control Service (ACS) as the trust broker, and if you do not have access to an Office 365 tenancy, you'll need to use Create high-trust SharePoint Add-ins, which uses certificates to establish trust between your add-in and SharePoint. 高信頼性アドインは SharePoint ファームのアドイン カタログに追加できますが、Office ストアで販売することはできません。You can add high trust add-ins to the add-in catalog of your SharePoint farm, but you can't sell them in the Office Store. Office 365 テナンシーにアクセスできる場合は、それを SharePoint のオンプレミスのインストールにリンクし、オンプレミスの SharePoint にインストールされるアドインの信頼ブローカーとして ACS を使用することができます。If you do have access to an Office 365 tenancy, you can link it to your on-premises installation of SharePoint and use ACS as the trust broker for add-ins that are installed to your on-premises SharePoint.

次の表では、アドインの SharePoint コンポーネントとリモート コンポーネントの両方をホスティングするために可能なすべてのパターン、および OAuth を使用している場合に使用できる信頼ブローカーを示します。ACS を使用して、SharePoint と、SharePoint のオンプレミス インストールにインストールされる SharePoint アドインの間に信頼を確立するには、Office 365 テナントにアクセスする必要があることに注意してください。The following table lists all of the possible patterns for hosting both the SharePoint components and the remote components of your add-in, along with the trust brokers that are available to you if you're using OAuth. Note that you'll need access to an Office 365 tenant in order to use ACS to establish trust between SharePoint and a SharePoint Add-in that is installed to an on-premises installation of SharePoint.

SharePoint コンポーネントの場所SharePoint component location リモート コンポーネントの場所Remote component location 信頼ブローカーTrust broker
オンプレミスOn-premises クラウド内In cloud ACS、証明書ACS, certificate
オンプレミスOn-premises オンプレミスOn-premises ACS、証明書ACS, certificate
Office 365 SharePoint サイトOffice 365 SharePoint site クラウド内In cloud ACSACS
Office 365 SharePoint サイトOffice 365 SharePoint site オンプレミスOn-premises ACSACS

プロバイダー ホスティングと SharePoint ホスティングの組み合わせCombine provider hosting and SharePoint hosting

SharePoint によってホストされるコンポーネントとクラウドでホストされるコンポーネントの両方を含むアドインを構築することもできます。You can also build add-ins that include both SharePoint-hosted and cloud-hosted components. たとえば、SharePoint のカスタムのリストおよびコンテンツ タイプを含む、クラウドでホストされるアドインを作成できます。For example, you can create a cloud-hosted add-in that includes a custom SharePoint list and content type. このアーキテクチャを使用することにした場合、設計と手法ではモデルに組み込まれるセキュリティの制限事項を考慮する必要があります。If you choose to use this architecture, your design and approach must account for security limitations that are built into the model. SharePoint でホストされるコード コンポーネントでは JavaScript のみを使用でき、リモートでホストされるコンポーネントでは OAuth またはクロスドメイン ライブラリを使用して SharePoint Web サイトと対話する必要があります。You can use only JavaScript in the code components that are hosted by SharePoint, and the remotely hosted components must use either OAuth or the cross-domain library to interact with the SharePoint website. この手法を検討する際は、SharePoint でのアドイン承認の動作方法を理解しておく必要があります。When considering this approach, make sure that you understand how add-in authorization works in SharePoint.

図 3 は、Azure を使用してアドインのリモート コンポーネントをホストし、OAuth を使用する場合の、このアーキテクチャの動作を示しています。Figure 3 shows you how this architecture works if you use Azure to host the remote components of your add-in, and you use OAuth.

図 3. OAuth と Windows Azure を使用する際の SharePoint アドインのサーバー間コミュニケーションFigure 3. SharePoint add-in server-to-server communication when you use OAuth and Windows Azure

Server to server communication restrictions

クラウド ホスティングと SharePoint ホスティングを組み合わせるアドインを作成する方法についてはこちらを参照してください。Learn how to create an add-in that combines cloud hosting and SharePoint hosting.

プロバイダー ホスティングと SharePoint ホスティングの組み合わせる際の考慮事項を次に示します。Here are some things to think about when you're considering a combination of provider hosting and SharePoint hosting.

メリットGet these benefits 考慮事項But consider this
2 つの方法のすべてのメリット。All the benefits of the two approaches. より複雑なアーキテクチャでは、サーバー間通信およびクロスサイト スクリプティングの制限に関して、慎重に計画を立てる必要があります。More complex architecture requires careful planning around server-to-server communication and cross-site scripting restrictions.

Azure Web ロールでのプロバイダー ホスト型アドインProvider-hosted add-ins in Azure Web Roles

Web アプリケーション (オンプレミス、Azure Web サイトのいずれも該当) の代わりに、Azure Web ロールでプロバイダー ホスト型 SharePoint アドインをホストできます。You can host a provider-hosted SharePoint Add-in on an Azure web role instead of a web application (whether the web application is on-premises or an Azure website). 基本的に、Azure Web ロールはインターネット インフォメーション サービス (IIS) に基づく Web サイトであり、Azure 上でホストされます。An Azure web role is, essentially, a website that's based on Internet Information Services (IIS) and hosted on Azure. ホスティング サービスと、Azure Web ロールのスケーラビリティを活用できます。You can take advantage of the hosting services and scalability of Azure web roles. 特にアドインが頻繁に使用される場合や、時間が経つにつれてアドインの需要が変化する場合にも、SharePoint アドインのパフォーマンスと使いやすさを向上させることができます。You can also enhance the performance and usability of your SharePoint Add-in, especially if the add-in is heavily used or demand for it changes over time. SharePoint アドインで今まで以上の多くのサーバー リソースが必要になった場合、Azure はそれらのリソースをアドインに動的に割り当てることができます。If the SharePoint Add-in ever requires more server resources, Azure can dynamically allocate them to the add-in.

Azure Web ロールの詳細については、次のリンクを参照してください。See the following links for more information about Azure web roles.

前提条件として Microsoft Azure SDK for .NET (Visual Studio 2012) 1.8.1 が必要です。これは Web Platform Installer を使用してインストールできます。As a prerequisite, you will need the Microsoft Azure SDK for .NET (Visual Studio 2012) 1.8.1, which you can install by using the Web Platform Installer.

vsnv でプロジェクトを作成する方法は、SharePoint アドイン プロジェクトを開始してから Azure Web ロール プロジェクトを追加するか、Azure プロジェクトを開始してから SharePoint プロジェクトを追加するかによって異なります。The way that you create the project in vsnv depends on whether you start with a SharePoint Add-in project and then add the Azure web role project, or you start with the Azure project and then add the SharePoint project.

クラウド サービスを既存のアドインに追加するAdd a cloud service to an existing add-in

Azure 上でホストするプロバイダー ホスト型 SharePoint アドインが既にある場合、SharePoint アドインのソリューションで Web アプリケーション プロジェクトを選択します。If you already have a provider-hosted SharePoint Add-in that you want to host on Azure, choose the web application project in the solution for the SharePoint Add-in. メニュー バーで、[プロジェクト] > [Microsoft Azure クラウド サービス プロジェクトの追加] の順に選択します。On the menu bar, select Project > Add Microsoft Azure Cloud Service Project. NameOfTheWebAppProject.Azure と呼ばれる Azure プロジェクトが、SharePoint アドインのソリューションに追加されます。An Azure project called NameOfTheWebAppProject.Azure is added to the solution for your SharePoint Add-in. Web プロジェクトの Web ロールも Azure クラウド サービスのプロジェクトに追加されます。A web role for the web project is also added to the project for the Azure cloud service. Office Developer Tools for Visual Studio 2012 は、Web ロールが SharePoint アドインで機能するために必要なプロジェクト プロパティを設定します。The Office Developer Tools for Visual Studio 2012 sets the necessary project properties so that the web role can work with the SharePoint Add-in.

アドインを既存の Web ロールに追加するAdd an add-in to an existing web role

プロバイダー ホスト型 SharePoint アドインのホストとして使用する Web ロールが既に Azure クラウド サービスにある場合、Visual Studio で Azure クラウド プロジェクトを開いた後、ソリューション エクスプローラーで Web ロール プロジェクトを選択します。If you already have a web role in an Azure cloud service that you want to use as a host for a provider-hosted SharePoint Add-in, open the Azure cloud project in Visual Studio, and then, in Solution Explorer, choose the web role project. メニュー バーで [プロジェクト] > [SharePoint プロジェクトのアドインの追加] の順に選択します。On the menu bar, select Project > Add Add-in for SharePoint Project. NameOfTheWebAppProject.Azure と呼ばれる、プロバイダー ホスト型 SharePoint アドインのプロジェクトが作成され、ソリューションに追加されます。A project for a provider-hosted SharePoint Add-in is created called NameOfTheWebAppProject.Azure and added to the solution. Visual Studio では Azure Web ロールを、SharePoint アドインの Web プロジェクト ホストと言います。Visual Studio references the Azure web role as the web project host for the SharePoint Add-in.

関連項目See also