こんにちは。デジタルのスキルを身に着けたいぎりぎりアラサー、やまです。
今回はMakeというノーコードツールを使って、分厚い定款から欲しい条文を取り出してくれるLINE Botを作ってみました。
ノーコードで定款検索Botを作成
入力したキーワードで、いつでもどこでも定款条文を返してくれるLINE Bot
LINE Botの使用イメージ
- LINEで調べたいキーワードを送信
- キーワードを含む条文がLINE Botから返ってくる
※キーワードがない場合は別のキーワードを試すように返信が返ってくる
やりたいことはこれだけです。
さあ、Makeでレッツトライ!
使用ツール
LINE Messaging API
Make (旧:integromat)
Google スプレッドシート(定款を表にしておいたもの)
(相棒:ChatGPT)
今回の記事はMakeのシナリオ部分がポイントなので、LINE Messaging APIの設定方法は記載していません
定款はGoogleスプレッドシートで事前に表にまとめておきます。今回はWebにアップされていた企業様のものを借りてダミーデータを作ってみました。
Google スプレッドシートはこんな感じで列分けしています。
MakeでのLINE Botのシナリオ全体図
今回作ったLINE Botのシナリオです。
LINE Botを作るのは初めてなので可能な限りシンプルな作りにしたかったのですが、もしかしたらもっと単純化できるかもしれません。
LINE Botのシナリオの具体的内容
ここからは具体的なモジュールの中身を見ていきます。初心者過ぎて説明できなかったのでChatGPTに聞きながら書いています。説明が一部間違っている可能性がある点ご注意ください。
1. LINE [Watch Events]
役割:LINEからのメッセージを受け取るトリガー。
例:ユーザーが調べたいキーワードを送ると、ここでシナリオが起動。
WebhookをちゃんとLINEに繋げないと動かないので注意
2. Router
役割:条件分岐(ルーター)。
今回の用途:
・テキスト入力がヒットした場合 → 3.Google Sheetsのルートへ
テキスト入力がヒットしなかった場合 → 【fallback】LINE [Send a Reply Message]にて「テキストを入力してください」と返す
3. Google Sheets [Search Rows]
役割:Googleスプレッドシート内の行を検索する。
想定動作:ユーザーのメッセージ(例:「取締役会」)をキーにして、該当する情報を指定した列から探す。
4. Array Aggregator
役割:複数行のデータをまとめて、配列形式にするモジュール。
使う理由:検索結果が複数ヒットした場合、それらをまとめて次に渡せるようにするため。
正直なところこの配列にするモジュールが必要なのかわからなかったのですが、これを挟まずにキーワードがある/なしの分岐をしようとするとうまく動かなかったため追加しました。本当はいらないかもしれません。
5. Router
役割:条件分岐(ルーター)。
今回の用途:
・検索結果がヒットした場合 →6. Google Sheets [Search Rows] へ
検索結果がない場合 → 【fallback】LINE [Send a Reply Message]にて「他のキーワードをお試しください」と返す
6. Google Sheets [Search Rows]
役割:さらに詳細データを取得するために再度スプレッドシートを検索。
例:条文番号や項目名など、より詳しい情報を探す。
7. Tools [Text aggregator]
役割:Google Sheetsの複数の行データをまとめてテキスト化する。
例:条文をまとめて
第1条 商号:〜
第2条 事業目的:〜
のようにまとめてテキスト化する。
8. LINE [Send a Reply Message]
役割:ユーザーへText aggregatorで整えた検索結果のメッセージを送る。
完成
設定にかかった時間
ちなみにここまででどれくらいかかったかというと、5時間以上です
同じことをやるなら、次は1時間くらいでできそうです。
また、地味にGoogle スプレッドシートの事前準備が大変です。ダミーシートだから途中で切り上げましたが、定款全文やろうとするとなかなかの作業。ファイルを投げられるタイプのAIに表作成とキーワード抽出は丸投げがよさそうです。
私も今回ChatGPTに定款のPDFを投げてエクセルの表にしてもらいましたが、それでも微調整に結構かかりました。
そして間違っていないはずなのになぜ動かない???という思いで重ねるエラーたち。
何度もChatGPTに画面キャプチャを送って確認していたのですが、非常に基本的なところの設定を間違えていたせいでエラーが繰り返されていました…。
エラーの原因
ChatGPTと共にひたすらMakeと格闘した結果、動くはずのものが動かなかったエラー要因は
LINE [Send a Reply Message]のConnectionを練習用に作ったLINE Botのアクセストークンのままにしていたからでした
Webhookはちゃんと新しく貼るように気を付けていたのですが、ここも忘れずに使用するLINE Botと対応させましょう。
Webhookやアクセストークンなどの連携部分は見落としがちなので注意
この後やりたかったこと
本当はこの後、複数の会社の定款をGoogle スプレッドシートにまとめて、
- キーワードが来たら
- そのキーワードが条文中に入っている会社名の選択肢を返して
- 会社を選択させて、
- 選択した会社の最初に入力されたキーワードが入った条文を返す
という流れが作りたかったのですが、LINE Watch Eventsが1度しか使えないので会社名を選択させた時点で会社名がキーワードになってしまって全然うまくいかない…。
キーワードが入っている会社の選択肢を出すQuick Replyはできたけど
最初に入れたキーワードを取り出してGoogle Sheetsに読みに行かせてLINEで返すのがうまくいかない…。
ここはもう応用編として別の方法を調べることにして、まずは簡単ですが定款検索LINE Botの試作品を作れたことを喜ぶことにします。
制作の背景
数年前から子会社管理などに携わるようになったのですが、複数の会社を見るときに地味に大変なのが各社のルールの把握でした。
会社によって定款も規定も違うので、「ルールがきちんと整備されているか」や「整備されたルール通りに運用されているか」といった確認がなかなか大変なんですね。
とはいえ会社法や定款、規程などの会社のルールの書類って、ちょっと確認が面倒なので、もっと簡単に見られるようにしてよ!という気持ちがある人が私以外にもいるかもしれないので、今回実験的に定款条文を簡単に確認できるLINE Botを【Make】を使って作ってみました。
職場の人の意見
試作品を作ったからには見てもらわねばということで、職場の方数名にLINE Botを試してみてもらい、こんな風に業務改善していけたらどんなことがしたい?と尋ねてみました
出た意見がこちら
- 日々のちょっとした作業についてのQA
- 各国の会社法
- 各国各社の定款(今回作ったものの目的)
- 職務権限規程
- 各社連絡先
- 部メンバーの残業時間(マネージャーの意見)
- LINE Botではないけど、社員同士の人となりがわかるようなカジュアルなコミュニケーションツールがあればいいのに
渡したのが定款BOTだったので若干引きずられている気がしますが、日々の作業のQAや会社法なら情報セキュリティ上も問題なさそうなので、次の挑戦にしてみたいと思います!
記事を読んでいただき、ありがとうございました!