SharePoint で適切な API セットを選択する

SharePointで提供されるいくつかの API セットについて説明します。これには、サーバー側オブジェクト モデルや、さまざまなクライアント側オブジェクト モデル、REST/OData Web サービスなどが含まれます。

どの API セットを使用するかを決める要素

SharePoint プラットフォームへアクセスするには、いくつもの API から選択できます。 どの API を使用するかは、次の要素によって異なります。

  • アプリケーションの種類。 その可能性としては、SharePoint アドイン、SharePoint ページ上の Web パーツ、クライアント コンピューターまたはクライアント モバイル デバイスで実行されている Silverlight アプリケーション、IFrame によって SharePoint で公開される ASP.NET アプリケーション、SharePoint サイト ページで実行される JavaScript など、相互に排他的なカテゴリではありません。ただし、これらに限定されません。 SharePoint アプリケーション ページ、クライアント コンピューターで実行されている Microsoft .NET Framework アプリケーション、Windows PowerShell スクリプト、および SharePoint サーバーで実行されているタイマー ジョブ。
  • ユーザーの既存のスキル。 SharePointでアプリケーションを作成するには、SharePoint のプログラミングに関する知識はそれほど必要ではありません。 次のプログラミング モデルのいずれかに経験があれば、すぐに SharePoint 開発を開始できます。
    • JavaScript
    • ASP.NET
    • REST/OData
    • .NET Framework
    • Windows Phone
    • Silverlight
    • Windows PowerShell
  • コードが実行されるデバイス。 たとえば、SharePoint ファームのサーバー、クラウド上のサーバーのような外部のサーバー、クライアント コンピューター、モバイル デバイスなどがあります。 このトピックでは、SharePoint に用意されている各種 API セットの概要を説明します。 図 1 は、13 の主な SharePoint 関連アプリケーションをそれぞれ開発するために使用できる API のセットを示します。 多くのアプリケーションでは、使用する API を選択できます。

図 1. 選択された SharePoint 拡張機能の種類と SharePoint の API セット

API セットと SharePoint アプリ タイプのベン図

次の表は、選択された主な SharePoint 拡張プロジェクトの一覧と使用する API のセットについてのガイダンスを提供します。 このトピックの残りのセクションでは、各種 API のセットについて説明します。

開発の目標は... 使用する API は...
SharePoint データに対して、または ASP.NET 外部コンテンツ タイプを使用して SharePoint で実行される外部データに対して、ファイアウォール経由で作成/読み取り/更新/削除 (CRUD) 操作を実行する、Microsoft Business Connectivity Services (BCS) Web アプリケーションを作成する JavaScript クライアント オブジェクト モデル
SharePoint データに対して、または BCS 外部コンテンツ タイプを使用して SharePoint で実行される外部データに対して、SharePoint をファイアウォール経由で呼び出すことなく CRUD 操作を実行する、ASP.NET Web アプリケーションを作成する .NET Framework クライアント オブジェクト モデル、Silverlight クライアント オブジェクト モデル、または REST/OData エンドポイント
BCS 外部コンテンツ タイプを使用して、SharePoint データまたは SharePoint で実行される外部データに対して CRUD 操作を実行する、LAMP Web アプリケーションを作成する REST/OData エンドポイント
SharePoint データに対して CRUD 操作を実行する Windows Phone アプリケーションを作成する モバイル クライアント オブジェクト モデル
Microsoft プッシュ通知サービスを使用して、モバイル デバイスに SharePoint のイベント発生を警告する、Windows Phone アプリケーションを作成する モバイル クライアント オブジェクト モデルおよびサーバー オブジェクト モデル
SharePoint データに対して CRUD 操作を実行する iOS アプリまたは Android アプリを作成する REST/OData エンドポイント
SharePoint データに対して CRUD 操作を実行する .NET Framework アプリケーションを作成する .NET Framework クライアント オブジェクト モデル
SharePoint データに対して CRUD 操作を実行する Silverlight アプリケーションを作成する Silverlight クライアント オブジェクト モデル
SharePoint データに対して CRUD 操作を実行する HTML/JavaScript アプリケーションを作成する JavaScript クライアント オブジェクト モデル
SharePoint で機能する Office アドイン を作成する JavaScript クライアント オブジェクト モデル
カスタム Windows PowerShell コマンドを作成する サーバー オブジェクト モデル
タイマー ジョブを作成する サーバー オブジェクト モデル
全体管理用の拡張機能を作成する サーバー オブジェクト モデル
SharePoint ファーム全体に対して一貫したブランド化を行う サーバー オブジェクト モデル
カスタム Web パーツ、アプリケーション ページ、または ASP.NET ユーザー コントロールを作成する サーバー オブジェクト モデル
重要: 顧客に提供する機能がサイト コレクションの範囲を超えていて SharePoint 管理に向いていない場合は、サーバー オブジェクト モデルを使用する代わりにリモート ASP.NET Web アプリケーションを含む SharePoint アドインを作成することをお勧めします。 この表の最上部の 2 行を参照してください。

サーバー オブジェクト モデル

最大の API セットは、マネージド クラスのサーバー オブジェクト モデルにあります。 SharePoint Foundation 2013 のレベルでは、このオブジェクト モデルには、SharePoint Foundation の基本的なサイトとリスト構造のプログラムによる制御を可能にするクラスとメンバーが含まれています。 これらのクラスのほとんどは 、Microsoft.SharePoint 名前空間にあります。 さらに、ワークフロー、アラート、Web パーツ、基本検索、Microsoft Business Connectivity Services (BCS) など、サーバー オブジェクト モデルを使用して、ほぼすべての SharePoint Foundation コンポーネントを拡張できます。 サーバー オブジェクト モデルには、バックアップ、ファームの正常性と診断、ログ記録、ファームと Web アプリケーションの管理、アップグレード、展開、キャッシュ、Windows PowerShellカスタマイズなど、SharePoint Foundation の管理とセキュリティ システムの拡張を可能にする広範な API も含まれています。

SharePoint のレベルでは、さらに多くのクラスが追加され、エンタープライズ コンテンツ管理 (ECM)、ユーザー プロファイル、分類、高度な検索、および SharePoint のその他の機能のプログラミングができるようになります。

LINQ to Objectsを使用してメモリ内の IEnumerable コレクションに対してクエリを実行できますが、LINQ to SharePoint プロバイダーを使用すると、SharePoint コンテンツ データベース内のリストを直接照会できます。 厳密に言うと、このプロバイダーは、このトピックで説明する他の API セットでは使用できません。ただし、ほとんどの場合、LINQ 構文を使用する方法があります。

SharePoint がインストールされると、組み込みのサーバー側クラスを定義するアセンブリが、各サーバーのグローバル アセンブリ キャッシュにインストールされます。 サーバー オブジェクト モデルに対してプログラミングを行うと、アセンブリは ファーム ソリューション としてグローバル アセンブリ キャッシュにインストールされます。

注:

SharePoint に対する新しいセキュリティで保護されたソリューションの開発は非推奨になり、SharePoint アドインの開発が代わりましたが、セキュリティで保護されたソリューションは引き続き SharePoint のサイト コレクションにインストールできます。 これらのソリューションのアセンブリは、実際に使用されている場合を除いて、サーバー上のフォルダに一時的にインストールされた時点でパッケージに残ります。 詳細については、「 サンドボックス ソリューションのアセンブリが配置されている場所」を参照してください。

サーバー オブジェクト モデルを使用する場合の制限事項

SharePoint アドイン のカスタム ロジックは、常にクライアントかクラウド (または SharePoint ファームの外部にあるサーバー) に配布されます。 これらの配布モデルのすべてにおいて、クライアント オブジェクト モデルまたは REST/OData エンドポイントのどれかを使用する必要があります (SharePoint アドイン内のサーバー オブジェクト モデルは使用できません)。 たとえば、アプリに SharePoint のホストされたページが含まれる場合は、これらのページから、JavaScript クライアント オブジェクト モデルを使用して SharePoint のデータにアクセスできます。 このようなページでは、SharePointSilverlight クライアント オブジェクト モデルを使用している Silverlight アプリケーションを表示することもできます。 SharePoint アドインの詳細については、「SharePoint アドイン のアーキテクチャと開発状況の重要な側面」を参照してください。

マネージ コード用のクライアント オブジェクト モデル

SharePointには, .NET、Silverlight、モバイル というマネージ コード用の 3 つのクライアント オブジェクト モデルがあります。

.NET クライアント オブジェクト モデル

.NET Framework 用の SharePoint オブジェクト モデルは、電話用でない Windows クライアント上で実行される .NET Framework アプリケーションで使用されます。 次は、どれもそのようなクライアントです。

  • ユーザーのコンピューター
  • SharePoint ファームの外部にあるサーバー
  • Microsoft Azure の Web ロールまたは worker ロール

サーバー オブジェクト モデルの主要なサイトやリストのほとんどすべてのクラスには、.NET Framework クライアント オブジェクト モデルに該当するクラスがあります。 さらに、.NET Framework クライアント オブジェクト モデルでは、ECM、分類、ユーザー プロファイル、高度な検索、分析、BCS などの SharePoint の機能を拡張するための API のフル セットも公開されています。

パフォーマンスを向上させるために、.NET Framework クライアント オブジェクト モデルでに対して記述されたコード行は、SharePoint サーバーにバッチで送信され、そこでサーバー側のコードに変換されて実行されます。 クエリされた結果と、すべての変数の新しい状態がクライアントに返されます。 開発者は、バッチが同期的に実行されるか非同期的に実行されるかを決定します。 (同期バッチでは、.NET Framework アプリケーションはサーバーから返された結果を待機してから続行します。非同期バッチでは、クライアント側の処理はすぐに続行され、クライアント ユーザー インターフェイス (UI) は応答性が維持されます)。

クライアント コードで LINQ クエリ構文を使用して、 IEnumerable を実装する SharePoint オブジェクトを含む任意の IEnumerable オブジェクトにクエリを実行できます。 ただし、これを行う場合は、LINQ to SharePoint プロバイダーではなくLINQ to Objectsを使用しているため、後者のドキュメントはクライアント側のコードとは関係ありません。

.NET Framework クライアント オブジェクト モデルのアセンブリは、クライアントにインストールする必要があります。 これらは、 SharePoint クライアント コンポーネントで取得できる再配布パッケージに含まれています。

.NET Framework オブジェクト モデルの使用例については、「SharePoint クライアント ライブラリ コードを使用して基本的な操作を完了する」を参照してください。

注:

.NET Framework アプリケーションで SharePoint REST/OData エンドポイントを使用することもできます。 .NET Framework クライアント オブジェクト モデルと SharePoint REST/OData エンドポイントの比較については、この記事の後半の「REST/OData エンドポイント」セクションを参照してください。

Silverlight クライアント オブジェクト モデル

Silverlight 用の SharePoint オブジェクト モデルは、コンパイルされた .xap ファイルが保存される場所にかかわらず、Silverlight アプリケーションで使用されます。 その場所は、SharePoint Web サイト上のアセット ライブラリ内、クライアント コンピューター上、クラウドのストレージ内、外部サーバー上などの可能性があります。 通常、Silverlight アプリケーションは、 SilverlightWebPart オブジェクトの SharePoint に表示されます。 SharePoint での Silverlight クライアント オブジェクト モデルは, .NET Framework クライアント オブジェクト モデルとほぼ同じで、同じ拡張領域をサポートします。 大きく異なるのは、Silverlight バージョンでは、アプリケーションの UI がアクティブな状態を維持できるように、コマンドのバッチはすべて、サーバーに非同期的に送信されるということです。

Silverlight クライアント オブジェクト モデルのアセンブリは、%ProgramFiles%\Common Files\Microsoft Shared\Web サーバー拡張機能\15\TEMPLATE\LAYOUTS\ClientBin のすべての SharePoint サーバーに保持されます。 これらのアセンブリは、Silverlight アプリケーションが実行されるコンピューターにインストールする必要はありません (インストールする選択肢はあります)。 また、これらをアプリケーションの .xap ファイルにパッケージ化することもできます。

Silverlight .xap ファイルは、SharePoint でホストされているアプリを含む SharePoint アドインに含めることができます。 後者の場合、.xap ファイルはアプリ Web 上のライブラリにデプロイされます。 (アプリ Web の詳細については、「 SharePoint で Web、アドイン Web、および SharePoint コンポーネントをホストする」を参照してください)。これにより、Silverlight アプリケーションは、カスタム サーバー側コードは SharePoint アドインでは許可されないため、アプリにカスタム SharePoint コードを含めるのに便利な方法になります。また、Silverlight 開発者は既存のスキルを使用して、最小限の学習曲線で SharePoint アプリケーションを作成することもできます。

注:

Silverlight アプリケーションで SharePoint REST/OData エンドポイントを使用することもできます。 Silverlight クライアント オブジェクト モデルと SharePoint REST/OData エンドポイントの比較については、この記事の後半の「 REST/OData エンドポイント 」セクションを参照してください。

モバイル オブジェクト モデル

Silverlight クライアント オブジェクト モデルの特別なバージョンは、Windows Phone デバイスで使用できます。 これには、電話アプリが Microsoft プッシュ通知サービスからの通知を登録できるようにする API など、電話にのみ関連するいくつかの追加 API が含まれています。 これは、すべての主要な SharePoint 機能をサポートします。ただし、マネージド コードの他の 2 つのクライアント オブジェクト モデルでサポートされているコア以外の拡張領域のサポートは提供されません。 これらの追加の領域にアクセスするには、モバイル アプリで SharePoint REST/OData エンドポイントを使用します。 この記事の後半の 「REST/OData エンドポイント 」セクションを参照してください。

モバイル オブジェクト モデルのアセンブリは、%ProgramFiles%\Common Files\Microsoft Shared\Web サーバー拡張機能\15\TEMPLATE\LAYOUTS\ClientBin のすべての SharePoint サーバーに保持されます。 これらのアセンブリは、Windows Phone アプリケーションの .xap ファイルにパッケージ化します。

JavaScript オブジェクト モデル

SharePoint では、インライン スクリプトまたは個別の .js ファイルで使用するための JavaScript オブジェクト モデルが利用できます。 JavaScript オブジェクト モデルは、.NET Framework や Silverlight クライアント オブジェクト モデルと同じ機能を備えています。 Silverlight クライアント オブジェクト モデルと同様に、JavaScript オブジェクト モデルは、SharePoint アドインではカスタム サーバー側コードが許可されていないため、アプリにカスタム SharePoint コードを含める場合に便利な方法です。また、Web 開発者は既存の JavaScript スキルを使用して、最小限の学習曲線で SharePoint アプリケーションを作成することもできます。

マネージド コード クライアント オブジェクト モデルと同様に、SharePoint の JavaScript インフラストラクチャはファーム サーバーとバッチ処理で対話します。 これらのバッチは常に非同期的に実行されます。 さらに、以前のバージョンの SharePoint では許可されていない、JavaScript 内のドメイン (ただし、同じ親サイト コレクション内のデータのみ) の SharePoint データにアクセスできるようになりました。 詳細については、「クロスドメイン ライブラリを使用してアドインから SharePoint のデータにアクセスする」を参照してください。 JavaScript Object Notation (JSON) でサーバーからデータが返されます。

JavaScript オブジェクト モデルは、各サーバーの %ProgramFiles%\Common Files\Microsoft Shared\Web サーバー拡張機能\15\TEMPLATE\LAYOUTS にある *.js ファイルのセットで定義されます。

.NET Framework オブジェクト モデルの使用例については、「SharePoint で JavaScript ライブラリ コードを使用して基本的な操作を完了する」を参照してください。

注:

JavaScript アプリケーションで SharePoint REST/OData エンドポイントを使用することもできます。 JavaScript クライアント オブジェクト モデルと SharePoint の REST/OData エンドポイントの比較については、REST /OData エンドポイントに関する次のセクションを参照してください。

REST/OData エンドポイント

JavaScript を使用せず、.NET Frameworkまたは Silverlight プラットフォーム上に構築されていないクライアント テクノロジから SharePoint エンティティにアクセスする必要があるシナリオでは、SharePoint は、OData プロトコルを使用して SharePoint リスト データに対して CRUD 操作を実行する表現状態転送 (REST) Web サービスの実装を提供します。 さらに、クライアント オブジェクト モデルのほとんどすべての API には、対応する REST エンドポイントがあります。 これにより、ユーザーのコードは、標準の HTTP 要求と応答をサポートする技術を使用することで SharePoint 成果物と直接やり取りできます。 SharePoint に組み込まれている REST 機能を使用するには、目的のクライアント オブジェクト モデルの API に対応するエンドポイントに対しての REST 対応の HTTP 要求をコードに記述して作成します。 client.svc Web サービスは HTTP 要求を処理し、Atom 形式か JSON 形式で応答をします。

REST/OData Web サービスの使用の詳細については、「 SharePoint REST 要求で OData クエリ操作を使用する」ノードを参照してください。例については、「 SharePoint REST エンドポイントを使用した基本的な操作の完了」トピックを参照してください。

REST/OData プログラミングとクライアント オブジェクト モデル プログラミングとの比較

状況によっては、特に、Windows 開発経験のない開発者の方は、SharePoint オブジェクト モデルが提供されているアプリケーションであっても、REST エンドポイントを使用した方がいい場合があります。 以下に、Windows プラットフォーム上または JavaScript をサポートするプラットフォーム上で動作するアプリケーションを作成する開発者のために、この 2 つのプログラミング手法における主な機能の比較表を示します。

機能 .NET Framework または Silverlight オブジェクト モデル JavaScript オブジェクト モデル Windows プラットフォームまたは JavaScript から呼び出される REST/OData エンドポイント
オブジェクト指向プログラミング はい はい いいえ
バッチ処理 はい はい はい
条件処理および例外処理用の API はい いいえ いいえ
LINQ 構文の使用 はい いいえ いいえ
異なる SharePoint Web アプリケーションからのリスト データの結合 はい いいえ はい
経験豊富な REST/OData 開発者にとっての習得のしやすさ いいえ いいえ はい
Windows 以外のプログラミングまたは JavaScript プログラミングに対する類似性 いいえ はい はい
リスト アイテム フィールドの厳密な型指定 いいえ ( LINQ と共に使用する場合を除く) 不要 はい (Windows プラットフォームの場合); いいえ (JavaScript の場合)
jQuery、Knockout、およびその他の JavaScript ライブラリの利用 いいえ はい いいえ (Windows プラットフォームの場合); はい (JavaScript の場合)

WCF Data Services フレームワーク

.NET Frameworkまたは Silverlight クライアント アプリケーションで LINQ 構文を使用する場合、SharePoint は LINQ プロバイダーとしてWCF Data Servicesをサポートします。 以前のバージョンの SharePoint Foundation と同様に listdata.svc (リスト データのみ) をターゲットにすることも、OData インターフェイスをサポートする同じ client.svc をターゲットにして、リスト データに加えてすべての SharePoint エンティティにアクセスすることもできます。 詳細については、「Query SharePoint Foundation with ADO.NET Data Services」を参照してください。

図 2 は、さまざまなクライアント API、各種のクライアント アプリケーション、および SharePoint の関係を示しています。 各種 _api URL は、REST エンドポイントのファーム関連の URL です。 詳細については、「SharePoint 15 REST サービスの詳細」のトピックを参照してください。

図 2. SharePoint でのクライアント アプリケーションと API

SharePoint 用アプリのプログラミング モデル

非推奨の API セット

下位互換性のために SharePoint フレームワークでは引き続き 2 つの API セットがサポートされていますが、新しいプロジェクトには使用しないことをお勧めします。 ASP.NET (asmx) Web サービスと、 owssvr.dllファイルへのリモート プロシージャ 呼び出し (RPC) 呼び出しを直接実行 します。

関連項目