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.

20181215 PowerApps + Flow Handson

876 views

Published on

2018/12/15 CLR/H #108 で利用した PowerApps ハンズオン用資料

Published in: Technology
  • Be the first to comment

20181215 PowerApps + Flow Handson

  1. 1. PowerApps & Flow Overview 2018/12/15 CLR/H - LogicFlow-ja 小尾 智之 #clrh108 #MicrosoftFlow #PowerApps
  2. 2. Self Introduction Attribute1: VB / LogicApps-Flow-PowerApps @twit_ahf Attribute2: 艦これ / 御城プロジェクトRe / EDF / メガネ / クマ / プロレス tomoyuki.obi http://el.jibun.atmarkit.co.jp/ahf Community: LogicFlow-ja / CLR/H Microsoft MVP for Microsoft Azure(2017.03 ~)
  3. 3. https://aka.ms/logicflowjp-fb Flow/Logic Apps コミュニティ
  4. 4. PowerApps ユーザーグループ https://www.facebook.com/groups/powerappsjp/
  5. 5. http://bit.ly/NawaChannel
  6. 6. PowerApps / Flow Overview
  7. 7. PowerApps 概要 • Excel ライクな関数を利用して処理を設定 • Web / iOS / Android で実行可能なアプリを作成 – Windows Phone も対応 • ブラウザ上でマウス操作のみでアプリを作成可能 – カメラやGPS、手書き入力など • データコネクタが多数用意されており オンライン/ローカル問わずに接続して処理が可能
  8. 8. PlayStation 4 では動きませんでした
  9. 9. Microsoft Flow 概要 • 「イベントが発生した時(トリガ)」に 「処理を行う(アクション)」サービス • コネクタを利用して複数システムを連携(iPaas) – コネクタは自作も可能(Azure Web Apps/API Appsなど) – 既存サービスをカスタムコネクタとして登録可能 • デザイナー上での操作でほぼ完結する ローコード/コードレス開発(Low-Code / Codeless) • オンプレミス環境を交えても利用可能 – オンプレミス環境の API も利用可能
  10. 10. Microsoft Power Platform Dynamics 365 Office 365 Microsoft Azure
  11. 11. Dynamics365 Office365 Microsoft Azure Logic Apps Flow / PowerApps
  12. 12. Flow も PowerApps も どちらも LogicFlow を利用する
  13. 13. Microsoft Flow 料金プラン https://flow.microsoft.com/ja-jp/pricing/
  14. 14. Flow プランでの機能制限 Premium 系コネクタは Plan1 / 2 でのみ利用可能
  15. 15. 利用者と開発者で ライセンスを 個別に割当られる
  16. 16. Plan によって利用 できる機能に 違いがある Common Data Service と モデル駆動アプリを 利用するかどうかで Plan の検討が必要
  17. 17. https://powerapps.microsoft.com/ja-jp/communityplan/ PowerApps Community Plan
  18. 18. Flow/Logic Apps 仕様と制限 LogicApps Flow 最大実行継続時間 90 日 30 日 ストレージリテンション期間 90 日 30 日 最小繰り返し時間 1 秒 1分 最大繰り返し間隔 500 日 500 日 実行履歴保持期間 7~90 日 28 日 ForEach レコード数 100,000 5,000 Loop Until 回数 5,000 5,000 SplitOn 最大数 100,000 5,000 ForEach 並列処理数 初期値 20 最大 50 初期値 1 最大 50 アクション実行数(5分間) 100K / 300K 同時呼出し数 2,500 エンドポイント同時受信数 1,000 エンドポイント読み取り可能呼出し数 60,000 エンドポイント起動可能呼出し数 45,000 LogicApps Flow 1 フローでのアクション数 500 250 1 フローでのネスト数 8 5 1リージョンでのフロー数 1,000 (1,000?) 1 フローごとのトリガ数 10 - 一つの式での最大文字数 8,192 8,192 アクション/トリガの文字数 80 80 コメントの文字数 256 256 パラメーター数 50 - https://docs.microsoft.com/ja-jp/azure/logic- apps/logic-apps-limits-and-config https://docs.microsoft.com/ja-jp/flow/limits-and-config Flow:制限事項と構成 LogicApps:制限事項と構成
  19. 19. トリガ アクション LogicFlow (ワークフロー)
  20. 20. Enterprise Integration SNS Office365 / Dynamics365 Data Connect Web Service Azure Service Online Storage Notification Standard Connecter Cognitive Service Button Approval Batch Management
  21. 21. Enterprise Integration SNS Office365 / Dynamics365 Data Connect Web Service Azure Service Online Storage Notification Standard Connecter Cognitive Service Button Approval Batch Management 258 Connectors
  22. 22. 毎日 Twitter 上でコネクタの 新規追加をチェック (Logic Apps/Flow 両方) コネクタの更新も同様に Twitter 上で告知開始 (Flow のみ)
  23. 23. PowerApps 初期画面
  24. 24. 単純なデータ参照や更新 を行うアプリならテンプ レートが用意されており 数分で作成可能
  25. 25. Flow 初期画面
  26. 26. 環境 アカウントごとに最大 5 つまで (無償版では作成できない) 環境ごとに作成する地域を選択 Azure のリージョンの「一部」が 該当している 本番/開発用/検証用などで分ける 形で使うのが多い PowerApps と Flow で環境は共通
  27. 27. 環境の種類 作成したリージョン
  28. 28. ユーザーは Azure Active Directory に 登録され全環境で共通 異なる環境間では HTTP 以外での アクセスはできない Flow 管理センターで 利用可能ユーザーの 追加やロールの割当 x x
  29. 29. https://powerapps.microsoft.com/ja-jp/blog/retain-your-resources-and-data-in-trial-environments/ これまでは試用と設定した環境 でも特に問題なかったが 最近になり 「30日操作しなかった試用環境 は削除される」 という制約が追加された
  30. 30. アクションでエラーが発生しても 次のアクションへ制御は必ず移る トリガのエラーは LogicFlow が 実行されないことがある (リトライで回復した場合などは実行される) 各アクションの初期値が 「前のアクションが成功した時に処理をする」 となっているので制御が移っても 処理が行われない LogicFlow 特性
  31. 31. 制御コネクタ LogicFlow で利用する制御用コネクタ 条件判断や繰り返し 処理をまとめるスコープや終了がある
  32. 32. 条件判断 / Condition IF ~ THEN ~ ELSE(条件分岐) Switch Case(条件多分岐)
  33. 33. Do Until ループ ループが一定時間内に終了しない場合に タイムアウトとする場合は ISO 8601 形式でタイムアウト条件を設定 必ずシーケンシャルに動作する 繰り返し/Loop
  34. 34. ForEach ループ 規定では並列動作しない 設定から変更可能(最高で50まで) 値の数だけ繰り返し/ ForEach
  35. 35. スコープ/Scope スコープで処理をまとめることで 途中でエラーが発生しても対応できる 処理を組み立てられる https://blogahf.blogspot.com/2018/07/logicflow-try-catch-finally.html
  36. 36. 変数 / Variables プログラム的に利用する 値を格納するためのもの 初期化を最初に行う必要がある 変数の値に数値を足しこんだり 文字列を結合したりといった プログラム的処理に利用する
  37. 37. データ操作/ Data Operations 何かしらのデータに対して 特定の処理を行うもの たくさんのデータから 必要なものだけに絞り込みをする 「選択」「フィルター処理」 計算結果を格納する「作成」 などが利用する場面が多い (「作成」した値は書換えられない のが変数との違い)
  38. 38. 関数 / Workflow Function より詳細な処理を行う場合 ワークフロー関数を利用 基本はダイアログから選択 慣れたら直接記載も可能 https://docs.microsoft.com/ja-jp/azure/logic-apps/workflow-definition-language-functions-reference プログラミング的な知識が 必要なためハードルはある
  39. 39. 定期的に処理を実行する際に利用 「毎週〇曜日の□時」 「毎月〇日、□日の△時」 といった指定が可能 プランによって指定できる 最小頻度に制限がある スケジュールトリガー
  40. 40. 外部からのHTTP呼出に対応 スキーマを定義すると 後続のアクションでダイアログから選択も 可能になる またスキーマに合致しない値に対して HTTP エラーを返却可能 要求トリガー
  41. 41. PowerAppsトリガー PowerApps から呼び出さ れる処理の場合に利用 PowerApps 側から呼び出 す際に、好きな値を指定で きる(複数指定も可能)
  42. 42. PowerApps & Flow Handson 2018/12/15 CLR/H - LogicFlow-ja 小尾 智之 #clrh108 #MicrosoftFlow #PowerApps
  43. 43. PowerApps ハンズオン概要 • Connpass 参加者名簿(CSV)を元にした イベント参加受付アプリ • 参加者それぞれにバーコードを作成 受付時にスキャンすることにより参加登録する • QRコードは外部APIを利用して作成 • Web版ではスキャン感度が悪くQRコードも利用できないので 参加者一覧から選択して登録も行う • 参加登録した結果は OneDrive 上の Excel ファイルを更新
  44. 44. アプリの全体図
  45. 45. キャンバスアプリをクリックして 新規アプリ作成を開始
  46. 46. 新規アプリの初期状態
  47. 47. 画面 コントロール一覧 画面デザイナー プロパティ設定 各種メニュー
  48. 48. アプリケーションで利用する データソースを設定
  49. 49. 今回はOneDrive を利用
  50. 50. 利用する Excel の テーブルにチェックを付けて 「接続」
  51. 51. データソース接続が作成できたら 「x」をクリックして閉じる
  52. 52. ラベル ボタン 各種画面の作成
  53. 53. 新しい画面や ラベル等のコントロール追加は 上部の「挿入」メニューから サブメニューでコントロールの 種類を選択できるものもある
  54. 54. フォントサイズの指定は 詳細設定にあるSize 上部にある設定欄で Size を選択して値設定でもOK
  55. 55. アイコン テキスト
  56. 56. ヘッダーはラベル上に アイコンを重ねて配置 ヘッダーの左パディングを 設定しアイコンと重ならせない
  57. 57. 画像
  58. 58. 画像 QRイメージ は このような形で画面に設置 表示モードを「ビュー」 表示を「OFF」に設定しておく
  59. 59. If(Not(IsBlank(氏名テキスト3.Text)), "https://api.qrserver.com/v1/create-qr-code/?size=150x150&data=" & EncodeUrl(氏名テキスト3.Text) ) QR コード作成のため 外部 API を呼び出させる 氏名が入力されている時 QRコードを作成
  60. 60. 入力内容をローカルに 保存させる ローカルに保存されていた 値を画面表示時に復元する 画面の OnVisible に設定
  61. 61. If(Not(IsBlank(localsetting)),Text(First(localsetting).Value),"")
  62. 62. ギャラリー
  63. 63. 画面の解像度によっては メニューが省略表示される ギャラリーを選択すると 表示パターンの選択を行う (今回は「縦」を選択)
  64. 64. 利用するデータソースを選択
  65. 65. ギャラリーの表示形式を選択 (今回は「タイトルとサブタイトル」) タイトルを「ユーザー名」 サブタイトルを「出欠ステータス」に設定 設定を誤った場合は プロパティの「データ」~「レイアウト」から 再設定が行える
  66. 66. 標準で追加される nextArrow の アイコン表示を削除 Title SubTitle キャンセル アイコン 参加アイコンギャラリー内部のレイアウトを このような形で作成
  67. 67. アイコンの表示非表示設定
  68. 68. 画面遷移の設定
  69. 69. メニュー画面が表示した時 LogicFlow を実行し プラットフォーム判定
  70. 70. 呼び出される LogicFlow を作成する PowerApps「応答」アクションで アプリに戻す値を設定する
  71. 71. プラットフォーム判定用 LogicFlow全体図
  72. 72. 初期状態
  73. 73. 「新しいアクション」をクリック 検索欄に「変数」と入力し 変数コネクタを見つける アクションの一覧から 「変数を初期化する」 をクリック
  74. 74. 名前に「os」など適当な 名称を設定 種類から「文字列」を選択 新しいステップをクリック
  75. 75. 「制御」をクリック アクションから「条件」をク リック
  76. 76. 条件で PowerApps トリガに 連携されたヘッダ情報を利用 したいがダイアログには表示 されない 詳細設定モードで直接記載を 行う @contains(triggerOutputs()['headers']['x-ms-user-agent'], 'android')
  77. 77. 「はい」の場合は ヘッダ情報に android が含ま れていて、Android 環境で実 行されたことになる 結果設定用の変数に Android と設定しておく
  78. 78. 「いいえ」の場合は Web 環境かどうかを判断させる ヘッダに Web と含まれていた場合は Web 環境からと判定し結果用の変数 に Web と設定する
  79. 79. 最後に PowerApps コネクタの 応答アクションで結果を返却する 値として結果用の変数を指定直接入力する
  80. 80. Flow 名を入力して保存を実行 保存できたら Flow の画面は閉じてよい
  81. 81. PowerApps 側に戻ると一覧上に作成した LogicFlow が追加されている 01_mainmenu の OnVisible を選択した 状態にし作成した LogicFlow をクリック
  82. 82. 01_mainmenu の OnVisible を以下の様に設定 ClearCollect(ossetting, 起動時のOS判定.Run()); If(IsBlank(First(ossetting).'x-ms-useragent'), Notify("プラットフォーム判定に失敗しました。",NotificationType.Error)) 設定に問題がなければ このようにアプリ起動時に Flow が実行される
  83. 83. QRコードスキャンが 行える環境では QRコードスキャナー を起動 コード読み込みボタンの Visible に Web ブラウザ時は 非表示にするよう設定
  84. 84. 設定するとデザイナー上で非表示になる (コントロール一覧には存在している)
  85. 85. Excel 名簿データ更新用 LogicFlow 全体図 スキャン実行時などに この Flow を呼び出して更新
  86. 86. PowerApps から受け取る値の追加 ダイアログにある「PowerAppsで確認」を 選択すると受け取る値が増えていく
  87. 87. 受付日時を計算する Flow は UTC で動作しているので 日本時刻に変換が必要
  88. 88. Excel Online(OneDrive) コネクタを利用 更新対象データを取得し 出欠ステータスと更新日時を アップデートする
  89. 89. 処理結果の返却 更新処理が成功した場合と失敗した場合とで 処理するアクションを切り替える
  90. 90. ClearCollect(inputQR,""); /* スマホ上で利用時は QR バーコードスキャン画面へ */ ClearCollect(inputQR,ScanBarcode()); If(IsBlank(Text(First(inputQR).Value)) ,Notify("QRコードを読み取れませんでした。",NotificationType.Error) ,Switch(勉強会アプリで参加登録した場合に参加者名簿を更新する.Run(Text(First(inputQR).Value)).status, "200",Notify("参加を受け付けました!",NotificationType.Success), Notify("申込名簿に見当たりませんでした。",NotificationType.Error)); ClearCollect(inputQR,"") ) OnSelect への 記載内容
  91. 91. Switch(勉強会アプリで参加登録した場合に参加者名簿を更新する.Run(氏名テキスト.Text).status, "200",Notify("参加を受け付けました!", NotificationType.Success) ,Notify("申込名簿に見当たりませんでした。", NotificationType.Error) ); Reset(氏名テキスト) OnSelect への 記載内容 参加をクリックした際のテーブル更新
  92. 92. Shift+Enter で改行 一覧でクリックした際のテーブル更新
  93. 93. LogicFlow を利用した更新処理 PowerApps 関数を利用した更新処理 今回はどちらでも 対応可能 複雑な処理→Flow 簡単な処理→関数
  94. 94. まとめ • PowerApps はプログラム知識がそれほど必要とせず 一般的なアプリケーションを作成できる • Flow は多くのコネクタを利用することで高度な処理 を組み立てることができる • 二つのサービスを合わせて利用することで 一般的なアプリケーションと同様のものでも 簡易に作成することができる
  95. 95. Appendix • LogicFlow-ja ( https://aka.ms/logicflowjp-fb/ ) • Japan PowerApps User Group ( https://www.facebook.com/groups/powerappsjp/ ) • LogicFlow を扱っている Blog • nrjlog ( http://zuvuyalink.net/nrjlog/ ) • てすとぶろぐ ( http://blogahf.blogspot.jp/ ) • Azure LogicApps ( https://blogs.msdn.microsoft.com/logicapps/ ) • Flow – Blog (https://flow.microsoft.com/en-us/blog/) • PowerApps – Blog (https://powerapps.microsoft.com/en-us/blog/) • Twitter Hashtag • LogicApps → #LogicApps • Flow → #MicrosoftFlow • PowerApps → #PowerApps

×