ASTERIA Warp とCData JDBC Driver for Shopify を使用してShopify の商品の価格を変更してみる

こんにちは。CData Software Japan のProduct Specialist の菅原です。
この記事は、[アステリア Advent Calendar 2022](https://qiita.com/advent-calendar/2022/warp) 19日目の記事になります。

# はじめに
2022年はさまざまな物の値上げラッシュが続きましたね。消費者としては厳しいですが・・・。
販売サイトを運営している店舗の方も、商品の価格変更が頻繁に発生しているのではないかと思います。
そこで今回はASTERIA Warp とCData JDBC Driver for Shopify を使用してShopify の商品の価格を変更してみようと思います。

# シナリオ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2250209/7dd06415-0667-91ce-6611-9c6b1cd4d9ee.png)

# 使用したツール
・[ASTERIA Warp](https://www.asteria.com/jp/warp/)
・[CData JDBC Driver for Shopify](https://www.cdata.com/jp/drivers/shopify/jdbc/)　※30日間の無償トライアルがあります

# 事前準備
### ①CData JDBC Driver for Shopify をインストール
[https://www.cdata.com/jp/drivers/shopify/jdbc/](https://www.cdata.com/jp/drivers/shopify/jdbc/)からダウンロードしてインストールします。

### ②「cdata.jdbc.shopify.jar」と「cdata.jdbc.shopify.lic」をASTERIA Warp に配置
「C:\Program Files\CData\CData JDBC Driver for Shopify 2022J\lib」にある
・「cdata.jdbc.shopify.jar」
・「cdata.jdbc.shopify.lic」
を「C:\asteriahome5\system\lib\drivers」にコピーして配置します。

### ③「cdata.jdbc.shopify.jar」でShopify へ接続できるか確認
「cdata.jdbc.shopify.jar」を起動して、Shopify へ接続するために必要な項目を設定します。
その後、「接続テスト」をクリックしてShopify へ接続できるか確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2250209/b618f222-9498-2174-ec6e-98f72cfaede9.png)
Shopify に接続できたら、水色枠の「接続文字列」をコピーして、メモしておきます。
※⑤コネクション作成のURLに設定するため

＜参考＞
Shopify への認証方法は下記のヘルプを参照してください。
[CData JDBC Driver for Shopify - 接続の確立](https://cdn.cdata.com/help/FOH/jp/jdbc/pg_connectionj.htm)

### ④ASTERIA Warp を再起動
ASTERIA Warp を再起動します。

### ⑤RDBのコネクション作成
ASTERIA のフローデザイナーの左下の「コネクション」タブで「コネクションの作成」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2250209/717b8de6-5548-ad97-5278-dddf764fd5a0.png)
接続種別：「RDB」
名前：「Shopify」
として設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2250209/5e2bb9e7-0e5c-5464-cfbc-4e0b2001a15d.png)
ASTERIA のフローデザイナーの右上の「基本」を下記に設定します。
・データベースタイプ：「Other」
・ドライバー：「cdata.jdbc.shopify.ShopifyDriver」
・URL：③の「cdata.jdbc.shopify.jar」で接続が成功した接続文字列を設定
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2250209/3b6161d5-ee2a-370b-2760-3e60e1e0fa50.png)

Shopify に接続できるか「接続テスト」を行います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2250209/66324c21-7f18-daf6-3dc7-4a4aae3ca9b1.png)
接続が成功すると下記のような画面が表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2250209/7ee21e9c-1fcd-9964-18b7-766600d14976.png)

以上で、事前準備の完了となります。

# フロー
それでは実際にフローを作成しましょう。
今回作成したフローは以下になります。
とってもシンプルなフローです！！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2250209/5beeacbf-3c10-36c8-bbc2-3977fdb37b28.png)

# ターゲットの商品たち
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2250209/c9d23176-35bd-5926-8fb3-fc7986efc542.png)

# RDBGet1
商品名と商品の価格を取得するために、「Products」テーブルと「ProductVariants」テーブルを結合しました。
結合条件はProducts.Id = ProductVariants.ProductId です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2250209/365b9e82-d69a-d5fa-f1bb-7523340afeb0.png)

# Mapper1
商品の「野球ボール」「テニスボール」のそれぞれを別の係数で計算させるためレイヤーを追加しました。
### レイヤー1
レイヤー1の条件式として「野球ボール」のみとしました。
```
$record.Title="野球ボール"
```
価格は現在の商品の価格×1.1となるように計算させて、計算後の価格へ設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2250209/d1af3080-36e8-a305-499f-f250e0e8b333.png)
### レイヤー2
レイヤー2の条件式として「テニスボール」のみとしました。
```
$record.Title="テニスボール"
```
価格は現在の商品の価格×0.9となるように計算させて、計算後の価格へ設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2250209/72947ff7-f1f9-236d-4261-92b03db19e68.png)

# RDBPut1
商品の価格を更新するために、「ProductVariants」テーブルのKey項目「Id」と「Price」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2250209/07398df1-11ea-560a-2885-22c8032fdf5d.png)
実行する処理を「Update」に変更します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2250209/257ce1f1-5263-1116-d6e8-f6576d6046b5.png)

# フロー実行
それでは作成したフローを実行してみます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2250209/be3e631c-2575-4430-71a0-2703244c43e5.png)

正常に終了できました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2250209/b41955a8-a85b-7c72-98e3-c8ac561b6a7c.png)

では実際に価格が変更されているか確認してみましょう。
以下のようにそれぞれの価格が正しく計算されて、変更できました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2250209/625e9ac7-a24a-f82d-71f2-d921254c29be.png)

# おわりに
ASTERIA Warp とCData JDBC Driver for Shopify を使用してShopify の商品の価格を変更してみました。
ASTERIA Warp を使用することで簡単にShopify への更新フローが作成できてしまいました。
今回はMapper1 内で計算した値に変更しましたが、実際にはExcelファイル等で管理した商品マスタを参照して、更新するようなフローを作成するといいのではないでしょうか。
本記事では価格の変更をメインとしましたが、その他にもShopify の各値を取得・変更・削除できますので、試してみてください。