Microsoft Graphことはじめ
クエリパラメータ編
2019.9 .Netラボ
誰?
@DevTakas
Angular / Azure / .Net Core / Azure DevOps / Microsoft Graph
誰?
ブログやってます
http://takasdev.hatenablog.com/
「はまったりひらめいたり…とか…」
Graph APIの何が嬉しいのか
https://docs.microsoft.com/ja-jp/graph/overview
から抜粋
Graph APIの何が嬉しいのか
• データ間の繋がりがわかりやすくなっている
• 従来はサービスが違えばAPIエンドポイントも違ってた
• 例)ユーザーとユーザーの予定情報を参照したい
• 従来のREST APIの場合はそれぞれ単独のAPIから呼び出している
• 例:ユーザー情報)GET http://example.com/user/{user-id}
• 例:予定情報)GET http://example.com/event?userId={user-id}
• Graphの場合は「ユーザーに紐づく情報」のイメージで呼び出せる
• 例:ユーザー情報)GET http://example.com/user/{user-id}
• 例:予定情報)GET http://example.com/user/{user-id}/event
• 単一の塊として表現されてきたデータに繋がりが生まれた
Graph APIの何が嬉しいのか
ユーザー
メッセージ
カレンダー
単独リソースで完結しているので
データの繋がりがわかりにくい
ユーザー
メッセージ
カレンダー
添付ファイル 添付ファイル
URLでデータの繋がりが表されているので
わかりやすい
Graph APIの何が嬉しいのか
• 単一の塊として表現されてきたデータに繋がりが生まれた
• サービス間の繋がりが生まれた
• 例えばMSのGraphの「ユーザー」を起点にして
様々な情報を直感的に取得することが可能となる
• Message: メール(Outlook)の情報(/users/{id}/message)
• Events:予定(Outlook)の情報(/users/{id}/events)
• Drive:Drive(Onedrive)の情報(/users/{id}/drive)
• 「誰」の「〇〇」の情報がURLで判断できる
Graphの何が嬉しいのか
• API間のつながりが解読から直感的に
ユーザーAPIのドキュメント
予定APIのドキュメント
ユーザーIDで連携すればOKかな?
ユーザーAPIのドキュメント
ユーザーのイベントもってこよう
Microsoft Graphをより便利に使うために
• クエリパラメータを使用しレスポンスを制御できる
• 主なクエリオプション
• Count:返却されるリソース総数を取得
• Expand:関連リソースを取得
• Filter:結果をフィルタリング
• Format:返却メディア形式を指定
• Orderby:結果の並べかえ
• Select:返却列フィルタ
• Skip:結果にIndexを付与。ページングとセットで使用される
• Top:結果ページのサイズを指定する
Microsoft Graphをより便利に使うために
• クエリオプションの何が嬉しい?
• WebAPIから整形されたデータが返却される
• 従来のAPIはレスポンスをコントロールできない
• 必要不必要に関わらず常に同一のデータが返却される
• 通信で返却されるパラメータの8割は使わんなんてこともザラ
• 良し悪しはある…
• でかいデータ→フロントエンドで加工みたいなのがなくなる
• データ通信量の削減、処理スピードのアップ
• 柔軟な絞り込みを通信前段階で行える
Microsoft Graphをより便利に使うために
• データ通信量の削減、処理スピードのアップ
• 👈Messagesのプロパティ。
• 全てのプロパティを使うことはまずない。
• 何も指定しないとこの情報が全部振ってくる。無駄。
• (しかもこの中にメッセージのHTML入ったりしてる)
https://docs.microsoft.com/ja-jp/graph/api/resources/message?view=graph-rest-1.0 より
Microsoft Graphをより便利に使うために
• 柔軟な絞り込みを通信前段階で行える
• WebAPIの絞り込みの条件はWebAPIの仕様に依存していた
• 日付のFromとToだけ?未読だけでいいんだけど…とか
• ドカッとデータ落としてフロントでフィルタリングみたいな…
• $filterを使えば提供されているプロパティ情報で絞り込める
Web API
クエリパラメータはfromとtoがあるよ
(それしか使えない)
Graph API
絞り込み条件を指定してね
Microsoft Graphをより便利に使うために
• 関連リソースのデータを取得できる
• $expand
• リソースの子リソースの情報を取得したりできる
• 例えばメールに対する添付ファイル情報とか…
• 複数のAPIアクセスを流さなくて良いのが嬉しい
• Beta版のみでしか使えないもの等があるのでドキュメント参照は必須
• https://docs.microsoft.com/ja-jp/graph/query-parameters#expand-parameter
Microsoft Graphをより便利に使うために
• $expand(例:メール)
• Expandで参照できるリソースは「リレーションシップ」を参照する
• 例えばメールの/messages/からは添付ファイルリソースを参照できる
https://docs.microsoft.com/ja-jp/graph/api/resources/message?view=graph-rest-1.0 より
Microsoft Graphをより便利に使うために
• $expand(例:メール)
• Expandで参照できるリソースは「リレーションシップ」を参照する
• 先述の通りBetaでしか使えなかったり、全てのリレーションシップで
expandがサポートされているわけではない
https://docs.microsoft.com/ja-jp/graph/query-parameters#expand-parameter より
Microsoft Graphをより便利に使うために
• 今まで
WebAPI
リクエスト
でかいデータフロントで
取捨選択等の
加工
利用
Microsoft Graphをより便利に使うために
• Graph
Graph API
クエリオプション付きでリクエスト
必要最低限のデータ必要最低限の
フロント
加工
利用
Microsoft Graphをより便利に使うために
• クエリオプションの動作を見てみよう
• Filter
• Orderby
• Select
• Skip
• Top
• Expand
Microsoft Graphことはじめ まとめ
• ユーザー情報等の取得にGraphはめっちゃ便利
• クエリオプションを使うともっと便利
参考文献
• Microsoft Graph でのユーザーの操作
• https://docs.microsoft.com/ja-jp/graph/api/resources/users?view=graph-rest-1.0
• クエリ パラメーターを使用して応答をカスタマイズする
• https://docs.microsoft.com/ja-jp/graph/query-parameters?view=graph-rest-1.0
• OData Version 4.0. Part 2: URL Conventions Plus Errata 03 - QueryOption
• https://docs.oasis-open.org/odata/odata/v4.0/errata03/os/complete/part2-url-conventions/odata-v4.0-errata03-os-part2-
url-conventions-complete.html#_Toc453752356
• メッセージ リソースの種類
• https://docs.microsoft.com/ja-jp/graph/api/resources/message?view=graph-rest-1.0
• Expandパラメータ
• https://docs.microsoft.com/ja-jp/graph/query-parameters#expand-parameter
• 添付ファイルを取得する
• https://docs.microsoft.com/ja-jp/graph/api/attachment-get?view=graph-rest-1.0&tabs=http

More Related Content

PDF
ジョブ管理でcronは限界があったので”Rundeck”を使ってハッピーになりました
PDF
Microsoft Graph APIを活用した社内アプリケーション開発
PDF
Python におけるドメイン駆動設計(戦術面)の勘どころ
PDF
PostgreSQL 15 開発最新情報
PDF
MySQLとPostgreSQLの基本的なバックアップ比較
PDF
pg_walinspectについて調べてみた!(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
PDF
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
PDF
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜
ジョブ管理でcronは限界があったので”Rundeck”を使ってハッピーになりました
Microsoft Graph APIを活用した社内アプリケーション開発
Python におけるドメイン駆動設計(戦術面)の勘どころ
PostgreSQL 15 開発最新情報
MySQLとPostgreSQLの基本的なバックアップ比較
pg_walinspectについて調べてみた!(第37回PostgreSQLアンカンファレンス@オンライン 発表資料)
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜

What's hot (20)

PDF
PacemakerのMaster/Slave構成の基本と事例紹介(DRBD、PostgreSQLレプリケーション) @Open Source Confer...
PDF
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)
PDF
インフラエンジニアってなんでしたっけ(仮)
PDF
3分でわかるAzureでのService Principal
PDF
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
PDF
OSC北海道2014_JPUG資料
PDF
「ドメイン駆動設計」の複雑さに立ち向かう
PPTX
JIRA / Confluence の 必須プラグインはこれだ
PDF
入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)
PDF
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
PDF
MLOps に基づく AI/ML 実運用最前線 ~画像、動画データにおける MLOps 事例のご紹介~(映像情報メディア学会2021年冬季大会企画セッショ...
PPTX
概念モデリング再入門 + DDD
PDF
SQLアンチパターン - ジェイウォーク
PPT
メタプログラミングって何だろう
PDF
ゲームアーキテクチャパターン (Aurora Serverless / DynamoDB)
PPTX
Uwpアプリケーション開発入門
PPTX
イベント・ソーシングを知る
PDF
ドメイン駆動設計 コアドメインを語り合ってみよう
PDF
[Cloud OnAir] BigQuery の仕組みからベストプラクティスまでのご紹介 2018年9月6日 放送
PDF
Dockerfile を書くためのベストプラクティス解説編
PacemakerのMaster/Slave構成の基本と事例紹介(DRBD、PostgreSQLレプリケーション) @Open Source Confer...
バイトコードって言葉をよく目にするけど一体何なんだろう?(JJUG CCC 2022 Spring 発表資料)
インフラエンジニアってなんでしたっけ(仮)
3分でわかるAzureでのService Principal
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
OSC北海道2014_JPUG資料
「ドメイン駆動設計」の複雑さに立ち向かう
JIRA / Confluence の 必須プラグインはこれだ
入門 Kubeflow ~Kubernetesで機械学習をはじめるために~ (NTT Tech Conference #4 講演資料)
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
MLOps に基づく AI/ML 実運用最前線 ~画像、動画データにおける MLOps 事例のご紹介~(映像情報メディア学会2021年冬季大会企画セッショ...
概念モデリング再入門 + DDD
SQLアンチパターン - ジェイウォーク
メタプログラミングって何だろう
ゲームアーキテクチャパターン (Aurora Serverless / DynamoDB)
Uwpアプリケーション開発入門
イベント・ソーシングを知る
ドメイン駆動設計 コアドメインを語り合ってみよう
[Cloud OnAir] BigQuery の仕組みからベストプラクティスまでのご紹介 2018年9月6日 放送
Dockerfile を書くためのベストプラクティス解説編
Ad

Similar to Microsoft Graphことはじめ クエリパラメータ編 (8)

PPTX
Microsoft Graph完全に理解した気がしてた
PDF
今更聞けない!?Microsoft Graph で始める Office 365 データ活用と事例の紹介
PPTX
Microsoft Graphのことはじめ
PPTX
Microsoft Graphを使ってアプリケーションを作った時の話
PPTX
TeamsのチャネルとやりとりするWeb Applicationを作ったお話
PDF
Microsoft Graph API Library for Go
PPTX
今さら聞けないfacebook
PDF
Graph api introduction_20130425
Microsoft Graph完全に理解した気がしてた
今更聞けない!?Microsoft Graph で始める Office 365 データ活用と事例の紹介
Microsoft Graphのことはじめ
Microsoft Graphを使ってアプリケーションを作った時の話
TeamsのチャネルとやりとりするWeb Applicationを作ったお話
Microsoft Graph API Library for Go
今さら聞けないfacebook
Graph api introduction_20130425
Ad

More from DevTakas (14)

PPTX
Microsoft Graph Toolkitで手軽にM365フロント開発
PPTX
Azure Artifactsを触ってみよう
PPTX
Azure Web PubSub Serviceを触ってみた
PPTX
Microsoft Graph Toolkitを使ってGraph開発を体験しよう
PPTX
Azure ADアプリケーションを使用した認証のあれやこれ ASP.NET Core編
PPTX
Azure ADアプリケーションを使用した認証のあれやこれ
PPTX
ASP.NET Core WebAPIでODataを使おう
PPTX
Azure Event HubsでGraph変更通知を受け取る
PPTX
msal.js v2を触る
PPTX
僕はあなたを監視する(MS Graph Subscriptionのβで公開されたpresencesを使おう!)
PPTX
Azure AD Application を使用した認証のアレコレ
PPTX
Microsoft Graphの変更通知で遊ぶ
PPTX
AzureADの認証で失敗した話
PDF
msal.jsを使う
Microsoft Graph Toolkitで手軽にM365フロント開発
Azure Artifactsを触ってみよう
Azure Web PubSub Serviceを触ってみた
Microsoft Graph Toolkitを使ってGraph開発を体験しよう
Azure ADアプリケーションを使用した認証のあれやこれ ASP.NET Core編
Azure ADアプリケーションを使用した認証のあれやこれ
ASP.NET Core WebAPIでODataを使おう
Azure Event HubsでGraph変更通知を受け取る
msal.js v2を触る
僕はあなたを監視する(MS Graph Subscriptionのβで公開されたpresencesを使おう!)
Azure AD Application を使用した認証のアレコレ
Microsoft Graphの変更通知で遊ぶ
AzureADの認証で失敗した話
msal.jsを使う

Microsoft Graphことはじめ クエリパラメータ編