Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

msgraph.go: Go言語で Microsoft Graph プログラミング

第29回 Office 365 勉強会
https://jpo365ug.connpass.com/event/170202/
o365events
https://github.com/yaegashi/o365events

  • Be the first to comment

  • Be the first to like this

msgraph.go: Go言語で Microsoft Graph プログラミング

  1. 1. 第 29 回 Office 365 勉強会 2020-04-04 Takeshi Yaegashi
  2. 2. 自己紹介 八重樫 剛史 Takeshi Yaegashi  株式会社バンダイナムコスタジオ所属  Linux・Unix・OSS・低レベルなことが好きなエンジニア  ホームページ・ブログ https://l0w.dev Qiita https://qiita.com/yaegashi  最近の登壇  Microsoft de:code 2019 「DT01: ゲームメーカー目線で Azure を (略)」  Go Conference 2019 Autumn 「Microsoft Graph API Library for Go」  Ansiblejpディベロッパー部 2020.02「 AnsibleでAzureインフラを(略) 」  Microsoft Open Tech Night #6 「Terraform Provider for Microsoft Graph」
  3. 3. 今日の話題  Microsoft Graph について  Go 言語について  msgraph.go について  o365events (COVID-19 対策ツール) について
  4. 4. Microsoft Graph  https://developer.microsoft.com/ja-jp/graph  Microsoft のクラウドリソースを統一的に扱える RESTful API サービス  様々な Office 365 アプリのバックエンド  Azure Active Directory: ユーザー、グループ、アプリ登録、ライセンス、etc.  オンラインアプリ: SharePoint, OneDrive, OneNote, Outlook, Teams, Excel, etc.
  5. 5. Go 言語  https://golang.org/  Google 製のプログラミング言語 (2009)  C ライクでシンプルな文法、豊富なライブラリ  サーバー、インフラ、コマンドラインツール (CLI) が得意分野  Docker、Kubernetes、Terraform など、 現代のクラウドインフラの実装主力言語  マルチプラットフォーム  Windows, macOS, Linux の実行ファイルが簡単に作れる  マスコット Gopher (ホリネズミ)
  6. 6. msgraph.go  https://github.com/yaegashi/msgraph.go  Go 言語用の Microsoft Graph クライアントライブラリ  ほとんどの Microsoft Graph リソース操作に対応 (コード自動生成)  利用例  matterbridge  チャット中継ソフト Teams, Slack, Mattermost, IRC, etc. に対応  Terraform Provider for Microsoft Graph  Azure インフラ内のユーザー、グループ、アプリなどの登録削除の自動化  1000 人の Office 365 ユーザーもあっというまに作れる
  7. 7. o365events  https://github.com/yaegashi/o365events  msgraph.go で作ったコマンドラインツール (CLI)  Office 365 カレンダーからイベントと出席者一覧を Excel 形式で出力  SharePoint Online のドキュメントライブラリに直接アップロード  Windows, macOS, Linux 版の実行ファイルを提供 (リリース)  COVID-19 対応の一環として試作したもの  万が一 COVID-19 の発症者が出た場合、 早急に濃厚接触者をリストアップする必要がある  o365events で同じ会議室を利用した人をリストアップする
  8. 8. o365events 使用方法  初回実行時に次のように出力されるので、 https://microsoft.com/devicelogin を開いてコード (下記例ではHDZSYAKLD) を入力しカレンダーにアクセス権限のあるユーザーでサインインする  token_cache.json という認証情報が書かれたファイルが作られる 次回以降はこのファイルを使って自動サインインする $ o365events To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code HDZSYAKLD to authenticate.
  9. 9. o365events ファイル出力  Office 365 会議室アカウントのメールアドレスを引数に渡すと、 events.xlsx ファイルに出力してくれる $ o365events room-a@l0wdev.onmicrosoft.com room-b@l0wdev.onmicrosoft.com 2020/04/03 20:24:07 I: User room-a@l0wdev.onmicrosoft.com 2020/04/03 20:24:08 I: Fetching events of room-a@l0wdev.onmicrosoft.com (5fc084ba- b8fb-479f-bbdc-456ea8b7880b) 2020/04/03 20:24:08 I: Got 28 events 2020/04/03 20:24:08 I: User room-b@l0wdev.onmicrosoft.com 2020/04/03 20:24:08 I: Fetching events of room-b@l0wdev.onmicrosoft.com (9349a25d- 9f8b-47fd-85d2-22b2a512409d) 2020/04/03 20:24:09 I: Got 3 events 2020/04/03 20:24:09 I: Writing to events.xlsx
  10. 10. o365events アップロード  SharePoint Online のドキュメントライブラリに Excel ファイルを直接アップロードすることも可能 $ o365events -start 20200401 -end 20200430 -output https://l0wdev.sharepoint.com/teams/o365events/Shared%20Documents/events.xlsx room-a@l0wdev.onmicrosoft.com room-b@l0wdev.onmicrosoft.com room-c@l0wdev.onmicrosoft.com 2020/04/04 03:40:35 I: User room-a@l0wdev.onmicrosoft.com 2020/04/04 03:40:37 I: Fetching events of room-a@l0wdev.onmicrosoft.com (5fc084ba-b8fb-479f-bbdc-456ea8b7880b) 2020/04/04 03:40:38 I: Got 28 events 2020/04/04 03:40:38 I: User room-b@l0wdev.onmicrosoft.com 2020/04/04 03:40:38 I: Fetching events of room-b@l0wdev.onmicrosoft.com (9349a25d-9f8b-47fd-85d2-22b2a512409d) 2020/04/04 03:40:39 I: Got 3 events 2020/04/04 03:40:39 I: User room-c@l0wdev.onmicrosoft.com 2020/04/04 03:40:40 I: Fetching events of room-c@l0wdev.onmicrosoft.com (85b5f7d3-47f3-4c95-978f-1d846cbaae7d) 2020/04/04 03:40:40 I: Got 5 events 2020/04/04 03:40:40 I: Writing to https://l0wdev.sharepoint.com/teams/o365events/Shared%20Documents/events.xlsx
  11. 11. o365events 予定表の例 会議室アカウントが3つある room-a@l0wdev.onmicrosoft.com room-b@l0wdev.onmicrosoft.com room-c@l0wdev.onmicrosoft.com
  12. 12. o365events Excel 出力例 会議室アカウントごとに ワークシートが作られる 会議ごとの 出席者のリスト Outlook Online リンク
  13. 13. o365events まとめ①  Go 言語の特長を生かしたツール作成ができた  Windows, macOS, Linux 用の CLI ツールが簡単にビルド・配布できる  msgraph.go で Office 365 リソース (Outlook, SharePoint) に簡単アクセス
  14. 14. o365events まとめ②  COVID-19 対策ツール (濃厚接触者追跡)としては課題・改善点が多い  Office 365 カレンダーの情報だけでは会議出席者を完全に追跡できない Outlook には来客者などが記載されていないことが多い  日次で SharePoint Online に Excel ファイルをアップロードして共有し 出席者情報をみんなで事後補完する運用を目論んだが 、 Excel Online があまりにも使いづらくて断念  PowerApps で Excel の出席者情報を簡単に閲覧・修正できるアプリを 作ろうとして挫折中
  15. 15. msgraph.go 情報  msgraph.go https://github.com/yaegashi/msgraph.go  package msgraph (v1.0) リファレンスマニュアル https://pkg.go.dev/github.com/yaegashi/msgraph.go/v1.0  msgraph.go プログラミング入門 https://l0w.dev/posts/msgraph.go-programming/  o365events も解説の記事を書きます!
  16. 16. おわり

×