なんちゃってエンジニアがWorkatoのトリガーについてまとめてみた

# ※ はじめに ※
本記事は、私の頭の整理を兼ねている為、他の記事に比べてレベル感は初心者向けです。
温かい気持ちで読んでいただけると幸いです。
出来れば、最初に私のことを自己紹介欄で知っていただけると嬉しいです。
そもそもWorkatoって？って方は以下の記事を読んでいただけると分かりやすいと思います。
[Workatoとは？iPaaSを非エンジニアにもわかりやすく解説](https://qiita.com/ueno_bvt/items/1a4de6c99d443d054ed9)


# トリガーについて
そもそもトリガーって何？という方向けに簡単にご説明！
トリガーとは、プログラムやコンピュータが動作を始めるきっかけのことです。
```:システム例
顧客情報管理データベースに新規顧客情報が登録されると、顧客情報バックアップデータベースに
同一情報を登録する
```
といったシステムがあるとしたら、「<font color='orange'>新規顧客情報が登録される</font>」がトリガーに該当し、バックアップデータベースに同一情報が登録されます。


![スクリーンショット 2023-11-06 212022.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3574072/cf830389-682a-1bcd-92ef-efccfbbb86b2.png)

# Workatoのトリガーについて
3つの要素で構成されています。
・トリガーメカニズム
・ディスパッチ
・イベントタイプ
これらの要素を適切に設定することにより想定しているトリガーとして動いてくれます。

ここからはそれぞれの要素について説明していきます。

# トリガーメカニズム
トリガーの実行タイミングを設定することが出来ます。


### ポーリング
<font color='orange'>定期的に</font>相手の状態を確認しにいきます。
![スクリーンショット 2023-11-06 215810.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3574072/b4c26f67-9036-9d43-3ff4-2078de5eb7d1.png)

即時性は必要ないけど、ちょこちょこ確認するような業務の場合が使用イメージとしては当てはまるかなと思います。
```:適用例
1.取引先からメールが来ていないかポーリングで確認(2時間間隔)
2.(新規メール有の場合)メール内容を取得
3.日程調整、問い合わせ、クレームなのか等を生成AIで判断し、適宜メンションをしたり、タスク作成をしたり等
```

### リアルタイム
<font color='orange'>常に</font>相手の状態を確認してます。
![スクリーンショット 2023-11-07 104634.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3574072/403c4eba-fae8-a504-1650-f0657594c7a3.png)


即リアクションが求められるような対応依頼等が当てはめやすいかなと思います。
```:適用例
1.新着メールで件名が【対応依頼】の本文を取得
2.依頼内容をSalesforceの依頼レコードに登録
3.Slackでメンション付きで、依頼レコード内容を投稿
```

### リアルタイム(Webhook版)

```:Webhookとは？
Web アプリケーションやサービスなどの更新情報を他のアプリケーションへ特定のイベント等が、
発生した際にリアルタイムで通知するシステム
```
こちらもリアルタイムではありますが、常に監視をしているわけではなく、顧客情報管理データベース側で[新規顧客情報が登録された]ことを検知して、バックアップデータベースに同一情報を登録します
![スクリーンショット 2023-11-07 103348.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3574072/93bc4ced-facc-fb38-535b-fb8ab9c0ca94.png)



### スケジュール
<font color='orange'>設定した日時に</font>相手の状態を確認しにいきます。
ポーリングとの違いは「**間隔**」なのか「**指定日時**」なのかですね。
![スクリーンショット 2023-11-06 225800.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3574072/f56d7eb8-2cff-dc02-a0ff-a9006c413540.png)

ぱっと思いつくのだと勤怠管理の締め作業とかでしょうか。
```:適用例
1.毎月末のPM6:00に勤怠管理システムにアクセスして勤怠情報を取得
2.情報を精査
3.申請漏れや不備がある社員に対して自動でメール送信
```

# ディスパッチ
実行する際の一度で処理する数を設定が出来ます。


### シングル
<font color='orange'>単一</font>データのみの処理
登録する顧客情報が7件だとしたら、1件1件処理をしていきます
![スクリーンショット 2023-11-06 233526.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3574072/f6ded6a9-9baa-ee26-ba8b-7c71d8e4a069.png)

このあと紹介するバッチ/バルクはまとめて処理をさせることが出来るので、そうなるとシングルってあまり使わなくない？ってなりそうですが、データの要素によって分岐処理が必要な場合はシングルが適しています。
```:適用例
1.国が管理している個人情報データベースを基に処理させる業務があるとする
2.都道府県ごとに対応ケースがことなるので、住所から判断する必要がある
3.各都道府県の対応ケースに応じて処理分岐
```

### バッチ/バルク
シングルとは異なり一度に複数件の処理を行います。
※ リアルタイムでは使用出来ません。


#### バッチ
<font color='orange'>一定量</font>のデータを一括処理
登録する顧客情報が7件だとしたら、2件ずつ束で処理をしていきます。
余りの1件もちゃんと処理してくれます。
※ 何件を束とするかは設定可能
![スクリーンショット 2023-11-06 234706.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3574072/acacc3f4-3337-d03e-ecb3-a0306ebea551.png)

```:適用例
良いのが思いつきませんでした。haha
```

#### バルク
<font color='orange'>全量</font>データを一括処理
![スクリーンショット 2023-11-06 234936.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3574072/fd697464-27d5-77fc-7137-cce3ec3f9816.png)

毎月や毎年の定期作業で大量データの取り込みをするとかに使えるかなと思います。
```:適用例
1.毎日PM5:00に上場企業一覧を東証から取得する
2.上場企業の様々な要素を自社データベースに登録
```



# イベントタイプ
これまでは、実行タイミング、数を説明してきましたが、これは処理条件です。
様々なものがあり、作成/更新/削除/存在確認等があり適用例は様々あります
・Asanaでタスクが作成されたら
・Salesforceのレコードが削除されていたら
・Googleドライブの指定フォルダにスプレッドシートが存在している場合
exc.........


# 終わりに
ディスパッチのバッチ/バルクで私は、ん？となりました。
バッチってbatファイルとは違う？...よね？と。笑
なので、非エンジニアだけどWorkatoに興味あるんだよな～って方や、ProⅠ受けてみて同じところがよく分からなかったんだよねって方の一助になれれば嬉しいなって思います。

[弊社の概要と記事一覧はこちらからどうぞ](https://qiita.com/organizations/bstylevt/profile)