SharePoint 2010 開発の概要

概要:  Microsoft SharePoint 2010 でのアプリケーション開発は、Microsoft ASP.NET などの他の開発プラットフォームでの作業とは根本的に異なります。ここでは、その違いについて学習します。開発者が利用できる機会と、SharePoint 開発プロジェクトで作成できるさまざまなテンプレートおよびコンポーネントについて説明し、さらに、SharePoint 2010 環境をカスタマイズおよび拡張する際に使用できる一般的な SharePoint プロジェクトの概要を示します。

最終更新日: 2015年3月9日

適用対象: Business Connectivity Services | Open XML | SharePoint Designer 2010 | SharePoint Foundation 2010 | SharePoint Online | SharePoint Server 2010 | Visual Studio

この記事の内容
開発プラットフォームとしての SharePoint 2010
SharePoint 開発の構成要素
SharePoint 2010 プロジェクトを開発する
まとめ
SharePoint 2010 に関するその他の技術情報
著者について

提供元:  Ted Pattison (英語) (SharePoint MVP)、Critical Path Training (英語) | 著者について

目次

  • 開発プラットフォームとしての SharePoint 2010

  • SharePoint 開発の構成要素

  • SharePoint 2010 プロジェクトを開発する

  • まとめ

  • SharePoint 2010 に関するその他の技術情報

  • 著者について

開発プラットフォームとしての SharePoint 2010

この数年間で、ソフトウェア業界への Microsoft SharePoint の導入が急速に進んでいます。SharePoint テクノロジーを採用する企業や組織の増加に伴い、SharePoint 環境を対象としたソフトウェア開発プロジェクトの数も大幅に増えています。この業界は今、多くのプロの開発者が、Microsoft ASP.NET、Lotus Notes、Enterprise JavaBeans、IBM WebSphere などの開発プラットフォームから Microsoft SharePoint 2010 に移行しているのを目の当たりにしているのです。

経験豊かな開発者が初めて SharePoint 2010 で開発を開始するとき、よく SharePoint アプリケーションの作成方法をたずねてきます。この質問に対する「作成しません」という答えは、開発者の意表を突くものでしょう。SharePoint 開発者はアプリケーションを作成しないのです。Microsoft SharePoint Foundation 2010 には開発対象のアプリケーションが既に用意されています。また、ほとんどの場合、SharePoint Foundation は、完全に機能する Web サイトの開始点も提供します。重要なのは、SharePoint 開発者はアプリケーションを作成せずに、基盤となるプラットフォームによって作成されたアプリケーションおよび Web サイトを拡張するという点です。

SharePoint ファーム

SharePoint 2010 は、必ず "ファーム" の概念に基づいて展開されます。つまり、SharePoint ファームでは 1 台以上のサーバー コンピューターが連携し、SharePoint サイトを提供して、クライアントに機能を提供します。開発環境の場合、SharePoint 2010 ファームを設定するには、必要なものすべてを、単一サーバーでインストールおよび構成します。運用シナリオでは、SharePoint ファームには、10 数台のサーバー コンピューターが含まれている場合があります。

SharePoint 2010 には、複数のさまざまな製品が関連付けられています。たとえば、あるファームでは SharePoint Foundation 2010 が実行され、別のファームは SharePoint Server 2010 が実行されていることがあります。また、SharePoint Server 2010 には、Standard Edition、Enterprise Edition など、複数のエディションが存在します。新しい SharePoint 開発プロジェクトを作成するときは、対象とするファームの種類を推測する必要があります。たとえば、SharePoint 発行機能は SharePoint Server 2010 のすべてのエディションに含まれますが、SharePoint Foundation には含まれません。SharePoint 発行機能に基づいた開発プロジェクトを作成した場合、そのプロジェクトは、SharePoint Foundation のみが実行されている SharePoint 2010 ファームには展開できません。

展開および SharePoint ソリューション パッケージ

SharePoint 2010 で開発を行う場合、"ソリューション パッケージ" を使用して、開発プロセスをパッケージ化および展開する必要があります。物理レベルでは、ソリューション パッケージは開発プロセスで作成された一連のファイルで、1 つの CAB ファイルに圧縮されています。ソリューション パッケージのファイル名の拡張子は .wsp です。各開発プロセスを 1 つの自己完結型ソリューション パッケージ ファイルとしてパッケージ化および配布することで、運用ファームでのコードの展開と更新が行いやすくなり、エラー数も減るので、この戦略は重要です。

ソリューション パッケージは、Microsoft Office SharePoint Server 2007 および Windows SharePoint Services 3.0 で導入されました。ただし、この製品では、ソリューション パッケージはファーム ソリューションとしてのみ展開できました。ファーム ソリューションは、ファームレベルで展開されます。SharePoint 2010 では、Microsoft Office SharePoint Server 2007 および Windows SharePoint Services 3.0 と同様、引き続きファーム ソリューションとしてソリューション パッケージを展開できます。ただし、この SharePoint 2010 には新しい展開オプションが導入され、ソリューション パッケージを "サンドボックス ソリューション" として展開することもできます。ソリューション パッケージをサンドボックス ソリューションとして展開すると、展開の範囲がファーム レベルから単一サイト コレクション レベルに絞り込まれます。また、サンドボックス ソリューションの機能には制限もいくつかあります。

Visual Studio 2010 の SharePoint 開発者用ツール

Microsoft Visual Studio 2010 は、SharePoint 開発の進化における重要なマイルストーンです。これは、Visual Studio 2010 には、Visual Studio 2010 の SharePoint 開発者ツールと呼ばれる新しいツール セットが含まれているからです。この統合ツール セットにより、面倒な作業を自動化し、Office SharePoint Server 2007 および Windows SharePoint Services 3.0 での開発では気にしなければならなかった詳細の多くを隠すことができるので、SharePoint 2010 での開発をより高速かつ迅速に行うことができます。

たとえば、Visual Studio 2010 の SharePoint 開発者ツールで作成する Visual Studio 2010 プロジェクトは、"SharePoint プロジェクト" と呼ばれる特別な種類のプロジェクトです。この SharePoint プロジェクトはすべて、その出力をソリューション パッケージとして生成する組み込みサポートによって作成されます。また、Visual Studio 2010 の SharePoint 開発者ツールによって便利なコマンドが Visual Studio 2010 環境に組み込まれ、テストおよびデバッグ フェーズ中に、SharePoint プロジェクトに関連付けられているソリューション パッケージを簡単に展開したり取り消したりできます。

Visual Studio 2010 の SharePoint 開発者ツールを使用する前に、開発者用ワークステーションが適切に構成されていることを確認します。特に、開発ワークステーションは、SharePoint Foundation または SharePoint Server 2010 が実行されている単一サーバー ファームとして構築しなければなりません。重要なのは、Visual Studio 2010 の SharePoint 開発者ツールは、SharePoint 2010 バージョンがインストールされていないワークステーションでは正しく動作しないという点です。Visual Studio 2010 の SharePoint 開発者ツールは、SharePoint 2010 ファーム内でフロントエンド Web サーバーとして動作するコンピューター上で動作するように設計されているからです。また、便利なコマンドの中には、展開コマンドのように、開発環境が単一サーバー ファームの場合にしか機能しないものもあります。

SharePoint 開発の構成要素

SharePoint ソリューションではさまざまな種類のコンポーネントを多数作成できますが、その中でも最も一般的なのが "フィーチャー" です。SharePoint フィーチャーは、"フィーチャーのアクティブ化" と呼ばれるプロセスによって要素をターゲット Web サイトまたはサイト コレクションに追加するメカニズムを提供します。サイトに追加できる要素の種類には、メニュー コマンド、リンク コマンド、ページ テンプレート、ページ インスタンス、リスト定義、リスト インスタンス、イベント ハンドラー、ワークフローなどがあります。

すべてのフィーチャーにアクティブ化の範囲が指定され、これにより、フィーチャーをアクティブおよび非アクティブにできるコンテキストが定義されます。たとえば、Web がアクティブ化の範囲として設定されている場合は、Web サイトのコンテキスト内でフィーチャーをアクティブおよび非アクティブにできることを意味します。アクティブ化の範囲が Site のフィーチャーを作成すると、そのフィーチャー定義は、サイト コレクションの範囲内でアクティブおよび非アクティブになります。他に WebApplication 範囲と Farm 範囲の 2 つを、フィーチャー定義のアクティブ化の範囲として使用できます。

カスタム フィーチャーを定義する場合は、オプションで宣言型要素およびフィーチャー レシーバーを追加できます。宣言型要素を使用すると、フィーチャーのアクティブ化時に要素をサイトに追加できます。フィーチャー レシーバーは、カスタム コードを備えたイベント ハンドラーが含まれるクラスです。このイベント ハンドラーは、フィーチャーがアクティブおよび非アクティブになったときに自動的に実行されます。

宣言型要素を使用して要素を SharePoint サイトに追加する

宣言型要素は、XML 要素定義を、要素マニフェストと呼ばれる特別なファイルに追加することで作成されます。Visual Studio 2010 の SharePoint 開発者ツールは、SharePoint プロジェクト内で要素マニフェストを作成し、そのマニフェストをフィーチャーに裏側で自動的に関連付ける際に大きな役割を果たします。また、Visual Studio 2010 の SharePoint 開発者ツールには、Module、ListInstance、ContentType、ListTemplate などの宣言型要素の種類に対して XML 定義を作成する SharePoint プロジェクト アイテム テンプレートも複数用意されています。CustomAction、Field、FeatureSiteTemplateAssociation など、宣言型要素の種類の中には、Visual Studio 2010 の SharePoint 開発者ツールでは直接サポートされていないものもありますが、これは大きな問題ではありません。[空の要素] という SharePoint プロジェクト アイテムの種類に基づいてプロジェクト アイテムを作成し、手動で XML 定義を追加できるからです。表 1 は、最もよく使用される宣言型要素の種類と、どの要素の種類が SharePoint プロジェクト アイテムの種類によって直接サポートされているかを示しています。

表 1. 最もよく使用される SharePoint 2010 宣言型要素の種類

要素の種類

説明

ツール サポート

PropertyBag

"名前-値" プロパティをフィーチャーに追加するときに使用。

いいえ

ListInstance

リスト インスタンスを作成するときに使用。

はい

CustomActionGroup

リンクに対して新しいセクションを作成するときに使用。

いいえ

CustomAction

新しいリンクまたはメニュー コマンドを作成するときに使用。

いいえ

HideCustomAction

組み込み/カスタム リンクまたはメニュー コマンドを非表示にするときに使用。

いいえ

Module

テンプレート ファイルからファイルを準備するときに使用。

はい

Field

サイト列を作成するときに使用。

いいえ

ContentType

コンテンツ タイプを作成するときに使用。

はい

ContentTypeBinding

コンテンツ タイプをリストに追加するときに使用。

いいえ

ListTemplate

カスタム リストの種類を作成するときに使用。

はい

Control

委任コントロールを作成するときに使用。

いいえ

Workflow

ワークフロー テンプレートを作成するときに使用。

はい

WorkflowActions

宣言型ワークフローを作成するときに使用。

いいえ

WorkflowAssociation

ワークフロー テンプレートをリストに関連付けるときに使用。

はい

FeatureSiteTemplateAssociation

フィーチャーをサイト定義に関連付けるときに使用。

いいえ

テンプレート ファイルおよび SharePoint ルート ディレクトリ

ファーム ソリューションとして展開される SharePoint プロジェクトの開発は、サンドボックス ソリューションとしての展開をサポートする必要がある SharePoint プロジェクトを開発するよりも柔軟性に優れています。特に、さまざまな種類のテンプレート ファイルを、Web サーバー上の "SharePoint ルート ディレクトリ" と呼ばれる特別なディレクトリ (C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14) に展開できます。

Visual Studio 2010 の SharePoint 開発者ツールには、アプリケーション ページ、ユーザー コントロールなど、SharePoint プロジェクト アイテム テンプレートがいくつか用意されています。このテンプレートは、SharePoint ルート ディレクトリ内の適切な場所へのファイルの展開を詳細に処理します。また、Visual Studio 2010 の SharePoint 開発者ツールを使用して、マップされたフォルダーを作成することもできます。これにより、すべての種類のテンプレート ファイルを SharePoint ルート ディレクトリ内の任意の場所に展開できます。次の表では、SharePoint ルート ディレクトリ内のよく使用される展開場所と、その場所に展開されるテンプレート ファイルの種類を示しています。

表 2. SharePoint ルート ディレクトリ内の展開場所

SharePoint ルートに対する相対パス

テンプレート ファイルの種類

/ISAPI

Web サービス (.svc, .ashx, .asmx)

/Resources

リソース ファイル (.resx)

/TEMPLATE/ADMIN

サーバーの全体管理でのみ使用されるアプリケーション ページ

/TEMPLATE/CONTROLTEMPLATES

ASP.NET ユーザー コントロール (.ascx)

/TEMPLATE/FEATURES

フィーチャー定義ファイル (.xml)

/TEMPLATE/IMAGES

画像 (.gif, .jpg、および .png)

/TEMPLATE/LAYOUTS

アプリケーション ページ (.aspx)

/TEMPLATE/LAYOUTS/1033/STYLES

カスケード スタイル シート (CSS) ファイル (.css)

/TEMPLATE/LAYOUTS/ClientBin

Microsoft Silverlight コンポーネント (.xap)

/TEMPLATE/SiteTemplates

サイト定義ファイル (onet.xml)

/TEMPLATE/XML

ユーザー設定フィールド型定義ファイル (fdltype*.xml)

SharePoint 2010 サイト テンプレート

SharePoint 2010 での開発では、通常、完全に機能する Web サイトが開始点となります。したがって、この開発は ASP.NET 開発とは異なります。たとえば、ある SharePoint プロジェクトについては、"空のサイト" と呼ばれる最小のサイト テンプレートから作成したサイトを使用して開始します。このアプローチでは、ページ、リスト、およびドキュメント ライブラリを追加してカスタム ビジネス ソリューションを構築します。つまり、最も汎用的な開始点が提供されます。

グループ作業ソリューションを構築するときは、"チーム サイト" から開始することを検討します。これは一般的なグループ作業シナリオで使用されるリストおよびドキュメント ライブラリを使って自動作成されているからです。社外向け Web サイトを作成するときは、"発行ポータル" を使用することを検討します。これは組み込みの承認プロセスを備えた構造化された発行スキームの他に、ブランド化およびブラウザーベースのコンテンツ作成を自動的にサポートします。

重要なのは、SharePoint ソリューションを設計および開発する場合は必ず、SharePoint Foundation および SharePoint Server 2010 に用意されているサイト テンプレートについて把握する必要があるという点です。SharePoint サイトに要素や機能を追加する SharePoint プロジェクトの開発を開始するときは、そのプロジェクトがサポートするサイト テンプレートに関する前提事項を文書化してください。表 3 は、最もよく使用される SharePoint 2010 サイト テンプレートと、関連付けられている SharePoint 2010 のバージョンを示しています。

表 3. よく使用される SharePoint 2010 サイト テンプレート

サイト テンプレート

バージョン

チーム サイト

SharePoint Foundation 2010

空のサイト

SharePoint Foundation 2010

ドキュメント ワークスペース

SharePoint Foundation 2010

会議ワークスペース

SharePoint Foundation 2010

ブログ

SharePoint Foundation 2010

グループ ワーク サイト

SharePoint Foundation 2010

発行ポータル

SharePoint Server 2010 Enterprise

個人用設定サイト (個人用サイト)

SharePoint Server 2010 Standard

個人用サイトのホスト

SharePoint Server 2010 Standard (サーバーの全体管理で設定するまで使用できません)

エンタープライズ Wiki

SharePoint Server 2010 Enterprise

ドキュメント センター

SharePoint Server 2010 Standard

レコード センター

SharePoint Server 2010 Standard

基本検索センター

SharePoint Server 2010 Standard

エンタープライズ検索センター

SharePoint Server 2010 Standard

ビジネス インテリジェンス センター

SharePoint Server 2010 Enterprise

SharePoint 2010 プロジェクトを開発する

SharePoint での開発は、通常、SharePointis ファームでサイトをカスタマイズまたは拡張することを目的としています。このようなプロジェクトは、Visual Studio 2010 の SharePoint 開発者ツールを使用して SharePoint プロジェクトとして作成します。ただし、ネットワーク上で SharePoint ファームにアクセスするデスクトップ アプリケーションを開発する場合もあります。一般的に、SharePoint 開発プラットフォームを使用する新しい開発プロジェクトは次のいずれかのカテゴリに分類されます。

  • 一般的なビジネス ソリューション

  • クライアント側アプリケーション

  • サイトレベルの管理アプリケーション

  • ファームレベルの管理アプリケーション

  • 特殊なコンポーネントおよびサービス

SharePoint の一般的なビジネス ソリューション

新しい SharePoint プロジェクトの大部分は、SharePoint ユーザーに直接メリットをもたらし、ユーザーの作業を行いやすくすることを目的としています。このようなプロジェクトは、一般的なビジネス ソリューションと見なされます。このプロジェクトは、通常、フィーチャーによって有効にされたサイト要素と機能を提供します。このフィーチャーは、Web サイトまたはサイト コレクションのレベルでアクティブになっています。一般的なソリューションが作成する共通のサイト要素を次に示します。

  • リスト インスタンス、イベント ハンドラー、およびワークフロー

  • リスト定義、コンテンツ タイプ、サイト列、およびユーザー設定フィールドの型

  • サイト ページ、アプリケーション ページ、およびナビゲーション要素

  • Web パーツおよびユーザー コントロール

  • ブランド化要素 (マスター ページ、CSS ファイル、画像など)

  • ECMAScript (JavaScript、JScript) または Silverlight アプリケーションを使用して記述されたクライアント側コード

SharePoint のクライアント側アプリケーション

SharePoint 2010 には、新しいクライアント モデルと新しい REST ベースの Web サービスが用意されています。この両方により、ネットワーク上で SharePoint サイトにアクセスし、更新することができます。開発者は、この 2 つのリモート API を使用して、ネットワーク上で実行されているデスクトップ アプリケーションから SharePoint サイトにアクセスします。また、この API によって、SharePoint ファームに含まれないサーバーで実行されているサーバー側アプリケーションから、SharePoint サイトにアクセスすることもできます。

クライアント オブジェクト モデルは, .NET Framework 3.5 SP1 以降が実行されている Microsoft .NET Framework アプリケーションを対象としています。REST ベースの Web サービスは、Windows および Windows 以外のオペレーティング システムで実行されているブラウザーを含め、さらに幅広い種類のクライアント アプリケーションにアクセスできるようにします。REST ベースの Web サービスを使用すると、URL を解析して HTTP GET 要求を発行するすべてのアプリケーションから SharePoint サイトにアクセスできるので、さらに範囲がさらに広くなります。

SharePoint のサイトレベルの管理アプリケーション

一般的なビジネス ソリューションは標準的なビジネス ユーザーを対象としていますが、Web サイトの所有者やサイト コレクション管理者に対して機能を提供する SharePoint ソリューションを開発することもよくあります。こうした SharePoint ソリューションでは、古いコンテンツのアーカイブを自動化する、最近使用したコンテンツをバックアップする、ネットワーク上で Web サービスを呼び出してローカル参照リストを更新する、などの機能が提供されます。

サイトレベルの管理アプリケーションを作成する場合、一般的なのは、_layouts ディレクトリから提供されるアプリケーション ページを使用してユーザー インターフェイス コンポーネントを提供する方法です。その後、Web サイト所有者の [サイトの設定] ページにはカスタム リンクが表示され、サイト所有者は、このリンクを使用してアプリケーション ページにアクセスできます。

SharePoint のファームレベルの管理アプリケーション

一般的ではありませんが、SharePoint 開発者が、カスタム ページを追加する SharePoint ソリューションを開発し、SharePoint 2010 のサーバーの全体管理アプリケーションで使用できるファームレベルの管理機能を拡張しなければならないことがあります。このソリューションの目的は、サイト コレクション、Web アプリケーション、およびファーム自体で拡張管理機能を利用できるようにするカスタム ページを、ファーム管理者に対して提供することです。ファームレベルの管理アプリケーションの機能には、サイト コレクション内でアクセス制御リスト (ACL) を監視および管理する、カスタム バックアップ スキームを提供する、現在のファーム内で特別なカスタム コンポーネント (サンドボックス ソリューション 検証機能、信頼できるプロキシ クラスなど) を表示よび登録する、などがあります。

ファームレベルの管理アプリケーションを作成する場合は、_admin ディレクトリから提供される管理ページを使用して、ユーザー インターフェイスを提供することをお勧めします。_admin ディレクトリには、サーバーの全体管理の Web アプリケーションからのみアクセスでき、ファーム内の Web アプリケーションからはアクセスできません。したがって、このディレクトリは、_layouts ディレクトリとは異なります。その後、ファーム管理者のサーバーの全体管理アプリケーションの標準のページにはカスタム リンクが表示され、ファーム管理者は、このリンクを使用してカスタム管理ページにアクセスできます。

SharePoint 開発プラットフォームを使用して特殊なコンポーネントおよびサービスを作成する

これまでに説明した種類の SharePoint ソリューションの他に、SharePoint 開発プラットフォームでは、次の一覧に示す特殊なコンポーネントおよびサービスを、開発者が作成できます。

  • タイマー ジョブ

  • カスタム Windows PowerShell スナップイン

  • カスタム ナビゲーション プロバイダー

  • カスタム クレーム プロバイダー

  • .NET Assembly Connector

  • サンドボックス ソリューション検証機能

  • サンドボックス ソリューションの信頼できるプロキシ

  • Excel Services ユーザー定義関数

  • カスタム Web サービス

  • サービス アプリケーション

注意

Visual Studio 2010 の SharePoint 開発者ツールには、この種類の SharePoint コンポーネントまたはサービスを作成する際に利用できる SharePoint プロジェクト テンプレートまたは SharePoint プロジェクト アイテム テンプレートが用意されていません。したがって、クラスおよび他の種類のソース ファイルをプロジェクトに追加して実装する方法を学習する必要があります。しかし、それでもこのような特殊な SharePoint コンポーネントおよびサービスを開発するときは、SharePoint プロジェクトを作成して Visual Studio 2010 の SharePoint 開発者ツールを使用することをお勧めします。SharePoint プロジェクトを使用する利点は、このようなコンポーネントとサービスを運用環境に展開しなければならないソリューション パッケージ構築処理が自動化される点です。

SharePoint タイマー ジョブ

SharePoint Foundation には、"タイマー ジョブ" と呼ばれる管理コンポーネントを実行するスケジュール エンジンが用意されています。SharePoint Foundation および SharePoint Server 2010 には、ファームの正常性を監視、インデックス構築を目的とした検索可能なコンテンツのクロールなど、継続中の管理タスクを実行する際に必要な組み込みのタイマー ジョブ定義が多数含まれています。SharePoint Foundation を使用すると、サーバーの全体管理から直接スケジュールおよび管理できるカスタム タイマー ジョブ定義を作成できます。タイマー ジョブは、SharePoint が複数のサーバーでコード (すべてのフロントエンド Web サーバーの構成ファイルを編集するコードなど) を実行するメカニズムでもあります。

カスタム Windows PowerShell スナップイン

SharePoint Foundation および SharePoint Server 2010 ファームには、Windows PowerShell コマンドレットの組み込みライブラリが用意されています。このコマンドレットを使用すると、ファーム管理者が Windows PowerShell スクリプトによって管理タスクを自動化できます。カスタム コマンドレットが含まれる Windows PowerShell スナップインを作成して、これを Windows PowerShell スクリプトから呼び出すこともできます。カスタム Windows PowerShell スナップインを作成する利点は、SharePoint ファームの管理ロジックを、Windows PowerShell スクリプトから、C# または Visual Basic で記述されたコンパイル済みコンポーネントに移動して、サーバー側オブジェクト モデルに対してプログラミングを行う点です。

SharePoint のカスタム ナビゲーション プロバイダー

ASP.NET には、SharePoint 2010 で使用されるナビゲーション プロバイダーを記述する際に使用するフレームワークが用意され、トップ ナビゲーション バー、サイド リンク バーなど、一般的なナビゲーション コンポーネントにナビゲーション ノードを提供します。開発者が SharePoint Foundation および SharePoint Server 2010 の標準的なナビゲーション スキームを拡張するには、カスタム ナビゲーション プロバイダーを作成します。たとえば、SharePoint 2010 に含まれるナビゲーションはすべて、サイト コレクションの範囲内でのみ動作しますが、カスタム ナビゲーション プロバイダーを作成すると、サイト コレクションの境界を超えて動作するナビゲーション スキームをユーザーに提供することができます。

カスタム クレーム プロバイダー

SharePoint 2010 には、クレーム ベースのセキュリティをサポートするインフラストラクチャが新しく導入されています。開発者はカスタム クレーム プロバイダーを作成できます。これは、特定のユーザーのファクトを参照し、そのファクトをクレームとしてユーザーのセキュリティ トークンに追加します。また、SharePoint Foundation では、カスタム クレーム プロバイダーによって追加されたカスタム クレームの観点からアクセス制御を構成することで、サイト管理者やリスト所有者が、サイト、リスト、アイテムなどのリソースへのアクセスを構成できます。

.NET Assembly Connector

SharePoint 2010 には、Microsoft Business Connectivity Services (BCS) という名前のインフラストラクチャが含まれます。このインフラストラクチャを使用すると、SharePoint サイトが、データベース サーバー、Web サービスなどのバックエンド システムのデータを使用および更新できます。ADO.NET または標準の Web サービスの呼び出しによって利用できるバックエンド システムについては、カスタム開発を行わずに BCS に統合できます。しかし、バックエンド システムの中には ADO.NET または標準の Web サービスの呼び出しでは利用できないものがあります。.NET Assembly Connector を作成すると、このようなバックエンド システムと BCS を統合できるようになります。さらに, .NET Assembly Connector を開発し、バックエンド システムのデータの読み取りおよび更新を行う BCS 操作にカスタム ロジックを追加することもできます。

SharePoint サンドボックス ソリューション検証機能

SharePoint Foundation には、サンドボックス ソリューション用の新しいインフラストラクチャが用意されています。このインフラストラクチャを使用すると、サイト コレクションの範囲内でソリューション パッケージを展開できます。ソリューション パッケージをサンドボックス ソリューションとして展開する主な利点は、Web サーバー コンピューターを変更する必要がないので、カスタム コードを運用環境に展開するリスクが軽減するという点です。

SharePoint ファーム内でアクティブ化できるサンドボックス ソリューションの種類を制限するには、サンドボックス ソリューション検証機能を作成します。この検証機能は、ファームにインストールして登録する必要があります。登録したサンドボックス ソリューション検証機能は、ユーザーがサンドボックス ソリューションをサイト コレクションの範囲内でアクティブ化しようとするたびに呼び出されます。サンドボックス ソリューション検証機能は、サンドボックス ソリューションの内容を調べて、サンドボックス ソリューションがサンドボックス ソリューション検証機能で定義されたカスタム条件を満たしていない場合はアクティブ化をキャンセルします。

たとえば、社内の開発スタッフによって社内で開発されたサンドボックス ソリューションのみをユーザーがアクティブ化できるようにするとします。この制限を適用するには、会社の一意の公開鍵/秘密鍵ペアで署名されていないアセンブリ DLL が含まれるサンドボックス ソリューションのアクティブ化を禁止するサンドボックス ソリューション検証機能を開発します。

SharePoint サンドボックス ソリューションの信頼できるプロキシ

サンドボックス ソリューション内で実行されるコードの動作に制約があります。たとえば、サンドボックス ソリューション内で実行されるコードは、サーバー側オブジェクト モデルの多くの部分を使用することが禁じられています。さらに、このサンドボックス ソリューション内で実行されるコードは、ホスト サーバーにあるローカル ハード ディスク ドライブのデータにはアクセスできません。また、ネットワーク上でデータベース サーバーおよび Web サービスを呼び出すことも禁じられています。サンドボックス ソリューション内のコードがこの制限を受けないようにするテクニックはいくつかあります。1 つは、SharePoint クライアント モデルを使用して、サンドボックス ソリューションのサーバー側コードに含まれるオブジェクト モデルの部分にアクセスすることです。

また、信頼できるプロキシを開発して、サンドボックス ソリューションのコードから、この信頼できるプロキシを呼び出すというテクニックもあります。信頼できるプロキシはファーム ソリューション内に展開されるクラスです。また、現在のファーム内で登録されます。核となるのは、サンドボックス ソリューション内のコードは、信頼できるプロキシを呼び出すことでサンドボックスの制約を克服できるという考えです。信頼できるプロキシは完全信頼で実行され、サンドボックス ソリューションに代わって、ネットワーク上でサーバー側オブジェクト モデルのすべての部分を呼び出して、その部分にアクセスすることができます。

Excel Services ユーザー定義関数

Excel Services は、Microsoft SharePoint Server 2010 (エンタープライズ クライアント アクセス ライセンス付き) に含まれる SharePoint 2010 サービス アプリケーションです。このサービス アプリケーションを使用すると、ユーザーが Microsoft Excel ワークシートを SharePoint ドキュメント ライブラリに発行し、これをサーバー側プロセスに読み込んで、計算を実行したりワークシートを Web ページとしてレンダリングしたりできます。Excel ワークシート内でのカスタム計算はサーバー側シナリオで処理されるので、開発者は、この計算を行うときに使用するメソッドを持つクラスを作成できます。この種類のメソッドはユーザー定義関数と呼ばれます。Excel Services ユーザー定義関数の開発が必要なのは、通常、Excel の数式を使用して Excel Services でネイティブに実行することが難しい、または実行できない計算を、ワークシートで行う必要がある場合です。このような計算には、文字列の解析、ネットワーク上での Web サービスの呼び出しによる参照などがあります。

カスタム Web サービス

SharePoint 2010 では、リモート クライアントがサイト相対パスでアクセスできる .svc ファイルを使用して、Windows Communication Foundation (WCF) Web サービスを開発および展開できるようになりました。サイト相対パスでアクセスする利点は、Web サービスに含まれるコードが、サーバー側オブジェクト モデルを使用して現在の Web サイトとサイト コレクションにアクセスできる点です。このような Web サービスは、SOAP ベースまたは REST ベースのどちらかの Web サービスとして開発し、SharePoint サイトがネットワーク上でさまざまなクライアント アプリケーションにアクセスできるようにします。

SharePoint サービス アプリケーション インフラストラクチャ

SharePoint Foundation には、ファーム全体のすべてのサイトでリソースを効率的に共有できるように設計されたサービス アプリケーション インフラストラクチャが導入されています。また、ファーム境界を越えたリソース共有の基盤も提供します。SharePoint Server 2010 に含まれる機能およびサービスの多くは、BCS、SharePoint Search Service、Manage Metadata Service、Excel Services、Microsoft SharePoint Server 2010 の PerformancePoint Services などのサービス アプリケーションとして実装されています。ただし、サービス アプリケーション アーキテクチャは拡張できるように設計されているので、豊富な知識を持つ意欲的な開発者であれば、どの SharePoint 2010 ファームにも展開できるカスタム サービス アプリケーションを開発することができます。

サービス アプリケーション アーキテクチャの重要な利点は、サービス アプリケーションを構成可能なコンポーネントとして扱える点です。インストールと準備が完了したサービス アプリケーションは、複数の展開シナリオをサポートするように構成および再構成できます。単純なファームでは、フロントエンド Web サーバーで実行されるようにサービス アプリケーションのインスタンスを構成できます。より複雑なファームでは、個別のアプリケーション サーバーまたはアプリケーション サーバーのファームで実行されるようにサービス アプリケーションを構成できます。

サービス アプリケーションの開発は重要な作業で、この記事で説明した他の種類のコンポーネントやサービスに比べて、かなり大きな投資が必要です。たとえば、現在の展開構成に関するクエリを構成データベースに対して実行するようにサービス アプリケーションを記述し、これに応じてアプリケーションの動作を調整します。サービス アプリケーションがネットワークを介して専用アプリケーション サーバーで実行されている場合、このサービス アプリケーションはフロントエンド Web サーバー上のプロキシ コンポーネントに依存します。このコンポーネントも、サービス アプリケーションを構築する開発者が実装する必要があります。

サービス アプリケーション プロキシ コンポーネントは、サービス アプリケーションと一緒に展開しなければなりません。これがサービス アプリケーションの実装を難しくしています。ただし、ネットワーク上のどこにサービス アプリケーション インスタンスが存在するかを検出するコードを取り除くことで価値をもたらすのは、サービス アプリケーション プロキシ アーキテクチャです。また、サービス アプリケーション プロキシ コンポーネントも、すべての WCF コードをカプセル化して価値を提供します。このコードは、サービス アプリケーションを実行しているターゲット アプリケーション サーバーに対する Web サーバーからの Web サービス呼び出しを準備して実行する際に使用します。

まとめ

この記事では、SharePoint 2010 開発プラットフォームの概要を説明しています。SharePoint 開発プロジェクトをソリューション パッケージでパッケージ化して配布する必要があることを、新しい SharePoint 開発者が理解することが重要です。ソリューション パッケージは、ファーム ソリューションまたはサンドボックス ソリューションのどちらかとして展開できます。ファーム ソリューションはファームレベルで展開され、ファイルを Web サーバー コンピューターに追加する必要があります。サンドボックス ソリューションはサイト コレクションの範囲で展開され、Web サーバー コンピューターに変更を加える必要はありません。

Visual Studio 2010 の SharePoint 開発者ツールには、SharePoint プロジェクトを作成するプロジェクト テンプレートが用意されています。SharePoint プロジェクトにより、ローカル SharePoint ファームでのソリューション パッケージの構築およびテストのプロセスが自動化されます。したがって、この SharePoint プロジェクトは、SharePoint 開発者にとっては大きな飛躍になっています。SharePoint 開発の初心者は、まず、一般的なビジネス ソリューションを作成する必要がありますが、SharePoint 開発プラットフォームには、SharePoint 上級開発者が特殊なコンポーネントおよびサービスを作成する機会も多数用意されています。

SharePoint 2010 に関するその他の技術情報

SharePoint 2010 開発の詳細については、以下のリソースを参照してください。

著者について

MVP コントリビューターTed Pattison 氏は、SharePoint テクノロジに関する教育を専門に行う会社 Critical Path Training (英語) の共同創設者であり、執筆者、インストラクターとしても活動しています。Microsoft SharePoint MVP (Most Valuable Professional) 受賞者である Ted 氏は、Microsoft の Developer Platform Evangelism グループとの共同作業を精力的に行っており、製品ライフ サイクルの早期、しかも alpha 版や beta 版の段階から、開発者向けの SharePoint トレーニング資料の研究と執筆に携わっています。Ted 氏は、『Inside Microsoft SharePoint 2010 (英語)』の共同著者でもあります。