Bubbleのチュートリアル８：Using external APIs

# はじめに
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](https://qiita.com/yo16/items/57b9bef94122c59785db)
    - 条件の利用
7. [Defining a field as a list of things](https://qiita.com/yo16/items/eda7b609d12ac16cb205)
    - リストの利用
8. **Using external APIs** ＜＜今回＞＞
    - 外部APIの利用

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

今回のサブタイトルは、「Search for songs in the iTunes API」です。

API！使いたいです！！:raised_hand:
待ってました！！:heart_eyes:

いやみんなそうなんじゃないですか。今回やるiTunesのAPIを使いたい人は多いか少ないかわからないけど、例えば、会社で使うニッチなCRMとか新しいサービスは、出来合いのプラグインなんてないだろうから。

ちなみに私はそういうプラグインを作りたいなーと思うので、そういう視点でも今回のチュートリアルは楽しみです！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/a1f21b36-1a59-8c49-77c6-d7a8b3936d82.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/206a85b1-7f15-7599-6253-5c7599314557.png)
ん？前回のGiphyってなんだろう。
飛ばしちゃったのかなと思って見返したけど、なかった。変わったんですね。

ちなみに[Giphy](https://giphy.com/)は、アニメーションGIFを検索・共有できるサービスとのこと。ちょっと気になるから見ちゃうｗ:rolling_eyes:
そういえばTeamsでこういうの出てたから、こういうところから提供されるのかもしれませんね。kitten（子猫）とかで検索し始めると時間浪費がやばい。（脱線）

Bubbleに戻って、Giphyのpluginを検索してみたら３つもあった！そんなに必要！？（脱線２）

さて、チュートリアルでもやるか。Start！

## 音楽を探すための入力ボックスを作成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/9a71836d-e064-6cde-9092-8c752d031c7c.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/dda791a6-385a-6a50-d346-81491b81df68.png)
Inputフォームを置いただけです。

## 写真のグリッドを作成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/f43914a5-d5b5-586e-4517-228c255a2f90.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/a08610e3-9d23-aaae-4dcc-c1729ad6db98.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/f0ac1037-acd1-32bd-41de-2b311a01d19f.png)
"Repeating Group"！以前やった[チュートリアル５](https://qiita.com/yo16/items/0b0a847b0e4fa382e07c)で、画像をWindowsのエクスプローラーでアイコン形式のようにサムネイルを並べられないかなって思ってたけど、今回それかもしれません！:grinning:

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/0bdf04e6-4013-5894-3363-09c1eb5ff3eb.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/f54ff827-eec9-e8a8-6f21-b9270356d277.png)
今まで、"大きめに"置いてとか言われることはあったけど、最大の表現が来た。ページ全体を覆う。。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/696ece7f-601f-cdb1-4e7a-ac9abd4b1732.png)
かなり大きめにしてやりました。
Shiftを押しながら四角形を描くと、正方形になった。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/0832ea36-a1d7-2d72-871e-15cd6b9bb0ca.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/c29fbef2-4d57-fb98-28a9-6fea852bd0cc.png)
３行２列・・・？少なくないか？なぜスクロールしないで固定させるのかわからないけど、言われるがままやってみましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/e1ccbe0f-09cd-4841-24be-99227dd47d2d.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/87c5ad97-c1c1-b41a-832c-58132abb945f.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/c76dcc75-e993-7bc3-8655-80300fe6b761.png)
次はiTunesからデータを取る・・・あれ？プラグインを使いそう？APIを使って取るんじゃないの！？

## iTunesからデータを取得する`Plugin`をインストール
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/4f93cac2-3503-1f43-eefb-1f1b60174918.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/b5878853-51bf-3019-9919-64f21c01a9b4.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/34157163-fc90-bef6-7e1b-961cba983ddc.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/01965464-2287-7611-2d19-5e877170ccdf.png)
うーん、installしてしまった。ちょっと期待と違うかもしれませんが進みましょう。:cry:

## Repeating Groupを設定
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/1d0ea876-487b-cb3c-83bc-a38820b182bc.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/a4cdda4c-9dd3-194e-996c-60f3d492590c.png)
"Type of content"を、iTunes Songにするんだそうです。"Type of content"と次の"Data source"の違いについては、[前回のチュートリアル7](https://qiita.com/yo16/items/eda7b609d12ac16cb205)でよくわかったところでした。まず型を決める。

なお、この型を、プラグインで独自に作れるようですね。これは使える予感。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/2356f725-e0f4-df22-b257-c0e04a0cb74b.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/e7b6867c-3924-3aab-5035-ab5079df075d.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/a337618e-6cba-83cb-e88c-ba8a8d386926.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/4712d44a-9c53-d2e3-184d-aebdef277962.png)
ここで"API"っていう言葉が登場！
プラグインが"API"を隠蔽するのかと思いきや、思いっきり出ちゃうのか。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/53f2449a-5662-581f-5ebd-cd2e2775e99a.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/4bb67a80-08f3-aab6-d531-b326e2d19e0c.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/29675627-8fd0-2f01-4f9e-eaa83af948b0.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/7917c109-89f9-06de-bceb-35423c1cc075.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/0dd07a13-269b-1571-1547-ab13d6f6ff19.png)
"Get iTunes songs"っていうサブダイアログが出て、その中で、"API provider"で"Get iTunes songs"。そしてそのAPIに渡す検索ワードを"Insert dyanmic data"で指定してますね。

このプラグインを使う人にとっては、iTunesから取得するプラグインをインストールした後、どのAPIを使う？＝iTunes、という流れが２度手間になっているので、「？」が浮かびます。"API provider"の選択ってなんだろう。

一方、プラグインを作ろうという視点で見ていると、これをどうやって指示ささせるのか、中身が気になりますｗ

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/4fd9abf0-b90c-9edb-f4d9-2c0040bdfef0.png)
わからない点はありますが、次に"Repeating Group"の中身のようです。

## "Repeating Group"の１要素を設計
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/d270bf6a-fae8-45f9-2530-6bd81296687d.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/e66c97fd-2c78-56a2-c9e6-139caf323f3a.png)
わぁ！これ！！またテキストのリンクかな。画像をタイルのように並べてほしいのに。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/efbd584b-685b-033b-0e45-f4c2bdc4b632.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/1c6c1c64-51e7-e939-63f7-7a041c74f211.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/d69e77ea-b797-997a-a221-259a3dcd679b.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/43605ccb-1d3f-d751-f26c-5b5fb163b763.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/4585b5a7-b4d7-1d10-42d0-749e82eb95a9.png)
お！今回のタスクは"'s Track title"だけど、下の方に"'s Album image"がある。もしチュートリアルはタイトルだけだとしても、改造して画像も出そう。:sunglasses:

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/71a7cb29-b04a-67ef-91f5-fc2e889a2c0d.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/7548bc76-b2ae-bc70-bd31-dc88442b6380.png)
リンクの行き先で、このページ内か別のページかを指定します。ページ内っていうのは、ロードせずスクロールだけするやつですね。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/3420419c-222d-efda-cdf5-1573626371f1.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/b1813ed8-7d14-e4a4-201f-f5d3290dd0aa.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/ec8f9118-eef0-1a61-db8f-90b3f2374fdc.png)
リンク先は、"Current cell's iTunes Song's URL"。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/96d8408e-40e9-7346-6d1b-e3294c4aef92.png)
別窓で開くにチェック。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/732f869e-b477-a346-539f-3dedaa8bb21d.png)
はいおしまいー！

やっぱ画像はなかった。確認後に改造しよう。

## `Preview`で動作確認
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/f5f3f65e-6b3a-b6c7-be42-d9aeced15ee5.png)
朝ドラの主題歌を今 B'z が歌ってるので、検索してみた。そのタイトルの"イルミネーション"が出ていないようです。。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/4e14cf0c-24ed-81ec-9ef1-69ea88daf592.png)
クリックしたら、music.apple.comのページが別窓で開くので、正しく動作しているようです。

見た目については予定通りだけど、"Repeating group"をページ全体を覆うサイズにしてって言ってこれ、画像を置く改造をしてみなさいと言っているようにしか聞こえない。

## 画像も表示するように改造
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/5e530efe-8a6e-4571-8294-ff7813a642bf.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/5903a630-1759-4509-5956-8ed184a42a2e.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/328cca09-3641-5210-4b4c-a942a3d712fb.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/3b95dd48-49c3-caf4-ca56-d0381c24baf7.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/2f83f3f2-9df7-8270-dfac-8dabe6ef08a2.png)
ということで・・・画像を置いてみた！サイズもちょっと変更して。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/f5bce1c0-ba50-e725-13a5-84e1ad50b501.png)
お・・おぅ。でかい。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/943cca1e-147f-4589-7a9f-1a815933951d.png)
あ、サイズの高さ指定は、最小サイズだった。幅に合わせるっていうチェックが入ってたので、"Min height"を気持ち小さ目にして、"Max height"をぴったり入る高さにしてみた。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/439ec978-1b84-cb49-cf33-4333aae01d2c.png)
できた！

５／６が同じ画像なのは、アルバムの画像だからですね。楽曲検索で、画像はアルバムしかないという、そうなんだろうけど、ちょっと微妙。せめてアルバム名を出したい。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/aaa76af1-529b-ad27-cb7f-a63b2be99ca8.png)
ということで、"Album image"の下に、"Album title"を入れてみました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/f8f93c81-ac2a-3ec6-85a3-09fd6400e1f1.png)
センタリングしたはずだけど、、細かいところはまぁいいか。技術的な方法が見えている改造が長くなっちゃうのもナンなので。

今回はここまでとします！

# おわりに
今回は、生のAPIを呼び出すというわけではなく、`Plugin`を使って、間接的にiTunesのAPIを呼ぶ形でした。画面左のメニューに、API Callをするアイコンがないのでまぁできないか。ちなみにPluginの開発画面にはあります。

APIを呼び出すタイミングについて思い返してみると、「APIを呼ぶ！」というイベントがあるわけでなく、"Repeating group"で"Data source"で、プロパティを指定しただけでした。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/3f14fa30-0651-9ce9-094a-47a683619a72.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/8797346c-7d1a-aed8-42b3-55c42d36bda1.png)
サブダイアログの"Term to search"の内容が変わったときに、内部的に「APIを呼ぶ！」なんでしょうね。

似たようなプラグイン（あるかわからないけどYoutubeMusicとか）を入れた場合、サブダイアログで"Get iTunes songs"以外に"Get Youtube Musics"がある中で、"iTunes"を選ぶことで、"iTunes"のプラグインを使うという選択になるのかな。そんな気がする。

あとプラグインの使い方の話ですが、B'zの楽曲は山ほどあるのに、見つけた順の６個より後のは、どうなってるんだろうか。本当は全部ゲットできていても、７個め以降は捨ててるとか？それらを見るためにはどうしたらいいのか。
もしこのプラグインをまじめに使うなら、調べないといけないですね。

個人的には、プラグインの開発練習も、こういうチュートリアルの隙間でちょいちょいやっています。相乗効果＆気分転換で、学びが進んでていい感じです。

では、よきBubble音楽ライフを！:notes::bathtub:

# Next
[Bubbleのチュートリアル９：Using the chart element](https://qiita.com/yo16/items/a19678a03b49b24456d6)