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

Y
第 29 回 Office 365 勉強会
2020-04-04 Takeshi Yaegashi
自己紹介
八重樫 剛史 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」
今日の話題
 Microsoft Graph について
 Go 言語について
 msgraph.go について
 o365events (COVID-19 対策ツール) について
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.
Go 言語
 https://golang.org/
 Google 製のプログラミング言語 (2009)
 C ライクでシンプルな文法、豊富なライブラリ
 サーバー、インフラ、コマンドラインツール (CLI) が得意分野
 Docker、Kubernetes、Terraform など、
現代のクラウドインフラの実装主力言語
 マルチプラットフォーム
 Windows, macOS, Linux の実行ファイルが簡単に作れる
 マスコット Gopher (ホリネズミ)
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 ユーザーもあっというまに作れる
o365events
 https://github.com/yaegashi/o365events
 msgraph.go で作ったコマンドラインツール (CLI)
 Office 365 カレンダーからイベントと出席者一覧を Excel 形式で出力
 SharePoint Online のドキュメントライブラリに直接アップロード
 Windows, macOS, Linux 版の実行ファイルを提供 (リリース)
 COVID-19 対応の一環として試作したもの
 万が一 COVID-19 の発症者が出た場合、
早急に濃厚接触者をリストアップする必要がある
 o365events で同じ会議室を利用した人をリストアップする
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.
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
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
o365events 予定表の例
会議室アカウントが3つある
room-a@l0wdev.onmicrosoft.com
room-b@l0wdev.onmicrosoft.com
room-c@l0wdev.onmicrosoft.com
o365events Excel 出力例
会議室アカウントごとに
ワークシートが作られる
会議ごとの
出席者のリスト
Outlook
Online
リンク
o365events まとめ①
 Go 言語の特長を生かしたツール作成ができた
 Windows, macOS, Linux 用の CLI ツールが簡単にビルド・配布できる
 msgraph.go で Office 365 リソース (Outlook, SharePoint) に簡単アクセス
o365events まとめ②
 COVID-19 対策ツール (濃厚接触者追跡)としては課題・改善点が多い
 Office 365 カレンダーの情報だけでは会議出席者を完全に追跡できない
Outlook には来客者などが記載されていないことが多い
 日次で SharePoint Online に Excel ファイルをアップロードして共有し
出席者情報をみんなで事後補完する運用を目論んだが 、
Excel Online があまりにも使いづらくて断念
 PowerApps で Excel の出席者情報を簡単に閲覧・修正できるアプリを
作ろうとして挫折中
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 も解説の記事を書きます!
おわり
1 of 16

Recommended

Microsoft Graph API Library for Go by
Microsoft Graph API Library for GoMicrosoft Graph API Library for Go
Microsoft Graph API Library for Goyaegashi
4.5K views27 slides
AnsibleでAzureの インフラを管理する話 + α by
AnsibleでAzureの インフラを管理する話 + αAnsibleでAzureの インフラを管理する話 + α
AnsibleでAzureの インフラを管理する話 + αyaegashi
477 views17 slides
2105年、マイクロソフト関連記事ランキングベスト20 新野さん by
2105年、マイクロソフト関連記事ランキングベスト20 新野さん2105年、マイクロソフト関連記事ランキングベスト20 新野さん
2105年、マイクロソフト関連記事ランキングベスト20 新野さんKazuo Shimokawa
942 views22 slides
Office アドイン ハンズオン by
Office アドイン ハンズオンOffice アドイン ハンズオン
Office アドイン ハンズオンkinuasa
1.1K views40 slides
個人の生産性を上げるために。 Office 365 サービスを連携して使おう by
個人の生産性を上げるために。 Office 365 サービスを連携して使おう個人の生産性を上げるために。 Office 365 サービスを連携して使おう
個人の生産性を上げるために。 Office 365 サービスを連携して使おうmokudai masayuki
1.4K views29 slides
社内のリース車の利用状況を Power BI で可視化してみた by
社内のリース車の利用状況を Power BI で可視化してみた社内のリース車の利用状況を Power BI で可視化してみた
社内のリース車の利用状況を Power BI で可視化してみたJunichi Kodama
634 views13 slides

More Related Content

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

Power Appsで Excel関数を利用する3つの方法 by
Power Appsで Excel関数を利用する3つの方法Power Appsで Excel関数を利用する3つの方法
Power Appsで Excel関数を利用する3つの方法Nagao Hiroaki
947 views26 slides
それは本当にAutomate? 改めて考えるPower Automate by
それは本当にAutomate? 改めて考えるPower Automateそれは本当にAutomate? 改めて考えるPower Automate
それは本当にAutomate? 改めて考えるPower AutomateTomoyuki Obi
1.2K views30 slides
Azure Event HubsでGraph変更通知を受け取る by
Azure Event HubsでGraph変更通知を受け取るAzure Event HubsでGraph変更通知を受け取る
Azure Event HubsでGraph変更通知を受け取るDevTakas
313 views26 slides
ノンコーディングで LINE Bot 開発! Azure Logic Apps × Azure Cognitive Services ×LINE メッセー... by
ノンコーディングで LINE Bot 開発! Azure Logic Apps × Azure Cognitive Services ×LINE メッセー...ノンコーディングで LINE Bot 開発! Azure Logic Apps × Azure Cognitive Services ×LINE メッセー...
ノンコーディングで LINE Bot 開発! Azure Logic Apps × Azure Cognitive Services ×LINE メッセー...典子 松本
3.9K views49 slides
これから Azure Sphere で開発する方へ by
これから Azure Sphere で開発する方へこれから Azure Sphere で開発する方へ
これから Azure Sphere で開発する方へTakashi Matsuoka
776 views23 slides
サーバーレスやマイクロサービスへの"チャレンジ"を後押ししてくれるセッションを紹介 by
サーバーレスやマイクロサービスへの"チャレンジ"を後押ししてくれるセッションを紹介サーバーレスやマイクロサービスへの"チャレンジ"を後押ししてくれるセッションを紹介
サーバーレスやマイクロサービスへの"チャレンジ"を後押ししてくれるセッションを紹介Yuta Matsumura
1.2K views32 slides

Similar to msgraph.go: Go言語で Microsoft Graph プログラミング(20)

Power Appsで Excel関数を利用する3つの方法 by Nagao Hiroaki
Power Appsで Excel関数を利用する3つの方法Power Appsで Excel関数を利用する3つの方法
Power Appsで Excel関数を利用する3つの方法
Nagao Hiroaki947 views
それは本当にAutomate? 改めて考えるPower Automate by Tomoyuki Obi
それは本当にAutomate? 改めて考えるPower Automateそれは本当にAutomate? 改めて考えるPower Automate
それは本当にAutomate? 改めて考えるPower Automate
Tomoyuki Obi1.2K views
Azure Event HubsでGraph変更通知を受け取る by DevTakas
Azure Event HubsでGraph変更通知を受け取るAzure Event HubsでGraph変更通知を受け取る
Azure Event HubsでGraph変更通知を受け取る
DevTakas 313 views
ノンコーディングで LINE Bot 開発! Azure Logic Apps × Azure Cognitive Services ×LINE メッセー... by 典子 松本
ノンコーディングで LINE Bot 開発! Azure Logic Apps × Azure Cognitive Services ×LINE メッセー...ノンコーディングで LINE Bot 開発! Azure Logic Apps × Azure Cognitive Services ×LINE メッセー...
ノンコーディングで LINE Bot 開発! Azure Logic Apps × Azure Cognitive Services ×LINE メッセー...
典子 松本3.9K views
これから Azure Sphere で開発する方へ by Takashi Matsuoka
これから Azure Sphere で開発する方へこれから Azure Sphere で開発する方へ
これから Azure Sphere で開発する方へ
Takashi Matsuoka776 views
サーバーレスやマイクロサービスへの"チャレンジ"を後押ししてくれるセッションを紹介 by Yuta Matsumura
サーバーレスやマイクロサービスへの"チャレンジ"を後押ししてくれるセッションを紹介サーバーレスやマイクロサービスへの"チャレンジ"を後押ししてくれるセッションを紹介
サーバーレスやマイクロサービスへの"チャレンジ"を後押ししてくれるセッションを紹介
Yuta Matsumura1.2K views
Power Platform Summary by Yugo Shimizu
Power Platform  SummaryPower Platform  Summary
Power Platform Summary
Yugo Shimizu2.4K views
SharePoint Framework によるモダンサイトのカスタマイズ by Hiroaki Oikawa
SharePoint Framework によるモダンサイトのカスタマイズSharePoint Framework によるモダンサイトのカスタマイズ
SharePoint Framework によるモダンサイトのカスタマイズ
Hiroaki Oikawa3.4K views
Data & AI Update 情報 - 2020年4月版 by Takeshi Fukuhara
Data & AI Update 情報 - 2020年4月版Data & AI Update 情報 - 2020年4月版
Data & AI Update 情報 - 2020年4月版
Takeshi Fukuhara1K views
Event Report - Microsoft Ignite2017 by Yukako Shimizu
Event Report - Microsoft Ignite2017Event Report - Microsoft Ignite2017
Event Report - Microsoft Ignite2017
Yukako Shimizu292 views
Office アドインの紹介 by kinuasa
Office アドインの紹介Office アドインの紹介
Office アドインの紹介
kinuasa922 views
Teams を使ったオンライン講習会Tips by mokudai masayuki
Teams を使ったオンライン講習会TipsTeams を使ったオンライン講習会Tips
Teams を使ったオンライン講習会Tips
mokudai masayuki2.3K views
CDS が DirectQuery をサポートしたのでそれを紹介しながら新機能を紹介していきます by Yugo Shimizu
CDS が DirectQuery をサポートしたのでそれを紹介しながら新機能を紹介していきますCDS が DirectQuery をサポートしたのでそれを紹介しながら新機能を紹介していきます
CDS が DirectQuery をサポートしたのでそれを紹介しながら新機能を紹介していきます
Yugo Shimizu2.2K views
マイクロソフトの AI プラットフォーム & Cognitive Services 概要 ~ Ignite 2020 Recap by Ayako Omori
マイクロソフトの AI プラットフォーム & Cognitive Services 概要 ~ Ignite 2020 Recapマイクロソフトの AI プラットフォーム & Cognitive Services 概要 ~ Ignite 2020 Recap
マイクロソフトの AI プラットフォーム & Cognitive Services 概要 ~ Ignite 2020 Recap
Ayako Omori299 views
Intelligent cloud with Microsoft Graph. by Takao Tetsuro
Intelligent cloud with Microsoft Graph.Intelligent cloud with Microsoft Graph.
Intelligent cloud with Microsoft Graph.
Takao Tetsuro79 views
にぎやか 3 人組が選ぶ Microsoft 365 注目アップデート 7 選 by Hirofumi Ota
にぎやか 3 人組が選ぶ Microsoft 365 注目アップデート 7 選にぎやか 3 人組が選ぶ Microsoft 365 注目アップデート 7 選
にぎやか 3 人組が選ぶ Microsoft 365 注目アップデート 7 選
Hirofumi Ota1.5K views
データがない?あるある!!そこら中にあるんだぞ!~Web から取得できるデータの可能性~ by Yugo Shimizu
データがない?あるある!!そこら中にあるんだぞ!~Web から取得できるデータの可能性~データがない?あるある!!そこら中にあるんだぞ!~Web から取得できるデータの可能性~
データがない?あるある!!そこら中にあるんだぞ!~Web から取得できるデータの可能性~
Yugo Shimizu3K views
[Japan M365 Dev UG] Teams Toolkit v4 を使ってみよう! by Tomomi Imura
[Japan M365 Dev UG] Teams Toolkit v4 を使ってみよう![Japan M365 Dev UG] Teams Toolkit v4 を使ってみよう!
[Japan M365 Dev UG] Teams Toolkit v4 を使ってみよう!
Tomomi Imura240 views

More from yaegashi

Terraforming Windows Virtual Desktop Infrastructure on Azure by
Terraforming Windows Virtual Desktop Infrastructure on AzureTerraforming Windows Virtual Desktop Infrastructure on Azure
Terraforming Windows Virtual Desktop Infrastructure on Azureyaegashi
127 views18 slides
Azure DevOps で実現する Unity アプリのハイパフォーマンス CI/CD by
Azure DevOps で実現する Unity アプリのハイパフォーマンス CI/CDAzure DevOps で実現する Unity アプリのハイパフォーマンス CI/CD
Azure DevOps で実現する Unity アプリのハイパフォーマンス CI/CDyaegashi
204 views57 slides
Customazed CLI: カスタムVMイメージ作成支援ツール by
Customazed CLI: カスタムVMイメージ作成支援ツールCustomazed CLI: カスタムVMイメージ作成支援ツール
Customazed CLI: カスタムVMイメージ作成支援ツールyaegashi
678 views16 slides
Goで作って配布するAzureコマンドラインユーティリティ by
Goで作って配布するAzureコマンドラインユーティリティGoで作って配布するAzureコマンドラインユーティリティ
Goで作って配布するAzureコマンドラインユーティリティyaegashi
226 views16 slides
JTF2020 クロスコンパイルだけが能ではない組み込みLinuxシステムのCI/CDインフラ構築 by
JTF2020 クロスコンパイルだけが能ではない組み込みLinuxシステムのCI/CDインフラ構築JTF2020 クロスコンパイルだけが能ではない組み込みLinuxシステムのCI/CDインフラ構築
JTF2020 クロスコンパイルだけが能ではない組み込みLinuxシステムのCI/CDインフラ構築yaegashi
156 views27 slides
msgraph: Terraform provider for Microsoft Graph by
msgraph: Terraform provider for Microsoft Graphmsgraph: Terraform provider for Microsoft Graph
msgraph: Terraform provider for Microsoft Graphyaegashi
71 views26 slides

More from yaegashi(11)

Terraforming Windows Virtual Desktop Infrastructure on Azure by yaegashi
Terraforming Windows Virtual Desktop Infrastructure on AzureTerraforming Windows Virtual Desktop Infrastructure on Azure
Terraforming Windows Virtual Desktop Infrastructure on Azure
yaegashi127 views
Azure DevOps で実現する Unity アプリのハイパフォーマンス CI/CD by yaegashi
Azure DevOps で実現する Unity アプリのハイパフォーマンス CI/CDAzure DevOps で実現する Unity アプリのハイパフォーマンス CI/CD
Azure DevOps で実現する Unity アプリのハイパフォーマンス CI/CD
yaegashi204 views
Customazed CLI: カスタムVMイメージ作成支援ツール by yaegashi
Customazed CLI: カスタムVMイメージ作成支援ツールCustomazed CLI: カスタムVMイメージ作成支援ツール
Customazed CLI: カスタムVMイメージ作成支援ツール
yaegashi678 views
Goで作って配布するAzureコマンドラインユーティリティ by yaegashi
Goで作って配布するAzureコマンドラインユーティリティGoで作って配布するAzureコマンドラインユーティリティ
Goで作って配布するAzureコマンドラインユーティリティ
yaegashi226 views
JTF2020 クロスコンパイルだけが能ではない組み込みLinuxシステムのCI/CDインフラ構築 by yaegashi
JTF2020 クロスコンパイルだけが能ではない組み込みLinuxシステムのCI/CDインフラ構築JTF2020 クロスコンパイルだけが能ではない組み込みLinuxシステムのCI/CDインフラ構築
JTF2020 クロスコンパイルだけが能ではない組み込みLinuxシステムのCI/CDインフラ構築
yaegashi156 views
msgraph: Terraform provider for Microsoft Graph by yaegashi
msgraph: Terraform provider for Microsoft Graphmsgraph: Terraform provider for Microsoft Graph
msgraph: Terraform provider for Microsoft Graph
yaegashi71 views
go generate 完全入門 by yaegashi
go generate 完全入門go generate 完全入門
go generate 完全入門
yaegashi1.6K views
Raspberry Pi + Go で IoT した話 by yaegashi
Raspberry Pi + Go で IoT した話Raspberry Pi + Go で IoT した話
Raspberry Pi + Go で IoT した話
yaegashi3.1K views
golang binary hacks by yaegashi
golang binary hacksgolang binary hacks
golang binary hacks
yaegashi2.8K views
StackExchangeで見たシステムプログラミング案件 by yaegashi
StackExchangeで見たシステムプログラミング案件StackExchangeで見たシステムプログラミング案件
StackExchangeで見たシステムプログラミング案件
yaegashi434 views
Ansible モジュール 作成・配布・貢献 by yaegashi
Ansible モジュール 作成・配布・貢献Ansible モジュール 作成・配布・貢献
Ansible モジュール 作成・配布・貢献
yaegashi2.1K views

Recently uploaded

光コラボは契約してはいけない by
光コラボは契約してはいけない光コラボは契約してはいけない
光コラボは契約してはいけないTakuya Matsunaga
18 views17 slides
定例会スライド_キャチs 公開用.pdf by
定例会スライド_キャチs 公開用.pdf定例会スライド_キャチs 公開用.pdf
定例会スライド_キャチs 公開用.pdfKeio Robotics Association
121 views64 slides
Windows 11 information that can be used at the development site by
Windows 11 information that can be used at the development siteWindows 11 information that can be used at the development site
Windows 11 information that can be used at the development siteAtomu Hidaka
88 views41 slides
SNMPセキュリティ超入門 by
SNMPセキュリティ超入門SNMPセキュリティ超入門
SNMPセキュリティ超入門mkoda
376 views15 slides
SSH応用編_20231129.pdf by
SSH応用編_20231129.pdfSSH応用編_20231129.pdf
SSH応用編_20231129.pdficebreaker4
353 views13 slides

Recently uploaded(11)

光コラボは契約してはいけない by Takuya Matsunaga
光コラボは契約してはいけない光コラボは契約してはいけない
光コラボは契約してはいけない
Takuya Matsunaga18 views
Windows 11 information that can be used at the development site by Atomu Hidaka
Windows 11 information that can be used at the development siteWindows 11 information that can be used at the development site
Windows 11 information that can be used at the development site
Atomu Hidaka88 views
SNMPセキュリティ超入門 by mkoda
SNMPセキュリティ超入門SNMPセキュリティ超入門
SNMPセキュリティ超入門
mkoda376 views
SSH応用編_20231129.pdf by icebreaker4
SSH応用編_20231129.pdfSSH応用編_20231129.pdf
SSH応用編_20231129.pdf
icebreaker4353 views
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料) by NTT DATA Technology & Innovation
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
The Things Stack説明資料 by The Things Industries by CRI Japan, Inc.
The Things Stack説明資料 by The Things IndustriesThe Things Stack説明資料 by The Things Industries
The Things Stack説明資料 by The Things Industries
CRI Japan, Inc.71 views
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20... by NTT DATA Technology & Innovation
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...

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

  • 1. 第 29 回 Office 365 勉強会 2020-04-04 Takeshi Yaegashi
  • 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. 今日の話題  Microsoft Graph について  Go 言語について  msgraph.go について  o365events (COVID-19 対策ツール) について
  • 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. Go 言語  https://golang.org/  Google 製のプログラミング言語 (2009)  C ライクでシンプルな文法、豊富なライブラリ  サーバー、インフラ、コマンドラインツール (CLI) が得意分野  Docker、Kubernetes、Terraform など、 現代のクラウドインフラの実装主力言語  マルチプラットフォーム  Windows, macOS, Linux の実行ファイルが簡単に作れる  マスコット Gopher (ホリネズミ)
  • 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. o365events  https://github.com/yaegashi/o365events  msgraph.go で作ったコマンドラインツール (CLI)  Office 365 カレンダーからイベントと出席者一覧を Excel 形式で出力  SharePoint Online のドキュメントライブラリに直接アップロード  Windows, macOS, Linux 版の実行ファイルを提供 (リリース)  COVID-19 対応の一環として試作したもの  万が一 COVID-19 の発症者が出た場合、 早急に濃厚接触者をリストアップする必要がある  o365events で同じ会議室を利用した人をリストアップする
  • 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. 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. 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
  • 13. o365events まとめ①  Go 言語の特長を生かしたツール作成ができた  Windows, macOS, Linux 用の CLI ツールが簡単にビルド・配布できる  msgraph.go で Office 365 リソース (Outlook, SharePoint) に簡単アクセス
  • 14. o365events まとめ②  COVID-19 対策ツール (濃厚接触者追跡)としては課題・改善点が多い  Office 365 カレンダーの情報だけでは会議出席者を完全に追跡できない Outlook には来客者などが記載されていないことが多い  日次で SharePoint Online に Excel ファイルをアップロードして共有し 出席者情報をみんなで事後補完する運用を目論んだが 、 Excel Online があまりにも使いづらくて断念  PowerApps で Excel の出席者情報を簡単に閲覧・修正できるアプリを 作ろうとして挫折中
  • 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 も解説の記事を書きます!