ノーコードツール(Make:旧Integromat)を使ってユーザー登録用のLINE botを作ってみた

2022.11.07

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

ノーコードツール(Make)で作ったLINE botはこちら

※非公開のワークフローのためRunOnceを実行していますが、公開している場合は不要です

前提

なぜノーコードツールを使いたいのか

ある程度LINEを知っているエンジニアであれば、今回動画にした内容をコード化するのは難しいことではありません。コード化した場合は、より柔軟なフローを実現することができ、またトラフィックの多いアプリケーションであれば実行基盤にかかるコストを削減することも可能になります。

ではなぜノーコードツールを使いたくなるのでしょうか。現時点で私が感じている理由は以下になります。

  • そもそもコードを書けるエンジニアがいない
  • サクッと作れるエンジニアがいたとしてもコードを保守しきれない
    • ライブラリのバージョンアップなど日々やらなければいけないタスクはたくさんある
    • 小さいものを何でもかんでもコード化してしまうと技術スタックがバラバラになりしんどくなる
  • コードを書くとどうしても初期構築コストは高くなりがち

個人的には2点目が大きいと思っています。当たり前ですが作ったら保守をする必要がある、なのでできるだけコードを書きたくない。というのが最近感じているところです。 一方、ノーコードツールを使えば保守が楽になるのかと言われるとそうでもない部分もあると思っています。ノーコードツールでも癖があり理解が難しいものや、そもそも要件を満たせないツールも多くあると思っています。

そんな中、直感的で理解しやすく簡単な要件であれば満たせそうなツールMakeを発見したので紹介します。

Make とは

Makeは、いわゆる"SaaS自動化サービス"(呼び方が定まってないようなので、今回はこのように呼びます)の1つです。世の中のSaaS同士をつなぎ合わせることで、強力なサービスを簡単に作成することができます。AWSで言うところのLambdaに近いところがありますが、SaaS自動化サービスでは、基本的にプログラミングは必要なく、クリックのみで作成することも可能です。(もちろんプログラミングのようなことも可能です)

下の図のように、あるイベントをトリガーとして、処理をつなぎ合わせて行くことで、実現したい機能を構成します。GUIでグラフィカルに構成することができます。どんな処理が起きているかわかりやすく、実行した結果もこの画面に表示されるため、データの流れも把握しやすいです。Webブラウザ上で処理を構成していきます。

【Integromat】Developers IOブログの投稿を友人に通知してみた より引用

MakeではLINEがデフォルトでインテグレートされており、GUIでポチポチするだけで簡単にLINE botを構築することができます。LINE以外でも1000以上のアプリケーションがインテグレートされているのも魅力です。Slack通知などもとても簡単に実現できます。

LINE botを作ってみた

ということで今回構築したLINE botの構成はこちら

ユーザーが公式アカウントで通知した内容(Webhook)を受け後続の処理にてスプレットシートへの書き込みを行います。処理の詳細は以下の通りです。

  • 初回リクエスト
    • 公式アカウントからのWebhookを受ける
    • スプレットシートから対象のLINEUserIDのレコードを検索
    • スプレットシートにレコードがない、かつ、メッセージが「初回登録」である場合、次の処理に進む
    • スプレットシートのuserIdにLINEUserIDを書き込む
    • 「名前を入力してください」のリプライメッセージを送信
  • 2回目リクエスト
    • 公式アカウントからのWebhookを受ける
    • スプレットシートから対象のLINEUserIDのレコードを検索
    • スプレットシートにレコードが存在し、かつ、レコードにnameが設定されていない場合、次の処理に進む
    • スプレットシートのnameにメッセージの内容を書き込む
    • 「電話番号を入力してください」のリプライメッセージを送信
  • 3回目リクエスト
    • 公式アカウントからのWebhookを受ける
    • スプレットシートから対象のLINEUserIDのレコードを検索
    • スプレットシートにレコードが存在し、かつ、レコードにnameが設定されておりphoneNumberが設定されていない場合、次の処理に進む
    • スプレットシートのphoneNumberにメッセージの内容を書き込む
    • 「登録ありがとうございました!」のリプライメッセージを送信

アカウントの設定

上記を構築する前に、まずはLINE公式アカウントの作成およびMakeへのSignUpをする必要があります。以下の動画を参考にやまびこLINE bot(発言した内容がそのまま返ってくる)を作るところまで実施してみてください。(5分程度で完了します)

ノーコード界隈で話題の「Make(旧Integromat)」でLINE Botを作ろう

モジュールの設定

Makeではシナリオ内に配置するファンクションのことをモジュールと呼びます。各モジュールに設定した内容は以下の通りです。

Webhookを受けるWatchEventモジュール

こちらのモジュールでWebhookを受けつけます。

GUI上でWatchEventを追加しLINE公式アカウントで取得したTokenを設定することで作成することができます。

正しく配置されるとリクエストを受け付けるWebhookのURLが作成されます。

Spread Sheetから行を検索するSearchRowsモジュール

こちらのモジュールでSpread Sheetから対象のレコードを取得します。

GUI上でSheetを追加しGoogleアカウントへの認証を追加することで作成することができます。検索するレコードの条件もGUIから設定します。今回はLINEUserIDが一致するレコードを取得します。

LINEと公式でインテグレートされているので、どの項目を条件にするのかを簡単に選択することができます。

フィルタ

何かしらの条件をもとにルートを決めることができます。

前のモジュールでレコードが取得できない、かつ、メッセージが「初回登録」となっている場合、後続の処理に進むようなフィルタを設定します。

Spread Sheetにレコードを書き込むAddRowsモジュール

こちらのモジュールでSpread Sheetにレコードを追加します。

userIdにwebhookで受けたイベントのLINEUserIDを設定します。

LINEでユーザーに返信するSendAReplyMessageモジュール

こちらのモジュールでユーザーにレスポンスを返します。

ユーザーに返信する文言をGUIより設定します。

フィルタ

2つ目のフィルタです。

先程の条件とは違い、レコードは存在するがnameが設定されていない場合進むルートとします。

Spread Sheetにレコードを更新するUpdateRowsモジュール

こちらのモジュールでSpread Sheetのレコードを更新します。

userIdにはSearchRowsモジュールで取得できた値を、nameには直近のリクエストで送られてきた値を設定します。

その他モジュールも上記と同様に設定していきます。設定が完了すると冒頭で紹介したLINE botが利用できます。

おわりに

以上、ノーコードツールMakeの紹介でした。ノーコードでできることはできるだけノーコードに寄せていきたい。そんな気分