Y's note

Web技術・プロダクトマネジメント・そして経営について

本ブログの更新を停止しており、今後は下記Noteに記載していきます。
https://note.com/yutakikuchi/

Adaloでアプリ上のデータを使ってQuickChartを動的に表示する

やること

@yutakikuchi_です。 AdaloとQuickChartを利用して、スマートフォンアプリ開発として画面にQuickChartを埋め込み、アプリ上のデータを基にチャートを動的に表示することを行います。下記ではAdaloとQuickChartについて簡単に紹介、その後作業の流れを記載しています。

Adalo

www.adalo.com

  • Freeで開始できるノーコードでWeb・スマートフォンネイティブアプリが作れるツールです
  • UI Componentがテンプレート化されていて、Adalo上でDrag & DropにてUIが作れます
  • Adalo上ではWeb・ネイティブアプリの1ページずつがScreenという単位で管理されています
    • Screenに対してComponent(Button, List, Form, Image...)などのパーツを紐付け、更にComponentに対してClickしたときにどういったActionを必要とするかを定義します
  • Databaseというメニュー機能を利用して、Adalo上のデータ構造を定義し、各画面などから呼び出しを可能とします

QuickChart

quickchart.io

  • WebAPIとしてSimpleなChartを画像やpdf等の出力フォーマットで表示をしてくれます
  • GitHub - typpo/quickchart: Chart image and QR code web API
    • QuickChartはopensourceであり、自身の環境にホスティングすることも可能です
  • https://quickchart.io/chart?c={type:'bar',data:{labels:['Q1','Q2','Q3','Q4'], datasets:[{label:'Users',data:[50,60,70,180]},{label:'Revenue',data:[100,200,300,400]}]}}
    • こんな感じのURIに対してencode加えてリクエストを送ると、下記のbarchartが表示されます

Adaloで作るアプリにQuickChartを表示し、動的にコントロールする

以下の手順で行います。QuickChartの例として、Raderチャートを用いています。Raderには自身の健康状態を記載するイメージのものになります。Raderチャート上に出力するPlotデータはLogin中のUserのデータをdatabaseから引いてくる状態としています。ここでは詳細を記載しませんが、下記と同じことをやろうとした場合、databaseにdefaultで入っているUser collectionに対してpropertyを事前に追加しておく必要があります。

  1. QuickChart上でパラメータの確認と修正
  2. Adalo上で修正したQuickChartのURLを貼り付け
  3. Adalo上でアプリのパラメータとQuickChartを連携

QuickChart上でパラメータの確認と修正

f:id:yutakikuchi:20210925144009p:plain:w700

こちらの作業はQuickChart上でのものになります。

QuickChart上でRaderのsampleを表示すると、上の画像のように画面左にjson形式の項目を修正できるeditorが出てきます。ここで確認すべきなのはRaderチャートとして表示すべきlabelsとそのlabelに対して表示するdataになります。dataは配列形式になっているので表示しているlabelとdataの順番が一致している必要があります。Adaloと連携をする際はこのdataの配列に対して、Adalo上のデータを連携するための記載をする必要があります。

画面右上に表示されるQuickChartのURLをコピーして次の作業に移ります。

Adalo上で修正したQuickChartのURLを貼り付け

f:id:yutakikuchi:20210925144910p:plain:w700

こちらの作業はAdalo上でのものになります。

上のキャプチャではHOMEのスクリーンに対して、imageのcomponentを用意し、componentのimage sourceをURLに設定。 更に、URLの入力欄にQuickChartで出力したchartの画像を出力するurlを貼り付けます。そうすると、画像一番右のようにQuickChart上で見たRaderチャートが表示されます。urlの貼り付けについて、通常だとjson形式の箇所に対してURLEncodeが掛かった状態でコピーされていますが、そのまま貼り付けてしまうとURLEncodeが掛かったままでAdalo上のデータ連携の修正を行う必要があり、作業が困難になります。そこで、Adalo上で後から編集しやすいように、URLDecode、更にはスペースや改行を削除した1行になっているもので貼り付けをし、Adalo上のデータとの連携修正をしやすくします

Adalo上でアプリのパラメータとQuickChartを連携

こちらの作業はAdalo上でのものになります。

f:id:yutakikuchi:20210925150550p:plain:w750

Adaloに貼り付けたURLの中でChartをPlotするためのdataという配列が有りましたが、そこを修正します。dataの配列に記載するものはDatabaseに入っているUser collectionの中のpropertyから参照する形にします。(事前に下記図のようにpropertyを追加しておく必要があります。) AdaloのURLの右に表示される編集ボタンで、data配列の先頭から一つずつUser collectionのpropertyを指定していきます。指定すると、User eating のようにAdaloが持つDatabaseの項目で書き換える設定が完了していることを示します。

f:id:yutakikuchi:20210925150744p:plain:h450

以上で、一通りの作業は完了になります。Adaloのツールの画面右上に出ている Preview というボタンを押すとLoginしているUser collectionからデータを引っ張ってきた状態でRaderチャートが表示されます。これで各UserごとのデータをRaderチャートとして動的に出力することが可能になりました。Adalo非常に便利ですね。ここでは記載をしていませんが、外部APIとの連携やWebViewも簡単にできそうなので、そこも試してみたいと思います。

f:id:yutakikuchi:20210925151552p:plain:h350