SlideShare a Scribd company logo
1 of 27
Teamsに投稿する時に
Microsoft Graphで
やらかした先生
情報システム部でない外部の人間の無力さを痛感する
自己紹介 髙尾 哲朗
システム構築のプロセス評価、改善、策定、開発フレームワークの設計、実装
管理、プリセールスやプロジェクトの立ち上げなど
ブログ :http://blog.processtune.com
プロフィール :Tetsuro Takao on
Facebook, Twitter or http://mvp.microsoft.com
コミュニティ :.NETラボの運営スタッフ
https://dotnetlab.connpass.com/
Microsoft MVP:Visual Studio and Developer Technologies
[July 2010 – June 2019]
失敗レベル別に解説します
失敗レベル1:サンプルはインターネットに山ほどあ
るから心配ないさぁ~
失敗レベル2:Graphエクスプローラー最強、ほかの
ツールはいらないねwww
失敗レベル3:リリース後の運用はセルフメンテナン
スということでよろしく!!
失敗レベルMAX:スコープとかは、要件が固まって
から後から追加すればいいんじゃ
ない?
質問:こんな立ち位置で開発したことある方?
発注会社
営業部 業務部
協力会社から出向し
て業務アプリを設計
総務部
システム部
Teamsで障害インシデントのアサインしてるから
…
エンタープライズでは、Office 365の導入がかなり進
んでいて、業務でTeamsを使っている会社は少なく
ありません。
今回の案件もそんな感じで、インシデント発生で
Teamsに書込みをして、該当のメンバー間で「誰が
対応するか?」「修理部品はどこそこに手配した」な
どをやり取りしているので、RPAやらなんか使ってシ
ステム化してくれとお願いされました。
失敗レベル1:サンプルはインターネットに山ほど
ある
できますがなぁ
じゃあお願い
実現可能
性調査
統計
データ
やら
参考資料
やら
仕事を取りに行っているので、“できる”こと
を前提に情報を収集し企画する(ここ重要)
失敗レベル1:サンプルはインターネットに山ほど
ある
サンプル動かすまでの
手続きも山ほどある
失敗レベル1:サンプル動かすまでの手続きも山ほ
どある 発注会社
営業部 業務部
協力会社から出向し
て業務アプリを設計
総務部
システム部
1)そもそもシステム部は通常業務がある上、余計な仕
事を持ってきた奴に好意的であるはずがない
2)システム部にAzureアプリケーションの認証設定や
OAuthの専門家が必ずいるわけではないので、セ
キュリティの安全性を説明することからはじめる
Azureアプリケーション作ってください
RPA用のAzureアカウントください
アプリのマニフェスト編集してください
失敗レベル1:サンプル動かすまでの手続きも山ほ
どある 発注会社
営業部 業務部
協力会社から出向し
て業務アプリを設計
総務部
システム部
3)セキュリティの安全性はAzureだから大丈夫ではな
くて、このような運用なので安全という視点で説明
4)お客さんの環境でサンプルを動かすわけですから、
トライ&エラーの要素が多く、同じ設定項目を何度
も編集してもらうこともある
Azureアプリケーション作ってください
RPA用のAzureアカウントください
アプリのマニフェスト編集してください
教訓:そもそもサンプルはAzureの管理者権限前提
イ
ン
タ
ー
ネ
ッ
ト
の
サ
ン
プ
ル
は
広
く
汎
用
的
な
状
況
で
書
い
て
あ
る
の
が
当
た
り
前
ど
の
よ
う
な
立
場
の
人
と
協
力
し
、
ど
の
よ
う
な
立
場
の
人
に
ど
ん
な
お
願
い
を
し
な
げ
れ
ば
い
け
な
い
の
か
を
イ
メ
ー
ジ
で
き
な
い
と
い
け
な
い
す
べ
て
の
工
程
に
つ
い
て
、
最
も
早
い
段
階
で
!
!
Microsoft Azure
教訓:そもそもサンプルはAzureの管理者権限前提
RPAアカウントはドメインに必要
ADFS
Azure Active Directory
Azure
Application
1) RPAアカウントはシステム部
の管轄にすべき
2) 認 証 の サ ン プ ル は AAD 、
ADFSのアカウントではない
grant_type
にpassword
は使えない
教訓:そもそもサンプルはAzureの管理者権限前提
教訓:そもそもサンプルはAzureの管理者権限前提
教訓:そもそもサンプルはAzureの管理者権限前提
失敗レベル2:Graphエクスプローラー最強
GraphエクスプローラーはPostmanを目指しているわけ
ではない。Graphアプリの開発の入り口として用意され
ているもの(ここ重要)
確かに最強
エラーの内容がすべて
理解できれば
ログインの際、許可し
たスコープは変えられ
ない。
Azureアカウントが必
要なので、開発開始の
前にシステム部に作成
してもらう必要がある
失敗レベル2:Graphエクスプローラー最強
エラーはほぼ読み解け
ないことを前提に確実
な知識でクエリをする
必要がある
管理者権限が必要なス
コープを使うのであれ
ば、システム部にセ
キュリティの安全性を
説明したうえで申請を
する。
管理者権限が必要なス
コープのサンプルクエ
リは使えないことを前
提に設計を行っていく
Microsoft Azure
失敗レベル2:Graphエクスプローラー最強
ADFS
Azure Active Directory
Azure
Application
1) RPAアカウントはユーザー対
話型の認証はできない
2) grant_typeはpasswordまた
はclient_credentials
grant_type、
client_credentials
はrefresh_tokenを
返さない
grant_type、
passwordはAAD側
のユーザーのみ
教訓:Postmanは必須、運用上の安全性を確保
設
計
時
に
開
発
す
る
シ
ス
テ
ム
に
必
要
な
最
小
の
権
限
の
ア
カ
ウ
ン
ト
を
シ
ス
テ
ム
部
に
作
成
し
て
も
ら
う
そ
の
た
め
に
セ
キ
ュ
リ
テ
ィ
の
説
明
は
必
須
。
ア
ー
キ
テ
ク
チ
ャ
の
話
で
な
く
運
用
上
の
セ
キ
ュ
リ
テ
ィ
の
話
そ
の
う
え
で
適
切
な
ス
コ
ー
プ
を
ア
プ
リ
ケ
ー
シ
ョ
ン
に
設
定
す
る
教訓:Postmanは必須、運用上の安全性を確保
失敗レベル3:リリース後の運用はセルフメンテナ
ンス
GraphエクスプローラーはPostmanを目指しているわけ
ではない。Graphアプリの開発の入り口として用意され
ているもの(ここ重要)
確かに最強
エラーの内容がすべて
理解できれば
ログインの際、許可し
たスコープは変えられ
ない。
Azureアカウントが必
要なので、開発開始の
前にシステム部に作成
してもらう必要がある
失敗レベル3:リリース後の運用はセルフメンテナ
ンス
エラーはほぼ読み解け
ないことを前提に確実
な知識でクエリをする
必要がある
管理者権限が必要なス
コープを使うのであれ
ば、システム部にセ
キュリティの安全性を
説明したうえで申請を
する
管理者権限が必要なス
コープのサンプルクエ
リは使えないことを前
提に設計を行っていく Teamsのチャンネルが
増えた時にどのように
システム側で管理する
のかを考えておく
教訓:OAuthは基本的にはプログラムでログイン
できない
シ
ー
ク
レ
ッ
ト
の
発
行
は
誰
が
や
る
の
か
、
そ
れ
を
ど
こ
に
保
存
し
て
お
く
の
か
、
そ
の
保
存
は
ど
の
よ
う
な
仕
組
み
で
安
全
性
が
確
保
さ
れ
て
い
る
の
か
を
熟
考
す
るリ
フ
レ
ッ
シ
ュ
・
ト
ー
ク
ン
は
永
久
に
使
え
る
わ
け
じ
ゃ
な
い
。
ど
の
タ
イ
ミ
ン
グ
で
ど
の
よ
う
に
更
新
す
る
の
か
を
綿
密
に
計
画
す
る
OAuth 2.0 全フローの図解と動画
https://qiita.com/TakahikoKawasaki/items/200951e5b5929f840a1f
Demo
ブラウザの起動
セルフメンテナンスのための管理画面の提供
シークレットの暗号化保存
Graphへの認証クエリの発行
(クライアント・クレデンシャル)
Graphへのトークン更新クエリの発行
GraphへのTeams投稿クエリの発行
一句
一
人
で
は
何
も
で
き
な
い
何
事
も
使
っ
て
な
ん
ぼ
情
シ
ス
の
方
髙
尾
Conclusion:贈る言葉
工数を見積もりするときは、自分がAzureポータルの
管理者になれるのかなどの具体的な事柄を綿密に精査
しないと利益も減るし、スケジュールも遅延します。
新しい仕事が始まるときは、個人の引っ越しのように
関係する人たちにあいさつしましょう。Azure、
Office 365でソリューションを構築するときはいろん
な人にいろんな事をお願いすることになります。
Source
Graph エクスプローラー - Microsoft Graph
https://developer.microsoft.com/ja-jp/graph/graph-explorer
Postman | API Development Environment
https://www.getpostman.com/
OAuth 2.0 全フローの図解と動画
https://qiita.com/TakahikoKawasaki/items/200951e5b5929f840a1f

More Related Content

Similar to TEAMSに投稿する時にMicrosoft Graphでやらかした先生

Bot Framework 最新情報 2018
Bot Framework 最新情報 2018Bot Framework 最新情報 2018
Bot Framework 最新情報 2018Yoshitaka Seo
 
Layout isfirstprocessofatomicdesign
Layout isfirstprocessofatomicdesignLayout isfirstprocessofatomicdesign
Layout isfirstprocessofatomicdesignTakao Tetsuro
 
Chat bot created by QnA Maker
Chat bot created by QnA MakerChat bot created by QnA Maker
Chat bot created by QnA MakerTakao Tetsuro
 
xR Developerなら知っておきたいカメラの基礎知識
xR Developerなら知っておきたいカメラの基礎知識xR Developerなら知っておきたいカメラの基礎知識
xR Developerなら知っておきたいカメラの基礎知識Satoshi Maemoto
 
TeamsのチャネルとやりとりするWeb Applicationを作ったお話
TeamsのチャネルとやりとりするWeb Applicationを作ったお話TeamsのチャネルとやりとりするWeb Applicationを作ったお話
TeamsのチャネルとやりとりするWeb Applicationを作ったお話DevTakas
 
Windows Windows上に作るチーム開発環境
Windows Windows上に作るチーム開発環境Windows Windows上に作るチーム開発環境
Windows Windows上に作るチーム開発環境Tadahiro Ishisaka
 
Intelligent cloud with Microsoft Graph.
Intelligent cloud with Microsoft Graph.Intelligent cloud with Microsoft Graph.
Intelligent cloud with Microsoft Graph.Takao Tetsuro
 
Microsoft loves PHP WebMatrix + Windows Azure
Microsoft loves PHP WebMatrix + Windows AzureMicrosoft loves PHP WebMatrix + Windows Azure
Microsoft loves PHP WebMatrix + Windows AzureTakeshi Shinmura
 
id=nagano nseg 合同新年会 LT資料
id=nagano nseg 合同新年会 LT資料id=nagano nseg 合同新年会 LT資料
id=nagano nseg 合同新年会 LT資料Masashi Takahashi
 
PlayFabとCognitiveを 連携させて健全なゲーム運営を
PlayFabとCognitiveを連携させて健全なゲーム運営をPlayFabとCognitiveを連携させて健全なゲーム運営を
PlayFabとCognitiveを 連携させて健全なゲーム運営をShinya Nakajima
 
その後のBash on windows
その後のBash on windowsその後のBash on windows
その後のBash on windowsKazushi Kamegawa
 
Hardware control by .NET Core 3.1
Hardware control by .NET Core 3.1Hardware control by .NET Core 3.1
Hardware control by .NET Core 3.1Atomu Hidaka
 
インフラエンジニアのスキルパターンを作ってみた話
インフラエンジニアのスキルパターンを作ってみた話インフラエンジニアのスキルパターンを作ってみた話
インフラエンジニアのスキルパターンを作ってみた話Ken SASAKI
 
成功したチーム 失敗したチーム -F.O.X Meetup #3-
成功したチーム 失敗したチーム -F.O.X Meetup #3-成功したチーム 失敗したチーム -F.O.X Meetup #3-
成功したチーム 失敗したチーム -F.O.X Meetup #3-Noriaki Kadota
 
Decentralized identity
Decentralized identityDecentralized identity
Decentralized identityTakao Tetsuro
 

Similar to TEAMSに投稿する時にMicrosoft Graphでやらかした先生 (20)

Bot Framework 最新情報 2018
Bot Framework 最新情報 2018Bot Framework 最新情報 2018
Bot Framework 最新情報 2018
 
AppCenter
AppCenterAppCenter
AppCenter
 
Layout isfirstprocessofatomicdesign
Layout isfirstprocessofatomicdesignLayout isfirstprocessofatomicdesign
Layout isfirstprocessofatomicdesign
 
NET5 and Diagnostics
NET5 and DiagnosticsNET5 and Diagnostics
NET5 and Diagnostics
 
Bot frameworksdk
Bot frameworksdkBot frameworksdk
Bot frameworksdk
 
Chat bot created by QnA Maker
Chat bot created by QnA MakerChat bot created by QnA Maker
Chat bot created by QnA Maker
 
xR Developerなら知っておきたいカメラの基礎知識
xR Developerなら知っておきたいカメラの基礎知識xR Developerなら知っておきたいカメラの基礎知識
xR Developerなら知っておきたいカメラの基礎知識
 
TeamsのチャネルとやりとりするWeb Applicationを作ったお話
TeamsのチャネルとやりとりするWeb Applicationを作ったお話TeamsのチャネルとやりとりするWeb Applicationを作ったお話
TeamsのチャネルとやりとりするWeb Applicationを作ったお話
 
Windows Windows上に作るチーム開発環境
Windows Windows上に作るチーム開発環境Windows Windows上に作るチーム開発環境
Windows Windows上に作るチーム開発環境
 
Intelligent cloud with Microsoft Graph.
Intelligent cloud with Microsoft Graph.Intelligent cloud with Microsoft Graph.
Intelligent cloud with Microsoft Graph.
 
Microsoft loves PHP WebMatrix + Windows Azure
Microsoft loves PHP WebMatrix + Windows AzureMicrosoft loves PHP WebMatrix + Windows Azure
Microsoft loves PHP WebMatrix + Windows Azure
 
20201128 Power Automate
20201128 Power Automate20201128 Power Automate
20201128 Power Automate
 
id=nagano nseg 合同新年会 LT資料
id=nagano nseg 合同新年会 LT資料id=nagano nseg 合同新年会 LT資料
id=nagano nseg 合同新年会 LT資料
 
PlayFabとCognitiveを 連携させて健全なゲーム運営を
PlayFabとCognitiveを連携させて健全なゲーム運営をPlayFabとCognitiveを連携させて健全なゲーム運営を
PlayFabとCognitiveを 連携させて健全なゲーム運営を
 
その後のBash on windows
その後のBash on windowsその後のBash on windows
その後のBash on windows
 
Hardware control by .NET Core 3.1
Hardware control by .NET Core 3.1Hardware control by .NET Core 3.1
Hardware control by .NET Core 3.1
 
インフラエンジニアのスキルパターンを作ってみた話
インフラエンジニアのスキルパターンを作ってみた話インフラエンジニアのスキルパターンを作ってみた話
インフラエンジニアのスキルパターンを作ってみた話
 
成功したチーム 失敗したチーム -F.O.X Meetup #3-
成功したチーム 失敗したチーム -F.O.X Meetup #3-成功したチーム 失敗したチーム -F.O.X Meetup #3-
成功したチーム 失敗したチーム -F.O.X Meetup #3-
 
Decentralized identity
Decentralized identityDecentralized identity
Decentralized identity
 
Microsoftの開発環境
Microsoftの開発環境Microsoftの開発環境
Microsoftの開発環境
 

More from Takao Tetsuro

Small Language Model Local Launch on AI Tour Tokyo
Small Language Model Local Launch on AI Tour TokyoSmall Language Model Local Launch on AI Tour Tokyo
Small Language Model Local Launch on AI Tour TokyoTakao Tetsuro
 
local launch small language model of AI.
local launch small language model of AI.local launch small language model of AI.
local launch small language model of AI.Takao Tetsuro
 
Implementation Approach of Artifical Intelligence
Implementation Approach of Artifical IntelligenceImplementation Approach of Artifical Intelligence
Implementation Approach of Artifical IntelligenceTakao Tetsuro
 
MAUIGraphicsNamespace.pptx
MAUIGraphicsNamespace.pptxMAUIGraphicsNamespace.pptx
MAUIGraphicsNamespace.pptxTakao Tetsuro
 
Polyglot Persistence and Graph Schema
Polyglot Persistence and Graph SchemaPolyglot Persistence and Graph Schema
Polyglot Persistence and Graph SchemaTakao Tetsuro
 
ServiceMeshEndpointWithMinimalAPIPublish.pptx
ServiceMeshEndpointWithMinimalAPIPublish.pptxServiceMeshEndpointWithMinimalAPIPublish.pptx
ServiceMeshEndpointWithMinimalAPIPublish.pptxTakao Tetsuro
 
OptonsPatternDotNet.pptx
OptonsPatternDotNet.pptxOptonsPatternDotNet.pptx
OptonsPatternDotNet.pptxTakao Tetsuro
 
ASP.NETCoreOptionsPattern.pptx
ASP.NETCoreOptionsPattern.pptxASP.NETCoreOptionsPattern.pptx
ASP.NETCoreOptionsPattern.pptxTakao Tetsuro
 
Wasm blazor and wasi 2
Wasm blazor and wasi 2Wasm blazor and wasi 2
Wasm blazor and wasi 2Takao Tetsuro
 
WebAssemblyとBlazor 、WebAssembly System Interfaceでコンテナライズの設計を解説
WebAssemblyとBlazor 、WebAssembly System Interfaceでコンテナライズの設計を解説WebAssemblyとBlazor 、WebAssembly System Interfaceでコンテナライズの設計を解説
WebAssemblyとBlazor 、WebAssembly System Interfaceでコンテナライズの設計を解説Takao Tetsuro
 
Interoperability of webassembly with javascript
Interoperability of webassembly with javascriptInteroperability of webassembly with javascript
Interoperability of webassembly with javascriptTakao Tetsuro
 
Interactive connection2
Interactive connection2Interactive connection2
Interactive connection2Takao Tetsuro
 
Relationship betweenddd and mvc
Relationship betweenddd and mvcRelationship betweenddd and mvc
Relationship betweenddd and mvcTakao Tetsuro
 
M365VM_PowerFX_takao-matsumoto_matsui_kojima
M365VM_PowerFX_takao-matsumoto_matsui_kojimaM365VM_PowerFX_takao-matsumoto_matsui_kojima
M365VM_PowerFX_takao-matsumoto_matsui_kojimaTakao Tetsuro
 
OpenStreetMap and Mapbox
OpenStreetMap and MapboxOpenStreetMap and Mapbox
OpenStreetMap and MapboxTakao Tetsuro
 
Excel on OneDrive is not a file
Excel on OneDrive is not a fileExcel on OneDrive is not a file
Excel on OneDrive is not a fileTakao Tetsuro
 
Development toolsforteamdevelopment
Development toolsforteamdevelopmentDevelopment toolsforteamdevelopment
Development toolsforteamdevelopmentTakao Tetsuro
 
React Helmet navigates SPA
React Helmet navigates SPAReact Helmet navigates SPA
React Helmet navigates SPATakao Tetsuro
 

More from Takao Tetsuro (20)

Small Language Model Local Launch on AI Tour Tokyo
Small Language Model Local Launch on AI Tour TokyoSmall Language Model Local Launch on AI Tour Tokyo
Small Language Model Local Launch on AI Tour Tokyo
 
local launch small language model of AI.
local launch small language model of AI.local launch small language model of AI.
local launch small language model of AI.
 
Implementation Approach of Artifical Intelligence
Implementation Approach of Artifical IntelligenceImplementation Approach of Artifical Intelligence
Implementation Approach of Artifical Intelligence
 
MAUIGraphicsNamespace.pptx
MAUIGraphicsNamespace.pptxMAUIGraphicsNamespace.pptx
MAUIGraphicsNamespace.pptx
 
Polyglot Persistence and Graph Schema
Polyglot Persistence and Graph SchemaPolyglot Persistence and Graph Schema
Polyglot Persistence and Graph Schema
 
ServiceMeshEndpointWithMinimalAPIPublish.pptx
ServiceMeshEndpointWithMinimalAPIPublish.pptxServiceMeshEndpointWithMinimalAPIPublish.pptx
ServiceMeshEndpointWithMinimalAPIPublish.pptx
 
OptonsPatternDotNet.pptx
OptonsPatternDotNet.pptxOptonsPatternDotNet.pptx
OptonsPatternDotNet.pptx
 
ASP.NETCoreOptionsPattern.pptx
ASP.NETCoreOptionsPattern.pptxASP.NETCoreOptionsPattern.pptx
ASP.NETCoreOptionsPattern.pptx
 
gRPCurlDotNet.pptx
gRPCurlDotNet.pptxgRPCurlDotNet.pptx
gRPCurlDotNet.pptx
 
Wasm blazor and wasi 2
Wasm blazor and wasi 2Wasm blazor and wasi 2
Wasm blazor and wasi 2
 
WebAssemblyとBlazor 、WebAssembly System Interfaceでコンテナライズの設計を解説
WebAssemblyとBlazor 、WebAssembly System Interfaceでコンテナライズの設計を解説WebAssemblyとBlazor 、WebAssembly System Interfaceでコンテナライズの設計を解説
WebAssemblyとBlazor 、WebAssembly System Interfaceでコンテナライズの設計を解説
 
Team development
Team developmentTeam development
Team development
 
Interoperability of webassembly with javascript
Interoperability of webassembly with javascriptInteroperability of webassembly with javascript
Interoperability of webassembly with javascript
 
Interactive connection2
Interactive connection2Interactive connection2
Interactive connection2
 
Relationship betweenddd and mvc
Relationship betweenddd and mvcRelationship betweenddd and mvc
Relationship betweenddd and mvc
 
M365VM_PowerFX_takao-matsumoto_matsui_kojima
M365VM_PowerFX_takao-matsumoto_matsui_kojimaM365VM_PowerFX_takao-matsumoto_matsui_kojima
M365VM_PowerFX_takao-matsumoto_matsui_kojima
 
OpenStreetMap and Mapbox
OpenStreetMap and MapboxOpenStreetMap and Mapbox
OpenStreetMap and Mapbox
 
Excel on OneDrive is not a file
Excel on OneDrive is not a fileExcel on OneDrive is not a file
Excel on OneDrive is not a file
 
Development toolsforteamdevelopment
Development toolsforteamdevelopmentDevelopment toolsforteamdevelopment
Development toolsforteamdevelopment
 
React Helmet navigates SPA
React Helmet navigates SPAReact Helmet navigates SPA
React Helmet navigates SPA
 

TEAMSに投稿する時にMicrosoft Graphでやらかした先生

Editor's Notes

  1. 今回のセッションではTeamsに書込みを行うプログラムを作成した時の“組織での動き方”についてお話しします。【クリック】
  2. 自己紹介をよむ 【クリック】
  3. 本日のお話しは失敗のレベルが浅い順にお話ししていきます。MAXレベルの失敗には皆さん注意しましょう。 【クリック】
  4. こんな立ち位置で仕事されたことがある方には伝わりやすい話だと思います。本日はここの人間が苦労した話です
  5. これをコンサルして設計して構築まで行いました。という話。結果としては成功で次フェーズの9月からの機能強化開発も発注いただいています。 それで、何が失敗か?というと【クリック】
  6. まず、コンサルから入ってと言いましたよね?私の経験から言うとコンサル会社と設計・プロジェクト管理の会社、構築の会社、運用は別会社、または同じ会社でも別の部署ですよね。コンサルの傾向としては、“できる”からスタートしてプリセールスを行います。まあ、技術的な実現の検証はインターネットのサンプルレベルで「動くよね」を確認して企画を出して、自信満々にプレゼンするわけです。もちろん私もそうして受注しました。インターネットのサンプルレベルで「動くよね」を確認するだけまだマシで、それすらしないコンサルを私はたくさん見てきましたから。 それで、サンプルはインターネットに山ほどあるわけですが…はい、次のページ【クリック】
  7. サンプルを動かすまでの手続きも山ほどあるわけです。 受注した会社の環境でサンプルを動かさないと設計ができないので、まずは設計チームに指示を出してサンプルを動かすところから始めました。 そうしたら そもそもAzureポータルでやることがたくさんあり、それはすべてシステム部にお願いしなければいけなくて、かつセキュリティの観点で安全性を説明する必要がありました。