ノーコードツール【Bubble】バージョン管理の仕組みを解説(本番環境/開発環境)

バージョン管理

すべてのBubbleアプリには、少なくとも2つのバージョンがあります。本番バージョン(世界に公開されるバージョン)と、少なくとも1つの開発バージョンがあり、それに対して変更を加えます。すべてのアプリには、デフォルトで「テスト」と呼ばれる開発バージョンが1つ付属していますが、チーム、プロフェッショナル、または専用プランを利用している場合は、さらに多くのバージョンを作成することができます。これらのプランでは、開発バージョンを削除しても、本番アプリには何の影響もありません。

Bubbleは、バージョン内で、何か問題が発生した場合に、アプリケーションの変更を元に戻すことができます。セーブポイントを使えば、特定の時点に戻すのは簡単ですが、変更は継続的に保存されるので、任意の時点に戻すことができます。どこまで過去に戻せるかは、計画によって決まります。

バージョン

アプリケーションには、少なくとも本番用とテスト用の2つのバージョンがあります。ライブは一般に公開されているアプリのバージョンを表し、テストはあなたが変更を加えるバージョンです。準備ができたら、テスト版から本番版に変更をデプロイします。Team、Production、Dedicatedの各プランのユーザーは、複数の開発バージョンを持つことができます。

複数の開発バージョンでアプリを構築する場合、どのバージョンも本番環境にデプロイすることが可能です。そして、各バージョンは独自のセーブポイントと復帰履歴を持つことになります。任意の開発バージョンからの変更を、現在の開発バージョンに追加することができます。

バージョンコントロールのドロップダウン

バージョン管理に関連する機能は、プレビューボタンの左側にあるバージョン管理ドロップダウンで確認できます。

現在アクティブなブランチの名前は、ツールバーに表示されるほか、メニューの上部にも表示されます。他のバージョンは下のメニューから選択でき、”Create a new version” をクリックすれば新しいバージョンを作成することもできます。メニューの上部では、現在のバージョンに関する操作を行うことができます:ライブにデプロイ、セーブポイントの作成、以前の時間やセーブポイントに戻す(”History “をクリック)、最近の変更をライブに同期させる、などです。

2つのバージョンをマージする場合、特に大きなアプリでバージョン間の差が大きい場合、Bubbleが舞台裏で多くの計算を行うため、マージ後しばらくの間エディタの速度が著しく低下します。これはしばらくすると解消されるはずです。

履歴ポップアップ

「履歴」ボタン(History ボタン)をクリックすると、ポップアップが表示され、プランの制限内で現在のバージョンを以前の時点に戻すことができます。Bubbleアプリの変更は、無限の取り消しの要領で、粒状に保存されます。したがって、バージョンを任意の時点に戻すことが可能です。また、セーブポイントを作成し(バージョンのドロップダウンから直接)、アプリを特定の状態に簡単に戻すことができます。セーブポイントは、便利なように適用できる特定の日時のラベルである注釈と考えることができます。履歴はバージョンに依存します。つまり、live にデプロイすると、live にはデプロイが表示されますが、それ以前の開発版のセーブポイントは表示されません。時刻はローカルのタイムゾーンであり、元に戻すことはデータベースの状態に影響しないことに注意してください。

バージョンとLiveの同期

複数のバージョンを持つアプリのユーザーが自分のバージョンを live にデプロイすると、他のバージョンは live と同期されなくなり、同期させる必要があります。バージョンを live に同期すると、新しくデプロイされた変更が組み込まれ、デプロイできるようになります。デプロイされた変更のいずれかが直接競合する場合、ユーザーは両方のオプションを表示され、どちらの変更を維持するかを選択するよう促されます。アプリが同期されると、デプロイすることができます。

開発版はあなたが作業するものであり、本番版は読み取り専用で、あなたのユーザーが本番で操作するものです。開発モードでアプリケーションをリストアし、古いバージョンのアプリケーションを本番環境にデプロイする必要がある場合は、本番環境にデプロイ(プッシュ)します。

開発版のデータベースに関する注意事項

概要:すべての開発バージョンは共通の「テスト」データベースを共有しますが、作成したカスタムタイプに関連するデータは、特定のバージョンに関連付けられたままです。つまり、「userA-type」のレコードはuserBが参照する同じデータベースに存在しますが、userBが同期するまではuserBのバージョンに表示されません。

詳しい説明 前述のとおり、すべてのアプリには実稼働版と少なくとも1つの開発版があります。本番用データベースのレコードは、開発用データベースのレコードとは独立しています。本番用データベースをコピーして開発用データベースを置き換えたり、その逆も可能ですが、たとえば、本番用バージョンでサインアップしたユーザーが、開発用バージョンでも自動的にレコードを作成するわけではありません。

しかし、複数の開発バージョンがある場合はどうなるのでしょうか?覚えておくべき原則は、すべての開発バージョンは同じ「テスト」データベースを共有しますが、カスタムタイプに関連付けられたデータは、特定のバージョンに関連付けられたままであるということです。このことをさらに説明するために、いくつかのシナリオを紹介します(AとBはどちらもアプリの開発バージョンであると仮定します)。

・Aはメインの開発ブランチで、さまざまなフィールドを持つ特定のカスタムデータ型のセットと、その中にある多数のレコードを持っています。Aをベースに新しいバージョンBを作成すると、Bも同じカスタムデータ型、フィールド、レコードを持つことになります。

・AからBを作成した後、既存のデータ型のBに新しいレコードを追加すると、その新しいレコードはAにも表示されます

・A がフィールドのセットを持つカスタム・データ型 “Employee” を持っていると仮定します。BはAから作成されるので、BもEmployeeデータ型を持っています。AのEmployeeに新しいフィールド「誕生日」(text型)を追加しても、Bには自動的に表示されません。

 ・BのEmployeeに新しいフィールド「誕生日」(テキスト型)を追加しても、Aの同じ「誕生     日」フィールドは参照されません。つまり、同じレコードに対して、AとBはそれぞれ独立した「誕生日」フィールドを持っており、独立してデータを格納していることになります。
・AからBが既に作成されているとします。Aで新しいカスタムデータ型「プロジェクト」を追加しても、Bには自動的に表示されません。

 ・AからBが既に作成されているとします。Aで新しいカスタムデータ型「プロジェクト」を追加しても、BHには自動的に表示されません。しかし(ここが厄介なところです!)、Bでも新しいカスタムデータ型「プロジェクト」を作成すると、Aと同じプロジェクトを参照することになります。

参考英語サイト

https://manual.bubble.io/help-guides/maintaining-an-application/version-control

あわせて読みたい

ノーコードツール【Bubble】とは?Bubbleの基礎を解説