Make（旧Integromat）を使う

ノーコードで自動化を行うことができるツールである[Make](https://www.make.com/en)を使ってみたのでまとめます。文献が英語しかなく、初めはかなりとっつきづらかったので誰かの助けになれば幸いです（尚Makeは検索でヒットしずらいのでMake.comと検索すると良いです）。

## Makeとは？
先述の通り、Makeとはノーコードで自動化を行うことができるツールです。下図のようにノード（Makeではモジュールという）を組み合わせることで、めんどくさい処理や決まった時間に実行したい処理を自動で行うことができます。

![スクリーンショット 2024-07-08 15.29.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3833282/f232757e-5bfa-4d75-e21d-16576bbddca2.png)

HTTPリクエストの受/発信ができるため簡易的なAPIを作成することも可能です。
各フローはシナリオとよばれ、下図右上のCreate a new senarioから新しいシナリオを作ることができます。
![無題83_20240708154246.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3833282/f3edd61a-2400-7ae3-c5c4-50b3daa9f68c.jpeg)

## 基本的なモジュール・関数

※モジュールには、自分でカスタムしてつくるものの他に、Slack、Google Sheetsといったよく使われる機能が使いやすいようにあらかじめ用意されています
### Webhooks

シナリオの発火の要因となるものをtriggerといます。多くの場合、各モジュールにtriggerが用意されています。例えばメールが届いたら発火する、facebookで誰かが自分の投稿をみたら発火するなどが用意されています。スケジューリングすることも可能です。
最も基本的な、HTTPリクエストを受けて実行するモジュールがWebhooksです。Custom webhookからトリガーを設定してみましょう。
![スクリーンショット 2024-07-08 16.02.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3833282/415a73b0-59d4-b2e5-d008-4ec7a77c2bf2.png)

Webhook nameとはエンドポイントを識別するための名前です。
IP restrictionsで特定のIPアドレスからのリクエストのみを受け取るようにできます。
![スクリーンショット 2024-07-08 16.05.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3833282/480a9c51-e9e2-c5f9-734e-cb86c9c8919a.png)

Show advanced settingsからheaderを受け取るか、methodを受け取るかなどの設定をすることができます。
![スクリーンショット 2024-07-08 22.23.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3833282/307a5c47-90f3-a340-aec0-057105418912.png)

Saveをおした後、エンドポイントとなるurlが表示されます。初回画面ではこのurlあてに何かデータを送ることで、データ構造を可視化してくれます。
![無題85.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3833282/81b3cf35-130d-d315-9e85-1950b41fa0c1.jpeg)

あとからデータ構造を可視化することも可能です。

### Set multiple variables 
複数のデータを複数の変数に格納することができます。後述の関数を併用して使う場合が多いと思います。似たようなモジュールにSet a variablesがありますが、こちらは1つのデータを1つの変数に格納することができます。
![スクリーンショット 2024-07-09 0.59.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3833282/a3681df0-2897-c047-d9ad-d3bd96e600ec.png)

### functions
各モジュールの入力欄に関数を用いることができます。下図の⚙️の隣にも色々な関数があり調べれば大抵のものはあります。ここで選択して関数を用いても良いし、手入力でも自動で関数として認識されます（Excelみたいなかんじ）
![スクリーンショット 2024-07-09 1.06.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3833282/ee2904f0-dedb-43ef-655a-0114ca645c98.png)

ためしにmap関数を使ってみます（filter関数に近い）
先程のデータ構造の可視化で、下記のJSONデータを送っていたとします。
```json
{
  "metadata": {
    "createdDate": "2022-10-01",
    "createdBy": "Haruhi Suzumiya"
  },
  "data": {
    "users": [
      { "id": 123, "name": "Adam", "hobbies": ["reading", "swimming"] },
      { "id": 124, "name": "Eve", "hobbies": ["painting", "cycling"] }
    ]
  }
}
```

ここからusersのなかでidが123のものを取り出したいときこんな感じでかいてあげることでnameを取り出すことができます。
![スクリーンショット 2024-07-09 1.48.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3833282/3c1b9edf-0010-04bd-8689-2b4384cfcdaa.png)

### Router
フローを分岐させることができます。後述のフィルターを用いて条件分岐を実装することもでき、If文に当たります。

![スクリーンショット 2024-07-09 1.21.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3833282/61a6a47d-06be-d181-3488-906985480ee7.png)

### Set up a filter
モジュール間のスパナをタップすることでフィルターを作成することができます。ラベルにどのような条件で分岐しているのか書いておくとわかりやすいです。またどのような式で条件づけるか▼から選ぶことができます。

![スクリーンショット 2024-07-09 1.26.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3833282/29de1dc8-af48-d905-59b0-cc6109e8694a.png)

### Iterator
for文に当たります。配列を渡すことで、それぞれの要素に対して同様の処理を行うことができます。
![スクリーンショット 2024-07-09 1.50.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3833282/948967e2-a7b2-f5ee-2845-5213a88583b6.png)

### HTTP
URLを設定してファイルをダウンロードする、認証を行うなど、なにかurlにアクセスするときに用います。
![スクリーンショット 2024-07-09 1.53.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3833282/0eec452e-5ff5-4bcf-0057-bd5a8ac630fc.png)

例えばMake a requestではAPIを叩くことができます。ヘッダーやボディの設定などをしてリクエストを行います。先程のIteratorと組み合わせると、各ループで異なるURLを叩く、といったこともできます。
![スクリーンショット 2024-07-09 2.05.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3833282/4e77c4c1-5575-ba6f-b859-dbda3e60cf40.png)

### Error handler
モジュールでエラーが出たときの処理を記述できます。モジュールをダブルクリックしてAdd error handlerから設定可能です。
![スクリーンショット 2024-07-09 13.53.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3833282/a63a8bbd-c80f-ab6b-22cc-f199d277fa19.png)

Webhooksと組み合わせればエラーレスポンスを返すこともできます。
![スクリーンショット 2024-07-09 13.57.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3833282/d0cd350b-2cf6-ea58-e43b-1b5a9068d4f1.png)

# まとめ
基本的なモジュールや関数を紹介しました。最初こそ戸惑いますが、ある程度理解しておけばあとは感覚的にできると思います。困ったときはMake communityに聞くと割ぐ誰か答えてくれます。少し上級者向け（？）のノーコードツールですが慣れるととても便利なのでぜひめげずに頑張ってください。