Node-RED Park Vol.3「私の JSONata を使う事例紹介」の登壇資料です。
◆スライド内の素材は以下を使用させて頂いております。ありがとうございます!
・シルエットデザイン http://kage-design.com/ ・human pictogram 2.0 http://pictogram2.com ・ICOOON MONO http://icooon-mono.com/ ・Adobe Stock https://stock.adobe.com/jp
Node-RED Park Vol.3 - JSONataについて語ろう私の JSONata を使う事例紹介ワンフットシーバス 田中正吾
View Slide
私の話はスライドを後ほど共有します。話す内容に注力いただいて大丈夫です!
田中正吾(たなかせいご)屋号:ワンフットシーバス2004年よりフリーランス。以後、FLASH制作を中心にインタラクティブコンテンツを主に行い現在に至る。最近ではWEBフロントエンドをベースにしながらも、情報とインターフェースが合わさるアプローチという視点でIoTやMixed Realityといった技術も取り入れながら活動しています。
まず、気をつけていきたい発音じぇーそねーたーって言いがち。じぇーそなたらしい。https://www.youtube.com/watch?v=ZBaK40rtIBM
JSONata よく使っています
いくつか事例を紹介
毎年の年末に振り返る記事2020の事例https://www.1ft-seabass.jp/memo/2020/12/31/look-back-over-2020/
2021 だとちょっと別の仕組みhttps://www.1ft-seabass.jp/memo/2021/12/31/look-back-over-2021/
Node-RED の JSONata で月の初日と最終日を取得するメモhttps://www.1ft-seabass.jp/memo/2021/12/25/node-red-jsonata-firstday-lastday-span/
日付関連の扱いはやはり強いと思います!Node-RED の JSONata で日付と時間をうまく扱える Tipshttps://qiita.com/tseigo/items/e7deb8d6d4902a4aef30
こんなデータで JSONata や他の扱い方をしてみるタスクを想像させるようなデータ。詳細を見てみましょう。
Node-REDにこのデータを入れる
テーマは「Priority high だけ取得」
function ノード
JavaScript で組めるので頑張ればイケるがそれなりにコードを書くことになる自由度も高いが時間もかかる。Array.filterやreduseがハマれば、より簡単にかける場合も。
JavaScript Array 関数まわりも強力なので併用していくもの良いなと思いますhttps://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/filter
デモしてみる
change ノード+JSONata
change ノードで JSONata クエリを通して先ほどと同様の処理がイケる
複雑な JSON データから(クセはあるが)手軽にデータが取得できる
鍛え方とか、便利 TIPS
やはり本家ドキュメントは分かりやすい英語だけど大体伝わる。ちょっと見てみましょう。https://jsonata.org/
クエリ試すときは JSONata Exerciser おススメ本家サイトで試せる https://try.jsonata.org/
さきほどのもこんな風に試せる
いくつか便利クエリ紹介
TimeEstimate 値を合計$sum(*.TimeEstimate)
Tags に private が含まれる*[$contains(Tags,"private")]
Tags に private が含まれる+TimeEstimate 合計$sum(*[$contains(Tags,"private")].TimeEstimate)
debug ノードでも JSONata 使える Tips
➔ 複雑な JSON データから JavaScript でループや分岐を駆使しがちなものが手軽に取れるようになる!➔ 合計や平均値など SQL にあるような集計関数も使えてデータの再加工はしやすい!➔ 日付にも強く ISO 8601 フォーマットやタイムスタンプの相互変換もしやすく、時差についても考慮がある!➔ JSONata のドキュメントがしっかりあり、自分のデータで試しながら鍛えられる!➔ クセはあるが Node-RED で JSONata を覚えると色々と強力な処理ができるので、ぜひ使ってみてください!まとめ