Data Sources(データソース)
概要
データソースとは、動的な式を作成する際に「どこからデータを取得するか」を定義する部分です。
これは式の最初のセクションとなります。
データの取得元には、以下のようなものがあります
- 現在のユーザー(Current user)
- データベースからの検索結果(Search)
- 外部APIからのデータ
- ページやブラウザの情報 など
Current user(現在のユーザー)
これは、アプリを利用している「現在のユーザー」を表します。
ユーザーがログインしている場合は、メールアドレスなどの情報にアクセスできます。
一方、ユーザーがログアウト状態の場合でも、ユーザーオブジェクトの変更は可能ですが、ブラウザを閉じるとその情報には再びアクセスできなくなります。
Signed up users(登録済みユーザー)
ユーザーがBubbleにサインアップすると、メールアドレスとパスワードを使って永続的なユーザーエントリがデータベースに作成されます。
ユーザーが新しいブラウザ(Cookieなし)でアプリを開き、ログインワークフローを通じて認証情報を入力すると、そのユーザーはログイン状態になります。
このとき、「Current user is logged in(現在のユーザーはログインしている)」の値は「yes」を返します。
現在のユーザーに対して変更を加えると、その変更はデータベース上のオブジェクトに永続的に保存されます。
そのため、ユーザーが別のデバイスでログインしても、同じ変更が適用された状態でアカウントにアクセスできます。
この仕組みにより、データベース検索で見つかるすべてのユーザーはサーバー上で「logged in(ログイン済み)」としてマークされることになります。
これは、彼らが永続的なアカウントであるためです。
Temporary users(仮ユーザー)
Bubbleアプリがブラウザで開かれると、ユーザーセッションが作成されます。
すでにログイン済みでクッキーが残っている場合は、以前と同じユーザーが使われます。
しかし、新しいセッション(ログインしていない状態)の場合は、一時的なユーザー(temporary user)が自動的に生成されます。
このユーザーは「not logged in(ログインしていない)」とマークされます。
つまり「Current user isn’t logged in(現在のユーザーはログインしていない)」が「yes」を返します。
一時ユーザーも登録済みユーザーと同様にアプリデータベースに保存されるため、同じブラウザで再訪し、クッキーを削除していない場合は、以前に変更したフィールドの値がそのまま維持されます。
ただし、Bubbleは自動的に一時ユーザーデータをクリアします。
3日後にその一時ユーザーは削除され、同じブラウザで再びセッションを開くと、新しい一時ユーザーが再生成されます(再び3日間有効)。
ユーザーが初めてアプリを訪問するときは、最初に一時ユーザーとして扱われます。
その後、サインアップワークフローを完了すると、現在の一時ユーザーが登録済みユーザー(signed-up user)へと変換され、データベースに永続的に保存されます。
これはワークフロー設計上、重要な影響を持ちます。
例えば、ユーザーがサインアップ前に年齢を入力し、「Current user」に保存したとします。
そのユーザーが3日以内にサインアップすれば、作成される永続的ユーザーには同じ「年齢」が引き継がれます。
Do a search for(データベース検索)
このデータソースは、アプリのデータベース内のエントリを検索するために使います。
検索する「データの種類(type)」を指定します。これは User か、あなたが定義したカスタムデータ型のいずれかです。
また、並び順(sort order) や 検索条件(constraints) も設定できます。
検索条件は、次のような形式で指定できます:
- 「名前に ‘peter’ を含む」
- 「住所が現在のユーザーの位置から半径1マイル以内」
など
「Do a search for」を使って要素にデータを設定すると、
その要素はリアルタイムでデータベースと同期されます。
つまり、他のユーザーによってデータベース上の値が更新されても、その変更が即座にアプリ上に反映されます。
※検索結果を手動で更新する必要はありません。ただし、ワークフロー内で最初に取得した検索結果を参照している場合は、この限りではありません。
Perform a search using Algolia(Algoliaを利用した検索)
このオプションを使うと、Algoliaのインデックス内のエントリを検索できます。
検索対象のタイプと、検索するフィールド、クエリ内容を定義します。
Algoliaプラグインを利用している場合に使用します。
Get an option(オプションセットの取得)
オプションセットの中から特定のオプション、またはそのセットに含まれるすべてのオプションを取得します。
Arbitrary text(任意のテキスト)
静的または動的な文字列を手動で入力するためのデータソースです。
このテキストは Text型 として解釈され、Bubbleの「テキスト演算子(text type operators)」を使ってさらに加工できます。
Arbitrary date/time(任意の日付・時刻)
日付や時刻を手動で入力するためのデータソースです。
ほとんどの人間が読みやすいフォーマット(日付表記)は自動的に認識されます。
Get data from an external API(外部APIからデータを取得)
Bubbleのプラグインを通じて、外部サービスのデータを取得します。
たとえば、Google Places APIを利用して、住所や検索ワードに基づいて場所のリストを返すことができます。
通常、APIコールにはパラメータの設定が必要です。
パラメータは「スライドパレット(Slidable Palette)」内で指定でき、動的データ(Insert dynamic data)を利用することも可能です。
このデータソースが返すデータの型はプラグインによって異なります。
例:
- 地図やリピーティンググループに表示する「場所のリスト」
- グループやテキストに表示する「単一の項目」
Parent group’s thing / Current cell’s thing(親グループまたは現在のセルのデータ)
これは、親要素(Parent)の値を参照するためのデータソースです。
たとえば、「ユーザー一覧を表示するリピーティンググループ」を使用している場合、各セルには異なるユーザーが入ります。
その際、「Current cell’s user」はそのセル内の特定ユーザーを指します。
データ型は、その要素コンテナの「コンテンツタイプ」に依存します。
Current cell’s index(現在のセル番号)
リピーティンググループ内で、現在のセルが何番目か(インデックス番号)を取得します。
最初のセルは 1、2番目は 2 というように番号が付きます。
ランキング表示や、セル番号に応じた条件付きスタイル変更などに利用できます。
Current page thing(現在のページのデータ)
ページに「コンテンツタイプ(type of content)」が設定されている場合、このデータソースでそのデータを参照できます。
例:
不動産マーケットプレイスを構築しており、各物件の詳細ページを表示する場合、そのページのコンテンツタイプを「Apartment(アパート)」とします。
別ページから「特定のApartment」をリンクで開くと、「Current page’s apartment」としてそのデータを参照でき、写真・住所などの詳細情報にアクセスできます。
Element(要素)
ページ上の要素(Element)を参照し、そのステート(状態)にアクセスします。
たとえば、「入力欄(Input)」の値を取得する場合はここから参照します。
利用可能なステートには hovered, value などがあります。
This element(この要素)
現在編集中の自身の要素を参照するショートカットです。
その要素のステートに直接アクセスできます。
Result of previous step(前ステップの結果)
これは、ワークフローの前のステップ/アクションの結果を参照するためのデータソースです。
例:
ステップ1で「Create a new thing(新しいデータの作成)」を実行し、「Apartment」を作成した場合、後続ステップでは「Result of step 1」を使ってその新しく作成されたApartmentを参照できます。
Current Workflow thing(現在のワークフローデータ)
カスタムワークフローを使用する際、ワークフローに渡されたオブジェクトを変更したい場合に利用します。
このデータソースはその「対象オブジェクト(thing)」を指します。
型は、使用しているカスタムワークフローのデータタイプになります。
Thing now(変更後のデータ)
データ変更トリガーワークフローの中で利用できるデータソースです。
「Thing now」は変更後の最新データの状態を表します。
ワークフローの進行中に変化していく可能性があります。
Thing before change(変更前のデータ)
データ変更時に、変更前の状態を参照したい場合に使用します。
「Thing before change」は変更直前のデータを保持しています。
データ変更トリガーワークフロー全体で利用可能です。
Get data from page URL(ページURLからデータを取得)
このデータソースは、現在のページURLのパラメータやパスから値を取得するためのものです。
例として、URL が「yourdomain.com/yourpage?age=23」のような場合を考えます。このとき、Get data from page URL のソースを age パラメータに設定すると、Liveモードでは 23 が返されます。
パラメータ名は大文字・小文字を区別します。
したがって、すべて小文字を使用し、特殊文字や空白などは避けることを推奨します。
もし path を選択した場合、「yourdomain.com/yourpage/hello」のようなURLの中から値を取得できます。この場合、hello が返されます。
データ型を指定する際は、このパラメータがどのような型を持つべきかを定義します。
もし カスタムデータ型や User型を選んだ場合、URL内の値は thingのユニークID(またはスラッグ)でなければなりません。
URLの特殊文字エンコードについて
URLでは一部の文字がエンコードされ、% 記号と識別子で表されます。
たとえば空白は %20 として表示される場合があります。
例:website.com/mypage?param=my%20parameter
この場合、Get data from page URL 演算子を使って param の値を取得すると、my%20parameter が返されます(ブラウザ上に表示されている形式のまま)。
一方、 http://website.com/mypage/this%20path からパスを取得する場合、通常の文字列としてデコードされた値(this path)が返されます。
Current option / thing(現在のオプション/データ)
一部の要素(例:ドロップダウン)では、現在のオプションにアクセスできます。
たとえば、ユーザーのリストを動的オプションとして設定しているドロップダウンがある場合、表示名を 'Current option’s email' に設定することで、メニューにユーザーのメールアドレスを一覧表示できます。
API workflow parameters(APIワークフローパラメータ)
これは、APIワークフローで定義されたパラメータにアクセスするためのデータソースです。
ワークフローのイベントレベルでパラメータを定義し、値を設定します。
その後、ドロップダウンメニュー上部の「パラメータ名」を選択すると、その値を参照できます。
Calculate formula(数式の計算)
入力に関する注意
Calculate formula のプロパティで参照される入力の内容形式は、自動的に decimal(小数) に変換されます。
このデータソースでは、ローン利息などの高度な数値計算を行えます。
Calculate loan payment(ローン支払額の計算)
以下のフィールドを設定します:
- Rate:ローンの年間利率(年利)
- Nper:支払い期間数(全支払回数)
- Pv(Present value):現在価値。借り入れた元本の総額
この計算は 数値(number) を返します。
Coordinates to address(座標を住所に変換)
この数式は、緯度経度(地理座標)を人間が読める住所に変換します(逆ジオコーディング)。
利用できるフィールドは以下のとおりです。
- Latitude(緯度):地球上の南北位置
- Longitude(経度):地球上の東西位置
座標フォーマット
Bubbleは Google Maps API を使用して座標を住所に変換します。
座標値の範囲は以下の通りです:
- Latitude(緯度):
-90.000000~90.000000
(マイナスは赤道より南、プラスは北を意味します) - Longitude(経度):
-180.000000~180.000000
(マイナスは本初子午線より西、プラスは東を意味します)
この演算子は 住所(address) を返します。
Generate random string(ランダム文字列を生成)
注意
この関数で生成される文字列は暗号的に安全ではありません。
このデータソースは、指定した長さと構成ルールに基づいてランダム文字列を生成します。
設定項目:
- Use letters:英字(A〜Z)を使用
- Use non-capitalized letters:大文字・小文字を混在させる
- Use numbers:数字を含める
- Use special characters:特殊文字(@、$ など)を含める
戻り値は テキスト文字列(text) です。
Calculate sumproduct(積和の計算)
2つのリストの対応する要素を掛け合わせ、それらの積を合計します。
たとえば:
List1 = [a, b, c]
List2 = [x, y, z]
このとき、下記のように計算されます。
Sumproduct = a×x + b×y + c×z
具体例は下記です。
a = [1, 2, 3, 4, 5]
b = [6, 7, 8, 9, 10]
→ 1×6 + 2×7 + 3×8 + 4×9 + 5×10 = 130
この操作は、金融・統計・データ分析などの分野で、重み付け計算などに活用されます。
- List 1:数値のリスト
- List 2:数値のリスト
戻り値は 数値(number) です。
Page data(ページデータ)
このデータソースでは、ページ固有の情報にアクセスできます。
Website home URL(WebサイトのホームURL)
アプリのホームURLを返します。
例:ユーザーが https://yourdomain.com/a_page にいる場合、返されるのはhttps://yourdomain.com です。
This URL(現在のURL)
現在のページURLを完全な形で返します。
ヒント
Liveアプリで使用すると、yourdomain.com/version-live/ ではなく「yourdomain.com」という結果となり、/version-live/ がURLに含まれるのを防げます。
Current language(現在の言語)
アプリで使用中の言語を返します。
以下の優先順で決定されます:
- URLクエリパラメータ
&lang= - 現在のユーザーに設定された「言語フィールド」
- アプリの既定言語(Settings → Languages)
上記いずれの場合も、返される値が設定タブの言語セクションにあるドロップダウンメニューに表示されている利用可能な選択肢のどれにも該当しない場合、次の優先順が使用されます。
Current page name(現在のページ名)
現在のページ名を返します。
リユーザブルエレメント(Reusable element)内で使用すると、
要素がどのページで使われているかを識別できます。
Website admin email(管理者メールアドレス)
アプリの管理者メールを返します。
- 無料プラン/独自ドメインなしの場合:
[your-appname]-no-reply@bubbleapps.io - 有料プラン/独自ドメインありの場合:
「Settings → Domain & Email」で設定されたメールが返されます。
ハードコードせずこの値を使用することで、後にメール設定を変更しても対応できます。
Current date/time(現在の日時)
ユーザーのデバイス上の現在時刻を返します。
データ型は Date です。
注意事項
Bubbleでは日時データは「日付+時刻」の両方を含みます。このデータソースは呼び出された瞬間の時刻を固定的に返し、自動更新はしません。
新しい時刻を取得するには、再度呼び出す必要があります。
Current geographic position(現在の位置情報)
ユーザーが共有を許可している場合、その現在位置を返します。
型は geographic address。
注意事項
ブラウザは位置情報の共有許可を求めます。
多くのブラウザでは既定で位置情報の共有が無効のため、
ユーザーに明示的に位置情報を有効化するよう案内する必要があります。
Link to Google Maps(Googleマップへのリンク)
有効な住所データの後に使用すると、
その住所を指すGoogleマップのURLを返します。
Current page width(ページ幅)
現在のページの幅(ピクセル単位)を返します。
Current page scrolling position(スクロール位置)
ページ上部(0px)から現在のスクロール位置までのピクセル数を返します。
Page loaded above fold(ファーストビューが読み込まれたか)
最初は no / false を返し、ユーザーの画面内にあるすべての要素が読み込み完了した時点で true を返します。
注意事項
ページ読み込み時に非表示(is not visible)の要素は、ページ上の位置に関わらず、表示(is visible)になるまで読み込みが開始されない場合があります。
Page loaded (entire)(ページ全体の読み込み完了)
最初は no、ページ上のすべての要素と関連データが読み込み完了した時点で true を返します。
「全体が整うまでローディング画面を出す」などに使えます。
Is Dev environment(開発環境か)
アプリが開発環境(任意のブランチ)で動作している場合、yes を返します。
Branch name(ブランチ名)
現在のブランチ名を返します。
メインブランチは常に version-test という名前です。
Application Text(アプリケーションテキスト)
多言語対応アプリでは、Text ID を定義してBubble Editorで利用します。
その後、「Settings → Languages」で各言語を設定します。
Incompatible type for inputs(入力タイプの不一致)
入力要素のデータ型が一致しない場合、ドロップダウンで選択できません。
例:
検索条件に「creator = ドロップダウンの値」を指定したいが、
ドロップダウンのデータ型が User に設定されていない場合、選択できません。
この場合は、ドロップダウン要素自体のデータ型を修正してください。
Current workflow error(現在のワークフローエラー)
code(エラーコード)
イベント「An unhandled error occurs」または「An element has an error running a workflow」で利用可能になります。
エラーコードに基づいてどのエラーが返されたかを判別できます。
message(エラーメッセージ)
同じく上記イベントで利用可能です。
画面表示やデータベースへの保存に使用できます。
ヒント
設定 → Languageタブに、全エラーコードとメッセージの一覧があります。
ここでメッセージをカスタマイズすることも可能です。
エラーコード(code)は常に固定ですが、
メッセージ(message)は言語設定などにより変化するため、
エラー識別には必ずcodeを使用することを推奨します。
Native mobile data sources(ネイティブモバイル向けデータソース)
Has granted location permission(位置情報の権限確認)
ユーザーが位置情報アクセスを許可しているかどうかをyes / no で返します。