こんにちは!今回は、Bubbleの一括データ処理機能である「Bulk」をご紹介します。
Bulkは、Bubbleを使った開発において大量のデータを効率的に一括で処理するための便利な機能です。特に、テストデータの更新や削除、関連データの紐付け、データ操作の簡略化など、さまざまな場面で活躍します。
本記事では、Bulkの基本的な使い方から、活用例、注意点まで詳しく解説していきます。なお、Bulkを実行するにはBubbleのいずれかの有料プランに加入している必要があります。ぜひ最後までご覧ください!
1. Bulkの紹介
1.1. 概要
BubbleのBulkとは、BubbleエディターのDataタブから直接API Workflowを実行し、複数のレコードを一括で修正できる機能です。Dataタブで現在表示しているビュー内のすべてのデータに対して処理を実行できます。一度に処理可能なデータ数の上限は1000行です。
Bulkの特徴は下記の通りです。
- API Workflowのパラメータは1つ…Bulkで実行するAPI Workflowで設定できるパラメータは1つです。パラメータで対象のData typeを指定します。
- 並行で処理実行…データの処理は、ビュー内の順番ではなくサーバー上で並行して処理されます。
- Dataの編集・実行権限が必要…Bulkを実行するには、エディターのユーザーとしてDataの編集または実行権限が必要です。
ちなみに、修正対象となるデータを現在表示しているビュー内で条件に基づいて分岐させたりさらに絞り込む必要がある場合は、Bulkでは対応できません。そのようなケースではAPI Workflowや別の方法を検討する必要がありますのでご注意ください。
1.2. Bulkの活用例
Bulkが活用できるシーンには下記が挙げられます。
- 期間を絞った集計とタグ付け…特定の期間内のデータを絞り込み、ステータスやタグを一括で設定するのに便利です。例えば、期間を表す値を一括設定したり、その期間内のデータに「集計済み」ステータスや特定のタグを付与する場合等です。ログの集計に役立ちそうです。
- データのバグ修正…誤ったデータや不完全なデータを一括で修正する場合に便利です。例えば、不正な値が入力されたデータに対して正しい値を設定したり、データのバグ修正履歴や原因を記録する場合等です。
- Fieldの追加・修正…テスト用データのField追加・修正に伴うデータの一括設定等に便利です。例えば、開発時にとりあえずテストデータを登録したが、後からFieldが追加・変更されたため大量のデータに対して初期値を設定する必要が出てきた場合等です。
- 関連Data typeとの紐づけ追加・修正…既存のデータに別のData typeのデータを紐づけるのに便利です。例えば、開発中のアプリが大きくなるにつれて関連Data typeが増えた場合等です。
- ステータスやカテゴリの一括設定…ある時期を境に大量のデータのステータスを変更する場合に便利です。例えば、イベント中やイベント終了後で異なるステータスを設定する場合等です。
- クライアントによるデータ更新…管理画面を開発・使用せずデータを一括更新する場合に便利です。データ更新の方法としては、専用の管理画面を作成したり、開発者が直接操作する方法があります。しかし、ある程度Bubbleの操作に慣れているクライアントであれば、DataタブからBulk操作を実行してもらう方が工数を大幅に削減できます。
1.3. 一括処理の種類
1.3.1. Dataタブから実行
Bubbleでは、Bulkの他にエディターのDataタブから実行できるアップロードやエクスポート等の一括処理の方法が3つあります。どれもDataタブの右上から実行できます。
- Upload…CSVファイルでデータをアップロードする機能です。CSVは1行目をフィールド名を含むヘッダーにして、データをカンマ区切りで入力しておきます。アップロードしたいデータの種類とフィールドをアップロード前に定義しておく必要があります。Uploadでは、現在Data typeに存在するデータに加えてデータを追加する形になります。有料プランの機能です。
- Modify…CSVファイルをアップロードしてデータを一括修正する機能です。各レコードの先頭のカラムに修正したいデータのUnique IDを入力し、それ以降のカラムに修正する値を入力します。有料プランの機能です。
- Export…現在表示しているビュー(Data typeのデータ表示形式)をCSVファイルでブラウザからダウンロードする機能です。有料プランの機能です。
1.3.2. アプリから実行
DataタブではなくBubbleで開発したアプリから実行する一括処理は2つあります。どちらの方法も、API Workflowとしてサーバーサイドでスケジューリングされ実行されるものです。
- Schedule API workflow on a list…指定したリスト内の各項目に、特定のAPIワークフローを一回ずつ実行するアクションです。このアクションを利用すると、リストの項目数に応じて複数のAPIワークフローが並行してスケジュールされます。例えば、5,000件のデータを持つリストに対してこのアクションを使用すると、5,000個の独立したAPI Workflowがスケジュールされます。大量データに対して高速で独立した処理を実行する場合に適しています。
- Recursive workflows(再帰Workflow)…一つのWorkflowを実行する際、そのWorkflow内で次のWorkflowを再スケジュールする形で処理を繰り返す仕組みです。リスト全体を一度にスケジュールするのではなく、現在のWorkflowが終了した後に次のWorkflowが実行されます。この方法は、処理の順番や依存関係が重要な場合に適しています。
1.4. 実行中の注意点
Bulkはサーバーサイドで実行されますが、実行中はブラウザのウィンドウを開いたままにしておく必要があります。
2. Bulkの実行手順
ここからは、実際にBulkを実行する手順を紹介します。
2.1. 今回の目標
本記事では、下記を目標としてBulkの設定方法をご紹介していきます。
- Data Type:
Product
の既存のデータのField:Product status
に、Option set:Status
のPublished
を一括設定する。
2.2. Option setとData type作成
Bulk処理を行うData typeとOption setを作成します。
2.2.1. Option set
下記のOption setを作成します。
- Option set name:
Status
- Options:①Published、②Unpublished
2.2.2. Data type
下記のData typeを作成します。一括設定したいFieldProduct status
のtypeには作成したOption setstatus
を設定します。Category
もOption setを設定します。
- Type name:
Product
- Fields:①Name:
Category
、Type:Category (Option set)
、②Name:Name
、Type:text
、③Name:Product Status
、Type:Status (Option set)
2.3. Dataの権限確認
次に、Dataの編集または実行権限が付与されているかを確認します。
Settingsタブ>Collaboration>「Users editing this app」で、自分のDataの権限がView and edit
またはView and run as
になっているか確認します。
「View only」や「No permission」ではBulkを実行できないので、上記のどちらかに設定します。
2.4. 既存データの作成・確認
Dataタブで「Products」にテスト用データを数件登録してください。このときField Product status
は空欄にしておきます。
2.5. API有効化設定
Bulkを実行するには、API Workflowを有効化しておく必要があります。Settingsタブ>APIを開き、「Enable Workflow API and backend worklfows」をチェックして有効化します。
2.6. API Workflow作成
それでは、Bulkで実行するAPI Workflowを作成していきます。
2.6.1. ポイント
Bulkで実行するAPI Workflowを作成する際のポイントは下記の通りです。
- API Workflowのパラメータには操作したいテーブルのみを設定する…Bulkで実行するAPI Workflowのパラメータには操作したいテーブルを設定するだけでOKです。KeyをData Type名、TypeをData Typeにします。操作したい内容はAPI WorkflowのActionで設定します。
- Actionは個別の変更Aciton…Data Typeのデータを一度に変更するのでActionには「Make changes to xxx on a list」を選びたくなりますが、Bulkで実行する場合は個別の変更Actionである「Make changes to xxx」を使用します。
2.6.2. 作成
2.6.2.1. API Workflow
エディター左上からページ一覧を開き、「Backend workflows」をクリックします。
「New API workflow」からWorkflowを作成します。
Eventには、「General」>「API Workflow」を設定します。
表示されたプロパティエディターで下記の通り設定します。
- API workflow name…
update_product_status
(任意の名前を付けてください) - Parameter definition…
Manual definition
- Parameter…Key:
product
、Type:Product
パラメータのnameには対象のData type名を、Typeには対象のData typeを設定します。
2.6.2.2. Acttion
Data typeを更新するActionを作成します。「+」から新規Action「Data (Things)」>「Make changes to thing...」を追加し、下記の通り設定します。
- Thing to change…
product
(パラメータ名) Product status
をPublished
(Option setの値)に変更する
2.7. Bulk設定・実行
それでは、作成したAPI WorkflowをBulkで実行します。
Dataタブ>App dataを開き、Bulk対象のData typeを表示します。今回はProductsを表示します。
Bulkを実行したいData typeのデータ一覧を表示した状態で、「Bulk」をクリックします。
「Bulk operation」というポップアップが表示されます。
「API Workflow」で、作成したAPI Workflow「update_product_status」を選択します。
実行準備完了の表示に変わります。対象のデータ数が表示されるので、確認して「Run Workflow」をクリックしてBulkを実行します。
ポップアップに「Bulk operation run successfully on 10 entries.」と表示されれば成功です。「CLOSE」でポップアップを閉じてData typeを確認します。
Productの全データを見ると、空欄だったProduct status
FieldにPublished
と表示されています。データの一括更新が完了しました。Bulk成功です。
2.8. 条件付きViewに対してBulkを実行する
条件に基づいてData typeの一部のデータに対して同一の処理を行う場合は、Dataタブで対象のデータのみを表示するViewを作成し、Bulkを実行してみてください。
例えば、Category
がキッチン
のProductのみを対象にしたい場合は、それらのみを表示するViewを作成し、Bulkを実行します。
Category
がキッチン
のProductのみ、Product status
がPublished
になりました。
Data typeのデータの条件分岐もWorkflowで処理したい場合はBulkでは対応できないので、API Workflowを作成してアプリから実行してください。
2.9. API Workflowのセキュリティ項目
API Workflowのプロパティエディターでは、セキュリティとアクセスに関する項目を設定することができます。
Bulkを目的とする場合は本記事の通り全て無効化するのが一般的です。気になるのは「Ignore privacy rules when running the workflow」ですが、Bulkはエディターで実行する処理であることからプライバシールールは関係しないため、この項目をチェックしなくてもプライバシールールに関係なく実行できます。
これらのセキュリティ設定は非常に重要です。特に、外部APIの公開やプライバシールールの無視を設定する場合は、アプリのセキュリティが損なわれないように、プライバシールールを適切に設定するなど慎重に対応してください。
3. まとめ
BubbleのBulkは、大量のデータを効率的に操作してアプリの運営や開発をスムーズに進めるための強力なツールです。本記事では、その概要や具体的な活用方法をご紹介しました。
Bulkを使うことで手間のかかるデータ管理が一気に簡略化できます。価格やステータスの一括更新やテストデータの整理等、幅広い場面で役立ちます。
Bulkは表示中のViewのすべてのデータを対象に一律の処理を行うため、条件付きの処理が必要な場合にはアプリからAPI Workflowを使って処理を行ってください。
Bulkを活用することで作業時間を大幅に短縮して開発効率を向上させることができます。この記事を参考にぜひ日々の業務にお役立てください!