Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
JSONは怖くない
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
MiyakeMito
January 29, 2022
Technology
12k
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
JSONは怖くない
MiyakeMito
January 29, 2022
More Decks by MiyakeMito
See All by MiyakeMito
マルチステージとAI承認について
miyakemito
0
150
Copilot Studioについて
miyakemito
7
10k
Dataverseの検索列について
miyakemito
2
1.8k
AI Builder について
miyakemito
3
1.2k
Microsoft Copilot Studio についてざっくり説明
miyakemito
2
1.9k
Power Automateのデータ操作(Data Operation)について (Ver.モダンデザイナー)
miyakemito
5
4.1k
JSON攻略法.pdf
miyakemito
13
7.3k
ガンダムBotを1分でつくってみせろよ
miyakemito
1
900
Microsoft Copilot Studio について
miyakemito
0
8.5k
Other Decks in Technology
See All in Technology
ゴールデンパスは敷いただけでは道にならない ─ 企画部門のエンジニアが技術標準を事業価値に変えるまで
mhrtech
1
230
“それは自分の仕事じゃない"を越えて行け
yuukiyo
1
480
DMM.com 購入改善推進チーム におけるCodeRabbitを用いた レビューフロー改善の一例
ysknsid25
2
670
凡エンジニアがこの先生きのこるためには。〜TypeScript完全に理解したい〜
alchemy1115
2
310
穢れた技術選定について
watany
17
5.6k
関数型の考えを TypeScript に持ち込んで、テストしやすい純粋関数を増やす / Pure at the Core, Effects at the Edge: Bringing Functional Thinking into TypeScript
kaminashi
2
130
Gen3R: 3D Scene Generation Meets Feed-Forward Reconstruction
spatial_ai_network
0
130
[2026-07-15] AI Ready なはずだったアーキテクチャと、見えてきた課題・次に目指す状態
wxyzzz
9
4k
AIレビューはどこまで任せられるのか?自動化と人が背負うレビューの境界
sansantech
PRO
3
1.1k
AI Coding Agent時代のcdk-nagガードレール 〜組織ルールを強制CIで守り抜く設計の挑戦〜
mhrtech
3
430
ソニー銀行におけるビジネスアジリティ向上のためのクラウドシフト戦略
srenext
0
830
CSに"SLO"は要らない、経営層に"99.9%"は伝わらない - SREを全社に"翻訳"する3原則
cscengineer
PRO
1
5.1k
Featured
See All Featured
Typedesign – Prime Four
hannesfritz
42
3.1k
Raft: Consensus for Rubyists
vanstee
141
7.6k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
First, design no harm
axbom
PRO
2
1.2k
Automating Front-end Workflow
addyosmani
1370
210k
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
320
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.5k
Writing Fast Ruby
sferik
630
63k
YesSQL, Process and Tooling at Scale
rocio
174
15k
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
410
How to Talk to Developers About Accessibility
jct
2
400
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1k
Transcript
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怖くないでしょ? むしろ好きになっちゃった? 使いこなして面白フローをつくろう!
ありがとうございました