65
※本セッションでお伝えする内容は 2017/3/27 時点の情報で

現場ではこう使った~Office 365 と Azure Functions、Azure Data Factory、Azure SQL Database, Power BI によるデータ収集と可視化~

Embed Size (px)

Citation preview

※本セッションでお伝えする内容は 2017/3/27 時点の情報です。

話者紹介

(C) Recruit Career Co., Ltd. All rights reserved.

リクルートキャリア

安 昌浩

ビジネス背景

ARMテンプレート

日本マイクロソフト

大田 昌幸

Azure Functions

Azure Storage

Office 365

日本マイクロソフト

土井 貴彦

Data Factory

SQL Database

Power BI

会社の目指す未来と果たす社会的使命

(C) Recruit Career Co., Ltd. All rights reserved.

ひとりでも多くの人たちが「働く喜び」を膨らませ、「働く喜び」の輪が、新たな活力を生み出している社会を創りたい

Our Vision

雇用を取り巻く環境変化

(C) Recruit Career Co., Ltd. All rights reserved.

5,900

6,000

6,100

6,200

6,300

6,400

6,500

1 2 3 4

0

500

1,000

1,500

2,000

2,500

3,000

3,500

1 2 3 4 5 6 7

万人

1995年 2000年 2005年 2010年2015年

①労働人口減少人口ボーナス期→人口オーナス期

②産業構造変化製造業中心 → サービス業中心

③テクノロジーの発展人や企業の力を最適化、極大化

0.2 1.43.2 4.4

9

13

18

24.3

31.5

0

5

10

15

20

25

30

35

CPUの処理速度推移

2 12 40 160

10001500

3000

4000

6000

0

1000

2000

3000

4000

5000

6000

7000

HDDの記憶密度の推移

サービス業従事者

製造業従事者

万人

1995年 2000年 2005年 2010年2015年

GHz

GB

出典:総務相「通信自由化意向の通信政策の評価とICT社会の未来像等に関する調査研究(平成27年)

求められる働き方の「Re・Design」

(C) Recruit Career Co., Ltd. All rights reserved.

個人

多様性

企業

生産性

>

(C) Recruit Career Co., Ltd. All rights reserved.

我々が解決したかった課題

新入社員・転職者が直面する「悲しみの谷」

(C) Recruit Career Co., Ltd. All rights reserved.

「悲しみの谷」本来の持ち味が発揮できない状況

t

Engagement

「悲しみの谷」の克服は日本にとって大きな命題

(C) Recruit Career Co., Ltd. All rights reserved.

いかに短くするか?

いかに浅くするか?t

「悲しみの谷」本来の持ち味が発揮できない状況

t

Engagement

(C) Recruit Career Co., Ltd. All rights reserved.

Communication(意思疎通)

Clear(自覚)

Choice(選択)

Evidence based HRM

働く環境の変化

企業におけるデータ

(C) Recruit Career Co., Ltd. All rights reserved.

Office 365

無自覚的 自覚的

定期健診性格検査

etc

期末評価コンピテンシー

資格等級etc

パルス・サーベイ社内アンケート

etc

会議

メール・チャット

低頻度

高頻度

(C) Recruit Career Co., Ltd. All rights reserved.

Communicationの

ズレ・歪みを Clear にする

Office 365 会議データの説明

(C) Recruit Career Co., Ltd. All rights reserved.

****

****************************

****************

*****************

**************

*********

招集した人オーナーシップ

招集された人仲間への貢献

(C) Recruit Career Co., Ltd. All rights reserved.

アプリケーションデモ

(C) Recruit Career Co., Ltd. All rights reserved.

水澤さん

After活躍

(自分から他者へのつながりが増加)

Beforeもやもや

本人本人

支援者(同僚)

要件 対応内容

開発期間が短い12月開発開始、1月にPoC開始

ありものの機能は最大限活用する= IaaS ではなく PaaSを最大限使う

開発者は2-3名責任範囲を分けたい。仕事を極力少なくしたい

検証フェースの予算が5万円/月と限られているが、本番環境は同じ技術でスケールさせたい

基本的に PaaSを活用し、本番環境ではよりパワフルな構成にする(スケールアップ/スケールアウト/類似サービス活用)

IT管理部門の承認は時間がかかるので、一般ユーザーに予定表のアクセス権を付与し、一般ユーザーの権限で情報を取得したい

Office 365側ではユーザーコンテキストのAccess Tokenを利用してアプリを実装する

参加者は80名程度いて、できるだけ短時間で処理を終わらせたい

Server-lessな仕組みを使ってパラレルな処理で情報を収集する

データ解析担当者が分析するためにcsvも出力したい

Storageにデータを一度出力しそれを何らかのバッチでSQLに保存するフローにする

エンドユーザーも簡単に見れるBIツールが必要その情報は自動的に更新されてほしい

Power BI と Azureを組み合わせて実現する

USERS FILES MAIL CALENDAR TASKSGROUPS

Microsoft Graph API (graph.microsoft.com)

関係性や知見を収集

アプリAzure

Active Directory (AD)

https://graph.microsoft.com/v1.0/users/<user principal name>/calendarView?startDateTime=2017-01-01&endDateTime=2017-01-30

--Header--

Accept: application/json

Authorization: Bearer <Access Token>

以下のように予定データを jsonで取得可能。

取得対象データが多い場合には自動でページングし、

次のデータ取得用エンドポイントを@odata.nextlinkとして提示される

"https://graph.microsoft.com/v1.0/users/[email protected]/calendarView?startDateTime=2017-01-01&endDateTime=2017-01-30&$skip=10"

https://doc.co/urvZd5

https://blogs.msdn.microsoft.com/tsmatsuz/2013/07/11/native-application-mobile-app-azure-active-directory-login-authentication/

https://docs.microsoft.com/ja-jp/azure/active-directory/develop/active-directory-devhowto-multi-tenant-overview

15 分毎 クリーンなテーブル無効なデータを見つけ取り除く

BLOB ストレージにファイルを追加

CSV を行データに変換

CSV

Power BIチャートを表示

Azure Functions概要

https://docs.microsoft.com/ja-jp/azure/azure-functions/functions-overview

https://docs.microsoft.com/ja-jp/azure/azure-functions/functions-reference-csharp#a-namereusing-csx-codeacsx-コードの再利用

シナリオ名 ユーザー用アプリ バッチ処理

取得できる情報 ログインしたユーザーの情報

テナント全体の情報

https://docs.microsoft.com/ja-jp/azure/storage/storage-dotnet-how-to-use-tables

#load "..\Shared\token.csx"

public static void Run(バインド用の変数)

{

//CSVの列を定義

while (true)

{

Graph API をコール

try-catchして401を受け取ったら、Shared\token.csxの処理でAccessTokenをリフレッシュ。

イベントのデータをsting型の変数に繰り返し連結していく

@odatanextlinkがnullになったらbreak

}

バインドしていたBlobにcsvファイルとして出力

}

public static void Run(バインド用の変数)

{

Graph API をコール

@odatanextlinkがあればそのクエリをQueuenに投げる

try-catchして401を受け取ったら、Shared\token.csxの処理でAccessTokenをリフレッシュ。

バインドしていたTable Storageにデータを出力

}

参考 : クラウドによるデータ統合サービスである Azure Data Factory サービスの概要

本ソリューションにおける使いどころ・ Azure BLOB Storageに格納された csvファイルを SQL Database

に取り込む・毎日同じ処理を指定した時間帯に実行する・ csvファイルの退避・バックアップ

コピーウィザード

Azure Data Factory のデータセット

Data Factory のスケジュール設定と実行

参考 : SQL Database とは SQL Database の概要

本ソリューションにおける使いどころ・データの格納・データの加工 (ビューの作成、ストアドプロシージャの実行など)

SQL Database のオプションとパフォーマンス: 各サービスレベルで使用できる内容について理解する

参考 : Power BIとは ?

本ソリューションにおける使いどころ・ SQL Databaseに格納されたデータの可視化・ダッシュボードの共有・モバイルアプリからのアクセス

Power BI Desktop

Power BI Service

Power BI Embedded

行レベルアクセス制御

Microsoft Japan Data Platform Tech Sales Team

・Power BIコミュニティ勉強会https://powerbi.connpass.com/

ユーザコミュニティによる、無償の不定期開催の勉強会主催:Microsoft MVP for Data Platform

協力:日本マイクロソフトほか、協力会社様

過去開催の様子2016/10/01 Power BI 勉強会 –はじめの一歩が開催されました2016/11/26 Power BI 勉強会 –第二回が開催されました2017/02/18 Power BI 勉強会 –第 3 回が開催されました

次回開催は 2017年 5月を予定しています。

注)当コミュニティにおける当社社員の発言は日本マイクロソフトおよび Microsoft Corporation としての正式見解と異なる可能性がございます。

検証フェーズ

運用フェーズ

・Azure SQL Data Warehouse

Azure SQL Data Warehouse とは

クラウドで実現するスケーラブルなデータウェアハウス Azure SQL Data Warehouse

解説 (de:code2016)

Azure SQL Data Warehouse の概要

・Azure Analysis Services (Preview)Azure Analysis Services とは

Azure Analysis Services と Power BI on SSRS の発表

ARMテンプレートによる

複数会社への展開

(C) Recruit Career Co., Ltd. All rights reserved.

複数会社に外販する際の技術的課題

• 毎回人手でAzureの構築をするのは手間

• 細かい設定ミスを避けたい

• Infrastructure as Code 的なやり方はないのか?

(C) Recruit Career Co., Ltd. All rights reserved.

Azure Resource Manager (ARM) テンプレートの活用

Resource Group : アプリケーション/プロジェクト単位のコンテナ

• 複数リソースを内包可能

• アクセス権設定可能

• この単位で自動展開可能(ARM Templateを活用)

(C) Recruit Career Co., Ltd. All rights reserved.

RESOURCE GROUP

ARMテンプレート

• json形式でパラメータ追加・修正をし、Azureにデプロイ

• リソースグループ単位で簡単に環境を再現可能

• GUIでもcliでも操作可能

(C) Recruit Career Co., Ltd. All rights reserved.

# ARMテンプレートの基本

{"$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#","contentVersion": "","parameters": { },"variables": { },"resources": [ ],"outputs": { }

}

ARM テンプレートの概要 : https://docs.microsoft.com/ja-jp/azure/azure-resource-manager/resource-group-authoring-templates

ARM テンプレートの構成イメージ (基本単位)

(C) Recruit Career Co., Ltd. All rights reserved.

parameter.jsontemplate.json

• テンプレートファイルとパラメタ用ファイルで構成(パラメタ用ファイルの利用は任意)

• azuredeploy.jsonは骨格をparameter.jsonは変数を定義するイメージ

ARM テンプレートの構成イメージ (複数リソース展開)

(C) Recruit Career Co., Ltd. All rights reserved.

azuredeploy.json parameter.json

[sqlserver]

sqldeploy.json

[webapps]

azuredeploy.json

parameter.json parameter.json

Demo:

コードサンプルとAzureへのデプロイ(デモ)

(C) Recruit Career Co., Ltd. All rights reserved.

ARM テンプレートのメリット/デメリット

• ARMテンプレートの便利な点

–ほぼ全ての構築・デプロイを自動化できる

–手間がかからない

–誰がやっても同じ環境が再現できる

(C) Recruit Career Co., Ltd. All rights reserved.

当初の目的は達成

ARM テンプレートのメリット/デメリット

• ARMテンプレートの不便な点

–ドキュメントが少ないサービスもある

•そんな時に役立つテンプレート集は以下にあります

– https://github.com/Azure/azure-quickstart-templates

–リソースが増えるほどjsonが長くなる

•テンプレートは分割可能なので、分割前提で作成するべき以下のベストプラクティスを先に読むことをおすすめします

– https://docs.microsoft.com/ja-jp/azure/azure-resource-manager/resource-manager-template-best-practices

– jsonなのでコメントが書けない• metadata内のdescriptionに書くことはできる

(C) Recruit Career Co., Ltd. All rights reserved.

"metadata": {"description": "hogehoge"

}

開発者向けの最新情報はこちらhttps://blogs.msdn.microsoft.com/jpisvte/

Azure全般を学べる書籍はこちらhttps://www.amazon.co.jp/dp/B06X91FMZG