SharePoint を使用して他のプラットフォーム用モバイル アプリを構築するBuild mobile apps for other platforms using SharePoint

Representational State Transfer (REST) を使用して、任意のプラットフォーム向けの SharePoint モバイル アプリを作成する方法を説明します。 近年、モバイル デバイスの性能と使いやすさがますます高まっています。業務に必要な情報やアプリケーションへのアクセスには、ノート PC、ネットブック、タブレット PC、および携帯電話が使われています。また、モバイル デバイス用のアプリケーション開発も、従来より簡単になっています。こうしたことから、ビジネス プロセスにクライアント アプリケーションを統合するビジネス シナリオの要求がますます増えています。この記事では、SharePoint にモバイル クライアント アプリを統合する方法を説明します。モバイル アプリを作成して、どんな場所からでも SharePoint コンテンツを参照し、SharePoint リストおよびライブラリに接続してデータにアクセスできます。Learn how to use Representational State Transfer (REST) to create a SharePoint mobile app for any platform. Mobile devices have become more powerful and easy to use nowadays. Laptops, netbooks, tablet PCs, and mobile phones provide workers access to the information and applications that they need to do their jobs. And developing applications for mobile devices is now easier than ever. As a result, more and more business scenarios demand integrating client applications together with their business processes. This article describes how to integrate mobile client apps together with SharePoint. You can create a mobile app to browse SharePoint content from any location and connect with SharePoint lists and libraries to access data.

SharePoint と対話するモバイル アプリの開発には、オープン プロトコルを使用してアクセスできる一般のサービスを使用できます。SharePoint Foundation 2010 では、クライアント オブジェクト モデルが導入されました。これにより、開発者は, .NET Framework、Microsoft Silverlight、または JavaScript から任意の Web プログラミング テクノロジを使用して、SharePoint とリモート通信ができるようになりました。SharePoint では、ちょうどクライアント オブジェクト モデルに相当する Representational State Transfer (REST) サービスを導入します。SharePoint では、クライアント オブジェクト モデルのほぼすべての API に対応する REST エンドポイントがあります。このため、開発者は、REST Web 要求をサポートするテクノロジを使用して SharePoint オブジェクト モデルとリモートで対話できます。モバイル アプリケーション開発に使用する、どんなプログラミング言語でも REST を使用できます。 SharePoint で提供される REST インターフェイスを使用すると、基本的な作成、読み取り、更新、および削除 (CRUD) の操作を実行できます。REST では、その他の SharePoint クライアント API で利用可能なすべての SharePoint エンティティおよび操作が公開されます。REST を使用する 1 つのメリットは、SharePoint ライブラリまたはクライアント アセンブリに参照を追加する必要がないことです。Web、リスト、リスト アイテムなどの SharePoint エンティティを取得したり更新したりするには、代わりに適切なエンドポイントに HTTP 要求を実行します。SharePoint REST インターフェイスとそのアーキテクチャの概要について詳しくは、「 SharePoint REST サービスを使用したプログラミング」を参照してください。To develop a mobile app that interacts with SharePoint, you can use common services that can be accessed using open protocols. SharePoint Foundation 2010 introduced the client object models, which enabled developers to perform remote communication with SharePoint by using the web programming technology of their choice: .NET Framework, Microsoft Silverlight, or JavaScript. SharePoint introduces a Representational State Transfer (REST) service that is fully comparable to the client object models. In SharePoint, nearly every API in the client object models will have a corresponding REST endpoint. Now, developers can interact remotely with the SharePoint object model by using any technology that supports REST web requests. REST can be consumed by any programming language that you want to use for your mobile application development. You can perform basic create, read, update, and delete (CRUD) operations by using the REST interface provided by SharePoint. REST exposes all of the SharePoint entities and operations that are available in the other SharePoint client APIs. One advantage of using REST is that you don't have to add references to any SharePoint libraries or client assemblies. Instead, you make HTTP requests to the appropriate endpoints to retrieve or update SharePoint entities, such as webs, lists, and list items. For a thorough introduction to the SharePoint REST interface and its architecture, see Use OData query operations in SharePoint REST requests.

SharePoint の REST エンドポイントREST endpoints in SharePoint

SharePoint に組み込まれている REST 機能を使用する場合は、必要なクライアント オブジェクト モデルの API に対応する Open Data Protocol (OData) 標準を使用して REST 対応の HTTP 要求を構成できます。client.svc Web サービスは HTTP 要求を処理し、Atom または JavaScript Object Notation (JSON) の形式で適切な応答を返します。クライアント アプリケーションは、その応答を解析する必要があります。図 1 に SharePoint REST アーキテクチャの概要を示します。To use the REST capabilities that are built into SharePoint, you can construct a RESTful HTTP request using the Open Data Protocol (OData) standard that corresponds to the desired client object model API. The client.svc web service handles the HTTP request and serves the appropriate response, in either Atom or JavaScript Object Notation (JSON) format. The client application must then parse that response. Figure 1 shows a high-level view of the SharePoint REST architecture.

図 1. SharePoint REST のアーキテクチャFigure 1. SharePoint REST architecture

SharePoint REST のアーキテクチャ

SharePoint REST サービスのエンドポイントは、SharePoint クライアント オブジェクト モデルの型およびメンバーに対応します。HTTP 要求を使用することによって、これらの REST エンドポイントを使って、リストやサイトなどの SharePoint 成果物に対して典型的な CRUD 操作を行うことができます。The endpoints in the SharePoint REST service correspond to the types and members in the SharePoint client object models. By using HTTP requests, you can use these REST endpoints to perform typical CRUD operations against SharePoint artifacts, such as lists and sites.

一般に、以下のことが行われます。In general:

  • 読み取り操作を表すエンドポイントが HTTP GET コマンドにマップされる。Endpoints that represent read operations map to HTTP GET commands.

  • 更新操作を表すエンドポイントが HTTP POST コマンドにマップされる。Endpoints that represent update operations map to HTTP POST commands.

  • 更新または挿入操作を表すエンドポイントが HTTP PUT コマンドにマップされる。Endpoints that represent update or insert operations map to HTTP PUT commands.

使用する HTTP 要求を選択する際、次の点についても考慮する必要があります。In choosing an HTTP request to use, you should also consider the following:

  • POST を使用してリストやサイトなどの成果物を作成します。SharePoint REST サービスは、コレクションを表すエンドポイントにオブジェクト定義を含める POST コマンドの送信をサポートしています。Use POST to create artifacts such as lists and sites. The SharePoint REST service supports sending POST commands that include object definitions to endpoints that represent collections.

  • POST 操作では、必須ではないプロパティはすべて既定値に設定されます。 POST 操作の一部として読み取り専用プロパティを設定すると、サービスによって例外が返されます。For POST operations, any properties that are not required are set to their default values. If you try to set a read-only property as part of a POST operation, the service returns an exception.

  • 既存の SharePoint オブジェクトを更新する場合は、 PUTPATCH、および MERGE 操作を使用します。オブジェクト プロパティ set 操作を表すサービス エンドポイントは、すべて PUT 要求と MERGE 要求の両方をサポートします。 MERGE 要求の場合、プロパティの設定は省略できます。明示的に設定しないプロパティは、現在のプロパティが保持されます。ただし、 PUT コマンドの場合は、プロパティを明示的に設定しないと、既定のプロパティが設定されます。さらに、HTTP PUT コマンドを使用したオブジェクトの更新で設定可能なプロパティをすべて設定しなかった場合には、REST サービスから例外が返されます。Use PUT, PATCH, and MERGE operations to update existing SharePoint objects. Any service endpoint that represents an object property set operation supports both PUT requests and MERGE requests. For MERGE requests, setting properties is optional; any properties that you do not explicitly set retain their current property. But for PUT commands, any properties you do not explicitly set are set to their default properties. In addition, if you do not specify all settable properties in object updates when you use HTTP PUT commands, the REST service returns an exception.

  • 特定のエンドポイント URL に対して HTTP の DELETE コマンドを実行すると、そのエンドポイントが表す SharePoint オブジェクトを削除できます。リスト、ファイル、リスト アイテムなど、再利用可能なオブジェクトについては、結果的に Recycle 操作になります。詳細については、「 SharePoint REST サービスの概要」を参照してください。Use the HTTP DELETE command against the specific endpoint URL to delete the SharePoint object represented by that endpoint. For recyclable objects, such as lists, files, and list items, this results in a Recycle operation. For more information, see Get to know the SharePoint REST service.

SharePoint に対するユーザーの認証Authenticate users to SharePoint

SharePoint でモバイル アプリを認証するのに、MS-OFBA プロトコルを使用できます。詳細については、「 [MS-OFBA]: Office フォーム ベースの認証プロトコル仕様」を参照してください。プロトコル クライアントは、Cookie を格納および送信するように構成されます。プロトコル クライアントは、リモート プロトコル サーバーを信頼し、1 つ以上の HTTP Cookie としてユーザーの ID を設定します。ユーザーの ID が確立された後、クライアントは以降の各 HHT 要求とともに各 Cookie を送信します。To authenticate your mobile app with SharePoint, you can use the MS-OFBA protocol. For more information, see [MS-OFBA]: Office Forms Based Authentication Protocol Specification. The protocol client is configured to store and transmit cookies. The protocol client relies on the remote protocol server to set the user's identity as one or more HTTP cookies. After the user's identity is established, the client then sends each cookie with each subsequent HHT request.

ユーザーが SharePoint にサインインするときに、ユーザーのトークンが検証され、SharePoint へのサインインに使用されます。When a user signs in to SharePoint, the user's token is validated and then used to sign in to SharePoint. ユーザーのトークンは、ID プロバイダーによって発行されるセキュリティ トークンです。The user's token is a security token that is issued by an identity provider. SharePoint では、数種類の認証をサポートしています。SharePoint supports several kinds of authentication. 詳細については、「SharePoint での認証、承認、およびセキュリティ」を参照してください。For more information, see Authentication, authorization, and security in SharePoint. ユーザーの認証には、REST インターフェイスを使用できます。To authenticate a user, you can use the REST interface. 承認プロセスは、認証済みのサブジェクト (アプリ、またはアプリが動作を代理するユーザー) が特定の操作を実行するアクセス許可、または特定のリソース (たとえば、リストや SharePoint ドキュメント フォルダー) にアクセスするアクセス許可を持っているかどうかを検査します。The authorization process verifies that an authenticated subject (an app or a user the app is acting on behalf of.md) has permission to perform certain operations or to access specific resources (for example, a list or a SharePoint document folder.md).

OData を使用すると、特別に構成された URL の参照によってデータベースなどのデータ ソースにアクセスできます。これにより、組織内でホストされているデータ ソースに簡単に接続したり操作したりできます。OData は HTTP、Atom、JavaScript Object Notation (JSON) を使用するプロトコルで、開発者は増加し続けるデータ ソースと対話するアプリケーションを記述できるようになります。Microsoft では、Web からアクセス可能なアプリケーションとデータ ストアとの間でデータ交換を実現する方法として、この標準の作成をサポートしています。新しい OData コネクタは、SharePoint と OData プロバイダーとの対話を実現します。詳細については、「 Open Data Protocol」を参照してください。OData lets you access a data source, such as a database, by browsing to a specially constructed URL. This allows for a simplified approach for connecting to, and working with, data sources that are hosted within an organization. OData is a protocol that uses HTTP, Atom, and JavaScript Object Notation (JSON) to enable developers to write applications that communicate with an ever-growing number of data sources. Microsoft supports the creation of this standard as a way to enable the exchange of data between applications and data stores that can be accessed from the web. The new OData connector enables SharePoint to communicate with OData providers. For more information, see Open Data Protocol.

次のコードは、基本の認証またはフォーム ベース認証に REST エンドポイントを使用して、SharePoint に対してアプリを認証する方法を示しています。次のコード例は C# で記述されていますが、他の任意のプログラミング言語を使用して、プラットフォーム要件のとおりに、HTTP 要求を作成できます。The following code demonstrates how to authenticate your app to SharePoint using REST endpoints for basic or forms-based authentication. The following code example is written in C#, but any other programming language can be used to create the Http request, as per the requirement of the platform.


string SharePointUrl = "https://Target SharePoint site";

private void AuthenticateToSharePoint(object sender, RoutedEventArgs e)
{
    ODataAuthenticator odataAt = new ODataAuthenticator("<Username>", "<password>");
    odataAt.CookieCachingEnabled = true;
    odataAt.AuthenticationCompleted += new EventHandler<AuthenticationCompletedEventArgs>(odataAt_AuthenticationCompleted);
    odataAt.Authenticate(new Uri(SharePointUrl, UriKind.Absolute));
}

void odataAt_AuthenticationCompleted(object sender, AuthenticationCompletedEventArgs e)
{
    HttpWebRequest endpointRequest = (HttpWebRequest)HttpWebRequest.Create(SharePointUrl.ToString() + "/_api/web/lists");
    endpointRequest.Method = "GET";
    endpointRequest.Accept = "application/json;odata=verbose";
          endpointRequest.CookieContainer = (sender as ODataAuthenticator).CookieContainer;

    endpointRequest.BeginGetResponse(new AsyncCallback((IAsyncResult res) =>
    {
        HttpWebRequest webReq = res.AsyncState as HttpWebRequest;
        WebResponse response = webReq.EndGetResponse(res);

        HttpWebResponse httpResponse = response as HttpWebResponse;
        HttpStatusCode code = httpResponse.StatusCode;
        this.Dispatcher.BeginInvoke(() =>
        {
            MessageBox.Show(code.ToString());
        });
    }), endpointRequest);
}

エンドポイントに対して HttpWebrequest を認証するには、まず、 ODataAuthenticator クラスで SharePoint に対して認証する必要があります。 Authenticate メソッドを呼び出す前に、 ODataAuthenticator オブジェクトを AuthenticationCompleted イベントに登録します。To authenticate an HttpWebrequest to the endpoint, you should first authenticate to SharePoint with the ODataAuthenticator class. Before calling the Authenticate method, register the ODataAuthenticator object to the AuthenticationCompleted event.

OnAuthenticationCompleted イベント内で認証された後、 ODataAuthenticator オブジェクト上で CookieContainer プロパティを使用できます。このオブジェクトを HttpWebRequest オブジェクトに添付して、SharePoint に対して REST 呼び出しを認証できます。After authentication is done inside the OnAuthenticationCompleted event, you can use the CookieContainer property on the ODataAuthenticator object, which can be attached to the HttpWebRequest object to authenticate the REST calls to SharePoint.

REST を使用して SharePoint リスト アイテムを操作するWork with SharePoint list items using REST

次の例は、リストのアイテムをすべて 取得 する方法を示しています。The following example shows how to retrieve all of a list's items.


url: http://site url/_api/web/lists/GetByTitle('Test')/items
method: GET
headers:
// MS-OFBA protocol returns a cookie.
  Cookie: cookie


    accept: "application/json;odata=verbose" or "application/atom+xml"

次の例は、特定のリスト アイテムを 取得 する方法を示しています。The following example shows how to retrieve a specific list item.


url: http://site url/_api/web/lists/GetByTitle('Test')/items(item id)
method: GET
headers:

// MS-OFBA protocol return a cookie.
  Cookie: cookie
    accept: "application/json;odata=verbose" or "application/atom+xml"

次の XML は、XML コンテンツ タイプを要求したときに返されるリスト アイテム プロパティの例を示しています。The following XML shows an example of the list item properties that are returned when you request the XML content type.


<content type="application/xml">
        <m:properties>
        <d:FileSystemObjectType m:type="Edm.Int32">0</d:FileSystemObjectType>
        <d:Id m:type="Edm.Int32">1</d:Id>
        <d:ID m:type="Edm.Int32">1</d:ID>
        <d:ContentTypeId>0x010049564F321A0F0543BA8C6303316C8C0F</d:ContentTypeId>
        <d:Title>an item</d:Title>
        <d:Modified m:type="Edm.DateTime">2012-07-24T22:47:26Z</d:Modified>
        <d:Created m:type="Edm.DateTime">2012-07-24T22:47:26Z</d:Created>
        <d:AuthorId m:type="Edm.Int32">11</d:AuthorId>
        <d:EditorId m:type="Edm.Int32">11</d:EditorId>
        <d:OData__UIVersionString>1.0</d:OData__UIVersionString>
        <d:Attachments m:type="Edm.Boolean">false</d:Attachments>
        <d:GUID m:type="Edm.Guid">eb6850c5-9a30-4636-b282-234eda8b1057</d:GUID>
    </m:properties>
</content>

次の例は、リスト項目を作成する方法を示しています。The following example shows how to create a list item.

注意

この操作を実行するには、リストの ListItemEntityTypeFullName プロパティを知っていて、それを HTTP 要求本文の type の値として渡す必要があります。To do this operation, you must know the ListItemEntityTypeFullName property of the list and pass that as the value of type in the HTTP request body.


url: http://site url/_api/web/lists/GetByTitle('Test')/items
method: POST
body: { '__metadata': { 'type': 'SP.Data.TestListItem' }, 'Title': 'Test'}
headers:

// MS-OFBA protocol returns a cookie.
  Cookie: cookie
     X-RequestDigest = form digest value
    accept: "application/json;odata=verbose"
    content-type: "application/json;odata=verbose"
    content-length:length of post body

次の例は、リスト アイテムを更新する方法を示しています。The following example shows how to update a list item.

注意

この操作を実行するには、リストの ListItemEntityTypeFullName プロパティを知っていて、それを HTTP 要求本文の type の値として渡す必要があります。To do this operation, you must know the ListItemEntityTypeFullName property of the list and pass that as the value of type in the HTTP request body.


url: http://site url/_api/web/lists/GetByTitle('Test')/items(item id)
method: POST
body: { '__metadata': { 'type': 'SP.Data.TestListItem' }, 'Title': 'TestUpdated'}
headers:
// MS-OFBA protocol returns a cookie.
  Cookie: cookie
     X-RequestDigest = form digest value
    "IF-MATCH": etag or "*"
    "X-HTTP-Method":"MERGE",
    accept: "application/json;odata=verbose"
    content-type: "application/json;odata=verbose"
    content-length:length of post body

次の例は、リスト アイテムを削除する方法を示しています。The following example shows how to delete a list item.


url: http://site url/_api/web/lists/GetByTitle('Test')/items(item id)
method: POST
headers:
// MS-OFBA protocol returns a cookie.
  Cookie: cookie
     X-RequestDigest = form digest value
    "IF-MATCH": etag or "*"
    "X-HTTP-Method":"DELETE"

詳細については、「 SharePoint REST エンドポイントを使用して基本的な操作を完了する」を参照してください。For more information, see Complete basic operations using SharePoint REST endpoints.

関連項目See also