Microsoft Graph

[Microsoft Graph]バッチ処理を試してみました。

先日公開された下記動画を見て、面白そうだったのでMicrosoft Graphのバッチ処理を試してみることにしました。

Graph エクスプローラーを使ったAPIのテスト

上記動画でも使われていますが、Microsoft Graphの各APIをテストするのに便利なツール「Graph エクスプローラー」が用意されているので、今回はこれを使います。

  1. Graph エクスプローラーを開き、Microsoft アカウントでサインインします。
  2. サンプルをさらに表示」から「バッチ処理」をオンにします。
  3. GET を並列で実行する」をクリックし、「クエリを実行」ボタンをクリックします。
  4. 応答のプレビュー」に、POSTしたリクエストの結果が表示されます。
  5. {
        "responses": [
            {
                "id": "1",
                "status": 200,
                "headers": {
                    "Cache-Control": "no-cache",
                    "OData-Version": "4.0",
                    "Content-Type": "application/json;odata.metadata=minimal;odata.streaming=true;IEEE754Compatible=false;charset=utf-8"
                },
                "body": {
                    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users(displayName,jobTitle,userPrincipalName)/$entity",
                    "displayName": "**** ****",
                    "surname": "****",
                    "givenName": "****",
                    "id": "****************",
                    "userPrincipalName": "***********@outlook.jp",
                    "businessPhones": [],
                    "jobTitle": null,
                    "mail": null,
                    "mobilePhone": null,
                    "officeLocation": null,
                    "preferredLanguage": null
                }
            },
            {
                "id": "3",
                "status": 200,
                "headers": {
                    "Cache-Control": "private",
                    "OData-Version": "4.0",
                    "Content-Type": "application/json;odata.metadata=minimal;odata.streaming=true;IEEE754Compatible=false;charset=utf-8"
                },
                "body": {
                    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users('***********%40outlook.jp')/events",
                    "value": []
                }
            },
            {
                "id": "2",
                "status": 200,
                "headers": {
                    "Cache-Control": "private",
                    "OData-Version": "4.0",
                    "Content-Type": "application/json;odata.metadata=minimal;odata.streaming=true;IEEE754Compatible=false;charset=utf-8"
                },
                "body": {
                    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users('***********%40outlook.jp')/messages(from,subject,receivedDateTime,bodyPreview)",
                    "value": []
                }
            }
        ]
    }

この結果を見る限り、まとめて送信したリクエストはそれぞれ無事に処理できたようです。
これでMicrosoft Graphにおけるバッチ処理の概要は掴めました。

バッチ処理について

上記サンプルの通り、「$batch」エンドポイントに複数のリクエストをPOST送信することで、バッチ処理できます。

HTTP
POST https://graph.microsoft.com/v1.0/$batch
Accept: application/json
Content-Type: application/json
BODY
  • 必須プロパティ:requests, id, url, method
  • idプロパティを指定することで、各要求と応答を対応させることができます。

詳細は下記ドキュメント参照。

{
  "requests": [
    {
      "url": "/me",
      "method": "GET",
      "id": "1"
    },
    {
      "url": "/me/messages",
      "method": "GET",
      "id": "2"
    },
    {
      "url": "/me/drive/root/children",
      "method": "GET",
      "id": "3"
    }
  ]
}

制限事項

Microsoft Graph に関する既知の問題」にある通り、2019年6月時点では下記の制限事項があります。

  1. 入れ子になったバッチリクエストには未対応
  2. すべてのリクエストは同期実行
  3. トランザクション未対応
  4. リクエストは必ず相対URIで指定
  5. 一度に処理できるリクエストは20件まで
  6. 各リクエストは、他のリクエスト1つだけに依存可能(条件は「JSON バッチ処理」参照)

特にトランザクション未対応というのは中々ロックな制限ですね。
投げたら投げっぱなしです。

ただ、バッチ処理の完成度が上がるにつれて、これらの制限はなくなるとのことなので、いずれはもっと使い勝手が良くなるだろうと思います。

おわりに

今回はMicrosoft Graphのバッチ処理を触るのが初めてだったので、GETのみの簡単なリクエストだけでテストしましたが、バッチ処理はGETもPOSTも組み合わせて行うことができます。

複数のリクエストを1つにまとめることで効率良く処理できるようになるので、使用場面は多いだろうと思いますが、上記の通り、現状ではいくつかの制限事項があるので、今後のバージョンアップに期待したいところです。

kintone hive tokyo vol.9に参加しました。前のページ

【アイカツフレンズ!】今日のアリシアコーデ(初音ミクコーデ)次のページ

関連記事

  1. Microsoft Graph

    Microsoft Graph .NET Client Libraryを使ったAPIの呼び出しサンプ…

    下記記事でMicrosoft GraphのPHP用SDKを紹介しました…

  2. Microsoft Graph

    「30 Days of Microsoft Graph」の紹介

    11月1日からMicrosoft Graphについて毎日紹介する、アド…

  3. Office関連

    Office 365 unified APIをJavaScriptだけで呼び出す

    Microsoftの松崎さんのブログに下記の記事がありました。…

  4. Office関連

    Excel REST APIをVBAから呼び出す方法

    「Microsoft GraphをVBAから呼び出してOneNoteの…

コメント

  • コメント (0)

  • トラックバックは利用できません。

  1. この記事へのコメントはありません。

Time limit is exhausted. Please reload CAPTCHA.

最近の記事

アーカイブ

PAGE TOP