SharePoint アドインの設計オプションについて検討する 3 つの方法
前提条件: 最初に記事「SharePoint アドイン」をよく読んでください。
この記事では、3 とおりの方法で SharePoint アドインのアーキテクチャの選択肢について考えます。 最初に、設計の選択肢の最も重要なカテゴリについて説明します。2 つ目に、アプリケーションの階層という観点でアドインのアーキテクチャを確認します。3 つ目に、設計上の決定をする際に考慮する必要がある一連の要素を示します。
SharePoint 拡張を、SharePoint アドイン、従来の SharePoint ファーム ソリューション、またはセキュリティで保護されたソリューションのいずれにするかを最初に決定します。 SharePoint オブジェクト モデルの一部、特に SharePoint の管理およびセキュリティのカスタマイズと関連するモデルは、クライアントからアクセスできません。 それらには、SharePoint サーバー上で実行されるカスタム コードからのみアクセスできますが、SharePoint アドインではカスタム サーバー側コードは許可されません。 (豊富なクライアント オブジェクト モデルと REST/OData サービスを使用することで、SharePoint アドインでほとんどのエンドユーザー向け SharePoint 拡張を行うことができます)。
従来のソリューションとアドインのいずれにするかを決定する方法の詳細については、「SharePoint アドインと SharePoint ソリューションの比較」を参照してください。 また、「SharePoint で適切な API セットを選択する」もこの決定に役立ちます。
SharePoint アドインの設計における重要な要素
選択肢の 3 つの主要なカテゴリが、SharePoint アドインを設計するときに必要になります。 通常、アプリケーションの設計にはトレードオフが伴います。あるカテゴリでの選択によって、別のカテゴリでの選択肢が制限される場合があります。 考えられる選択肢の組み合わせすべてが実現可能なわけではありません。
ホスティング: SharePoint アドインは、通常、展開方法とホスティング方法に基づいて 2 つの主要なタイプに分けることができます。
プロバイダー ホスト型アドインでは、開発者が提供するサーバーまたはクラウド アカウント上の SharePoint の外部で、基本的なデータ ストレージとビジネス ロジックが開発者によって展開およびホストされています。 アドインを購入する異なる顧客のアカウント間で分離する責任は、開発者が負います。 このようなアドインには、SharePoint コンポーネントを含めることもできます。 これらは、顧客の SharePoint ファームでホストされています。 このタイプのアドインでは、設計の選択肢の他のカテゴリにおいて最も高い柔軟性が確保されます。 また、外部のデータ、ロジック、および Web ユーザー インターフェイス (UI) に Microsoft 以外のプラットフォームを使用することもできます。 (プロバイダーホスト型アドインのカテゴリ内では、リモート コンポーネントが SharePoint ファームと同じ企業ファイアウォール内にあるアドインと、リモート コンポーネントがそのファイアウォールの外部にあるアドインを区別する必要もあります。これら 2 つのシナリオの承認システムは異なります。これにより、SharePoint データへのアクセスに使用するプログラミング言語に違いがあります)。
SharePoint でホストされる アドインは、リスト、コンテンツ タイプ、ワークフロー、Web パーツなどの SharePoint コンポーネントで構成されます。 外部コンポーネントは含まれません。 SharePoint アドインに含めることができる SharePoint コンポーネントの種類の詳細については、「 SharePoint のホスト Web、アドイン Web、および SharePoint コンポーネント」を参照してください。
SharePoint アドインのホスティング オプションの詳細については、「SharePoint アドインを開発およびホストするためのパターンを選択する」を参照してください。
接続性: SharePoint は、3 種類のセキュリティで保護されたデータに対する作成/読み取り/更新/削除 (CRUD) アクセスをサポートします。
アドインに含まれる外部 Web アプリケーションは、OAuth プロトコルを使用して SharePoint データにアクセスします。 詳細については、「SharePoint アドインの承認と認証」を参照してください。
JavaScript では、安全なクロスドメイン スクリプティングを可能にする特別な JavaScript ライブラリを使用して、SharePoint アドイン Web 上のデータおよび同じテナント内の他の Web サイト上のデータにアクセスできます。 詳細については、「クロスドメイン ライブラリを使用してアドインから SharePoint のデータにアクセスする」を参照してください。
SharePoint アドインで、Business Connectivity Services (BCS) または Web サービス プロキシ経由で外部データにアクセスすることもできます。 詳細については、「SharePoint の Business Connectivity Services」および「SharePoint で Web プロキシを使用してリモート サービスのクエリを実行する」を参照してください。
SharePoint アドインでのデータの格納とアクセスの詳細については、「SharePoint アドインのデータ ストレージ」、「SharePoint アドインのセキュリティで保護されたデータ アクセスとクライアント オブジェクト モデル」、および「SharePoint の外部データの操作」を参照してください。
Ui: SharePoint で SharePoint アドインを表示するには、少なくともすべてのアドインが完全な Web ページに表示されるという 3 つの方法があります。 必要に応じて、アドインは、アドイン パーツ、およびメニュー項目またはリボン ボタンを介して表示することもできます。 詳細については、「 SharePoint アドインの UX デザイン」を参照してください。
注:
SharePoint アドインは、顧客によって、テナント内の複数のサイト コレクションにインストールされたり、Web サイト単位でインストールされたりします。 前者はテナントをスコープにしたアドインと呼ばれます。テナントをスコープにした選択肢を顧客に提供する場合は、カスタムのリボンのボタンやアドイン パーツを含めることはできません。 詳細については、「SharePoint アドインのテナントと展開スコープ」を参照してください。
アーキテクチャ階層
アドイン アーキテクチャ オプションについて考えるもう 1 つの方法は、アドインに UI、ビジネス ロジック、データ アクセスの 3 つの論理レベルがあると考える方法です。 各レイヤーには複数の実装オプションがあります。ここでも、1 つのレイヤーに対して行われた選択によって、他のレイヤーのオプションが制限されます。 次の表では、アドインのリモート コンポーネントと SharePoint コンポーネントのオプションとその使用方法について説明します。
プロバイダー ホスト型アドインのリモート コンポーネント: 階層ごとのオプション
階層 | オプション | 適用 |
---|---|---|
UI | ASP.NET 形式の ASP.NET ページまたは Azure Web ロールでホストされている MVC アプリケーション。 | ASP.NET 開発スタッフのスキルの活用 |
JavaScript を使用した HTML 5 ページ | リッチなユーザー インターフェイス | |
Microsoft 以外のクラウド サービスでホストされている PHP またはその他の種類の Web ページ | Microsoft 以外のアプリケーションの SharePoint への統合 | |
Windows Phone アプリでの Silverlight | SharePoint データへのモバイル アクセスと、位置情報データおよびプッシュ通知との統合 | |
ビジネス ロジック | クライアント側の JavaScript | UI ロジックと単純なビジネス ロジック。JavaScript クライアント オブジェクト モデル経由の SharePoint データへのアクセス |
Microsoft Azure ワーカー ロール | プロセッサ負荷の高い機能。.NET Framework クライアント オブジェクト モデルを通じた SharePoint データへのアクセス | |
リモート Web サービス | プロセッサ負荷の高い機能。.NET Framework クライアント オブジェクト モデルを通じた SharePoint データへのアクセス | |
データ | SQL Azure | フル機能のリレーショナル データ |
Azure のテーブル ストレージ | アプリケーションの設定およびその他のメタデータ | |
Azure BLOB ストレージ | 大きなファイルのストレージ | |
Microsoft 以外のクラウド サービス | Microsoft 以外のプラットフォームを基盤とする既存のデータ ソースの活用 | |
開発者の独自のサーバー上のデータベース | テナント分離のプロバイダー ホスティングと開発者制御 |
SharePoint コンポーネント: 階層ごとのオプション
階層 | オプション | 適用 |
---|---|---|
UI | アドイン Web ページ上の SharePoint のリストとライブラリのカスタム ビュー | SharePoint の外観と動作との最大限の統合 |
アドイン Web ページ上の Web パーツ (またはオブジェクト> タグ内<) でホストされる Silverlight アプリケーション | 既存の Silverlight 開発経験の活用。豊富なユーザー インターフェイス | |
ビジネス ロジック | SharePoint ワークフロー | ビジネス プロセスの実装 |
SharePoint クロスドメイン ライブラリで補足されるクライアント側の JavaScript | アドイン Web 内の SharePoint データへのアクセス。テナント内の他の Web サイトのデータへのアクセス | |
リモート イベント ハンドラー | 外部でホストされるロジックを使用した SharePoint リストおよびライブラリの CRUD イベントの処理 | |
データ | Collaborative Application Markup Language (CAML)、LINQ、またはいずれかの SharePoint クライアント オブジェクト モデルを使用したクエリによって照会される SharePoint のリストおよびライブラリ | 既存の SharePoint および .NET Framework 開発経験の活用。 |
SharePoint REST/OData Web サービスを通じて照会する SharePoint リストおよびライブラリ | Microsoft 以外のプラットフォームからの SharePoint データへのアクセス。既存の OData クエリ経験の活用 | |
BCS モデル | SharePoint で外部データを SharePoint リストとして表示 |
設計決定時に考慮すべき要素
SharePoint アドイン モデルでは、単純なデシジョン ツリーで対処できないほど多くの設計上の可能性が提供されます。 以下に、SharePoint アドインのアーキテクチャを構築する際に考慮すべき最も重要な要素の一部を示します。
当然ながら、最も重要なのは、顧客が使用できる機能 (ユース ケース) にすることです。 たとえば、ビデオ ファイルを別のビデオ フォーマットに変換するなどの、プロセッサ集約的な機能をアドインに含める場合、そのことが、処理が開発者のサーバーのいずれかまたは Azure ワーカー ロールで実行される、プロバイダー ホスト型アドインを作成する根拠となります。
SharePoint アドインの 1 つの種類であるプロバイダー ホスト型アドインでは、開発者 (または顧客) が SharePoint 以外のコンポーネントをホストし、テナントの分割を実施する必要があるため、これを実行するハードウェアおよび IT スタッフを用意するかどうか (または、対象の顧客がこれを実行するかどうか) を検討しなければなりません。
どのような顧客を対象とするかも非常に重要な考慮事項です。 アドインが社内で使用される (つまり、外部のユーザーがいない)、または単一の顧客によって使用される場合、プロバイダー ホスト型アドインの実装と管理は、外部の顧客がいる、または複数の顧客がアドインを使用する場合に比べ大幅に容易になります。 アドインを一般に販売する予定である場合は、SharePoint Online アカウントを持つ企業または独自の SharePoint ファームを持つ企業、もしくはその両方のいずれを販売対象とするのかも検討する必要があります。
自分自身または開発スタッフの現在のスキルについても考慮する必要があります。 たとえば、自分が経験豊富な ASP.NET 開発者である場合、そのことが、リモート Web アプリケーションを作成し、ASP.NET ページ上に SharePoint リスト データを表示するという方法を選択するポイントとなります。 対照的に、自分が経験豊富な SharePoint 開発者である場合、そのことが、カスタムの SharePoint リストおよびサイト ページを使用し、JavaScript で処理を実行するという方法を選択するポイントとなります。