Bubbleのチュートリアル６：Using conditions

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

https://bubble.io/

## これまでのチュートリアルをやってみた記事
1. [Saving data](https://qiita.com/yo16/items/d77a5cf8df18419b079e)
    - 位置情報をDBへ登録して、地図にマーカーを表示
    - データのInsert
    - 地図
2. [Building a sign-up system](https://qiita.com/yo16/items/1ac9467ad5bb5ed6ba52)
    - ユーザー登録とログイン、ログオフ
3. [Saving and modifying data](https://qiita.com/yo16/items/449b9e0b15ff76ec9584)
    - SNSっぽい、投稿といいね
    - `Repeat Group`の利用
    - データのInsert、Update
4. [Building a slideshow](https://qiita.com/yo16/items/c015c2097ae53055bca0)
    - スライドショー形式のアプリ
    - `Plugin`の利用
5. [Sending data to pages](https://qiita.com/yo16/items/0b0a847b0e4fa382e07c)
    - `Data`（`Things`、DBのデータ）の共有
6. **Using conditions** ＜＜今回＞＞
    - 条件の利用

# チュートリアルの記録
## チュートリアルを選択
ログイン後のトップページ
＞ 左メニューのAcademy
＞ Learn your way
＞ By watching
＞ Interactive lessons
＞ **Using conditions**

今回のサブタイトルは、「Use conditions to refine what your app does」です。
"refine"という単語は語源からのイメージでは、もう一度(RE)綺麗にする(FINE)っていう感じの意味ですが、Google翻訳によると「条件を使用してアプリの動作を絞り込む」だそうです。（ちょくちょくある英会話の勉強）

さてこれまでやってきたチュートリアルの中で、今回のテーマっぽいところを通っていました。何かのテーブル(`Data`)からデータを取り出すときに、"Do search for"で指定するところ。"Order by"と一緒に、"Condition"もあったような気がします。これはWhere句だろうって書いた記憶が。

あとは、`Workflow`の中でも、ハコの１つ１つに実行条件がありました。例えばログインボタンの押下処理で、メインページへ飛ぶ処理は、ログインOKのときのみ、みたいな使い方をするんだろうなと。

もしそれだとしたら、言われなくてもわかるやつー。
でもBubbleのチュートリアルは、やってみるといつも学びがあって味わい深いので、今回も始めます！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/0e85be8e-6722-0fc5-d74d-18f917eed344.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/e521ab94-ba0d-27f4-c69d-eddf9c3f18dc.png)
１点目は、自分のプロフィールページの場合は編集できる機能か。
２点目は、なんだろう、「メールを送る処理」だけど、タスクが"メールを送る"というときだけ実行し、そうでないタスクのときは何もしないとかかな。
３点目は、コンテンツAのときはテーブルPからデータを取り、コンテンツBのときはテーブルQから、みたいな感じかな。

推測です。
ではStart！

## マウスホバー時に色が変わるテキストを作成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/c4c4c40f-c25f-5b09-8f92-4e843b3c3b57.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/81a9291b-b2d9-80b0-b2ad-7b4d4f82ab7b.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/80220f00-106a-8109-e5f9-07eec8f82394.png)
かなり大きめなテキストを置く。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/a4a0fb2b-2aff-3212-5ebe-1c3ac71f8943.png)
"Hover me!"にする。

"Hover me"って、私を浮き上がらせて！ではなく、私の上にHoverして！なんですね。"Hover over me!"が正式か。
ちなみに私を浮き上がらせて！は、"Let me hover(lift)!"のようです。（英会話）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/db704e21-44cf-fe20-c005-056c410f0f15.png)
フォントサイズを大きく。36pxにしておこう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/c4102220-216d-1fe2-5c14-75868da86a9d.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/2df22280-d3f7-7cfb-4076-730020c95bdf.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/28279d92-3d99-6e62-a23d-4ccb8eda3f3e.png)
おっ！ここかー！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/4cfaad05-c0fe-4908-8817-577ae73948a8.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/415d7530-5364-28d7-c059-607bff459939.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/99891da7-b539-c534-099a-92ae85f94265.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/db55873b-9bd5-7d63-a09f-2db4f8ea36be.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/de380d2b-6128-9f3f-0435-710c8084f62c.png)
私が、ホバーされた時。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/983a3de2-93d3-e71a-ee6b-181d0b4ceb70.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/af87733a-167b-fb45-7fbb-2d4e2e56c47a.png)
実施の選択肢がたくさんあるー。CSSで指定できるほぼ全部か。ノーコードではあるけど、これCSSを知らないと選択できないのでは。英語圏の人はできるのかな。
その中から、"Font color"。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/f895a7ac-c635-e196-45ce-c1414eaa1c91.png)
"Font color"を、どの色にするか。赤を選んでとのこと。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/7581d3b2-428d-61ac-01be-1b02f6ea3f27.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/e171e8cf-ee16-02e8-0998-6983e71704c6.png)
なるほど。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/70cb8288-739d-6edd-a891-d16f09bfbb53.png)
同じ条件で、"Select a ～" から複数指定できるようだったので、"Font size"=42px(さらに大きく)と"Italic"も追加してみた。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/5453706d-fc05-2799-3ee4-2f191ca8c171.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/684b3340-5942-4f85-2e02-d23ea1a8655f.png)
次は`Workflow`。
空でないとき、アラート・・・。"アラート"というと、悪いことみたいだけどそうではなく、ここではJavaScriptでメッセージをポンと出す関数が`alert()`なので、それのことなのかなぁ。↓
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/10341908-755d-7b19-9e03-868d4bfb4764.png)


## 条件によって、アラートを出す処理を作成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/db2c1bbe-d119-f97c-9650-a586003085ea.png)
Input BoxとButtonを置いて

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/1771f84d-1bdf-97db-bdd9-49adb0b5b358.png)
"Click me!"に。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/96ccb357-de9e-2675-1d08-5c38413547ca.png)
お！？`Alert`っていう`Element`があるのか。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/360e52f2-f745-f152-2bbe-1b7c38b00755.png)
それを置いて

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/751380ec-89e1-7734-4e34-50cd2bad6452.png)
"Not empty!"と書く。通常は空のときに出すような`Element`だと思うから違和感があるけど、まぁ練習なので。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/c1c22e45-5585-a4a1-562b-d484efe87bba.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/7fffe8a2-3812-3f52-2eb0-134008eeab51.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/ebaf3e51-17b2-d2b0-0dbf-953973bd14fb.png)
よし！ボタンのプロパティから、ボタン押下時の`Workflow`を作成します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/3d3882c7-94bb-711f-ef9a-78fdb11f973d.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/446be0a7-3c35-49df-16a2-66f95226c14d.png)
`Workflow`画面に移って、"action menu"の"Element Action"＞"Show message"。
"Show message"なんていう処理があるくらいなので、開発者の視点としては、ここはフロントエンドなんだなと思います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/d5f0cea1-86c7-4ea1-24d1-809ab7d5d562.png)
ページに、`Alert`が１つしかないから、`Element`に"Alert Not Empty"が自動的に選ばれるそうです。なんかちょっと余計なお世話感が。

あとこのプロパティ画面では、出方が細かく指定できますね。0.5秒でじわっと出て、2秒表示されて、0.5秒でじわっと消えるんだ。JavaScriptの`alert()`ではなかった。もっとしっかりしたやつ。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/e9976c3b-0e07-1569-ff4c-d86f745b2bda.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/0b9dbbcf-26b2-cf89-cb99-68718ab61b01.png)
あ、そうか。今のままだと、ボタンを押すと必ず表示されますね。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/c66e1c81-cb1d-2533-fac1-daba8fd22bdc.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/c4243280-22b5-0e57-0e69-9ad86a7930bc.png)
そっちでやるのかー！プロパティの"Only when"で指定するのかと思った。確かに根本でやった方が効率的ですね。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/e224cb81-6e8c-01fd-204e-b20e288ca085.png)
最初のハコのプロパティです。ここの"Only when"で

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/a1a0b719-58fa-bf3d-8197-9660505551cd.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/d8ddd1ab-3c26-8422-b4de-47b21471a265.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/cede6123-7b94-3874-a7bf-8bb1d8357d26.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/3a2f2f52-367e-7b4b-dc99-b70d09fec066.png)
プルダウンで条件を選ぶと、英文で条件が書かれます。英語圏の人は楽なんだろうな。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/2015280f-c7f0-40ca-2519-b6c265846639.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/dc8f3732-857c-3504-dbb0-3d7826c32324.png)
おっと、今回は短い。`Preview`です！

`Preview`は本来細かくやった方がいいとは思うけど、チュートリアルとしては、全部終わってから`Preview`します。逆にいうと、`Preview`できるということは終わり。なので、`Preview`してね！と言われるとうれしくなりますｗ

## プレビューで動作確認
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/c8dfc953-22fb-0d90-6c47-8a3aa480e966.png)
ここにマウスを乗せると・・・
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/410f7b8f-5179-5d48-cc5f-192567656634.png)
よさそうですね。フォントサイズが36→42にしたけど、Italicをつけたから変化がわかりづらかった。でもまぁいいや。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/c81468a5-ee35-2cfd-021e-af45764d159f.png)
文字を入れてボタンを押すと、じわっと出てきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/87a3a720-5398-c7d6-0215-8b27790cb69f.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/67d50d51-e61c-0e26-01ef-3a564919c74e.png)
改めてこのElementのプロパティを見ると、色を変えたり、文面で"Insert dynamic data"が使えたりします。

# おわりに
画面のElementでは何かの条件でCSS・Styleを変更すること、処理ではボタンを押すというだけでなくほかの条件も加えて実行することもできることを学びました。
他の場所にも"Only when"と"condition"はたくさんあるので、使う場面は多いですね。

ドロップダウンリストで対象を選べるのは、自由に文字入力するよりはかなり制限されてていい感じです。リストの選択肢が多いとしても。
ちなみに私は、CSSで"マージン"のスペルがわからなくていつも戸惑うので、選択だとうれしいｗ :o:margin :heavy_multiplication_x:mergin

ではよきBubble＆条件縛りライフを！

# Next
[Bubbleのチュートリアル７：Defining a field as a list of things](https://qiita.com/yo16/items/eda7b609d12ac16cb205)