Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
JSONは怖くない
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
MiyakeMito
January 29, 2022
Technology
13k
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
JSONは怖くない
MiyakeMito
January 29, 2022
Transcript
38 slides
JSONについて 気ままに勉強会 #06
今日の目標 JSONコワクナイヨー
アジェンダ 1. JSONとは 2. Power AutomateでJSONが怖くなくなると 3. Power AutomateでJSONを扱う 4.
Power AutomateでJSONの発展
Miyake Mito https://www.icsoft.jp/ @MiTo60448639 https://qiita.com/MiyakeMito
本日の参考サイト ▪ JSONと仲良くなるために (まとめ) https://mofumofupower.hatenablog.com/entry/2020/09/04/190039 ▪ Apply to each のパフォーマンス改善
(配列加工の場合) https://mofumofupower.hatenablog.com/entry/2020/08/12/093000 ▪ JSON でほしいデータを取得する "Path" を確認するツールのご紹介 https://mofumofupower.hatenablog.com/entry/2021/04/22/155214 ▪ Power Automateの裏側をみてみよう! (1/2) https://qiita.com/h-nagao/items/be565fdac60a9b2968d5 ▪ Power Automateの裏側をみてみよう (2/2) https://qiita.com/h-nagao/items/4f590a6e3b21ea669d0d
JSON とは
本日のJSON { "名前": "アメリカ合衆国", "地区": "北アメリカ", "地理": { "首都": "ワシントンD.C.",
"面積": 9834000, "人口": 331003000, "主要都市": [ {"名前": "ニューヨーク", "人口": 17799861}, {"名前": "ロサンゼルス", "人口": 11789487}, {"名前": "シカゴ", "人口": 8307904}, {"名前": "ホノルル", "人口": 718182} ] }, "言語": [ "英語", "フランス語", "ハワイ語", "スペイン語" ], "渡航歴": true }
JSONのルール:その1 1. 「キー」と「値」で構成され、コロンで繋げます 2. 「キー」はダブルクオーテーションで囲みます 3. 「キー:値」はカーリーブラケットで囲みます { “名前”: “アメリカ合衆国”
}
{ "名前": "アメリカ合衆国", "地区": "北アメリカ", “地理": { "首都": "ワシントンD.C.", "面積":
9834000, "人口": 331003000 }, "言語": [ "英語", "フランス語", "ハワイ語", "スペイン語" ], "渡航歴": true } JSONのルール:その2 4. 複数「キー:値」が並ぶときは、カンマで 区切ります 5. 「値」には以下の型が設定できます ① 文字列 ② 数字 ③ Boolean型(true/false) ④ オブジェクト ⑤ 配列 ⑥ null
練習➀ ➀首都の情報をJSONで記載してください ・首都 は ワシントンD.C. ② ➀に以下の情報を追加してください ・面積 は 9834000
・人口 は 331003000 { “首都”: “ワシントンD.C.” } { "首都": "ワシントンD.C.", "面積": 9834000, "人口": 331003000 }
JSONのルール:オブジェクト JSONを複雑怪奇にする困ったヤツ、その1 • 「キー:値」はオブジェクト • 「キー」に対し、「キー:値」(オブジェクト)を「値」として設定できます • オブジェクトを入れ子にすると構造は階層化しますが、情報がグループ化され 意味づけがされます •
データを取得する際は、[‘キー’]⇒[‘キー’] と階層をネストしながら指定します { "地理": { "首都": "ワシントンD.C.", "面積": 9834000, "人口": 331003000 } }
JSONのルール:配列 JSONを複雑怪奇にする困ったヤツ、その2 • 同一型の複数データを連続的に並べたデータ構造です • ブラケットで囲み、各アイテム(要素)はカンマで区切ります • データを取得する際は、添え字(何個目のデータ)を指定します • 各要素は、オブジェクトで指定することも可能です
"言語": [ "英語", "フランス語", "ハワイ語", "スペイン語" ] "主要都市": [ {"名前": "ニューヨーク", "人口": 17799861}, {"名前": "ロサンゼルス", "人口": 11789487}, {"名前": "シカゴ", "人口": 8307904}, {"名前": "ホノルル", "人口": 718182} ]
JSONの階層化 { "名前": "アメリカ合衆国", "地区": "北アメリカ", "地理": { "首都": "ワシントンD.C.",
"面積": 9834000, "人口": 331003000, "主要都市": [ {"名前": "ニューヨーク", "人口": 17799861}, {"名前": "ロサンゼルス", "人口": 11789487}, {"名前": "シカゴ", "人口": 8307904}, {"名前": "ホノルル", "人口": 718182} ] }, "言語": [ "英語", "フランス語", "ハワイ語", "スペイン語" ], "渡航歴": true } こんなJSONから、 Power Automate で 目的の「キー」に対する 値を取得する方法を説明 します
Power Automateで JSONが 怖くなくなると
Power AutomateでのJSON
Power AutomateでのJSON トリガーの Input と Output は JSON です
アクションの Input と Output も JSON です
どう活用できるの? 「動的なコンテンツ」で、目的の項目が取得しにくいとき triggerBody()?['events']?[0]?['message']?['type'] ダイレクトにコンテンツの指定が可能
実行速度が遅すぎる Apply to each を撲滅したいとき outputs('開始して承認を待機')?['body']?['responses']?[0]?['responder']?['email'] ダイレクトにコンテンツの指定が可能 承認者は一人なのに、 自動でApply to
each になっちゃう お、遅い・・・
トリガーの実行条件を絞りたいとき トリガーの実行条件を 設定できます ▪ 条件に合わない時はフローが実行しない為、実行回数の節約に効きます ▪ SPOの「アイテムが作成または変更されたとき」の作成のみ条件とした い場合 ・・・など @equals(triggerBody()?['Created'],triggerBody()?['Modified'])
Adaptive Cards に変数を入れたいとき JSONの構造が分かると、 カスタマイズし放題です
Power Automateで JSONを扱う
ここで Automate の設定変更 設定 ⇒すべての Power Automate 設定を表示 試験的な機能 をオン
JSONを作る ▪ 「データ操作」-「作成」 ▪ 「変数を初期化する」 全体が { } で囲まれている ⇒
オブジェクト 全体が [ ] で囲まれている ⇒ アレイ
目的の値をゲット-JSONの解析 「データ操作」-「JSONの解析」でJSONから目的の項目が 取得できます JSONを貼付け 項目が参照できる
目的の値をゲット-アクション編 JSON Pretty Linter (https://lab.syncer.jp/Tool/JSON-Viewer/) ①実行履歴の未加工出力の表示を JSON Pretty Linter へ貼付けする
ビューアーで[Path]を有効化し、 目的の値のパスをクリック object['body']['responses'][0]['responder']['displayName'] ②Objectを outputs(‘Action名’)? に 置換する outputs('開始して承認を待機’)? ['body']?['responses']?[0]?['responder']?['displayName'] ③ブラケット間に”?”を挿入
trigger()?['body']?['body']?['content'] ③ブラケット間に”?”を挿入 目的の値をゲット-トリガー編 ①実行履歴の 未加工出力の表示を JSON Pretty Linter貼付けする ②Objectを trigger()?
に置換する object['body']['body']['content']
variables('CountryInformation')?[0]?['名前'] object[0]['名前'] ②Objectを variables(‘変数名‘)? に置換する ③ブラケット間に”?”を挿入 目的の値をゲット-変数編 ①変数で入力した値をJSON Pretty Linter貼付けする
Power Automateで JSONの発展
Apply to each 対策 Apply to each は極力撲滅! ・・・遅い
Apply to each 対策① JSON配列の 全レコードから特定のカラム を取得する場合は 選択(と結合) [開始]に含まれるカラムは item()?[‘カラム名’]
で取得できる
Apply to each 対策② JSON配列の 特定のレコードの特定のカラム を取得する場合は JSON Pretty Linter
「選択」アクションがあると・・・ Apply to Each なしで ▪ 文字列を1文字ずつ配列に変換
「選択」アクションがあると・・・ Apply to Each なしで 文字列の指定の位置を変換
色々使うと オセロも作れます Power Virtual Agetns も利用してます
まとめ JSON怖くないでしょ? むしろ好きになっちゃった? 使いこなして面白フローをつくろう!
ありがとうございました
More Decks by MiyakeMito
See All by MiyakeMito
Power Automateアップデート情報
miyakemito
0
430
マルチステージとAI承認について
miyakemito
1
240
Copilot Studioについて
miyakemito
9
10k
Dataverseの検索列について
miyakemito
2
2.2k
AI Builder について
miyakemito
3
1.3k
Microsoft Copilot Studio についてざっくり説明
miyakemito
2
2k
Power Automateのデータ操作(Data Operation)について (Ver.モダンデザイナー)
miyakemito
5
4.2k
JSON攻略法.pdf
miyakemito
13
7.5k
ガンダムBotを1分でつくってみせろよ
miyakemito
1
950
Other Decks in Technology
See All in Technology
AI時代に求められる優秀なTechLeadの振る舞い
pospome
11
16k
複数システムが同居した 15 年物の AWS アカウントを解体するための考古学
wa6sn
3
150
生成AI時代のIAMのマニアックな話
takuros
6
3.2k
セキュリティ専任チームなしで攻撃を先回りするSREが実践したSIEM on Amazon OpenSearch Service
cscengineer
PRO
1
880
Reticulum, le réseau cypherpunk dont vous avez besoin !
rlifchitz
0
140
ゼロから作るWebアプリの新定番!?Amplify Gen 2 × AWS Blocksで実現する「開発速度とRDBの柔軟性のいいとこ取り」
amixedcolor
1
250
BALLAS Technology Deck
ballas_inc
0
610
少ない人手 限られた予算 それでも守る 消せない・見つける・戻れる オールハザード型BCP on AWS / 20261107 Mitsutoshi Matsuo
shift_evolve
PRO
0
380
SREのためのFinOps入門
muziyoshiz
3
1.5k
サボる子はいねぇがー!AgentCoreハーネスの脆弱性に学ぶ、エージェントの入力バリデーション
iwamot
PRO
5
340
Kiro CLI 入門 (ターミナルと CI で使う) | 目指せ Kiro マスター 03
inariku
PRO
2
150
業務でAWSをあまり使っていない私が、AWSへのモチベを保つ方法
smt7174
0
200
Featured
See All Featured
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
1k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
300
How to Think Like a Performance Engineer
csswizardry
28
2.9k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
300
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
940
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Heart Work Chapter 1 - Part 1
lfama
PRO
11
37k
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
640
GitHub's CSS Performance
jonrohan
1033
470k
Code Reviewing Like a Champion
maltzj
529
40k
Done Done
chrislema
187
17k
Designing for humans not robots
tammielis
254
26k