0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Bubbleのチュートリアル3:Saving and modifying data

Last updated at Posted at 2024-10-19

はじめに

Bubbleというノーコード/ローコードでアプリを作るサービスがあり、ちょっと言葉に癖があったりするので、チュートリアルをやってみる記録です。Bubble用語は、Bubbleのように網掛けします。
なるべく細かくキャプチャしていくので、見るだけでもBubbleってこうやるんだと感じていただければ。

チュートリアルをやってみた記事

  1. Saving data
    • 位置情報をDBへ登録して、地図にマーカーを表示
  2. Building a sign-up system
    • ユーザー登録とログイン、ログオフ
  3. Saving and modifying data <<今回>>
    • Redditっぽい投票システム

チュートリアルの記録

チュートリアルを選択

ログイン後のトップページ
>左メニューのAcademy
>Learn your way
>By watching
>Interactive lessons
>Saving and modifying data

Redditのことは、チュートリアルのサブタイトルみたいなところに書いてあったのですが、なじみがなさ過ぎて、raddit-likeなアプリと言われても全然わかりませんでした。ググってみると、日本でいう2chのようなもので、でもネガティブなことが全然ないとのこと。
うーん、それはSNSの特徴というより、使っている人の特徴なのでは?と思ったり。

image.png
image.png
さて今回は、都市名を登録して投票するとのこと。投票は、Reddit風だとしたら、投稿にいいねとよくないねのボタンがある感じでしょうか。

1段落目の話は、1つ目のチュートリアルで、Locationテーブルにレコードを追加したとたんに、すぐ地図がそれを読んでマーカーを表示する、ということを言っているのだと思います。

さて、Start!

新たな都市を登録するための入力ボックスとボタンを追加

image.png
OK.

image.png
ElementInputを追加

image.png
(今回も、要素の名前が勝手につけられていることはスルーします。例えばこのInputは、プロパティ画面のタイトルで"Input City"になっている。)
プレイスホルダーに"都市名を入力してね"と入力。文言は違っていても、チュートリアルは進む。

image.png
でた。Feel free to drag it around or resize it.自由に位置を調整したりリサイズしてねと。
普通の入力ボックスでいいのでこのままContinue。

image.png
image.png
次はボタンを追加。入力ボックスの隣に置いてねとのこと。

image.png
ラベル(キャプション)を"Submit"にとのことなので、"登録"に。

image.png
でこんな具合。

image.png
image.png
次はWorkflowかな。

image.png
ラベルを"登録"にしたら、チュートリアルの中の文面も"登録"に変わる。地味にすごい。
"Add workflow"で、Workflowの世界へGO。

登録ボタンの処理を作成

image.png
image.png
今回が3つ目のチュートリアルということでだいぶ慣れてきました。Workflowの画面で、登録ボタンが押されたときの処理を作る画面に飛びましたね。

image.png
action menuから~

image.png
Data(Things)の~

image.png
"Create a new thing"を選択。
チュートリアルの1つ目の、"Location"みたいなパターンですね。ここで"new thing"を作るということは、何かのテーブルに、列を追加するということ。テーブルはTypeと呼び、レコードはEntryと呼ぶ。(復習)

image.png
image.png
そうそう、そうすると、Typeを選ぶのだけど~

image.png
まだ何もないので、Typeを作る(定義する)ところからやります。

image.png
"City"というテーブル名を作るので、Type Nameは"City"。

image.png
image.png
ここまでだけで、"City"テーブルにレコードを作るのだけど、今のままだと更新日時とかしかないから、都市名を格納するための、別の列(another field)を定義。

image.png
image.png
独特な入力ボックスの中にある"Click"を押して、新しい列(field)を作成。

image.png
"Name"かー。いけてないので、"CityName"にしておきます。
型はtextで、Create。

image.png
City.CityNameに、何を代入するんだい?という設定で、ここでは上で作った入力フィールドのValueを設定しますね。たぶん。

image.png
そうそう、Elements=画面に配置した要素のうちの、"Input City"を選んで~

image.png
"'s Value"を選ぶ。

image.png
image.png
この設定によって、ボタンをクリックしたら、"City"テーブル(Type)にレコード(Entry)を追加。その1つの列(field)である"CityName"には、入力ボックス"Input City"のValueを設定します。

お、次は初のDataタブに移るのかな。

image.png
と思ったらまだ列追加するのかーい。ということで、投票数の列を追加するらしいです。

image.png
image.png
image.png
"Votes"という名前の列で、数値型ですね。

image.png
そうか。登録時だから、投票数=固定で1、です。固定値も入れられるよ、ということを教えてくれてます。

image.png
image.png
あーこれなんか必ずやるな。登録後に入力ボックスをリセットです。忘れがちではあるけど。

image.png
image.png
できました!内容もよくわかります!

image.png
あ、ダイナミックデータエディタは見ないんですね。
Designに戻り、登録した都市のリストを表示する仕組みを作ります。

登録された都市名のリストを作成

image.png
Containersの中のRepeating Groupを使うそうです。繰り返し専用のグループなんですね。私がスクラッチで作るとしたら、こういうクラスはちょっと思いつけない気がするから、面白くて勉強になる。

image.png
image.png
大きくするんですね。facebookにしてもXにしても、コンテンツの繰り返している部分が画面のほとんどですもんね。

image.png
どーんと大きく配置しました。
そうか。リピートする、1回1回は何にあたるかというと、"City"テーブルの1件1件だから、その定義が"Type of content"で"City"なんですかね。よく見るとその下の項目は、"Data source"で、違いがよくわからないな。

image.png
image.png
そうなんですね。よくわかってないけど、進みましょう。

image.png
image.png
重要そうなところなので、日本語訳を綿密にしてます。
ここの"field"は一般名詞としての"field"ですね。

image.png
何度かやってる気がしたのでちょっとスキップ気味に。

image.png
image.png
なるほど。Where句である"constraint"は使わないけど、OrderBy句の"Sort by"で、投票数の降順("Descending")にするんですね。

image.png
image.png
表示されるために必要なものはそろったみたいですけど、まだリピートの中に表示するものは選んでないから、ピンとこないですね。。

image.png
急に、表示上の境界線の話(!?)
見た目をここで変更できますよっていうチュートリアルなのかもしれない。

image.png
image.png
さらっと流したので、やはり本質的な話ではなく、見た目を変更する方法のお知らせだったような気がします。背景の色だけちょっと変えて次。

リストで繰り返される1つの中身を実装

image.png
リピートグループの最初のハコの中で、繰り返される要素の定義をしていくんですね。

image.png
ドラッグ中のElementがリピートグループの中に入るときは、赤い枠になるらしいけど、わかりづらい!それをアピールするなら、太線にしてほしいなぁ。

image.png
Elements Treeを見ても、入ったみたいなので、進みます。

image.png
そうそう、dynamic dataですね。
"City"1件のレコードの列を選択するんでしょう。

image.png
リピートの1件のデータのことをCurrent cellと呼ぶんですね。

image.png
Current cellの、"City"の、"CityName"を設定。(列名を、"Name"でなく"CityName"にしておいてよかった。固有名詞であることがわかる。)

image.png
image.png
投票数はまだまったく未着手だけど、We're also adding は、これから追加しようとしていることもbe ~ingで使うんですね。(久々の英会話授業)

image.png
と思ったら、自動で入れた。これのことを言ってたのか。(上の英会話の話、撤回)

リストで繰り返される1つの中身に、投票ボタンを追加

image.png
投票ボタンを追加するんでした。

image.png
リピートグループの中に入れました。
見た目は今はどうでもいいですが、一応「いいね」っぽいアイコンにしておきました。

image.png
そしてWorkflowへGO!

投票ボタンの処理を追加

image.png
Vote Upアイコンをクリックしたとき、Data(Things)を"Make changes to thing..."すると。なぜDBをUpdateすると言わないで、違う英単語に置き換えるんでしょうね。。

image.png
Updateの対象は、"City"テーブルです。

image.png
処理のところで、"Current cell"といわれるとちょっと違和感があるけど、たぶんこの処理はフロントエンドなんでしょう。
"City"テーブルの、「いいね」アイコンのあったレコードがUpdate対象。

image.png
更新する列は~

image.png
"Votes"で~

image.png
"Current cell's City"の、(これを1つ選択)
"'s Votes"の、(次にこれを選択)
"+"で~(選択)

image.png
え!?まさかのDesktop 1200px!?(矢印がそれを指し示す)
image.png
いやいや、どういうミスなのかわからないけど、無視して"1"をキーボードで入力しましたよw

image.png
おー終わった!今回は長かった気がする。
Previewで動作確認です!

動作確認

image.png
スムーズに動きます!(チュートリアル2のログインはなんかぎこちなかった)
まぁ単純といえば単純ですね。

微修正:4レコードしか表示されないし縦スクロールバーも出ない問題の対応

image.png
4レコード以上登録すると、画面の外に追加されて、スクロールもできずにどうにもならなかったのですが、リピートグループの"Set fixed number of rows"に"4"って書いてあって固定でした。

image.png
"Set fixed~"のチェックを外したら、いい感じになりました。スクロールバーも出るし、高さも"Min height of row"に依存する形なのかな。
image.png

おわりに

今回の練習は、Repeating Groupの練習でした。Redditのような、というほどでもないと思いましたが、まぁそういわれればそうかもしれません。このQiitaにもありますね。今どきなんにでもある。

また3回目ともなると前回やった操作がでてきて、チュートリアルのまどろっこしさを感じましたね。Bubbleの操作は簡単なんだけど、チュートリアルが丁寧すぎてしつこいというか。。ある意味、3つやるだけで結構慣れる、いいシステムということなのかもしれません。またいいチュートリアルということかもしれません。

全11回あるわけですが、早くも自分で自由に手を動かしたくてウズウズし、11回全部、このQiitaに書こうと思ってたけど続けられるか自信がなくなってきました。
見ていただいている方次第です!この記事に是非いいねして、私のモチベーションを上げてください!

ではよきBubbleライフを!

Next

次はチュートリアル4に挑戦
Bubbleのチュートリアル4:Building a slideshow

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?