6
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Noodlでデータを扱う Part1 CSVとJSONの静的データ

Last updated at Posted at 2019-10-27

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は、一人分のプロフィールです。
アートボード 1.jpg

どういうことなのか、カボチャくんを使って図説していきたいと思います。

スクリーンショット 2019-10-26 13.11.27.png

このカボチャくんを「かぼ太郎A」として、下記の属性を与えたいと思います。

かぼ太郎Aのプロフィール
ID: kabo1
名前: かぼ太郎A
色: #FF7345

直接指定もできますが、今回は説明のためにModelノードを使います。
スクリーンショット 2019-10-26 14.45.24.png

  1. Propaties にcolornameを追加。
  2. 図のようにStringノードとColorノードを追加しつなぐ。
  3. Stringノードにkabo1と入力
  4. もう一つのStringノードにかぼ太郎Aを入力
  5. Colorノードに#FF7345を入力
  6. プレビュー画面をタップ ※Modelノードは入力のあとにStoreして初めて保存されます!

これで、純白の素かぼちゃに色と名前を着けることができました。

スクリーンショット 2019-10-26 14.47.14.png さらに、Modelノードはidを入力すればそのプロパティを呼び出すことができます。 図: 別のModelノードからかぼ太郎Aの名前と色を呼び出しているサンプル

かぼ太郎Bを増やす!

今度はかぼ太郎Bを増やしてみます。

かぼ太郎Bのプロフィール
ID: kabo2
名前: かぼ太郎B
色: #2E873A

スクリーンショット 2019-10-26 15.02.23.png

先程はTapをトリガーにデータ保存をしていましたが、Booleanにチェックを入れてつなぐことでロード時にModelノードがStoreしてくれるようになります。

でもこれ面倒くさくない・・・?

カボチャが100個に増えた時、ノードが煩雑になってしまう......
プロフィールの枚数分、それぞれの属性を持ったカボチャを並べたい......

そんな時使うのがStatic DataノードとFor Each、For Each Itemノードです!

Static Dataノードとは

静的データを扱うノードです。CSV,JSONが使えます。
CSVとJSONについて

こんな風にNoodl内にCSVやJSONデータを書くことができます。
スクリーンショット 2019-10-26 15.47.24.png

Noodlのstaticデータノード
[
    {
        "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ノードから呼び出しできるようになります。

同じことをCSVで書くと
スクリーンショット 2019-10-26 15.51.22.png

Noodlのstaticデータノード
color,id,name
# ff6347,C001,かぼちゃA
# ff4500,C002,かぼちゃB
# ffd700,C003,かぼちゃC
# ff4500,C004,かぼちゃD
# 2e8b57,C005,かぼちゃE

1行が一人分のかぼ太郎のプロフィール。

図のようにつなぎ、For EachノードのComponentでカボチャくんミニを選択すると...
スクリーンショット 2019-10-26 15.32.00.png

カボチャのプロフィールの数(5個)、カボチャが複製されました!
(画面からはみ出て3個しか見えていませんが…)

For Each Itemノードでカボチャごとにそれぞれのプロフィールを適用しよう

カボチャくんミニコンポーネントの中身を編集します。
Component inputsではなく、For Each Item とModelノードを図のようにつなぎます。
スクリーンショット 2019-10-26 15.39.35.png

For Each Itemは、各item(=Model)のIDを持っています。
それぞれの「カボチャくんミニ」が自分のidから色と名前を呼び出しています。

というわけで、Noodlで静的データを扱うことができました!

6
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?