ローコードプラットフォームSPIRALのAPIを利用する（カスタムプログラムの登録と実行）

[SPIRAL](https://www.spiral-platform.co.jp/)は、主にエンタープライズ向けのローコードプラットフォームになります。ローコードプラットフォームなので、プログラミング知識がなくともWebアプリケーションを開発できるのが魅力です。

SPIRALでは、あらかじめ用意されているデータベースへの操作の他、SPIRAL内部にPHPスクリプトを保存・実行できる[カスタムプログラム](https://support.smp.ne.jp/manuals/custom_program/)という機能があります。今回は、その使い方を紹介します。
## 準備

### データベースの作成

今回作成したのは、通常DBになります。SPIRALでは、この他8種類のデータベースが利用できます。キーは主キー（必須、重複なし）としています。

[【機能紹介】各種DB \| SPIRAL ナレッジサイト](https://knowledge.spirers.jp/article/design/detail/730)

データベースの名前は `testdata` としました。作成したフィールドは以下の通りです。

| フィールド名   | サンプル値           | 型                                   | 差し替えキーワード |
| -------------- | -------------------- | ------------------------------------ | ------------------ |
| 名前           | テキスト30文字前後   | テキストフィールド(64 bytes)         | name               |
| フリガナ       | テキスト30文字前後   | テキストフィールド(32 bytes)かな     | furigana           |
| メールアドレス | aaa@bbb.cc.dd        | メールアドレス（大・小文字を無視）   | mail               |
| 性別           | 男性、女性           | 性別                                 | gender             |
| 年齢           | 0～99                | 数値                                 | ageyo              |
| 誕生日         | yyyy年mm月dd日       | 日付（○年○月○日）                    | birthday           |
| 婚姻状況       | 独身                 | テキストフィールド(32 bytes)         | maritalStat        |
| 都道府県       | プルダウンから選択   | 都道府県                             | prefecture         |
| 電話番号       | 09012345678          | 電話番号                             | telephone          |
| キャリア       | docomo、au、SoftBank | テキストフィールド(32 bytes)         | carrier            |
| スタイル       | スタイル             | テキストフィールド(32 bytes)         | style              |
| ランク         | シルバー             | テキストフィールド(32 bytes)         | rank               |
| キー           | 000001               | 数字・記号・アルファベット(32 bytes) | db_key             |

![image5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197026/db33f183-5a87-4f75-8ae8-1e74ce562375.png)


今回は、検索条件にマッチしたデータのランクを `シルバー` に変更するプログラムを作成します。

## カスタムプログラムの作成

カスタムプログラムは、開発メニューの中にあります。

![image4.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197026/a896e66a-390e-454a-96b0-b3849c3828a0.jpeg)



そして、新規作成を選びます。

![image3.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197026/beb71395-93b7-4c55-a41a-f649bdd79777.jpeg)



名前は `会員ランク変更` としました。カスタムプログラムでは、[PHP SDK](https://www.pi-pe.co.jp/help/phpdoc/spiral/_base---Spiral.php.html)が利用できます。

```php
<?php
// データベースの取得
$db = $SPIRAL->getDataBase("testdata");
// 検索結果で受け取るフィールドの設定
$db->addSelectFields("db_key");
// 検索条件の設定（年齢が40以上50未満）
$db->addGreaterEqualCondition("ageyo", 40);
$db->addLessThanCondition("ageyo", 50);
// 検索実行
$response_select = $db->doSelect();
// 更新条件の設定
$update_data = array();
foreach ($response_select['data'] as &$row) {
    array_push($update_data, array($row['db_key'], "シルバー"));
}
// 更新実行
$response = $db->doBulkUpdate("db_key",
    array("db_key","rank"),
    $update_data, "error");
// レスポンスの表示
print_r($response);
?>
```

作成したカスタムプログラムは、管理画面上での実行の他、指定したタイミング（日時など）で繰り返し実行もできます。

![image1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197026/0a6d0efc-65e4-4817-a438-3598266bb0a7.jpeg)


実行すると、対象になっているデータのランクが更新されているのが確認できます。データはLLMで生成したダミーデータです。

![image2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197026/4016e5c1-2585-4f3e-8535-ee0c8548dc6f.jpeg)


## まとめ

今回はSPIRALのカスタムプログラムの使い方を解説しました。SPIRAL内部での実行の場合、PHP SDKが使えるので、簡単にデータベースの操作ができます。外部データを取得したり、他のシステムとの連携を行う際にはカスタムプログラムが便利です。

[API SPIRAL ver\.1 サポートサイト](https://support.smp.ne.jp/api-manuals/)