SharePoint アドインと SharePoint ソリューションとの比較
SharePoint 拡張機能を SharePoint アドイン として開発する場合と SharePoint ファーム ソリューション またはコードなし セキュリティで保護されたソリューション として開発する場合について説明します。
この記事では、SharePoint アドイン、ファーム ソリューション、およびコードなし セキュリティで保護されたソリューション (NCSS) のユース ケースを比較します。
- 新しい SharePoint アドイン は自己完結型の拡張機能で、クラウドベースのロジックとデータ、SharePoint コンポーネント、およびクライアント側のスクリプトが含まれることがありますが、SharePoint サーバーで動作するカスタム マネージ コードではありません。 Office ストア または組織のアドイン カタログのどちらからもインストールされ、オンプレミスファームまたは Microsoft SharePoint Online のいずれかにインストールできます。 SharePoint アドインの概要については、「 SharePoint アドイン」を参照してください。
- SharePoint ファーム ソリューションは、パッケージのインストール場所からファーム全体のギャラリーにアップロードされた SharePoint コンポーネントです。 これらは、Office ストア経由で配布することはできず、SharePoint Online にはインストールできません。 SharePoint ファームのサーバー上で実行されるカスタム マネージ コードを含めることもできます。 ファーム ソリューションの基本の詳細については、「 ソリューションの概要 」と「 SharePoint 2010 のファーム ソリューション」を参照してください。
- NCSS は SharePoint コンポーネントのパッケージでもあります。ただし、インストールできるサイト コレクション ギャラリーにアップロードされます。 これらは、オンプレミスのファームまたは SharePoint Online にインストールできますが、Office ストアを介して配布することはできません。 SharePoint アドインとほぼ同じ種類の説明コンポーネントを含めることができます。また、アドインと同様に JavaScript を使用できますが、SharePoint サーバー上で実行されるカスタム マネージド コードは含まれません。 アドインと NCSS の展開システムの違いにより、NCSS はシナリオの短いリストに対してより優れた開発オプションになります。 サンドボックス ソリューションの詳細については、「 SharePoint 2010 のサンドボックス ソリューション」を参照してください。
重要
コードなしのサンドボックス ソリューション (NCSS) と呼ばれる宣言型マークアップと JavaScript のみを含むサンドボックス ソリューションの開発は引き続き有効ですが、サンドボックス ソリューション内でのカスタム マネージド コードの使用は非推奨になりました。 マネージド コードの使用を必要とするようなシナリオに代わる方法として、新しい SharePoint アドイン モデルが導入されています。 アドイン モデルはアドイン ランタイムから、SharePoint の主要な製品を分離しました。これにより、さらに柔軟性が向上し、任意の環境でコードを実行する機能を提供します。 セキュリティで保護されたコード化ソリューションへ投資されたお客様がいることは理解していますが、責任を持って段階的に撤退していきます。 既存のセキュリティで保護されたコード化ソリューションは、当面の間、オンプレミスの SharePoint ファームで引き続き動作します。 オンライン サービスの動的な性質を考慮し、お客様の要望に基づいて SharePoint Online のセキュリティで保護されたコード化ソリューションのサポートに関するニーズを判断します。 NCSS は引き続きサポートされます。 将来の投資はすべて、新しい SharePoint アドイン モデルをより豊富で強力にするために使われます。 したがって、すべての新しい開発では、可能な限り新しいアドイン モデルを使用することをお勧めします。 ファーム ソリューションまたはセキュリティで保護されたコード化ソリューションを開発する必要があるシナリオでは、より緩やかに疎結合する開発モデルに簡単に変更できるように設計することをお勧めします。
可能な場合はアドインを開発する
最も重要な点として、できる限り ファーム ソリューションまたは NCSS ではなく、SharePoint アドイン を開発することをお勧めします。 SharePoint アドインには、従来のソリューションと比較した場合、次の利点があります。
- ユーザーに最も簡単な検出、購入、およびインストールのプロセスを提供します。
- 管理者に最も安全な SharePoint 拡張機能を提供します。
- Microsoft のオンライン アドイン ストアに基づいた最もシンプルなマーケティングおよび営業システムを提供します。
- 将来のアップグレード開発における柔軟性を最大化します。
- SharePoint以外の既存のプログラミング スキルを最大限に活用できるようにします。
- クラウドベースのリソースをより円滑かつ柔軟性のある方法で統合します。
- アドインを実行しているユーザーのアクセス許可とは異なるアクセス許可を拡張機能に与えます。
- HTML、REST、OData、JavaScript、OAuth などのクロスプラットフォーム標準を使用できるようにします。
- SharePoint クロス ドメイン JavaScript ライブラリを利用して、SharePoint データにアクセスできるようにします。 または、Microsoft のセキュリティ保護された OAuth 準拠のトークン サービス、またはデジタル証明書を使用して、SharePoint データへの認証を取得できます。
エンド ユーザー向けにアドインまたは NCSS を設計し、管理者向けにファーム ソリューションを設計する
SharePoint アドイン および NCSS は、SharePoint クライアント オブジェクト モデルの 1 つ、または REST エンドポイントを使用して、SharePoint のコンテンツおよびコンポーネントにアクセスします。 これらのクライアント API により、エンド ユーザー向けに設計されている SharePoint 拡張機能が有効にされます (このコンテキストでは、エンド ユーザーは、サイトコレクション管理者、Web サイト所有者、および Web サイト メンバーです)。 サーバー オブジェクト モデルには、SharePoint の管理、構成、およびセキュリティをプログラムで拡張することができる追加 API があります。 サーバーの全体管理、Windows PowerShell のカスタム コマンド、タイマー ジョブ、カスタム バックアップなどの拡張が含まれます。 開発できる管理拡張機能の種類の詳細については、「管理Windows SharePoint Services」を参照してください。 これらの管理拡張機能は、ファーム、Web アプリケーション、またはサイトコレクションのスコープを持つ SharePoint 機能に展開されます。 また、SharePointファーム ソリューション はファーム管理者によってもインストールされますが、アドインと NCSS はテナントおよびサイト コレクションの管理者がインストールできます。
サーバー オブジェクト モデルには、リスト、ライブラリ、Web サイトで作成/読み取り/更新/削除 (CRUD) 操作を行い、他の SharePoint コンポーネントで操作を行うための API もあります。 つまり、サーバー オブジェクト モデルは、エンド ユーザー向けの拡張機能に使用することができますが、前のセクションで述べた理由により、通常、ファーム ソリューションはこうした拡張機能に最適ではありません。 したがって、ファーム ソリューションは Microsoft SharePoint Online にインストールすることができません。 Microsoft は SharePoint Online のすべての管理を扱うので、管理拡張機能は必要ありません。 SharePoint のさまざまな API セットとそれらが重複する場所の詳細については、「 SharePoint で適切な API セットを選択する」を参照してください。
クライアント オブジェクト モデルと REST エンドポイントは、サーバー オブジェクト モデルの管理指向 API を複製しません。 さらに、SharePoint アドインも NCSS にも SharePoint サーバー上で実行されるカスタム コードを含めることはできませんので、これらの管理 API を呼び出すことはできません。 さらに、SharePoint アドインのすべての機能には、Web サイトのスコープが必要です。および NCSS の機能には、サイト コレクションまたは Web サイトスコープがあります。 したがって、管理指向の SharePoint 拡張機能は、SharePoint アドインまたは NCSS では実現できません。 そのため、2 番目の原則は絶対的なルールではありませんが、アドインと NCSS はエンド ユーザー向けであり、ファーム ソリューションは管理者向けです。
ブランド用およびテンプレートタイプの拡張機能用の NCSS の設計
アドイン モデルが適していないが、ソリューションを SharePoint Online にインストールする必要があるか、サイト コレクション管理者がインストールできる必要があるため、ファーム ソリューションで実装できない、少数の SharePoint 開発シナリオのいずれかが発生する可能性があります。 このようなシナリオには、2 つの広範なカテゴリと重複するカテゴリがあります。
ブランド化: 多くの場合、SharePoint ユーザーは、SharePoint Online サイトを含む自分の SharePoint サイトを独自の色、外観、スタイル、レイアウト、ロゴで独自の外観にすることを望みます。 これは、通常 SharePoint アドインよりも NCSS を使用する方が簡単です。SharePoint アドインには、独自のアドイン Web のみの外観を制御するコントロールがあります。 ホスト Web については、リボン ボタンとメニュー アイテム (およびアドイン パーツ) のみを宣言によって追加できます。 ホスト Web またはその親サイト コレクション、テナント、またはオンプレミス SharePoint Web アプリケーションに対するそれ以外の変更は、SharePoint のクライアント オブジェクト モデルのいずれかを使用するコードまたはスクリプトで行う必要があります。 たとえば、新しいアイコンや CSS ファイルは、プログラムを使用して展開する必要があります。 このコードは、アドインのインストール後にアドイン自体から実行、またはアドイン インストールのイベント ハンドラーで実行することができます。 ただし、このコードを作成するにはかなりの作業が必要です。 さらに、アドインでは、独自のアドイン Web とホスト Web の外のすべての Web サイトを変更するには、サイト コレクション スコープのアクセス許可が必要であり、その親サイト コレクションのみではなくそれ以上を変更するにはテナント スコープのアクセス許可が必要です。 ただし、ブランド化 NCSS は、任意のサイト コレクションに対して展開およびアクティブ化でき、いくつかの純粋な宣言コンポーネントのみで構成できます。
注:
SharePoint ファーム ソリューションはブランド化に関して、NCSS や SharePoint アドインよりも潜在的に強力ですが、SharePoint Online では使用できません。
"テンプレートに似た" 拡張機能: 共同作業による分析とビジネス危機の解決のために、SharePoint の危機管理拡張機能を作成する必要があるとします。 拡張機能には、いくつかのカスタム リストの種類、コードなしワークフロー、およびその他の SharePoint コンポーネントが含まれており、すべてがカスタム WebTemplate に組み合わされています。 拡張機能を NCSS としてパッケージ化してデプロイするとします。 ソリューションの機能がアクティブ化された後、ユーザーは危機が発生するたびに SharePoint Web サイトの危機管理サブ Web を作成できます。 Web サイトには、危機に固有のデータを設定できます。 一方、まったく同じ SharePoint コンポーネントのセットを使用して、SharePoint アドインと同じ拡張機能を実装できます。 アドインがチーム サイトにインストールされると、サブ Web ("アドイン Web" と呼ばれます) がすぐに作成されます。 ここでも、ユーザーは Web サイトに関連するデータを設定します。
ここで、2 つ目のクライシスが発生すると、何が起こるでしょう。 拡張機能を NCSS として実装した場合、ユーザーがカスタム WebTemplate から別のサブ Web を作成することはほとんどありません。 しかし、拡張機能を SharePoint アドイン として実装した場合、ユーザーにはある問題が発生します。 それは、親 Web サイトにアドインの 2 番目のインスタンスをインストールできないということです。 ホスト Web にインストールできるアドインのインスタンスは 1 つだけです。 最善の対処方法は、親 Web サイトのサブサイトを作成し、それをアドインの別のインタンスをインストールする場所にすることです。 アドインをインストールすると、アドインのコンポーネントに対して新しいアドイン Web (親 Web サイトのサブサブ Web になります) が作成されます。 この比較からわかることは一般的なことで、絶対的な原則というわけではありませんが、「テンプレートタイプ」の特徴 (コンポーネントの再利用可能なコレクションは固有のユース ケースごとに構成する必要がありますが、一般に同じ SharePoint Web サイトには複数のインスタンスが関連付けられています) を持つ SharePoint 拡張機能は、アドイン モデルよりも、NCSS 展開モデルとの方が相性がいいということです。 この例では、可変要素はクライシスですが、インスタンスが地域、日付、その他のさまざまな特性によってインスタンスが変化するテンプレートタイプの SharePoint 拡張機能を想像することは簡単です。
SharePoint アドインの可能性を拡張する方法については、「アドイン イベント ハンドラーを控えめに使用 する」と「 拡張機能を作成するアドイン」を参照してください。
アドイン向けの方法で行う
前述のように、SharePoint サーバーで実行されるカスタム コードは SharePoint アドインでは許可されていません。これは大きな制限 ではありません 。 単に、カスタム ビジネス ロジックがクライアント デバイスに"落とされるか"、またはクラウドに"アップされるか"というだけです。 どちらの場合も、 SharePoint REST/OData サービス を使用して、SharePoint サイト、リスト、およびその他のデータにアクセスできます。 また、SharePoint JavaScript、Silverlight、または .NET Framework クライアント オブジェクト モデルを介して SharePoint データにリモートでアクセスすることもできます。 最後に、Windows Phone では、SharePointWindows Phone オブジェクト モデルを使用して SharePoint にアクセスできます。 SharePoint のさまざまな API セットの詳細については、「SharePoint で 適切な API セットを選択する」を参照してください。
同様に、SharePoint アドインの機能には、サイト コレクション、Web アプリケーション、またはファームのスコープを含めることができません。 しかし、ユーザー インターフェイス (UI) の一部の要素および機能をあきらめる必要はありません。 これは、コンポーネントの実装が SharePoint からクライアントまたはリモート Web アプリケーションまたはリモート データベースに移動することを意味します。
次の表に、SharePoint アドインに展開できない SharePoint コンポーネントを示します。また、同じ機能を使用するための「アドイン向けの方法」を説明します。
必要な機能 | 使用する方法 |
---|---|
カスタム Web パーツ |
SharePoint アドインには、カスタム Web パーツを含むリモート ページを含めることができます。 また、リモート Web アプリケーションからページを SharePoint サイト ページのアドイン パーツに公開することもできます。 リモート ページには、基本的に Web パーツと同じ UI コントロールと機能を使用できます。 詳細については、「アドイン パーツを作成して SharePoint アドインと共にインストールする」を参照してください。 |
イベント レシーバーと機能レシーバー | SharePoint アドインには、機能的に同等のリモート イベント ハンドラーを含めることができます。 詳細については、「SharePoint アドインのイベントを処理する」を参照してください。 |
カスタム フィールド (列) 型 | アドインは、既存のフィールド型の 1 つに基づく新しいフィールド (列) を展開することができます。 集計フィールド型と計算フィールド型には、本質的に柔軟性があります。 もう 1 つのオプションは、カスタマイズされたコントロールまたはグリッドを使用して、リモート Web ページでデータを表示することです。 |
SharePoint Service Application Framework 上に構築されたカスタム Web サービス | カスタム Web サービスをリモート サービスとして開発できます。 |
アプリケーション ページ | SharePoint アドインには、アドインがインストールされているすべての Web サイトから利用できるリモート Web ページを含めることができます。 アドインでは、サイト ページ上の組み込みの SharePoint Web パーツを使用することもできます。 |
以下に示す一部の SharePoint コンポーネントは、エンド ユーザーのシナリオで使用されますが、SharePoint アドイン モデルには同等のものはなく、NCSSs に展開することはできません。 これらのコンポーネントが必要な場合は、ファーム ソリューション を使用する必要があります。
- カスタム サイトの定義 しかし、カスタム WebTemplates (機能的にはサイト定義に似ています) は、NCSS と SharePoint アドイン の両方で使用できます。詳細については、「 テンプレートおよび定義を使用する」を参照してください。
- 委任コントロール 詳細については、「 委任コントロール (コントロールのテンプレート化)」を参照してください。
- ユーザー設定のテーマ
- カスタム アクション グループとカスタム アクションの非表示
- ユーザー コントロール (*.ascx ファイル) 実際にこれらを必要とするシナリオはありません。
アドイン イベント ハンドラの使用を最小限に抑える
アドインのインストール、アドインの更新、アドインのアンインストール イベント用のハンドラを作成することで、SharePoint アドイン の制限事項の一部を解決することができます。 このようなハンドラは、SharePoint ファームの外側 (通常はクラウド) の Web サーバー上でホストされる Web サービスです。 ハンドラは SharePoint クライアント オブジェクト モデル、または REST API を使って、ホスト Web のコンポーネントなどの SharePoint コンポーネント上で CRUD 操作を実行します。 理論的には、このようなハンドラを使って、前に説明した「 ブランド化 」と「 テンプレートタイプの拡張機能 」の項目に関する展開時の制限事項を一部解決できます。 ただし、このようなハンドラは、ユース ケースが必要とする機能をお客様に提供する手段が他にない場合の最後の手段としてのみ使うことをお勧めします。 ハンドラを作成するかどうかを決定する場合、以下の項目を検討してください。
- プログラムを使ってホスト Web に展開するには、アドインでホスト Web へのフル コントロール権限が必要かどうか。 このレベルの権限が必要なアドインは、Office ストア 経由では販売できません。
- ホスト Web にコンポーネントを展開すると、独自のドメインを備えたアドイン Web に SharePoint コンポーネントを配置するというセキュリティ上のメリットが損なわれる可能性があります。
- 拡張展開コードは、アドイン Web コンポーネントや NCSS で使用可能な説明型の展開マークアップと比較して、作成とデバッグに多くの工数が必要です。
- アドイン イベント ハンドラの作成では、従う必要がある重大なベスト プラクティスが存在します。 エラーが発生した場合に、実行されたすべての処理を取り消すロールバック ロジックをコードに含める必要があります。 また、実行した処理をインフラストラクチャがすべてロールバックできるように、エラーが発生した SharePoint インフラストラクチャに警告を発行する必要もあります。
- アドインのイベント ハンドラは、SharePoint ホスト型と呼ばれているタイプの SharePoint アドイン を処理できません。
アドイン イベント ハンドラーの詳細については、「SDK ノードで SharePoint アドインでイベントを処理する」を参照してください。ロールバック ロジックの詳細については、「SharePoint アドインで更新イベントのハンドラーを作成する」の「ハンドラーへのロールバック ロジックの追加」セクションを参照してください。後者のトピックはアドイン更新イベントのコンテキストで記述されますが、基本的な原則はすべてのアドイン イベント ハンドラーに適用されます。
拡張機能を作成するアドイン
SharePoint クライアント オブジェクト モデルまたはその REST API を使用して SharePoint アドインのコンポーネント展開の問題を解決するもう 1 つの方法は、アドイン イベント ハンドラーではなく、アドイン自体に CRUD コードを含める方法です。 その後、アドインは、カスタム拡張機能の種類のファクトリの一種になります。 たとえば、SharePoint ホスト型アドインでは、SharePointJavaScript オブジェクト モデルを使用して、ホスト Web またはテナントまたは Web アプリケーションの他の場所でデプロイやその他の CRUD 操作を実行できます。 別の例については、「SharePoint でのサイト プロビジョニング手法とリモート プロビジョニング」の「リモート プロビジョニングの概要」セクションを参照してください。このセクションでは、プロバイダーホスト型 SharePoint アドインを使用して、SharePoint のインザボックス サブ Web プロビジョニングと同様にサブ Web プロビジョニングを提供する方法について説明します。 ただし、ホイールの再発明が多いため、ファクトリ SharePoint アドインを作成する際に多くの作業が行われます。 また、この種のアドインは、ホスト Web のフル コントロールを必要とするため、Office ストアを通じて販売することはできません。