Noodlはデータ連携もとても得意です!
何回かに分けて、躓きやすいModel/Collectionノードの解説などもしていきたいと思います
Part1: CSVとJSONの静的データ
Part2: ModelとCollection ノード基本
Part3: 外部ストレージと連携 アカウントいらずの簡単DB 「API Based JSON Storage」を使ってみる
Part4: Model/Collection 応用
(全部書ききれるか怪しいけど頑張ります)
コチラのイベントで使ったサンプルコードの細かい解説も兼ねています。
https://enebular.connpass.com/event/148970/
サンプルファイル
サンプルファイルはここからダウンロードできます!
datasample01をexternal projectとして読み込んでください。
今回使うノード
- Model
- For Each
- Static Data
- For Each item
Modelとはなにか
データのモデルと聞いてピンとこないな・・・という方はプロフィール帳をイメージするとわかりやすい!
Modelは、一人分のプロフィールです。
どういうことなのか、カボチャくんを使って図説していきたいと思います。

このカボチャくんを「かぼ太郎A」として、下記の属性を与えたいと思います。
かぼ太郎Aのプロフィール
ID: kabo1
名前: かぼ太郎A
色: #FF7345
直接指定もできますが、今回は説明のためにModelノードを使います。
- Propaties に
color
とname
を追加。 - 図のようにStringノードとColorノードを追加しつなぐ。
- Stringノードに
kabo1
と入力 - もう一つのStringノードに
かぼ太郎A
を入力 - Colorノードに
#FF7345
を入力 - プレビュー画面をタップ ※Modelノードは入力のあとにStoreして初めて保存されます!
これで、純白の素かぼちゃに色と名前を着けることができました。

かぼ太郎Bを増やす!
今度はかぼ太郎Bを増やしてみます。
かぼ太郎Bのプロフィール
ID: kabo2
名前: かぼ太郎B
色: #2E873A

先程はTapをトリガーにデータ保存をしていましたが、Booleanにチェックを入れてつなぐことでロード時にModelノードがStoreしてくれるようになります。
でもこれ面倒くさくない・・・?
カボチャが100個に増えた時、ノードが煩雑になってしまう......
プロフィールの枚数分、それぞれの属性を持ったカボチャを並べたい......
そんな時使うのがStatic DataノードとFor Each、For Each Itemノードです!
Static Dataノードとは
静的データを扱うノードです。CSV,JSONが使えます。
CSVとJSONについて
こんな風にNoodl内にCSVやJSONデータを書くことができます。
[
{
"color": "#ff6347",
"id": "S001",
"name": "かぼちゃA"
},
{
"color": "#ff4500",
"id": "S002",
"name": "かぼちゃB"
},
{
"color": "#ffd700",
"id": "S003",
"name": "かぼちゃC"
},
{
"color": "#ff4500",
"id": "S004",
"name": "かぼちゃD"
},
{
"color": "#2e8b57",
"id": "S005",
"name": "かぼちゃE"
}
]
{}一個分が、一人分のかぼ太郎のプロフィール = Model1つ分 = item です。
Static Data内のitemに、idが含まれていると、Noodl内でModelノードから呼び出しできるようになります。
color,id,name
# ff6347,C001,かぼちゃA
# ff4500,C002,かぼちゃB
# ffd700,C003,かぼちゃC
# ff4500,C004,かぼちゃD
# 2e8b57,C005,かぼちゃE
1行が一人分のかぼ太郎のプロフィール。
図のようにつなぎ、For EachノードのComponentでカボチャくんミニを選択すると...
カボチャのプロフィールの数(5個)、カボチャが複製されました!
(画面からはみ出て3個しか見えていませんが…)
For Each Itemノードでカボチャごとにそれぞれのプロフィールを適用しよう
カボチャくんミニコンポーネントの中身を編集します。
Component inputsではなく、For Each Item とModelノードを図のようにつなぎます。
For Each Itemは、各item(=Model)のIDを持っています。
それぞれの「カボチャくんミニ」が自分のidから色と名前を呼び出しています。
というわけで、Noodlで静的データを扱うことができました!