Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Azure CustomVision ハンズオン

shota-yano
February 18, 2020

Azure CustomVision ハンズオン

2020/2/18に社内で実施したAzure のCustom Visionを使ったハンズオンの資料です。

shota-yano

February 18, 2020
Tweet

More Decks by shota-yano

Other Decks in Technology

Transcript

  1. 自己紹介
    • 株式会社KIS
    • 矢野翔大
    • 在宅勤務中
    • 興味あること:ARとかVRとか電子部品
    • 趣味はモノづくり
    • ようやくMRTKv2触り始めた
    • Dynamics365 Guidesお試し中
    • KumaMCNで活動中
    MRTKv2
    Dynamics365 Guides

    View full-size slide

  2. Q1:プログラミングをやったことある人?

    View full-size slide

  3. Q1:Deep Learningを自分で実装したことある人?

    View full-size slide

  4. いろいろあるけど
    今日は学問的なことは省略!!

    View full-size slide

  5. ・犬1匹
    ・猫1匹
    ・左にいるのが猫
    ・右にいるのが犬
    { “Class”:”Cat”,
    “Accuracy”:94.8
    “Rect”:{
    “top”:30,“left”:10,
    “width”:40 ,”height”:50},
    “Class”:”Dog”,
    “Accuracy”:98.1
    “Rect”:{
    “top”:25,“left”:60,
    “width”:42 ,”height”:75}}

    View full-size slide

  6. ・犬1匹
    ・猫1匹
    ・左にいるのが猫
    ・右にいるのが犬
    { “Class”:”Cat”,
    “Accuracy”:94.8
    “Rect”:{
    “top”:30,“left”:10,
    “width”:40 ,”height”:50},
    “Class”:”Dog”,
    “Accuracy”:98.1
    “Rect”:{
    “top”:25,“left”:60,
    “width”:42 ,”height”:75}}
    ざっくり言うと
    人間が認知するのと同じようなふるまいをするもの

    View full-size slide

  7. 人間の認知機能(Cognitive)機能の一部を
    Web APIとして利用できる“AIパーツ”
    Vision
    視覚
    Speech
    音声
    Language
    言語
    Decision
    決定
    Search
    検索
    Labs
    ラボ

    View full-size slide

  8. 人間の認知機能(Cognitive)機能の一部を
    Web APIとして利用できる“AIパーツ”
    Vision
    視覚
    Speech
    音声
    Language
    言語
    Decision
    決定
    Search
    検索
    Labs
    ラボ
    画像分類
    ビデオ読解
    顔識別
    感情判定
    OCR
    話者識別
    音声⇔テキスト
    文章解析
    文脈理解
    推定
    予測
    Bingエンジン
    による検索
    Preview版

    View full-size slide

  9. 人間の認知機能(Cognitive)機能の一部を
    Web APIとして利用できる“AIパーツ”
    Vision
    視覚
    Speech
    音声
    Language
    言語
    Decision
    決定
    Search
    検索
    Labs
    ラボ
    Computer Vision
    Custom Vision
    Face
    Video Indexer
    Form Recognizer
    Ink Recognizer
    Speech to Text
    Text to Speech
    Speech Translation
    Speaker Recognition
    Translator Text
    Text Analytics
    QnA Maker
    Immersive Reader
    Language Understanding
    Personalizer
    Content Moderator
    Anomaly Detector
    Autosuggest
    Custom Search
    Entity Search
    Image Search
    News Search
    Spell Check
    And more
    Academic Knowledge
    Knowledge Exploration
    Conversation Learner
    Personality Chat
    Answer Search
    Event Tracking
    And more

    View full-size slide

  10. MLの稼働環境不要
    NN・DLの深い知識不要
    あらゆるOS・言語で使える
    各言語のSDK
    プラットフォーム別サンプル
    従量課金
    無料版で検証
    利用に合わせて調整
    データの即活用
    Cognitive Servicesの特徴

    View full-size slide

  11. 人間の認知機能(Cognitive)機能の一部を
    Web APIとして利用できる“AIパーツ”
    Vision
    視覚
    Speech
    音声
    Language
    言語
    Decision
    決定
    Search
    検索
    Labs
    ラボ
    実際に触って体験してみましょう

    View full-size slide

  12. Custom Visionで画像分類
    まずは食べ物の画像を分類してみましょう

    View full-size slide

  13. Custom Vision の価格

    View full-size slide

  14. ハンズオンで使う資料
    https://github.com/shota-yano/Custom-Vision-Handson.git
    Git cloneかZIPファイル
    をダウンロードしてく
    ださい

    View full-size slide

  15. Azureのアカウント作成
    ここからアカウント作る
    ※要クレジットカード
    https://azure.microsoft.com/ja-jp/

    View full-size slide

  16. Azureのアカウント(学生の場合)
    学校で配られたメールアドレスが
    あれば始められるので
    アカウントがない場合は作ってください
    https://azure.microsoft.com/ja-jp/free/students/

    View full-size slide

  17. Azureポータルへアクセス
    https://azure.microsoft.com/ja-jp/features/azure-portal/
    クリック

    View full-size slide

  18. リソースを作成する
    ②検索

    View full-size slide

  19. リソースを作成する
    クリック

    View full-size slide

  20. リソースを作成する
    クリック

    View full-size slide

  21. リソースを作成する
    両方を選択
    項目 値
    名前 適当に
    サブスクリプション ご自身が契約してるもの
    リソースグループ 次のスライドに記載
    トレーニングの場所 東日本
    • 一番近いところがお勧め
    • 場所によって価格が変動することがある
    トレーニング価格レベル F0(無料の場合)/S0(有料の場合)
    予測の場所 F0(無料の場合)
    予測価格レベル 東日本

    View full-size slide

  22. リソースグループを作成する場合
    新規作成をクリック

    View full-size slide

  23. リソースグループを作成する場合
    ①新規作成をクリック
    ②任意に名前を
    決めて入力
    ③Okをクリック

    View full-size slide

  24. 全部入力したら作成
    作成をクリック
    項目 値
    名前 適当に
    サブスクリプション ご自身が契約してるもの
    リソースグループ 前のスライドで作成したもの
    トレーニングの場所 東日本
    • 一番近いところがお勧め
    • 場所によって価格が変動することがある
    トレーニング価格レベル F0(無料の場合)/S0(有料の場合)
    予測の場所 F0(無料の場合)
    予測価格レベル 東日本

    View full-size slide

  25. デプロイ完了まで待つ
    ①クリック
    ②クリック

    View full-size slide

  26. 作成したCustom Vision のリソース
    クリック

    View full-size slide

  27. CustomVision ポータルへアクセス
    クリック
    ※ブラウザはIE以外でお願いします

    View full-size slide

  28. 新しいプロジェクトを作成
    クリック

    View full-size slide

  29. 新しいプロジェクトを作成
    項目 値
    Name 適当に
    Description(任意) プロジェクトの説明
    Resource Group Azureで作成したものを選択
    Project Type Classification(分類)を選択
    Classification Type Multiclass(画像1つにつき1タグ)
    Domains Foodを選択
    ※用途で使い分ける
    • General(他が当てはまらない場合)
    • Food(食べ物)
    • Landmarks(建造物など)
    • Retail(小売り(洋服などもここ))
    • Compact系(エクスポートしたい場合)
    入力後クリック

    View full-size slide

  30. 今回使用する画像セット
    https://www.vision.ee.ethz.ch/datasets_extra/food-101/
    スイスのチューリッヒ工科大学の
    コンピュータビジョン研究チームが公開しているものです。
    クラス分けのタグ情報が付加された食べ物の画像です。
    約5GBの一括ダウンロードです。容量に注意してください。
    今回はこの中から一部を抽出して使用します。

    View full-size slide

  31. 画像を追加する
    クリック

    View full-size slide

  32. 画像を追加する
    トレーニング
    データを使う
    20枚選択して
    クリック

    View full-size slide

  33. 画像にまとめてタグをつける
    ①20枚あることを確認
    入力して
    Enterキー

    View full-size slide

  34. タグを入力後アップロードする
    ②クリック
    ①入力が確定したことを確認
    ※間違ったら「×」で削除

    View full-size slide

  35. 画像の追加完了
    クリック
    ※同じ要領で他の画像もアップロードとタグ付けをしてください

    View full-size slide

  36. 全ての画像のアップロードとタグ付けまで完了
    タグの一覧

    View full-size slide

  37. 学習させる
    クリック

    View full-size slide

  38. 学習方法を選択して実行する
    ②クリック
    ※Advanced Trainingは選ばないでください
    1時間以上学習がかかるのでハンズオン何もできなくなります
    Standardプラン(S0)の場合1時間あたり2000円ちょっとかかります。
    24時間回せば5万円くらいかかるので注意してください
    Freeプラン(F0)の場合、1時間学習した後強制的に学習が終わります
    ①FastTrainingを選択

    View full-size slide

  39. 学習完了まで待つ(1~2分)

    View full-size slide

  40. 結果が表示されたら学習完了
    これでもう
    画像分類が出来ます

    View full-size slide

  41. 結果の見方
    項目 説明
    Precision(精度) 正しかったと識別された分類の割合。
    100枚の画像が犬として識別され、
    そのうち 99枚が実際に犬であった場合、
    精度は 99% になります。
    Recall(再現率) 正しく識別された実際の分類の割合。
    実際に犬である画像が 100枚あり、
    80枚が犬として識別された場合、
    再現率は 80% になります。
    AP(平均精度) 閾値で計算されたPrecisionの平均値

    View full-size slide

  42. 結果の見方
    項目 説明
    Precision(精度) 正しかったと識別された分類の割合。
    100枚の画像が犬として識別され、
    そのうち 99枚が実際に犬であった場合、
    精度は 99% になります。
    Recall(再現率) 正しく識別された実際の分類の割合。
    実際に犬である画像が 100枚あり、
    80枚が犬として識別された場合、
    再現率は 80% になります。
    AP(平均精度) 閾値で計算されたPrecisionの平均値
    犬99枚狐1枚合計100枚の画像を与える
    この100枚の画像は
    全部犬だ
    精度99%

    View full-size slide

  43. 結果の見方
    項目 説明
    Precision(精度) 正しかったと識別された分類の割合。
    100枚の画像が犬として識別され、
    そのうち 99枚が実際に犬であった場合、
    精度は 99% になります。
    Recall(再現率) 正しく識別された実際の分類の割合。
    実際に犬である画像が 100枚あり、
    80枚が犬として識別された場合、
    再現率は 80% になります。
    AP(平均精度) 閾値で計算されたPrecisionの平均値
    犬の画像を100枚与える
    この100枚のうち
    80枚は犬の画像だ
    再現率80%

    View full-size slide

  44. 結果の見方
    タグごとの結果が見れる
    うまく分類できないタグは
    調整して再学習など行う

    View full-size slide

  45. 結果の見方
    学習するたびに
    リストが増える

    View full-size slide

  46. 結果の見方
    閾値
    区分 閾値との関係 閾値を上げたらどうなるか
    Precision 閾値を上げる
    ⇒上がる
    間違って分類されるものが減る。
    取りこぼしは増える
    Recall 閾値を下げる
    ⇒上がる
    取りこぼしは減る。
    間違って分類されるものも増える
    APIから呼び出す時に
    調整できるかは不明
    (パラメータが見当たらないため)
    このパラメータをどう扱うかは作りたいもの次第
    例:MRIなどの画像から癌を見つける場合
    閾値を上げる:癌なのに癌じゃないと判断されるかも
    閾値を下げる:癌じゃないのに癌だと診断されるかも
    どちらが良いのか?

    View full-size slide

  47. Quick Test
    クリック

    View full-size slide

  48. ローカルファイルをアップロードする
    クリック

    View full-size slide

  49. ローカルファイルをアップロードする
    検証用データ
    クリック

    View full-size slide

  50. テスト結果を確認する
    【結果】
    99.9%の確率で
    寿司だと分類されました

    View full-size slide

  51. URLを指定してWEBの画像も使用可能
    URLを入力

    View full-size slide

  52. 予測の履歴を確認
    クリック

    View full-size slide

  53. 予測の履歴を確認
    テストした結果はこ
    こに表示されていく

    View full-size slide

  54. 予測の履歴を確認
    マウスオーバーで結果が確認可能
    クリックすれば詳細が確認できる

    View full-size slide

  55. タグの修正
    予測結果が間違っていた場合は
    正しいタグをつける
    保存すれば
    次回の学習に使用される

    View full-size slide

  56. モデルの公開
    ①クリック
    ②クリック

    View full-size slide

  57. 名前を入力して公開する(名前は何でもよい)
    クリック
    名前を入力
    ※デフォルトの
    ままでもいい
    予測に使うリースを選択
    ※CustomVision作成時
    に同時に作られてる

    View full-size slide

  58. 公開完了
    公開すると
    「Unpublish」に変化する
    ⇒これをクリックすれば
    非公開に戻せる

    View full-size slide

  59. API実行用のURLとキーを確認する
    クリック

    View full-size slide

  60. API呼び出し用の情報を確認する(後で使います)
    キー
    URL
    WEB上の画像を
    使いたい場合はこっち
    ローカルマシンの画像を
    使いたい場合はこっち
    ※今回はこれを使う

    View full-size slide

  61. Foodの中のHTMLをテキストエディタで開く
    テキストエディタで開く

    View full-size slide

  62. 赤字の部分を書き換える
    $.ajax({
    url: "https://YourUrl",
    beforeSend: function(xhrObj){
    // Request headers
    xhrObj.setRequestHeader("Content-Type","multipart/form-data");
    xhrObj.setRequestHeader("Prediction-key",“YoutKey");
    },
    ①AURLを入力
    ※2つ前のスライドの値です
    ②キーを入力
    ※2つ前のスライドの値です

    View full-size slide

  63. HTMLファイルをブラウザで実行
    クリック
    Microsoft EdgeかGoogle Chromeで実行してください。
    Microsoft InternetExplorerは動作保証しません

    View full-size slide

  64. ローカルファイルを選択
    ②クリック
    ①1枚選択

    View full-size slide

  65. APIを使って画像の分類結果を受け取る
    読み込んだ
    ファイル
    クリック

    View full-size slide

  66. これでもうAPIさえたたけば画像分類できますね
    結果が表示される

    View full-size slide

  67. 補足
    ソースの解説

    View full-size slide

  68. APIのドキュメント
    クリック

    View full-size slide

  69. APIのドキュメント
    クリック

    View full-size slide

  70. APIのドキュメント
    ここに解説がある

    View full-size slide

  71. APIのドキュメント
    一番下までスクロールすると
    先ほどのサンプルソースのもとがここにある

    View full-size slide

  72. CustomVisionの公式ドキュメント
    クリック

    View full-size slide

  73. CustomVisionの公式ドキュメント

    View full-size slide

  74. 以上が画像分類です

    View full-size slide

  75. Custom Visionで物体検出
    今度は少し業務よりのものとして製品の傷の検出を試します

    View full-size slide

  76. http://resources.mpi-inf.mpg.de/conferences/dagm/2007/prizes.html
    使用する画像セット
    ドイツのシンポジウムで開催されたコンペ用のデータセットです。
    工業用部品の表面の欠陥を検出するという目標で、
    ・基本画像1000枚
    ・人工的につけられた欠陥を含む150枚
    の画像が含まれています。

    View full-size slide

  77. ①クリック
    新しいプロジェクトを作成

    View full-size slide

  78. 新しいプロジェクトを作成
    項目 値
    Name 適当に
    Description(任意) プロジェクトの説明
    Resource Group Azureで作成したものを選択
    Project Type Object Detectionを選択
    Domains Generalを選択
    ※用途で使い分ける
    • General
    • Logo(ロゴの検出)
    • Compact
    ①クリック

    View full-size slide

  79. 画像を追加する
    クリック

    View full-size slide

  80. トレーニングデータ100枚選択
    トレーニングデータ
    クリック

    View full-size slide

  81. 画像をアップロードする
    クリック

    View full-size slide

  82. アップロード完了
    クリック

    View full-size slide

  83. タグをつける

    View full-size slide

  84. アノテーション
    クリック

    View full-size slide

  85. アノテーション
    ドラッグ&ドロップで
    傷の場所を囲う
    ※なるべく最小に

    View full-size slide

  86. 新しいプロジェクトを作成
    タグを入力

    View full-size slide

  87. アノテーション
    タグを入力して
    Enter

    View full-size slide

  88. アノテーション
    タグがついたことを確認
    次の画像に進み
    アノテーションを行う
    ※100枚やる

    View full-size slide

  89. アノテーション完了
    100枚あることを確認

    View full-size slide

  90. 学習を行う
    クリック

    View full-size slide

  91. 学習を行う
    ①クリック
    ②クリック

    View full-size slide

  92. 学習完了

    View full-size slide

  93. QuickTestを行う
    クリック

    View full-size slide

  94. ローカルファイルをアップロードする
    クリック

    View full-size slide

  95. ローカルファイルをアップロードする
    ③クリック
    ②クリック
    ①検証用データ

    View full-size slide

  96. 学習結果を確認する
    78.4%の確率で傷
    だと判断
    傷の検出ができている
    ※場合によっては複数検出することも
    あるので、一定の確率以下は無視する
    ようなことも必要

    View full-size slide

  97. 傷なし画像をアップロードしてみる
    傷なし画像を選択
    クリック

    View full-size slide

  98. 学習結果を確認する
    傷がないと判断した場合は
    何も出てこない

    View full-size slide

  99. APIを公開する

    View full-size slide

  100. APIを公開する
    ①名前を入力
    ②予測リソースを選択
    ※リソース作成時に同時
    に作成している
    ③クリック

    View full-size slide

  101. 公開完了
    クリック

    View full-size slide

  102. API呼び出し用のキーをメモする

    View full-size slide

  103. HTMLファイルをテキストエディタで開く

    View full-size slide

  104. Foodの時と同じように赤文字を置き換えて保存する
    $.ajax({
    url: "https://YourUrl",
    beforeSend: function(xhrObj){
    // Request headers
    xhrObj.setRequestHeader("Content-Type","multipart/form-data");
    xhrObj.setRequestHeader("Prediction-key",“YourKey");
    },
    type: "POST",
    data: $("input[name='ufile']").prop("files")[0],
    processData: false,
    contentType: false
    })

    View full-size slide

  105. HTMLファイルを実行してみる
    クリック

    View full-size slide

  106. 画像を1枚選ぶ
    検証用データ
    クリック
    1枚選択

    View full-size slide

  107. 画像を送信してAPIの推論結果を受け取る
    クリック

    View full-size slide

  108. 傷の検出ができると画面に描画される

    View full-size slide

  109. 補足
    ソースの解説

    View full-size slide

  110. 以上が物体検出です

    View full-size slide

  111. Logic Appsの価格

    View full-size slide

  112. OneDriveにアクセスする
    https://onedrive.live.com/about/ja-jp/
    クリック

    View full-size slide

  113. もしくは、OneDrive for Businessにアクセスする
    https://onedrive.live.com/about/ja-JP/business/
    クリック

    View full-size slide

  114. フォルダを2つ作成する
    Excel用に作成 画像用に作成

    View full-size slide

  115. excelフォルダにexcelファイルを格納する
    ドラッグ&ドロップで格納する DLしてきたやつを使います

    View full-size slide

  116. Excelファイルの格納を確認する

    View full-size slide

  117. Logic Appのリソースを作成する
    入力する

    View full-size slide

  118. クリック
    Logic Appのリソースを作成する

    View full-size slide

  119. Logic Appのリソースを作成する
    クリック

    View full-size slide

  120. Logic Appのリソースを作成する
    項目 値
    名前 適当に
    サブスクリプション 契約してるもの
    リソースグループ 既に作成しているもの
    場所 東日本
    LogAnalytics OFF
    クリック

    View full-size slide

  121. Logic Appのリソースを作成する
    ①クリック
    ②クリック

    View full-size slide

  122. デザイナーでフローを作成する
    クリック

    View full-size slide

  123. デザイナーでフローを作成する
    ここでフローを構築していく

    View full-size slide

  124. デザイナーでフローを作成する
    ここにある

    View full-size slide

  125. トリガーを作成する
    ①検索
    ②クリック
    Office365
    buisiness版は
    こっち

    View full-size slide

  126. トリガーを作成する
    クリック

    View full-size slide

  127. トリガーを作成する(サインイン&アクセス許可)
    クリック

    View full-size slide

  128. トリガーを作成する(サインイン後の状態)

    View full-size slide

  129. トリガーを作成する
    ①クリック
    ②クリック

    View full-size slide

  130. トリガーを作成する
    画像フォルダを選択

    View full-size slide

  131. トリガーを作成する
    間隔を30秒に設定
    ※これで30秒に1回新しいファイルがないか確認するファイル監視の設定完了です

    View full-size slide

  132. アクションを作成する
    クリック
    こまめに保存

    View full-size slide

  133. アクションを作成する(HTTPリクエスト)
    ①検索
    ②クリック

    View full-size slide

  134. アクションを作成する(HTTPリクエスト)
    クリック

    View full-size slide

  135. アクションを作成する(HTTPリクエスト)
    ①POSTを選択
    ②CustomVision
    のAPIのURL
    ③CustomVision
    のAPIのキー
    ④クリック
    ⑤クリック

    View full-size slide

  136. アクションを作成する(HTTPリクエスト)
    選択後は
    このようになる

    View full-size slide

  137. アクションを作成する(JSON解析)
    ①検索
    ②クリック
    ③クリック

    View full-size slide

  138. アクションを作成する(JSON解析)
    クリック

    View full-size slide

  139. アクションを作成する(JSON解析)
    ①クリック
    ②クリック

    View full-size slide

  140. アクションを作成する(JSON解析)
    ①開いて
    中身をコピー
    ※DLしたファイルで

    ②貼り付け

    View full-size slide

  141. アクションを作成する(JSON解析)
    入力後はこんな感じ

    View full-size slide

  142. アクションを作成する(EXCEL操作)
    ①検索
    ②クリック
    Business版は
    こっち

    View full-size slide

  143. アクションを作成する(EXCEL操作)
    クリック

    View full-size slide

  144. アクションを作成する(EXCEL操作)
    クリック

    View full-size slide

  145. アクションを作成する(EXCEL操作)
    ①クリック
    ②Excelファイルを
    格納している場所へ移動

    View full-size slide

  146. アクションを作成する(EXCEL操作)
    クリック

    View full-size slide

  147. アクションを作成する(EXCEL操作)
    クリック

    View full-size slide

  148. アクションを作成する(EXCEL操作)
    ①クリック
    ②すべてON
    ③クリック

    View full-size slide

  149. アクションを作成する(EXCEL操作)
    ①クリック
    ②クリック
    (データ操作なら
    なんでもいい)

    View full-size slide

  150. アクションを作成する(EXCEL操作)
    ①クリック
    ②クリック
    (データ操作なら
    なんでもいい)

    View full-size slide

  151. アクションを作成する(EXCEL操作)
    ①For eachが
    自動追加される
    ②項目を
    それぞれ選択する

    View full-size slide

  152. 保存して実行する
    ①保存 ②実行

    View full-size slide

  153. OneDriveに画像を
    D&Dでアップロード
    画像をアップロード
    アップロードからファ
    イル選択でも可能

    View full-size slide

  154. 画像をアップロード
    アップロードされたことを確認

    View full-size slide

  155. 画像をアップロード
    作成したフローが実行される

    View full-size slide

  156. EXCELファイルにデータが更新されていればOK
    複数行追加される可能性がある。
    不要なものは除外するなど
    デザイナー側での工夫は必要です。
    ぜひチャレンジしてみてください

    View full-size slide

  157. これで自動化ができた
    ユーザ
    ユーザ
    ①アップロード
    ②取得
    ※常時監視
    ③API実行
    ④推論結果
    ⑤結果を書き込み
    ユーザは画像をOneDriveにアップロードするだけで推論結果が自動で蓄積されていく
    画像

    View full-size slide

  158. リソースを無効化する(後片付け)
    無効にする
    有効のままだと30秒に1回
    実行され課金され続ける

    View full-size slide

  159. リソースの削除(後片付け)
    使わないものはリソース
    グループごと削除する

    View full-size slide

  160. 【余談】実はCustomVisionコネクタも存在している
    HTTPリクエストと
    JSONの解析が1つになったもの

    View full-size slide

  161. 【余談】実はCustomVisionコネクタも存在している
    Custom Vision側のAPIが
    アップデートされたら使えなくなる
    ※LogicAppのコネクタのアップデート待ちになる

    View full-size slide

  162. 【余談】実はCustomVisionコネクタも存在している
    なので今回は自力で組み立てる
    ※所詮中身はREST APIなので難しくない

    View full-size slide

  163. 【余談】書き込み先はDBでも良い
    SQL SrverやAzureストレージ、
    ブロックチェーンデータベースなどに
    書き込むことも可能

    View full-size slide

  164. Azureの無料の公式学習サイト
    https://docs.microsoft.com/ja-jp/learn/
    Azureの使い方がハンズ
    オン形式で学べます

    View full-size slide