SharePoint アドインを開発およびホストするためのパターンを選択する
SharePoint アドイン モデルでは、さまざまなホスティングと開発パターンが導入されています。 一部のパターンは、相互に組み合わせて使用できます。 たとえば、アドインでは SharePoint によってホストされるコンポーネントとリモートでホストされるコンポーネントを組み合わせることができます。 使用するパターンを決定する最も便利な方法は、独自の要件、テクノロジ、目標から始めて、SharePoint アドインで有効になっているオプションと可能性と一致させる方法です。
開発パターンを選択する際の考慮事項
SharePoint アドインによって、SharePoint のリソースやサービスを利用するときに使用できるプログラミング言語や技術スタックの範囲が広がります。 オプションの正確な範囲は、アドインの種類と、選択するホスティング パターンにより変わります。 パターンを組み合わせることもできます。
SharePoint ホスト型アドイン
最も簡単なオプションから始めます。SharePoint ホスト型アドイン、つまりすべてのコンポーネントがオンプレミスまたは Office 365 の SharePoint ファームでホストされるアドインです。 SharePoint ホスト型アドインは、ホスト Web と呼ばれる SharePoint Web サイトにインストールされます。 SharePoint ホスト型アドインのリソースは、アドイン Web と呼ばれる、ホスト Web とは別のサブサイトでホストされます。 ホスト Web とアドイン Web の違いを理解しておくことが重要です。
図 1 は、SharePoint ホスト型アドインの基本的なアーキテクチャを示しています。
図 1. SharePoint ホスト型アドインのアーキテクチャ
SharePoint ホスト型アドインとリモートにホストされるコンポーネントを含むアドインを組み合わせることができますが、アドイン Web 上で実行するアドインまたはアドインの一部には、アドインがホストされる場所、アドインが承認される方法、使用できる言語の 3 つの重要なコンポーネントに関して、以下の一連の要件があります。
コンポーネント | SharePoint ホスト型アドインの要件 |
---|---|
アドイン コンポーネントをホストする場所 | SharePoint ファームの別のアドイン ドメイン内 |
アドインが承認される方法 | サインインしているユーザーの特権 |
アドインが使用できる言語 | JavaScript (および SharePoint JSOM ライブラリ) + HTML |
利点 | 考慮事項 |
---|---|
リストや Web パーツなどの共通 SharePoint アイテムの再利用。 | アドインでは JavaScript しか使用できず、サーバー側コードは使用できません。 |
比較的簡単に作成して展開できるので、小規模なチームの生産性を向上させるアドイン、およびビジネス ルールがあまり複雑ではないビジネス プロセスの自動化に適しています。 | アドインには、サインインしたユーザーの承認された特権のみが与えられます。 |
SharePoint ホスト型の SharePoint アドインの作成を始める
プロバイダー ホスト型アドイン
プロバイダー ホスト型 SharePoint アドインには、SharePoint ファームの外部で展開およびホストされるコンポーネントが含まれます。 これらはホスト Web にインストールされますが、そのリモート コンポーネントは SharePoint ファームのサーバー以外の別のサーバーでホストされます。
図 2 は、プロバイダー ホスト型アドインの基本的なアーキテクチャを示しています。
図 2. プロバイダー ホスト型アドインのアーキテクチャ
次の表では、プロバイダー ホスト型アドインのホスティング場所、アドインの承認、および言語に関する要件が、SharePoint ホスト型アドインほど厳密ではないことを示します。
コンポーネント | プロバイダー ホスト型アドインの要件 |
---|---|
アドイン コンポーネントをホストする場所 | 任意の Web サーバーまたはホスティング サービス |
アドインが承認される方法 | OAuth または JavaScript クロス ドメイン ライブラリ |
アドインが使用できる言語 | Web サーバーまたはホスティング サービスでサポートされている任意の言語 |
プロバイダー ホスト型アドインは、SharePoint サイトと対話しますが、リモート サイトのリソースやサービスも使用します。 プロバイダー ホスト型アドインの作成を決定する前に、以下のことを考慮する必要があります。
利点 | 考慮事項 |
---|---|
Microsoft Azure または Microsoft 以外のプラットフォームを含む任意のリモート Web プラットフォーム上でアドインをホストします。 | リモート コンポーネントのインストール、アップグレードおよびアンインストール ロジックの作成に責任を持つ必要があります。 |
SharePoint クライアント オブジェクト モデル、JavaScript クロスドメイン ライブラリ、または SharePoint REST/OData ベースの Web サービス のいずれかを使用して SharePoint と対話します。 | SharePoint との各対話方法には、データにアクセスするための対応するオプションがあります。 |
3 つの承認システムのいずれかを使用して、SharePoint データに対する承認を得ます。 | SharePoint へのアドインのアクセスを認証するために、OAuth とクロスドメイン ライブラリのどちらを使用するかを決定する必要があります。 |
ホスティング パターンと開発目標を一致させる
技術的な利点と各オプションの制約を考慮するだけでなく、ホスティング パターンを決定するときは、開発目標についても考える必要があります。 次の表を参考にして、ニーズに最適なホスティング パターンを選択してください。
要件 | 推奨ホスティング パターン | 例 |
---|---|---|
新しい SharePoint エンティティを操作し、排他的にプロビジョニングする | SharePoint ホスト型 | ユーザー選択コントロールを含むアドイン、および SharePoint ユーザーに関する情報を SharePoint リストに格納するアドイン |
既存の SharePoint エンティティを使用し、外部の (SharePoint 以外の) Web サービスと対話する | プロバイダー ホスト型 | ホスト Web の既存の SharePoint リストから顧客の住所を取得し、Web アプリケーションの地図サービスを使用してその場所を表示するアドイン |
新しい SharePoint エンティティをプロビジョニングし、外部の Web サービスと対話する | SharePoint ホスト型とプロバイダー ホスト型の組み合わせ | ユーザーによって提供された、または既存の SharePoint リストから取得した住所の緯度と経度の座標を格納できるように、アプリ Web に SharePoint リストをプロビジョニングする地図アドイン |
プロバイダー ホスト型アドインのホスティング パターンを選択する際の考慮事項
SharePoint ホスト型アドインは、アドイン Web でホストされるため、ホスティング パターンが固定されています。 プロバイダー ホスト型アドインは、アドインのさまざまなコンポーネントのホスティングに関してより柔軟であるため、この型のアドインを作成する場合は、目標と要件を適切なホスティング パターンに一致させる必要があります。
OAuth またはクロスドメイン ライブラリ
プロバイダー ホスト型アドインとその構築方法を検討するときに考慮しなければならない最も重要なことの 1 つは、SharePoint と対話するためのアドインの承認方法です。 プロバイダー ホスト型アドインには、JavaScript クロスドメイン ライブラリと OAuth という 2 つの選択肢があります。
クロスドメイン ライブラリを使用すると、プロキシを介してアドインのリモート コンポーネントから複数のドメインと対話できます。 クライアント側コードと、SharePoint にサインインしているユーザーの権限が十分な場合は、クロスドメイン ライブラリが適切なオプションとなります。 クロスドメイン ライブラリは、ファイアウォール経由でリモート呼び出しを行う場合にも便利です。
OAuth は承認用のオープン プロトコルであり、管理しやすい方法で、クライアント アプリケーション (デスクトップ、Web、モバイル アプリケーション) から安全に承認できます。 リモート Web アプリケーションで実行し、SharePoint と通信する SharePoint アドインを構築しようとしているなら、多くの場合は OAuth を使用する必要があります。 クライアント側コード (HTML + JavaScript) を排他的に使用できない、リモートでホストされる Web アプリケーションから SharePoint を呼び出すときは、常に OAuth が必要です。 SharePoint アドインでの OAuth の動作について詳細を参照します。
「 SharePoint アドインのセキュリティで保護されたデータ アクセスとクライアント オブジェクト モデル」および「 SharePoint アドインの 3 つの承認システム」では、OAuth とクロスドメイン ライブラリの選択について詳しく説明されています。
オンプレミスの SharePoint ファームによる OAuth
SharePoint のオンプレミス展開を使用している場合は、OAuth を使用できますが、高信頼性アドインを作成するか、Office 365 テナンシーを使用するかを選択する必要があります。 Office 365 は Microsoft Azure アクセス制御サービス (ACS) を信頼ブローカーとして使用しており、Office 365 テナンシーにアクセスできない場合は、高信頼性 SharePoint アドインを作成する必要があります。このアドインは、証明書を使用して、アドインと SharePoint の間の信頼を確立します。 高信頼性アドインは SharePoint ファームのアドイン カタログに追加できますが、Office ストアで販売することはできません。 Office 365 テナンシーにアクセスできる場合は、それを SharePoint のオンプレミスのインストールにリンクし、オンプレミスの SharePoint にインストールされるアドインの信頼ブローカーとして ACS を使用することができます。
次の表では、アドインの SharePoint コンポーネントとリモート コンポーネントの両方をホスティングするために可能なすべてのパターン、および OAuth を使用している場合に使用できる信頼ブローカーを示します。 ACS を使用して、SharePoint と、SharePoint のオンプレミス インストールにインストールされる SharePoint アドインの間に信頼を確立するには、Office 365 テナントにアクセスする必要があることに注意してください。
SharePoint コンポーネントの場所 | リモート コンポーネントの場所 | 信頼ブローカー |
---|---|---|
オンプレミス | クラウド内 | ACS、証明書 |
オンプレミス | オンプレミス | ACS、証明書 |
Office 365 SharePoint サイト | クラウド内 | ACS |
Office 365 SharePoint サイト | オンプレミス | ACS |
プロバイダー ホスティングと SharePoint ホスティングの組み合わせ
SharePoint によってホストされるコンポーネントとクラウドでホストされるコンポーネントの両方を含むアドインを構築することもできます。 たとえば、SharePoint のカスタムのリストおよびコンテンツ タイプを含む、クラウドでホストされるアドインを作成できます。 このアーキテクチャを使用することにした場合、設計と手法ではモデルに組み込まれるセキュリティの制限事項を考慮する必要があります。 SharePoint でホストされるコード コンポーネントでは JavaScript のみを使用でき、リモートでホストされるコンポーネントでは OAuth またはクロスドメイン ライブラリを使用して SharePoint Web サイトと対話する必要があります。 この方法を検討するときは、 SharePoint でのアドイン承認のしくみを理解していることを確認してください。
図 3 は、Azure を使用してアドインのリモート コンポーネントをホストし、OAuth を使用する場合の、このアーキテクチャの動作を示しています。
図 3. OAuth と Windows Azure を使用するときの SharePoint アドインのサーバー間の通信
クラウド ホスティングと SharePoint ホスティングを組み合わせるアドインを作成する方法についてはこちらを参照してください。
プロバイダー ホスティングと SharePoint ホスティングの組み合わせる際の考慮事項を次に示します。
利点 | 考慮事項 |
---|---|
2 つの方法のすべてのメリット。 | より複雑なアーキテクチャでは、サーバー間通信およびクロスサイト スクリプティングの制限に関して、慎重に計画を立てる必要があります。 |
Azure Web ロールでのプロバイダー ホスト型アドイン
Web アプリケーション (オンプレミス、Azure Web サイトのいずれも該当) の代わりに、Azure Web ロールでプロバイダー ホスト型 SharePoint アドインをホストできます。 基本的に、Azure Web ロールはインターネット インフォメーション サービス (IIS) に基づく Web サイトであり、Azure 上でホストされます。 ホスティング サービスと、Azure Web ロールのスケーラビリティを活用できます。 特にアドインが頻繁に使用される場合や、時間が経つにつれてアドインの需要が変化する場合にも、SharePoint アドインのパフォーマンスと使いやすさを向上させることができます。 SharePoint アドインで今まで以上の多くのサーバー リソースが必要になった場合、Azure はそれらのリソースをアドインに動的に割り当てることができます。
Azure Web ロールの詳細については、次のリンクを参照してください。
前提条件として Microsoft Azure SDK for .NET (Visual Studio 2012) 1.8.1 が必要です。これは Web Platform Installer を使用してインストールできます。
vsnv でプロジェクトを作成する方法は、SharePoint アドイン プロジェクトを開始してから Azure Web ロール プロジェクトを追加するか、Azure プロジェクトを開始してから SharePoint プロジェクトを追加するかによって異なります。
クラウド サービスを既存のアドインに追加する
Azure 上でホストするプロバイダー ホスト型 SharePoint アドインが既にある場合、SharePoint アドインのソリューションで Web アプリケーション プロジェクトを選択します。 メニュー バーで、[プロジェクト]>[Microsoft Azure クラウド サービス プロジェクトの追加] の順に選択します。 NameOfTheWebAppProject.Azure と呼ばれる Azure プロジェクトが、SharePoint アドインのソリューションに追加されます。 Web プロジェクトの Web ロールも Azure クラウド サービスのプロジェクトに追加されます。 Office Developer Tools for Visual Studio 2012 は、Web ロールが SharePoint アドインで機能するために必要なプロジェクト プロパティを設定します。
アドインを既存の Web ロールに追加する
プロバイダー ホスト型 SharePoint アドインのホストとして使用する Web ロールが既に Azure クラウド サービスにある場合、Visual Studio で Azure クラウド プロジェクトを開いた後、ソリューション エクスプローラーで Web ロール プロジェクトを選択します。 メニュー バーで [プロジェクト]>[SharePoint プロジェクトのアドインの追加] の順に選択します。 NameOfTheWebAppProject.Azure と呼ばれる、プロバイダー ホスト型 SharePoint アドインのプロジェクトが作成され、ソリューションに追加されます。 Visual Studio では Azure Web ロールを、SharePoint アドインの Web プロジェクト ホストと言います。
関連項目
- SharePoint アドイン アーキテクチャと開発環境に関する重要な要素
- SharePoint アドイン
- SharePoint のホスト Web、アドイン Web、SharePoint コンポーネント
- SharePoint アドインの承認と認証
- SharePoint アドインのコンテキスト トークン OAuth フロー
- Office 365 SharePoint サイトを使用して、オンプレミスの SharePoint サイトのプロバイダー向けのホスト型アドインに権限を付与する
- SharePoint アドインと SharePoint ソリューションとの比較
- プロバイダー ホスト型 SharePoint アドインの作成を始める
- SharePoint ホスト型の SharePoint アドインの作成を始める
- SharePoint のカスタムのリストおよびコンテンツ タイプを含む、プロバイダー向けのホスト型アドインを作成する