SharePoint のホスト Web、アドイン Web、および SharePoint コンポーネント

SharePoint コンポーネントが含まれているアドインが Web サイトにインストールされると、サイト コンテンツ ページに一覧表示され、そこからアドインを起動できます。 Web サイトに追加する必要があるのはこの一覧だけであり、これがアドインの起動ポイントになります。ただし、カスタム アクションやアドイン パーツなど、他の特定のものを必要に応じて追加できます。 これらのオプションについては、「UI からアドインへのアクセス」を参照してください。

ホスト Web、アドイン Web、分離ドメイン

これらの UI 要素以外の SharePoint アドイン コンポーネントやコンテンツ (リスト、コンテンツ タイプ、ワークフロー、ページなど) は、特別な分離ドメイン内の別の Web サイトに展開されます。 この事実は、ユーザーにはほとんど知られていません。 アドインが展開される特別な Web サイトは、アドイン Web と呼ばれます。 アドインがインストールされる Web サイトは、ホスト Web と呼ばれます。 アドイン Web は独自の分離ドメインを使用しますが、ホスト Web と同じサイト コレクション内に存在します (この規則の例外の 1 つは、アドインがテナント スコープでインストールされている場合です。そのシナリオでは、アドイン Web は企業アドイン カタログのサイト コレクションにあります)。

図 1 は 1 つのホスト Web に 2 つの SharePoint アドインがインストールされている状態を示しています。 アドイン 1 はリモート コンポーネントを含んでいますが SharePoint コンポーネントは含んでいません。 アドイン 2 はリモート コンポーネントは含んでいませんが、2 つの SharePoint リストと、ワークフローを含んでいます。 これらは分離されたサブサイトに展開されています (1 つの SharePoint アドインが、リモート コンポーネントと、SharePoint がホストするコンポーネントの両方を含むこともあります。ただし、この図では両方を含むアドインは記載していません)。

図 1: プロバイダー向けのホスト型アドインと、SharePoint ホスト型アドインを持つホスト Web

ホスト Web、アプリ Web、およびそのコンポーネント

1 つのアドインを例に考えましょう。このアドインはホスト Web に展開できる単純な UI 要素の他に、SharePoint コンポーネントを含んでいるとします。アドインは、以下の URL でホスト Web サイトにインストールされます。

https://www.fabrikam.com/sites/Marketing

この SharePoint アドインは、新しく作成される以下のような URL の Web サイトに展開されます。

http://add-in-bdf2016ea7dacb.fabrikamadd-ins.com/sites/Marketing/Scheduler

この URL は、次のような構造になっています。

https://` _Add-in_Prefix_ `-` _Add-in_ID_ `.` _Add-in_Base_Domain_ `/` _Domain_Relative_URL_of_Host_Web_ `/` _Add-in_Name_

各プレースホルダーは次のように定義されます。

  • Add-in_Prefix は、サーバーの全体管理でファーム管理者が設定する任意の文字列です。 既定値は "default" です。この例では、管理者はこれを "アドイン" に変更しました。
  • Add-in_ID は、アドインがインストールされるときに内部的に生成される 16 進数値です。
  • Add-in_Base_Domain は、サーバーの全体管理または SharePoint 管理シェルでファーム管理者が設定する任意の文字列です。 これを SharePoint Web アプリケーションのサブドメインに設定しないでください。アドインを分離するという目的が大きく損なわれることになります。 この例では、管理者は "www" を削除し、会社名に "アドイン" を追加しました。 そのため、fabrikamadd-ins.com がアドインのベース ドメインになっています。
  • Domain_Relative_URL_of_Host_Web は、親ホスト Web の相対 URL です。この例では sites/Marketing です。
  • Add-in_Name は、appmanifest.xml ファイルの App 要素の Name 属性の値です。

SharePoint コンポーネントを、ホスト Web ではなくアドイン Web に展開する大きな理由として以下の 2 つがあります。 どちらもセキュリティに関係します。

  • アドインのアクセス許可の強制: SharePoint アドイン用のモデル では、アドインは固有の ID とアクセス許可を持ち、このアクセス許可はアドインを実行するユーザーのアクセス許可とは必ずしも一致しません。 このようなアドインのアクセス許可はアドインがインストールされるときに要求され、アドインをインストールする人が、アドインが要求するすべてのアクセス許可を持っている場合、その人によって付与されます (アドインをインストールするユーザーが、アドインが要求するアクセス許可すべてを持っていない場合、そのユーザーはアドインをインストールできません)。 各アドインに固有のドメインを提供することにより、SharePoint はアドインが行う要求を確実に識別し、そのアドインのアクセス許可を検証することができます。 アドインのアクセス許可の詳細については、「 アドインのアクセス許可」を参照してください。

  • クロスドメイン スクリプティング セキュリティ: 最新のブラウザーでは、JavaScript メソッド呼び出しに関して "同じ配信元ポリシー" がサポートされています。 各 SharePoint アドインを独自のドメインに展開することで、SharePoint はブラウザーの同じ配信元ポリシーを利用して、SharePoint アドイン内の JavaScript が、エンド ユーザーの観点からアドインがインストールされているドメインなど、他のドメインから JavaScript を実行できないようにします。

    SharePoint には、このポリシーの制限を安全に迂回する手段もあります。 特に、これは SharePoint アドインのリモート コンポーネントが、ホスト Web とアドイン Web の共通の親テナントにある任意の Web サイトからのデータを照会できるようにします。 詳細については、「クロスドメイン ライブラリを使用してアドインから SharePoint のデータにアクセスする」を参照してください。

SharePoint アドインに含めることができる SharePoint コンポーネントの種類

一般的に、SharePoint アドインには、次のリスト内のコンポーネントを 1 つ以上含めることができます。 特定の例外を除き、これらのコンポーネントは、SharePoint ソリューション パッケージ (.wsp) ファイルに含まれる Web スコープのフィーチャーに展開する必要があります。

注:

アスタリスク (*) でマークされているコンポーネントについては、この記事の「 SharePoint コンポーネントを展開するための注意点」 セクションで詳しく説明します。

  • フィーチャー (Web スコープのみ)
  • カスタム アクション (ショートカット メニュー項目およびリボンのカスタマイズなど)*
  • リモート イベント レシーバー*
  • SharePoint に含まれる (カスタム Web パーツではなく) アドイン パーツを含む Web パーツを参照するマークアップ*
  • SharePoint ページが使用するカスタム カスケード スタイル シート (CSS)
  • SharePoint ページが使用するカスタム JavaScript ファイル
  • モジュール (ファイルのセット)
  • ページ
  • リスト テンプレート
  • リストおよびライブラリインスタンス (従来のエクスペリエンスのみ)
  • カスタム リスト フォーム
  • カスタム リスト ビュー
  • カスタム コンテンツ タイプ
  • フィールド (SharePoint に組み込まれたフィールドの種類)
  • Microsoft Business Connectivity Services (BCS) モデル (Web スコープのみ)、モデルに基づく外部コンテンツ タイプ、およびコンテンツ タイプを使用する外部リスト*
  • ワークフロー*
  • プロパティ バッグ
  • Web テンプレート (サイト定義ではない)*

この他の種類の SharePoint コンポーネントは SharePoint アドインでは展開できません。 SharePoint アドインに何を含めることができるのかについて、その制限の詳細は「SharePoint アドインと SharePoint ソリューションの比較」を参照してください。

SharePoint コンポーネントの展開に関する注意事項

アドインに含まれる特定の種類の SharePoint コンポーネントの展開に関する注意事項と詳細を以下に示します。

  • カスタム アクション: カスタム アクションをアドイン Web に追加するだけでなく、ホスト Web にも追加できます。 カスタム アクションをホスト Web に追加するには、(外部ベースのアドインの場合でも) CustomAction マークアップを、アドイン パッケージ内にありながらいずれの .wsp ファイルにも含まれないフィーチャーの中に含めることができます。 ホスト Web にカスタム アクションを追加するには、アドイン パッケージ内にあるが .wsp ファイルの外部にある機能に CustomAction マークアップを含めることができます (外部ベースのアドインに含めることができます)。 このような "緩い" 機能のコンポーネントは、アドイン Web ではなくホスト Web に適用されるため、この種類の機能は ahost Web Feature と呼ばれます。

  • Web パーツ: 1 種類の Web パーツであるアドイン パーツをアドインに展開でき、アドイン パーツはアドイン Web またはホスト Web のいずれかに移動できます。 その他のすべての種類の Web パーツはアドインで参照できますが、展開することはできません。 アドイン パーツをホスト Web に展開する場合は、ホスト Web 機能に含める必要があります。

  • リモート イベント レシーバー: これは SharePoint の新機能です。 従来の SharePoint イベント レシーバーに似ていますが、コードがクラウドで実行される点が異なります。 これは SharePoint ホスト型アドインでは使用できません。

  • ワークフロー: SharePoint のワークフローは、SharePoint の新機能である、Microsoft Azure がホストするワークフロー ランタイムを使用するようになりました。 SharePoint がホストするワークフロー ランタイムを使用するようにコーディングされているワークフローは SharePoint アドインに含めることができません。 宣言型ワークフロー、または新しいランタイムを使用するワークフローのみ許可されます。

  • Microsoft Business Connectivity Services (BCS) モデル、外部コンテンツ タイプ、外部リスト: Business Data Connectivity (BDC) Service モデルでは通常、サイト コレクションよりも広いスコープが使用されます。 ただし、BDC Service モデルがアドインに展開される場合、そのスコープはアドイン Web に限定されます。 BDC Service モデルはアドインに組み込まれる際に、BDC Service 共有サービス ストアには格納されません。 代わりに、アドイン Web にファイルとして格納されます。

  • Web テンプレート: ほとんどの場合、アドイン Web を使用して、アドイン Web 用に最適化された新しい組み込みサイト定義構成 APP#0 をインスタンス化します。 (詳細については、「UI からアドインへのアクセス」を参照してください)。アドイン パッケージに WebTemplate 要素が含まれない場合、SharePoint は自動的に APP#0 を使用します。

    アドイン Web 用にカスタムのサイトの種類を定義することもできます。 これは、大まかに次の 2 つの手順で行います。

    注:

    アドイン マニフェスト用の新しい WebTemplate 要素は、フィーチャーに含めることができる WebTemplate 要素と同じマークアップではありません。 フィーチャーに含めることができる WebTemplate 要素はサイトの種類を定義しますが、アドイン マニフェスト用の WebTemplate 要素は単に使用するサイトの種類を識別するだけです。 SharePoint アドインのアドイン マニフェストの詳細については、「アドイン パッケージの構造」を参照してください。

    注意

    アドイン マニフェスト内の WebTemplate 要素を使用して、任意の組み込みの SharePoint サイト定義構成をアドイン Web のサイトの種類として指定しないでください。 アドイン Web に対しては、 APP#0 以外の組み込みの SharePoint サイト定義構成の使用はサポートされていません。

    サイト定義の構成と Web テンプレートの詳細については、「 サイト テンプレートと定義の操作」を参照してください。

関連項目