無料RPA＋iPaaSで転売ヤーに対抗してみた。

最近息子がある有名なカードゲームにハマっています。みなさんご存知あのカードゲームです。
ハマり始めたのは2021年の9月頃からでしょうか。既に数多くの転売ヤーの方々に買い占め、転売されている状況下で参戦しました。

カード自体は発売直後であれば近くのお店で購入できるのですが、サプライ品と呼ばれるカードを入れるケースやカードゲームをプレイするためのマットみたいな物がなかなか購入できず。
オンラインストアでもすぐに売り切れてしまう。そしてメルカリなどで高額転売されている始末。

買ってあげたいが、転売ヤーから買うのはごめんです。
なんとか定価で入手する方法はないかと、いつも活用しているRPAとiPaaSを使って対抗手段を考えました。

#商品ページを監視する仕組みの構築
商品ページを一定間隔で監視し、「カートに入れる」ボタンが表示されたタイミングで即時LINEに通知がくるようにしました。商品を購入するまでを自動化すると怖いので、あくまで検知して通知という形にしました。

#フローについて
いつものintegromat+クラウドBOTで構築！フローはとてもシンプルです。
クラウドBOT実行 → LINEに通知
![フロー.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/459104/afbb6cf1-61f0-6235-8cdb-101d11d7c914.png)

#クラウドBOTでページ監視用のロボットを作成
まずはクラウドBOTを使用して、商品ページの監視用ロボットを作成します。
クラウドBOTは操作手順を記録する事で「ブラウザを自動操作してくれるロボット」を簡単に作成できる無料のRPAサービスです。
(※クラウドBOTについては<a href="https://qiita.com/cal_mgc/items/75dfab118ca031dcfd71" target="_blank">こちらの記事</a>で紹介しています。)

##ロボットの流れ
1.商品ページにアクセス
2.「カートに入れる」ボタンをクリック
3.カートの点数を取得

##実際の記録手順
目的の商品は現在在庫が切れているので、一旦在庫が存在する別の商品ページで手順を記録します。

###商品ページにアクセス
![ページにアクセス.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/459104/95fed9ef-26ff-b4af-95b8-1c2d4eabde26.png)

###「カートに入れる」ボタンをクリック
カートに入れるボタンを押してカートに入れます。
![カートに追加.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/459104/878c351c-1a2d-112d-f9b2-15a1bb38206d.png)

###カートの点数を取得
カートに入ったことを確認するため、念のために商品の点数を取得しています。
![カートの中身.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/459104/dd1bfe0f-85b6-da7a-9184-b10a5ca4ec85.png)

###ロボットの設定
ロボットの実行時に入力値として、監視対象ページのURLを渡せる用に設定しています。
※出力値にも入力したURLを出力するようにしています。(後ほど役に立ちます)
![設定.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/459104/08511ab8-b99d-5e84-d3fa-1f379b008fbd.png)

##シナリオ
ロボットのシナリオはこんな感じです。
商品ページにアクセスして、「カートに入れる」ボタンをクリックするだけのシンプルなロボットが完成しました。
これを１分間隔で定期実行します。
![シナリオについて.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/459104/5db6c279-a497-52c9-e27b-57be0cc42efd.png)

クラウドBOTは実行時に、ロボット内で使用する値を指定して実行する事ができますので、実際に監視を行う際は、目的の商品ページのURLに変更して実行を行います。
基本的にはロボットは「カートに入れる」ボタンを押せずにエラーとなりますが、在庫が更新され「カートに入れる」ボタンが押せたタイミングでロボットが正常終了となります。

#integromatで監視のフローを構築
ここで1つ問題が、integromatを使用して1分周期でロボットを実行しようとしたのですが、プランにより定期実行の間隔が制限されており、無料プランでは最短で15分間隔でした…。(15分だと気づいた頃には売り切れてそう)

1分間隔で実行したい場合は、STANDARD 29$/月のプランに加入する必要があります。
クラウドBOT側でBOTを定期実行する場合も有料プランへの加入が必要になります。
元々クラウドBOTは有料プランを使用していたので、こちらでスケジュール実行を組む事にしました。
無料の範囲ではなくなってしまいました…期待してここまで読んで下さっていた方申し訳ございません。

さて、続けます。
integraomt側ではロボットの終了をトリガーとして、正常終了であればLINEに通知というフローを構築します。

##実際の構築手順
###ロボットの実行完了をトリガーに設定
ロボットの実行が完了すると、シナリオが実行されます。先程ロボットの出力値に設定した「商品ページURL」と「カート状況」の値が取得できています。
![BOTトリガー.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/459104/f66515f3-76a2-488c-2a92-0214a1d25ccb.png)


###フィルタを使って正常終了の場合のみ次のフローに進むように設定
クラウドBOTはロボットの実行が正常に終了した場合、Statusが0になります。
ので、integromatのフィルタ機能を利用し、Statusが0の場合のみ次のフローに進むようにします。
![フィルタ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/459104/fbc1fb84-c9de-6c3e-31dd-c2f35d9eee02.png)

###LINEに通知する
最後にLINEに通知するモジュールを追加して、完了です。
今回はLINE Notifyを使用しました。
LINEの文面に商品URLを記載する事でできるだけ早くアクセスし、購入できるようにしました。
![Lineに通知.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/459104/441c2842-3676-0b36-7857-2b42080209b8.png)

##実際に動かしてみる
バッチリLINEに通知がきました。
![IMG_0496.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/459104/468d333d-3180-12c5-510b-4eee56adc995.png)

これで転売ヤーから購入する事なく、定価で買えるはず！！！！！！！





#結果
数日運用してみて、ついにLINEに通知がきました！

「よし！商品ページにアクセス！」

「カートに追加」

「ログイン！」

…

…

…

そう簡単にはいきませんでした。

カートに入れるところまでは進みましたが、ログイン処理に時間がかかってしまい、決済を行う前に売り切れてしまっていました。

#最後に
やはり転売ヤーの方々はログイン、購入の処理まで自動化しているのでしょうか…。
息子の欲しい物は購入できませんでしたが、ロボットでの情報取得→LINE通知は色々活かせそうです。

その後、地元のポケモンセンター再販があり、息子のほしいものはバッチリゲットできました！