今更聞けない!?Microsoft Graph で始める Office 365 データ活用と事例の紹介 AD33
今更きけない!? Microsoft Graph で始める Office 365 データ活用と事例の紹介 AD 33
中村憲一郎 (kenakamu) ソリューションアーキテクト https://qiita.com/kenakamu 趣味 : MCP を取ること 好きな技術は主に C#, UWP, Xamarin, API, PowerShell, DB, Node.js https://github.com/kenakamu/
本日の目標 Microsoft Graph
ご説明すること
ご説明すること Microsoft Graph の概念 Microsoft Graph の使い方 Microsoft Graph の事例
Microsoft Graph の概念 Microsoft Graph の使い方 Microsoft Graph の事例
Microsoft Graph https://graph.microsoft.com
Microsoft Graph 全ての Microsoft 365 のデータ Office 365 Windows 10 EMS 全ての 1 つの /me
なぜ Microsoft Graph? 歴史的背景 多くの Microsoft 製品 Exchange SharePoint Office Active Directory 異なる 複数の
なぜ Microsoft Graph? 歴史的背景 Office 365 Unified API (REST) Azure AD 認証 (OAuth 2.0)
なぜ Microsoft Graph? 歴史的背景 Microsoft Graph
Microsoft Graph 全ての Microsoft 365 のデータ Office 365 Windows 10 EMS 全ての 1 つの
Microsoft Graph
Microsoft Graph
Microsoft Graph の概念 Microsoft Graph の使い方 Microsoft Graph の事例
Microsoft Graph の概念 Microsoft Graph の使い方 Microsoft Graph の事例 API 紹介 Tips
Microsoft Graph における認証 Azure AD アプリケーションは Azure AD に登録 OAuth 2.0 アクセストークンベースの認可 OpenID Connect 認証情報の利用
アクセス許可の種類 委任されたアクセス ユーザーが明示的にアプリに権限を委任 /me が利用可能 アプリケーションアクセス 管理者による事前同意でサービスとして実行 /me が利用不可能
Microsoft Graph の権限 操作対象の All, Shared 等のリソース操作の範囲制約 Read や ReadWrite 等の操作
Microsoft Graph の権限
Azure AD の認証エンドポイント v1.0 エンドポイント 対象 : Azure AD/ADFS 登録 : portal.azure.com SDK: ADAL v2.0 エンドポイント 対象 : Azure AD/B2C/MSA 登録 : apps.dev.microsoft.com SDK: MSAL
アプリの種類 シナリオ 委任の権限 モバイル Web SPA 委任でユーザーの代理として アプリケーション権限 バックグランドサービス サービスとして 同意実行者 ユーザー権限はユーザーが同意 管理者権限は管理者が同意 管理者のみが同意可能 実際の権限 アプリに付与された権限 実際の権限 ユーザーの権限 アプリに付与された権限全て
デモ : アプリケーションの登録
デモ : MSAL を利用したアプリ
Microsoft Graph の概念 Microsoft Graph の使い方 Microsoft 認証 Graph の事例 API 紹介 Tips
Microsoft Graph を使った開発 試す Microsoft Graph エクスプローラー クイックスタート 学ぶ ドキュメントと API レファレンス 開発する SDK サンプル ツール Open API 定義
Microsoft Graph Office 365 Windows 10 EMS ユーザー, グループ 組織 Outlook SharePoint OneDrive Teams Planner Excel OneNote Activities デバイスリレーコマンド通知 Azure AD Intune Identity Manager Advanced Threat Analytics Advanced Threat Protection メール, 予定, 連絡先 チャネル, メッセージ ID 管理 管理ユニット アラート サイト リスト プラン タスク アクセス制御 アプリケーションとデバイス ポリシー ドライブ ファイル スプレッドシート グラフ 同期 ATA/ATP ノート ページ ドメイン
Microsoft Graph ブラウザですぐ試せる利用できるアカウント : オープンソース サンプル組織アカウントマイクロソフトアカウント
デモ : Graph エクスプローラー
Microsoft Graph 操作 HTTP メソッド説明例 一覧表示 GET アイテム一覧の取得 GET /users 取得 GET 特定アイテムの取得 GET /users/{id} 作成 POST/PUT 新規アイテムの作成 POST /users/ PUT /me/activities/{id} 更新 PATCH/PUT アイテムの更新 PATCH /users/{id} PUT /me/activities/{id} 削除 DELETE アイテムの削除 DELETE /users/{id} 実行 POST 操作の実行 POST /domains/{id}/verify バッチ POST 複数要求の実行 POST /$batch
Microsoft Graph クエリ説明例 $filter 行のフィルター /users?$filter=startswith(givenname, J ) $select 列のフィルター /users?$select=givenname,surname $orderby 結果の並べ替え /users?$orderby=displayname desc $top ページサイズの設定 /users?$top=10 $expand 関連リソースの取得 /groups?$expand=members $count 条件にあうレコード数を取得 /me/messages?$top=2&count=true $search メールと人物に対して検索 /me/messages?$search=pizza
Microsoft Graph API
1. ユーザーのプロファイル写真 要求 /photo/$value 応答 HTTP/1.1 200 OK
2. OneDrive ファイルのサムネイル 要求 thumbnails 応答 HTTP/1.1 200 OK
3. Microsoft Teams ライフサイクル
4. Activities APIs と Windows タイムライン 要求 { } "appactivityid": "myappactivityid", "appdisplayname": "MyApp", "activationurl": "[protocol]://uri/", "visualelements": {..} "historyitems":[..] myappactivityid
5. Excel のグラフ画像 要求 image 応答 HTTP/1.1 200 OK
デモ : Excel のグラフ画像
6. Microsoft Graph の拡張 オープン拡張 型が無いデータを簡単に格納 スキーマ拡張 型を持ったデータを格納 フィルターが行え共有しやすい
7. レポート 要求 period='d7 ) getonedriveusagefilecounts( 応答
8. インテリジェント機能 人の関連 メールや会話の頻度から 組織構造を超えた関連を取得 ドキュメントのトレンド 自分に関係があり 多くの人が見ているドキュメントの抽出 最近使った または共有されたドキュメント 重度の高いドキュメントの抽出
Microsoft Graph の概念 Microsoft Graph の使い方 Microsoft 認証 Graph の事例 API 紹介 Tips
TIP 1 POST/PATCH/PUT 結果が必要ない場合は応答を省略 不要なデータを削減してパフォーマンス向上 Tip Prefer return=minimal 要求ヘッダーの指定
TIP 2 取得列の最適化 必要なプロパティのみ指定 不要なデータを削減してパフォーマンス向上 Tip $select の利用 GET? $select=givenname,mail
TIP 3 取得行の最適化 必要なレコードのみ取得 不要なデータを削減してパフォーマンス向上 Tip $filter の利用 GET? $filter=department eq Sales & $select=givenname,mail
TIP 4 サーバー側で返すレコード数上限あり コレクション取得でページングの可能性常にあり Tip @odata.nextlink を常に確認
1. 常にページングされている前提をもつ 2. @odata.nextlink リンクで次のページを取得 3. @odata.nextlink が無くなった時点で全レコードの取得完了 4. @odata.nextlink リンクは変更せず使用
TIP 5 Webhooks + 差分クエリ ポーリング以上に最適化された変更の追跡 最適なポーリング間隔を決めることが困難 Tip Webhook をトリガー差分クエリでデータを取得
@odata.nextlink ページング中次ページのリンク @odata.deltalink レコードは取得済差分クエリのリンク
TIP 6 Microsoft Graph PowerApps Office 用のテンプレート Microsoft Flow Office トリガーと Office コネクター Azure Functions Microsoft Graph バインディング
Microsoft Graph の概念 Microsoft Graph の使い方 Microsoft Graph の事例
事例 1 シナリオ 入社 異動 退社などの人の動きや 複数場所に散在するプロファイルの一元化 処理 各種プロパティの設定ライセンスの付与グループへの追加情報の共有初期タスクの追加ネットワークの共有 等 実装 Microsoft Flow Azure Function PowerShell 等
事例 2 シナリオ 顧客管理システムや 他社内システムと Microsoft Teams の連携 処理 チームの作成プロパティの設定所有者とメンバーの管理チームの削除 実装 Microsoft Flow Azure Function Bot Framework PowerShell 等
事例 3 シナリオ OneDrive SharePoint など複数個所に散在するドキュメントの資産化 処理 ファイルのコピー / 移動 PDF へ変換共有の開始 / 停止 実装 Webhook/ 差分クエリ Microsoft Flow Azure Function
事例 4 シナリオ 会議の開催から 会議中の議事録 および会議後の情報共有 処理 参加者空き時間会議室の予約議事録の保存や共有タスクの割り当て 実装 PowerApps カスタムアプリ
事例 5 シナリオ 客先訪問など 移動を含んだ予定が複数ある場合の最適化 処理 予定の取得移動情報の取得予定の更新前後予定の作成 実装 Webhook/ 差分クエリ Microsoft Flow Bot Framework Azure Function
共通 ベストプラクティス トリガー 手動イベント発生時タイマー 処理 データの取得データの追加他サービス連携データをよりリッチに 実装 ユーザー操作アプリの場所サービス
まとめ
ご説明したこと
本日の目標 Microsoft Graph
Microsoft Graph
Microsoft Graph 今後の予定 新機能 クライアント通知 Teams 各種機能 Security API ベータから正式に 各種ベータは正式に 情報 Twitter Stack Overflow Blog ビデオ
https://graph.microsoft.com Twitter #MicrosoftGraph GitHub /MicrosoftGraph StackOverflow [MicrosoftGraph]
2018 Microsoft Corporation. All rights reserved. 本コンテンツの著作権 および本コンテンツ中に出てくる商標権 団体名 ロゴ 製品 サービスなどはそれぞれ 各権利保有者に帰属します