SharePoint 2010 の開発構成要素: SharePoint アプリケーションを作成するためのテクノロジ (パート 1/2)

概要:  この 2 部構成のシリーズでは、Microsoft 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 アプリケーションについて
SharePoint の開発と他の開発形態との比較
言語とプラットフォーム
SharePoint アプリケーション開発の用語
SharePoint アプリケーションの種類
SharePoint の機能
SharePoint の開発シナリオ
まとめ

提供元:   Eric White、Microsoft Corporation

目次

  • はじめに

  • SharePoint アプリケーションについて

  • SharePoint の開発と他の開発形態との比較

  • 言語とプラットフォーム

  • SharePoint アプリケーション開発の用語

  • SharePoint アプリケーションの種類

  • SharePoint の機能

  • SharePoint の開発シナリオ

  • まとめ

この記事は、SharePoint の開発構成要素に関する 2 部構成の記事の前半部分です。

はじめに

SharePoint 2010 開発プラットフォームでは、さまざまな言語、フレームワーク、オブジェクト モデル、およびツールを使用して、スケーラブルな分散型の Web アプリケーションを作成できます。SharePoint にまだ慣れていない開発者には、さまざまなシナリオの実装に何を使えばよいかや、何ができるのかさえよくわからないことがあります。この記事では、開発プラットフォームとしての SharePoint の概要を示し、SharePoint の開発を他の種類の開発と比較し、SharePoint の開発構成要素をリストアップします。開発構成要素は、SharePoint アプリケーションの作成に使用するテクノロジです。おそらく、SharePoint 開発者にとっての最大の課題は、構成要素にどのような選択肢があるかを把握し、アーキテクチャ上および設計上の目標を実現する適切なオプションを選択することでしょう。

概観的には、SharePoint の開発を次のような複数の異なる視点から考察することが役に立ちます。

  • SharePoint の開発には他の開発形態とどのような違いがあるか。

    • スケーラブルで疎結合された ASP.NET アプリケーションの開発

    • データベース アプリケーションの開発

    • 従来のリッチ クライアントの開発

  • 開発者はどのような言語とフレームワークを知っておく必要があるか。

  • Open XML などのドキュメント形式がアプリケーションの設計にどのように影響するか。どのような新しいシナリオを使用できるか。

この記事は、SharePoint での開発が既に決定されていることを想定しています。多くの開発者がこのような立場にいます。SharePoint 上に構築されるプロジェクトに割り当てられる開発者もいれば、先を見越してスキルを磨いている開発者もいます。

概観的には、SharePoint 2010 の開発アーキテクチャはいくつものテクノロジの層で構成されています。SQL Server 上で作成され、Windows Server 2008 または Windows Server 2008 R2 上で実行されるのは Microsoft ASP.NET アプリケーションです。次の図は、主要な構成要素が、基礎となるシステムを使用して必要な機能を提供するしくみを示しています。

図 1. 主要な構成要素と基礎となるシステムの図

主要な構成要素とシステムの図

SharePoint 開発者が知っておく必要があるテクノロジの範囲の広さがわかると、少しひるんでしまうかもしれません。私が SharePoint の開発に飛び込んだときは、SharePoint の開発に参加する他の多くの開発者と同じような立場から出発しました。私には精通した分野もあれば、経験の浅い分野もあり、また通り一遍の知識しかない分野もたくさんありました。

私は以下のテクノロジに精通していました。

  • Microsoft Visual C++

  • Microsoft Visual C#

  • Microsoft .NET Framework

  • LINQ

  • SQL

  • XML

  • Open XML

以下のテクノロジについては、知識を深める必要がありました。

  • ASP.NET

  • ASP.NET のテーマとスキン

  • HTML と CSS

  • ECMAScript (JavaScript、JScript)

  • ASP.NET Web パーツ

  • インターネット インフォメーション サービス (IIS)

以下のテクノロジについては、アーキテクチャこそ理解していたものの、開発者として詳細を学習する必要がありました。

  • SharePoint オブジェクト モデル

  • SharePoint マネージ クライアント オブジェクト モデル

  • Microsoft Silverlight と XAML

  • ワークフロー

  • Windows Communication Foundation (WCF) と Web サービス

  • SharePoint REST API

  • Excel Services

  • Windows Identity Foundation (WIF) とクレームベース ID

要するに、私は開発者としての経験は豊富ですが、それでも学習にかなりの時間をかける必要がありました。これらの個々のテクノロジには、ある程度の量の学習が必要です。基本概念は難しくありませんが、熟達レベルまで学習するには長い時間がかかることがあります。

この記事で、私は SharePoint の開発のさまざまな側面に関する考えを述べます。SharePoint の開発の各側面を、これまでの経験と関連付けて、以前に携わった開発環境との類似点や相違点を示します。また、SharePoint の開発についての考え、たとえば SharePoint アプリケーションの構成要素、SharePoint アプリケーションを作成するときのオプション、全体像、および特定のシナリオを実装するときに掘り下げる必要がある部分について述べます。ここでの目標は、SharePoint の開発を効果的に行うために知っておく必要がある主要な側面の概要を示すことです。

SharePoint アプリケーションについて

要約すると、SharePoint Server は以下の機能を備えたシステムです。

  • ポータル。 ファイアウォールの内側と外側の両方の Web サイトです。

  • ソーシャル ネットワーク。 Wiki、ブログ、その他を介したグループ作業です。

  • **コンテンツ管理。**エンタープライズ コンテンツ管理、Web コンテンツ管理、および発行システムです。

  • 検索。 SharePoint 製品とテクノロジには、必要に応じてカスタマイズできる検索エンジンがあります。

  • 可視性と分析。 ビジネス インテリジェンスです。

  • コンポジット。 データ アクセス、ユーザー インターフェイス、プロセス、およびインフラストラクチャが含まれます。

SharePoint 製品とテクノロジは、数人のユーザーにも、大企業の 10 万人の従業員にも適応できるスケーラブルなアーキテクチャを備えています。ファイアウォールの外側にある Web サイトの場合、SharePoint Server 2010 for Internet Sites を使用すると、SharePoint サイトとして容易に管理できるスケーラブルで柔軟性のある Web サイトを構築できます。

ほとんどの場合、SharePoint アプリケーションを作成するときは、中核となる機能に新たな機能を追加します。たとえば、一部の主要なユーザー向けにユーザー インターフェイスを簡素化することがあります。また、建設、法律、製造など、特定の業種向けに複数の Web パーツでカスタム機能を提供することもあります。

場合によっては、SharePoint の機能をプログラム的に利用するスタンドアロン アプリケーションを作成することがあります。SharePoint のユーザー インターフェイスがユーザーに一度も表示されないことや、アプリケーションのインフラストラクチャの一部に SharePoint が使われていることにユーザーが気付かないことさえあります。

カスタマイズには、軽微なものも大規模なものもあります。グループまたはチーム内の何らかのシナリオを実現する 1 つの Web パーツでカスタマイズ全体が済んでしまうことがあります。データ フローとプロセスを備えた複雑な商用アプリケーションを作成することもあります。また、外部のカスタマー リレーションシップ マネジメント (CRM) システムやエンタープライズ リソース プラニング (ERP) システムとの (密接またはゆるやかな) 統合を行うこともあります。

SharePoint と Microsoft Office 2010 システムとの統合は重要です。この統合を利用して、ユーザーが Office クライアント アプリケーションと Web ブラウザーのどちらを使用しているかにかかわらず、アプリケーションの機能が見つけやすく使いやすくなるような形でソリューションを構築できます。SharePoint の開発が Office 2010 クライアントの開発とどこで交差しているかについて、この記事を通して説明します。

SharePoint の開発と他の開発形態との比較

SharePoint の開発を次の 3 つの視点から考察するのは有益なことです。

  • .NET Framework 用のスケーラブルなアプリケーションの作成

  • データベース アプリケーションの作成

  • 従来のリッチ クライアント アプリケーションの作成

SharePoint アプリケーションとスケーラブルな .NET Web アプリケーションの比較

大規模なサーバー ファームで実行される、高度にスケーラブルで疎結合された Web アプリケーションを作成する開発者の観点から、SharePoint の開発を考察できます。こうしたアプリケーションでは、毎分数百から数千のページ ビューを処理する必要があります。

中核部分では、SharePoint は ASP.NET を基盤にしており、IIS 上で実行され、複数のフロントエンド Web サーバーを介して負荷分散を処理できます。SQL Server によって、SharePoint サイトに格納するデータとドキュメントの整合性、スケーラビリティ、堅牢性、およびセキュリティが確保されます。次に、スケーラビリティが SharePoint の開発にどのような形で影響を与えるかについて、いくつかの重要な点を示します。

  • API の設計。 SharePoint のプログラミング インターフェイスのある種の特性を決定づけているのはスケーラビリティです。これらのプログラミング インターフェイスの設計がスケーラビリティを高めていることを理解すると、プログラミング インターフェイスを理解しやすくなります。たとえば、マネージ クライアント オブジェクト モデルは、抽象化が SharePoint Foundation サーバー側オブジェクト モデルとよく似ていますが、サーバーからデータまたはコンテンツを取得するときに明示的に制御できるため、より複雑になっています。

  • ソリューションの設計。 スケーラビリティは、SharePoint 上に構築されるソリューションの設計方法に影響を与えます。サーバー上で不必要な計算やクエリ処理を発生させる設計は避ける必要があります。必要以上にリソースを消費しないアプリケーションを作成する必要があります。たとえば、リスト アイテムのクエリには Collaborative Application Markup Language のコア スキーマ および LINQ to SharePoint を適切に使用します。

  • ベスト プラクティス。 SharePoint の開発のベスト プラクティスとなっているプログラミングの特定の手法と問題の背後には、スケーラビリティがあります。たとえば、SharePoint オブジェクト モデルの特定のオブジェクトには、アンマネージ データが関連付けられています。このため、オブジェクトの破棄に関する規則を理解して従う必要があります。同様に、SharePoint で大きなリストを操作するときに考慮するいくつかのベスト プラクティスがあります。これらの規則に従わないと、サーバー ファームに悪影響を与えることがあります。詳細については、「SharePoint Foundation の推奨事項」および「SharePoint Server での推奨事項」を参照してください。また、「Best Practices: Using Disposable Windows SharePoint Services Objects」および「オブジェクトの破棄」も参照してください。自動化ツールを使用して、コード レビューを改良できます。詳細については、「Automate SharePoint Dispose() code reviews with SPDisposeCheck (英語)」を参照してください。

これらの問題は、高度にスケーラブルな Web アプリケーションを作成している開発者が直面する問題と同じであるか、似かよっています。私は、サイト コレクション内のすべてのドキュメントに対して一定間隔で反復処理を実行し、情報を集めてツリー コントロールで表示するコードを書いた SharePoint 開発者の話を聞きました。これはテスト環境ではうまく機能しました。しかし、現実の世界のドキュメントとリスト アイテムの量では、コード設計がパフォーマンスの問題を引き起こしました。

スケーラビリティは、次の 2 つの異なる形でソリューション設計に影響を与えます。

  • 分散が可能で、複数のフロントエンド Web サーバーに展開したときに正しく機能するアプリケーションを作成する必要があります。たとえば、データをローカルの XML ファイルに格納する Microsoft Business Connectivity Services (BCS) (「Business Connectivity Services」を参照) 用の小さな作成/取得/更新/削除 Web サービスを作成することもできないわけではありません。しかし、負荷分散サーバー ファームに展開すると、このサービスは機能しません。

  • パフォーマンスに優れたアプリケーションを作成する必要があります。たとえば、リストにリスト アイテムがほとんど含まれないことが確実な場合以外は、オブジェクト モデルを使ってリスト アイテムに対する反復処理を実行しないでください。代わりに LINQ to SharePoint を使用して、SharePoint に最適化の機会を与えます。

SharePoint の開発と ASP.NET の開発との類似点および相違点の詳細については、「ASP.NET 開発者のためのグライド パス」を参照してください。また、「SharePoint 2010 Development for ASP.NET Developers (英語)」も参照してください。

SharePoint Foundation の推奨事項」には、パフォーマンスに悪影響を与えかねない落とし穴を回避するために役立つガイダンスがあります。具体的には、オブジェクトの破棄、イベント レシーバー、大きなフォルダーとリスト、およびコード パフォーマンスの最適化に関するガイダンスが含まれています。

SharePoint アプリケーションとデータベース アプリケーションの比較

データベース アプリケーションの開発は、SharePoint の開発を見るのに適した観点の 1 つです。SharePoint サイトのカスタム リストには、データベース テーブルと多くの共通点があります。リスト内の列を、それらの列に関する豊富なメタデータを使って定義できます。さらに、SharePoint リストには事実上、外部キーを定義できるので、関連データが含まれるより興味深いシナリオをモデル化することができます。SharePoint には連鎖削除と制限削除の動作があります。これらのリストをプログラム的または宣言的に作成することも、ユーザーが定義したリストを操作するプログラムを書くこともできます。リストは表示することも非表示にすることもできます。SharePoint のセキュリティ機能を使用すると、アクセスを制限できます。

SQL データベースと SharePoint で共通することの 1 つは、非手続き型の宣言型クエリ言語を使ってデータを取得することです。ただし、SQL を使用する代わりに LINQ to SharePoint または Collaborative Application Markup Language (CAML) を使用します。CAML は XML を使って記述します。

SharePoint はデータベース テクノロジと密接に統合されています。Business Connectivity Services を使用すると、データベース、Web サービス、およびほぼすべてのデータ ソースを利用できます。これらのデータ ソースは、外部コンテンツ タイプとして表されます。

SharePoint のデータ機能の特徴で興味深いのは、トランザクションとしての保証がないことです。たとえば、1 つのテーブルにリスト アイテムを挿入し、別のテーブルでリスト アイテムを更新した場合に、その両方が成功するか、両方が実行されないかのどちらかであることは保証されません。SharePoint は、トランザクション システムを実装するプラットフォームとしての使用を目的としたものではありません。そうしたトランザクション システムは、適切な保証を提供できる外部データベースに実装する必要があります。そうすれば、Business Connectivity Services を使用して、そのデータを SharePoint で表示できます。SharePoint アプリケーションを設計するときは、この特徴を考慮に入れる必要があります。

SharePoint のデータ機能と従来のデータベース開発の重要な違いは、SharePoint リスト (データベース テーブルに相当) が必ずしも長方形ではないことです。SharePoint では、リスト内のリスト アイテム (行に相当) を構成するフィールドがコンテンツ タイプによって定義されます。これはリスト アイテムのスキーマと考えることができます。SharePoint リストには、複数のコンテンツ タイプのリスト アイテムを含めることができます。次の図は、LABOR と MATERIAL の 2 つのコンテンツ タイプのアイテムを含む SharePoint リストを表しています。

図 2. 非長方形の SharePoint リスト

長方形でない SharePoint リスト

このことが、リスト アイテム、およびリスト アイテム内のフィールドを使用するアプリケーションの設計と開発の方法に影響を与えます。長方形データが必要な場合は、1 つのコンテンツ タイプだけを含めることができるようにリストを定義します。非長方形データを有効にした場合、リスト アイテムに対して反復処理を行うときは、コンテンツ タイプをチェックし、それに応じてコードの動作を変更する必要があります。

もう 1 つの興味深い特徴は、内部的な実装の詳細が原因で、LINQ to SharePoint や CAML を使った SharePoint のクエリが、SQL を使ったテーブルのクエリよりもはるかに遅いということです。一部のリストが意図せずに 5 万アイテムや 10 万アイテムにまで拡大し、ユーザーがブラウザーのウィンドウでリストを自由に呼び出せるような設計を作成するのには適しません。SharePoint 2010 には、そのような設計によってサーバー ファームが停止するのを防ぐ調整機能があります。しかし、ユーザー インターフェイスはユーザーの操作に反応しなくなります。大量のアイテムを含むリストを処理する方法はあります。この問題には意図的に対処する必要があります。詳細については、「規模の大きなフォルダーやリストの操作」を参照してください。

SharePoint は SQL Server を基盤にしています。ドキュメント ライブラリと SharePoint リストはデータベースに格納されます。このことは、SharePoint インストール環境のアーキテクチャ図を見るとわかります。実際の SharePoint データベースは、SharePoint 開発者に特に関係があるわけではありません。このデータベースに直接アクセスすることは決してないからです。サイト、リスト、およびドキュメント ライブラリを変更するときは、常にプログラミング インターフェイスを使用します。ただし、この同じ SQL Server インストールを使用して、直接または Business Connectivity Services 経由で使用するデータベースをホストすることができます。したがって、SQL Server は SharePoint アプリケーションの作成に使用するインフラストラクチャの一部になることがあります。

Microsoft Access Services を使用すると、制限はあるものの、Access データベースを SharePoint サイトに発行できます。SharePoint ユーザーは、使いやすくて見慣れたフォームでデータを共有できるようになるので、これは興味深い可能性をもたらします。

クライアント側データ アクセス テクノロジ

クライアント コンピューターからプログラムによって SharePoint データにアクセスできます。クライアント コンピューターからデータにアクセスすると、SharePoint はネットワーク テクノロジを使用して要求を SharePoint Foundation または SharePoint Server に送信し、要求の結果を SharePoint から取得します。

クライアント側データ アクセス テクノロジ

データ アクセス テクノロジ

説明

Business Connectivity Services クライアント側 API

外部コンテンツ タイプのデータへのオンラインおよびオフライン アクセスを可能にします。このオブジェクト モデルには、Microsoft Word、Microsoft Excel、または Microsoft PowerPoint のマネージ アドインからアクセスできます。アプリケーションで SharePoint の外部にあるデータにアクセスするには、この方法が最も強力で便利な場合があります。

Web サービス

SharePoint Server でカスタム WCF サービスをホストする高パフォーマンスの設計を可能にします。WCF サービスはサーバー オブジェクト モデル経由でデータとドキュメントにアクセスできるので、クライアントからは実装されたサービスを通じてデータとドキュメントにアクセスできます。

Excel Services ECMAScript インターフェイス

ページ上の Excel Web Access Web パーツ コントロールをカスタマイズ、自動化、および駆動できます。

Excel Services REST API

URL を直接経由してブック パーツやブック要素にアクセスできます。

Excel Web Services

アプリケーションでブックの値を計算、設定、および抽出し、外部データ接続を更新できます。

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

ECMAScript プログラムで SharePoint データにアクセスできます。このプログラミング インターフェイスは、マネージ クライアント オブジェクト モデルの変種です。

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

.NET Framework アプリケーション (スタンドアロン アプリケーション、Silverlight アプリケーション、および ASP.NET アプリケーションを含む) で SharePoint データにアクセスできます。このフレームワークはサーバー オブジェクト モデルに似ており、サーバーで送受信されるネットワーク トラフィックを制御するためのセマンティクスが追加されています。クライアント オブジェクト モデルを使用するときは、CAML を理解して使用することが重要です。

OData REST API

リストおよびリスト アイテムに対する RESTful プログラミング インターフェイスを提供します。

SharePoint Web サービス

SharePoint Foundation 展開をリモートから操作するための Web サービス メソッドを提供します。

Web 分散オーサリングとバージョン管理 (WebDAV)

HTTP/1.1 を拡充し、リソース コレクションを作成および管理できるようにする一連のメソッド、ヘッダー、およびコンテンツ タイプで構成されます。SharePoint の WebDAV サポートを使用すると、ドキュメントをアップロードおよびダウンロードできます。WebDAV (RFC 4918 (英語)) は Internet Engineering Task Force (IETF) の作業ドキュメントです。

サーバー側データ アクセス テクノロジ

サーバー上で直接実行されるコードを書くときは、サンドボックス ソリューションとサーバー ファーム ソリューションのどちらを構築するかにかかわらず、データ クエリを CAML で、または LINQ to SharePoint を使用して指定できます。CAML を使用すると、弱く型指定された SPListItem オブジェクトが返されます。これに対して、LINQ to SharePoint を使用すると、生成されたコードで定義されている強く型指定されたオブジェクトが返されます。

サーバー側データ アクセス テクノロジ

データ アクセス テクノロジ

説明

Collaborative Application Markup Language (CAML)

XML ベースの非手続き型クエリ言語

LINQ to SharePoint

統合言語クエリ (Language-Integrated Query)

CAML または LINQ to SharePoint を使用して一連のアイテムのクエリを実行することに加えて、サーバー オブジェクト モデルを使用してリストまたはライブラリのアイテムに対する反復処理を直接実行することもできます。ただし、リスト内のすべてのアイテムを処理する必要があり、リスト内にあるアイテムの数がわかっている場合以外は、この方法を使用しないでください。私は、アプリケーションをデータ駆動型になるように設計することがよくあります。動作を駆動する特定のデータが含まれるようにリストを設計します。このような設計なので、私は特定の数のレコードがあることと、アプリケーションの動作を駆動するにはすべてのレコードを処理する必要があることを常に承知しています。この場合、私は CAML や LINQ to SharePoint を使ったクエリを実行せずに、アイテムに対する反復処理を直接実行します。マネージ クライアント オブジェクト モデルを使用するときは、この手法が機能しないことに注意してください。マネージ クライアント オブジェクト モデルを使用している場合、リスト アイテムのコレクションを取得するときは、CAML のクエリを入力する必要があります。

SharePoint アプリケーションと従来のリッチ クライアント アプリケーションの比較

SharePoint には、次のようにオペレーティング システムと多くの共通点があります。

  • SharePoint には記憶域があります。フォルダーの階層を含むドキュメント ライブラリは、ファイル システムのディレクトリ内のファイルによく似ています。

  • SharePoint にはプログラム可能なユーザー インターフェイスがあります。

  • オペレーティング システムの場合と同様に、さまざまな権限レベルで実行されるコードを記述できます。SharePoint の開発を使用すると、ファーム管理者の資格情報で実行しなければならないコードを記述できます。また、サンドボックス ソリューションで実行されるコードを記述することや、クライアント ブラウザーで実行される JavaScript を記述することもできます。

  • オペレーティング システムの場合と同様に、サービスを記述して、複雑な動きをする SharePoint アプリケーションの作成に必要なインフラストラクチャを提供できます。

ここでも、やはりスケーリングが最大の違いになります。スケーリングは SharePoint のプログラミング特性を決定づけています。数百台のサーバー全体にわたって優れたパフォーマンスで動作し、グループ作業と生産性を向上させる一貫した環境を会社全体にもたらすソフトウェアを作成できます。スケーラビリティの問題に対処することが、従来のアプリケーション開発から SharePoint の開発に移行するときの条件になります。

言語とプラットフォーム

SharePoint の開発に初めて携わる人全員が何より知りたいのは、「どの程度の学習が必要か」ということでしょう。SharePoint の開発を行うときに知っておく必要がある言語とプラットフォームをリストアップするのは興味深いことです。次のリストでは、最初の項目が最も重要です。それ以降の項目は、何をするかによって異なります。ここに挙げたすべてのテクノロジを習得する必要はありません。ご自分の現在のタスクに当てはまるものだけを学習してください。

  • Microsoft Visual C#、Microsoft Visual Basic、および Microsoft .NET Framework。 サーバー ファーム用の完全信頼アプリケーションを作成するとき、サイトコレクション レベルのサンドボックス ソリューションを構築するとき、または Microsoft Silverlight アプリケーション内で, .NET Framework を何らかの形で使用します。各種の LINQ テクノロジ (LINQ to XML、LINQ to Entities、LINQ to SharePoint、および LINQ to SQL) を理解しているといっそう効果的です。

  • ASP.NET。 SharePoint は ASP.NET を基盤にしており、IIS でホストされます。マスター ページとアプリケーション ページが使用されるので、ページの外観と動作を標準化できます。また、Web パーツ ページと Web パーツも使用されるので、ユーザーは独自のページを構成できます。Web パーツを相互に接続することで、親/子データ編集機能や Web マッシュアップ アプリケーションを作成できます。

  • HTML/CSS。 SharePoint の開発には、HTML と CSS を記述および理解することが役に立つ領域がいくつもあります。

  • **ECMAScript と HTML Document Object Model (DOM)。**JavaScript は強力なツールです。JavaScript から JavaScript クライアント オブジェクト モデルまたは OData REST API を使用して、サイトのデータおよびドキュメントを取得できます。JQuery と AJAX を使用すると、豊かな対話機能を追加できます。

  • **Silverlight/XAML。**Silverlight は、Web、デスクトップ、およびモバイル デバイスにまたがるさまざまな画面に対応する魅力的な対話型アプリケーションを作成するための開発プラットフォームです。Silverlight コード内でマネージ クライアント オブジェクト モデルを使用して、サイトのデータとドキュメントを読み書きできます。Microsoft Expression Blend は、SharePoint 用の Silverlight Web パーツを設計するための効果的なツールです。

  • XML。 有効な XML ドキュメントをコーディングする方法を知っておく必要があります。XML での開発に関して、私は個人的に LINQ to XML の習得をお勧めします。XML を操作するうえで、LINQ to XML はより効果の高い方法です。XSLT の知識は有用です。カスタム XSLT リスト ビューを手動で記述できます。ただし、XSLT リスト ビューの主な目的は、Microsoft SharePoint Designer を使用して対象の書式をリストに適用できるようにすることです。言い換えると、XSLT は頻繁に使用される開発ツールとしてよりも、ツールの出力として使用されることが多くあります。

SharePoint アプリケーション開発の用語

SharePoint アプリケーション開発に関する説明が容易になるように、ここで (SharePoint マーケティング サイトから選択した) 4 つの用語を定義し、これ以降の記事でこれらをより簡単に説明できるようにします。

SharePoint アプリケーション。まとまって、市場や顧客のニーズを満たすカスタマイズで構成されます。アプリケーションは、カスタム Web パーツ、ワークフロー、イベント ハンドラー、コンテンツ タイプ、定義済みリスト、または SharePoint 機能を拡張するその他のテクノロジの組み合わせから成ります。

SharePoint の機能。SharePoint 機能の主要な領域です。開発者はこれらの機能の領域を基盤にして、全体が各部分の和よりも大きくなるソリューションを構築します。次のような機能があります。

SharePoint の開発シナリオ。開発者が SharePoint ユーザーに対して有効にする活動です。たとえば、ユーザーが SharePoint リストに格納されているデータに基づいて数百の Word 文書を生成し、それらの文書から PDF または XPS ファイルを生成し、印刷するか電子メール メッセージで送信できるようにします。このシナリオを実現するには、さまざまな開発構成要素を使用します。考えられる 1 つの実装では、サンドボックス ソリューションとして実装される Web パーツで Open XML SDK 2.0 for Microsoft Office (「Open XML SDK 2.0 for Microsoft Office へようこそ」を参照) を使用します。その後、Word Services を使用して DOCX を PDF に変換します。

SharePoint の開発構成要素。開発を行うときに使用する SharePoint のテクノロジです。Web パーツ、ワークフロー、イベント ハンドラー、データ、サービスなどがあります。アプリケーションを作成するときは、パーツがすべて連携して機能するように構成要素を使って開発します。

SharePoint アプリケーションの種類

SharePoint 開発者が作成するアプリケーションにはどのような種類があるでしょうか。これは、オペレーティング システム上で作成できるアプリケーションの種類について質問するのに似ています。開発者は、さまざまなシナリオに対応する SharePoint の用途を生み出しています。次に、いくつかのアプリケーションの種類を示します。

  • 業種。 ベンダーは、不動産管理、リゾートと娯楽管理、機器レンタルなど、さまざまな業種に合わせて SharePoint をカスタマイズします。

  • カスタマイズされたチーム アプリケーション。 ときには、大きな組織の部署が、より体系化された目に見える形で目標を実現するうえで、カスタム アプリケーションが役立つことがあります。検査機関では、検査用の機器とリソースのライブラリを管理するシステムを構築できます。

  • コンテンツ発行システム。 コンテンツ発行システムには、1 人の作成者が管理するサイトやサイト コレクションのような単純なものもあります。また、Office.com Web サイトのように、数百人のライター、開発者、およびマネージャーが使用するテクニカル ドキュメント生成システムのような複雑なものもあります。

  • **会計システム。**Microsoft では、トランザクション システムを SharePoint に実装することを推奨していませんが、外部の会計システムから SharePoint にデータを取り込むことによって、ユーザー エクスペリエンスが大幅に向上します。

  • 管理情報システム。 自動化された管理システムの中には、会計システムほどのトランザクション要件を持たないものがあります。既定の SharePoint インストールを使用して、顧客、製品、資産、およびリソースのリストを管理できます。プログラムによって拡張すると、きわめて高度な機能を提供できます。

  • 営業およびマーケティング。 マーケティングおよび営業システムの多くの側面は、管理情報システムに似ています。SharePoint を Microsoft Dynamics (英語) などの CRM システムと統合することで、強力なハイブリッド アプリケーションを構築できます。さらに、SharePoint サイトへのモバイル アクセスを利用すると、出張の多い社員が仕事に必要なデータを操作できるようになります。

  • **プロジェクト管理。**Microsoft Project Server 2010 を SharePoint Server Enterprise と統合すると、組織で投資の優先度を設定し、リソースを調整し、プロジェクトを実行するためのプロジェクトとポートフォリオの管理を行うことができます。Project Server での開発には API を使用します。

SharePoint アプリケーションの多くの例は、このいずれかのカテゴリに当てはまりますが、このリストは明らかに不完全です。グループ作業機能を利用して SharePoint 上で動作するゲームを作成している人が間違いなくどこかにいるはずです。また、SharePoint リスト、イベント ハンドラーなどを使用して、コンピューターによる自動製造システムを制御するシステムを作成している人もいるでしょう。コンピューター支援の設計やアーキテクチャなど、他の業種を顧客に持つベンダーは、SharePoint の独自の改良版を考案するでしょう。

SharePoint で作成できるアプリケーションの種類は、Windows オペレーティング システムで作成できるアプリケーションの種類とほぼ同じぐらい変化に富んでいます。

SharePoint の機能

SharePoint の機能に関する多くの情報は、「Microsoft SharePoint 2010 製品 - 機能」で参照できます。次のような機能があります。

  • **ポータル。**SharePoint 2010 を使用して、すべてのビジネス Web サイトを開発および管理できます。SharePoint 2010 には、あらゆる種類のサイトの作成に使用できるツール一式が用意されています。SharePoint は、サイト管理を簡潔にするインフラストラクチャになります。

  • **ソーシャル ネットワーク。**SharePoint 2010 のグループ作業ツールを利用すると、だれもがアイデアを共有し、ユーザーと専門分野を検索し、ビジネス情報を見つけることができます。SharePoint には既定で多くのグループ作業機能が用意されていますが、SharePoint を興味深い方法で拡張すると、グループ作業が受動型ではなく能動型になります。Microsoft Lync Server 2010 (英語) を使用して SharePoint アプリケーションにプレゼンス機能を統合すると、仕事仲間どうしで連絡を取りやすくなります。

  • コンテンツ管理。 発行に携わる組織には、国際的な報道機関から、製品のドキュメントの発行を担当する小さな部署まで、さまざまな形態があります。組織では、SharePoint 2010 を使用してコンテンツを管理し、Word 2010 を使用してコンテンツを編集できます。また、私はコンテンツ管理機能を次の 3 つのサブカテゴリに分けています。

    • **発行システム。**SharePoint Server 2010 を使用して、包括的な発行システムを管理できます。最終的な成果物は、PDF、XPS、またはその他の形式で配布できます。Open XML は、発行システムの構築に使用できる特に強力なテクノロジです。他の形式への複雑な変換の記述が必要になることがあります。たとえば、Open XML から XHtml などの他の形式への変換 (英語)に関する説明を参照してください。

    • Web コンテンツ管理。 SharePoint Server 2010 for Internet Sites を使用して外部に公開される Web サイトを構築するか、SharePoint を使用してファイアウォールの内側に Wiki やページを作成するかにかかわらず、SharePoint によって豊富なコンテンツを最小限の労力で作り上げることができます。

    • エンタープライズ コンテンツ管理。 多くの組織には、組織としてのノウハウが、通常はドキュメントの形で大量に存在し、改訂、承認プロセス、およびメタデータを使って管理されています。

  • 検索。 ユーザーが情報をすぐに活用できるように、検索機能をカスタマイズすることがきわめて重要になる場合があります。SharePoint Server 2010 では、SharePoint 検索エンジンでカスタム ドキュメントを検索するようにカスタマイズすることができます。詳細については、「SharePoint エンタープライズ検索」を参照してください。さらに、外部コンテンツ タイプ (ECT) を検索するように検索機能をカスタマイズすることもできます。

  • 可視性と分析。 最近の調査で、超大手企業の CEO に "最も気にかけている" 課題は何かをたずねたところ、最優先課題として最も多く挙がったのがビジネス インテリジェンス (BI) でした。強力で柔軟性のある BI システムを構築するには、Excel Services、およびダッシュボードを作成する機能が重要です。PerformancePoint Services for SharePoint は、カスタマイズ可能な BI ダッシュボードを提供するもう 1 つのオプションになります。

  • コンポジット。 顧客のユーザー インターフェイス、データ アクセス、ビジネス ロジック、およびサービスを結合する革新的なソリューションを作成します。ワークフローを使用して、ビジネス プロセスをドキュメント化および標準化できます。

SharePoint の開発シナリオ

多くの開発者は、ソフトウェアを設計しながら、機能仕様書を作成する前に開発シナリオを決定してドキュメント化します。ときには、このプロセスで、ユーザーが特定のタスクを実行するために A 点から B 点にどのように移動するかを示すストーリーボードを作成することがあります。正式なユースケース分析を行うこともあります。また、PowerPoint やモデリング ツールを使用して、シナリオを間に合わせに作ることさえあります。ほとんどの開発組織では、シナリオの概要と詳細を示す正式な仕様書を作成します。

シナリオには、アプリケーションにも増して多くの種類があります。とはいえ、いくつかの一般的な種類のシナリオがあります。

  • 既存の SharePoint データに対するより使いやすいユーザー インターフェイスを提供するシナリオ。たとえば、複数の SharePoint リストのデータに基づく計算値を表示するような場合です。

  • 外部システムから外部データを取り込むシナリオ。最新の ERP システムや CRM システムに接続するような場合もあれば、昔のハードウェア アーキテクチャのエミュレーターを使って UNIX 上に実装された独自仕様のデータベースに接続するような場合もあります。

  • ドキュメント生成に関連するシナリオ。SharePoint リストまたは外部システムに格納されたデータに基づいて、数百から数千の Open XML ドキュメントを生成し、PDF やその他の形式に変換するような場合です。

  • プロセスと手順に関連するシナリオ。ドキュメント承認プロセスのような単純なものもあれば、RFP を提案の作成から契約の署名まで導くような込み入ったものまであります。

それぞれの開発シナリオを 1 つ以上の SharePoint の開発構成要素を使って実装します。もちろん、あなたはシステム設計者として独自のシナリオを決定する必要があります。その後にすべきことは、シナリオの実装に使用できる構成要素に精通することです。多くの場合、オプションは複数あります。オプションごとに異なる特徴があり、特定のシナリオには 1 つのオプションが他よりも適していることがあります。おそらく、あなたはかなりの程度まで、どの方向に進む必要があるかを既に承知しているでしょう。ハイエンドのマーケティングとデザインのサイトや、高級品の Web サイトでは、最初から必要な限り Silverlight を使用することを計画するでしょう。一方、チーム サイトのパートタイム開発者は、何であれ最も速くて簡単にタスクを実現できる方法に興味を示す可能性があります。

まとめ

この記事では、SharePoint の開発と他の種類のアプリケーション開発との違いについて考察しました。具体的には、スケーラブルで疎結合された ASP.NET アプリケーションの開発、データベース アプリケーションの開発、および従来のリッチ クライアントの開発との比較を行いました。また、開発者が知っておく必要があるさまざまな言語とプラットフォームをリストアップし、SharePoint 開発のいくつかの用語について説明しました。さらに、SharePoint の機能について考察し、開発者がそれらの機能を拡張してユーザーのニーズを満たす方法について説明しました。次の記事「SharePoint 2010 の開発構成要素: SharePoint アプリケーションを作成するためのテクノロジ (パート 2/2)」では、SharePoint アプリケーションの作成に使用するすべての構成要素テクノロジを列挙して説明します。