１フォームからの登録で複数のDBにデータ登録を実装してみた-SPIRALver.1サポートサイトを参考に-

https://www.pi-pe.co.jp/regist/is?SMPFORM=man-lanerf-2473a633d82734eb22aa64cad426ae23&utm_source=pup-qiita&utm_medium=contentlink&utm_campaign=/SPIRAL_internship/items/9bf8831e7b78520d5639&utm_content=link-top&f000099824=https://qiita.com/SPIRAL_internship/items/9bf8831e7b78520d5639

---

## はじめに
ローコードで開発ができるSPIRALver.1で、「１フォームからの登録で複数のDBにデータ登録」の実装をやってみました。実装にあたって、SPIRALver.1サポートサイト内の「１フォームからの登録で複数のDBにデータ登録したい」という記事を参考にしました。
https://support.smp.ne.jp/tips/form_transaction/

## SPIRALver.1とは
SPIRALver.1とは、株式会社SPIRALが提供しているローコード開発プラットフォームです。ブラウザ上の操作でアプリを構築・運用することができます。

## SPIRALver.1サポートサイトとは
SPIRALver.1サポートサイトは、SPIRALver.1を使うにあたる上での基本事項や○○をしたいといった内容が記事になっているQ&Aのようなサイトです。ページ右上にある検索バーからキーワードを入力して記事を探すことができます。今回は「１フォームからの登録で複数のDBにデータ登録したい」という記事を参考にしました。

## 実装する機能とシーン想定
１つのフォームからデータを登録した際に２つのDBに分けて保存するという機能を実装します。例えば、セミナーの参加者情報を登録するアプリを運用している際、参加者の氏名や郵便番号、電話番号などを登録するDBと、参加者様へリマインドメールを配信するためのメールアドレスを格納するDBに分けて登録されるというシーンをイメージしています。

## 前準備
SPIRALver.1を利用するためには専用のアカウントが必要なので準備します。こちらの詳細ついてはまた別の記事で説明する予定です。

---
▼SPIRAL ver.1のお試しはこちら

https://www.pi-pe.co.jp/regist/is?SMPFORM=man-lanerf-2473a633d82734eb22aa64cad426ae23&utm_source=pup-qiita&utm_medium=contentlink&utm_campaign=/SPIRAL_internship/items/9bf8831e7b78520d5639&utm_content=link-middle&f000099824=https://qiita.com/SPIRAL_internship/items/9bf8831e7b78520d5639

---

## 実装
### ユーザーDB・メルマガDBの作成
わけたいDBを作ります。ここではユーザDB(参加者の名前や郵便番号、電話番号などを登録するDB)と、メルマガDB(メール送信のためのメールアドレスを登録するDB)を作成します。それぞれのDBのフィールドはこんな感じです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4041448/6b9ccdd1-cddc-4c4a-9456-7e7e381c88d0.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4041448/1631ed44-0656-4cb0-9a7d-a46a9aa858b5.png)
  
### トランザクションDBの作成
二つのDBをまとめるものとして、トランザクションDB(TRDB)を作成します。トランザクションDBを用いることで複数のDBのフィールド要素を持つフォームを作成することができるようになります。
DBの＋ボタンからトランザクションDBを選びます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4041448/b14340b5-a162-4579-a7d2-dd5d8d4da67a.png)
 
事前に作成した２つの通常DBに登録したフィールドをもとにTRDBのフィールド設定を行います。

 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4041448/c25580aa-e407-4b1c-a94c-9c5ca997118a.png)

### TRDBのアクション設定
次に、TRDBと二つの通常DBを連携させます。TRDBぺージの「アクション」タブを開き、アクションを作成します。ここで、アクション対象DBをユーザDBに設定します。アクション名はあとで設定するメルアドDB用のアクションと区別しやすい名前にしておきます。他は初期設定のままで大丈夫です。

 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4041448/f71de2f3-9093-4ba9-941e-beea920958a9.png)

同様にしてメルアドDB用のアクションも作成します。

### フィールドマッピング設定
アクションを作成し、TRDBと通常DBの連携の準備ができました。ここからアクションにそれぞれフィールドマッピングの設定を行い、DB内のフィールドを連携させます。
アクションの右側にある歯車マークからフィールドマッピングを選びます。

 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4041448/4f588a25-5fdb-42f7-a423-6f53a5aa8d24.png)

左側にはTRDBで設定したフィールド、右側にはユーザDBとして設定したフィールドが載っています。今回はユーザDBでは「氏名」「郵便番号」「都道府県」「電話番号」を連携させたいので対応するフィールドをそれぞれ左側→右側の順で選択します。

 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4041448/85c32e60-ef7e-41f9-922f-64d64db2ae89.png)

メルアドDBでも同様の操作を行いフィールドマッピングを設定します。
### フォームの作成
フォームを新規作成します。DBはTRDBを選びます。

## 動作確認
フォームから新規登録を行い、登録した内容がユーザDBとメルアドDBに登録されているか確認します。
フォームにこの内容で登録してみます。

 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4041448/2044a107-185b-44b7-b550-7dbade7f0e34.png)

これでユーザDBには「テスト太郎」、「123-4567」、「090-1111-2222」など、メルアドDBには「-.com」の情報が登録されているはずです。登録されているか確認するにはまずDBページを開きデータ操作(DBオペレーション)タブを選択します。 

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4041448/937ca6ed-8af6-4f71-9278-94fc860ea9e8.png)

DB操作のページが開かれるので、検索結果一覧のタブを選択します。

 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4041448/33ba9475-b678-4de9-b16a-f1714dd3694d.png)

ユーザDBに「テスト太郎」、「123-4567」「090-1111-2222」などの情報が登録されていることがわかります。

 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4041448/20b8de3b-6c20-4581-b278-346d53331c03.png)

メルアドDBにも「-.com」が登録されています。 

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/4041448/6142466c-59a5-42e8-b6ca-308b8f914a45.png)

## まとめ
今回はサポートサイトを参考にしながら一つのフォームから複数のDBに分けて保存する機能を実装してみました。トランザクションDBを使いこなせるようになればもっとアプリ開発の幅が広がりそうです。DB周りのことはまだまだわからないことや試してみたいことが多いので今後もこういう記事を作っていきたいと思います。


---
 
 
私がインターンしているスパイラル株式会社は、ローコードプラットフォーム、SPIRAL ver.1の**トライアルアカウント**を**無償提供**しています。このアカウントの記事でも紹介するように、たくさんの機能ございます。
 
▶︎ フォーム
▶︎ 認証エリア
▶︎ ログイン
▶︎ メール送信
▶︎ カスタムプログラム
 
などの作成できますので、ぜひ試してみてください!!
 
https://www.pi-pe.co.jp/regist/is?SMPFORM=man-lanerf-2473a633d82734eb22aa64cad426ae23&utm_source=pup-qiita&utm_medium=contentlink&utm_campaign=/SPIRAL_internship/items/9bf8831e7b78520d5639&utm_content=link-bottom&f000099824=https://qiita.com/SPIRAL_internship/items/9bf8831e7b78520d5639
 
そして、今チームでトライアル登録者向けに、オンボーディングコンテンツを作成しています。**SPIRAL ver.1**にご興味のある方、ぜひこちらもご覧ください👇
 
https://knowledge.spirers.jp/special/detail/11680