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
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
Power Automateアップデート情報
miyakemito
0
360
マルチステージとAI承認について
miyakemito
0
180
Copilot Studioについて
miyakemito
7
10k
Dataverseの検索列について
miyakemito
2
2k
AI Builder について
miyakemito
3
1.2k
Microsoft Copilot Studio についてざっくり説明
miyakemito
2
1.9k
Power Automateのデータ操作(Data Operation)について (Ver.モダンデザイナー)
miyakemito
5
4.2k
JSON攻略法.pdf
miyakemito
13
7.3k
ガンダムBotを1分でつくってみせろよ
miyakemito
1
930
Other Decks in Technology
See All in Technology
バイブコーディング時代のWebアプリ開発入門~Cloud Runで学ぶセキュアなビルドとデプロイ
waiwai2111
1
130
Reactの設計論
uhyo
24
13k
Screen Lens - 今見てる画面を翻訳する
komagata
0
320
10Xに技術的負債をもたらした「2つの境界の歪み」その構造と解消への営み
10xinc
0
2k
Claude Codeを「使うほど育つ」AI秘書にするノウハウ
minorun365
PRO
31
26k
新機種発売前に見直そう!端末移行で再ログインが要るアプリ・要らないアプリは何が違うのか 〜シームレスに再開できる設計と実装〜
zozotech
PRO
0
200
銀行勘定系システムにおける開発プロセス刷新×AIによる環境モダナイゼーション / Development Process Transformation and AI-Driven Environment Modernization
muit
1
2.3k
DEFCON34-Write-up_HYCu-MYCu
daikiokazaki
0
160
AIによるクリエイティブ生成を行う上での試行錯誤
plaidtech
PRO
0
160
What the customer really needed
kawaguti
PRO
3
200
AIエージェントを最高のパートナーに育てる方法|評価と判断軸を育てる5つのステップ
koichiaoki
1
140
ソフトウェアDNAとクラウドエージェントのススメ
cloudace
0
110
Featured
See All Featured
Abbi's Birthday
coloredviolet
4
10k
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
700
Information Architects: The Missing Link in Design Systems
soysaucechin
1
1.1k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
260
Fashionably flexible responsive web design (full day workshop)
malarkey
409
67k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
280
Done Done
chrislema
186
16k
Everyday Curiosity
cassininazir
0
320
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
450
Darren the Foodie - Storyboard
khoart
PRO
4
3.9k
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怖くないでしょ? むしろ好きになっちゃった? 使いこなして面白フローをつくろう!
ありがとうございました