速報の羅針盤.

政治・社会・テクノロジーから文化まで、今世界で起きていることを鋭い視点で読み解く最新ニュースメディア。

テクノロジー

LINEグループを守る!保護BOT完全作成ガイド2024

By Matthew Cannon |

LINEのグループチャットが荒らされた経験はないだろうか。突然の迷惑メッセージ、繰り返し参加してくる不審なアカウント、あるいは深夜に大量送信されるスパム。管理者が手動で対応するには限界がある。そこで注目されているのが「LINE保護BOT」だ。自動でグループを監視し、不審な動作を即座にブロックするこのツールは、コミュニティ運営を根本から変える可能性を持っている。

LINE Messaging APIを使ったBOT開発イメージ

LINE保護BOTとは何か

一言で言えば、グループの「自動番人」だ。LINE Messaging APIを使って構築されるこのBOTは、グループ内のメッセージや参加・退出イベントを常時監視し、あらかじめ設定したルールに基づいて自動アクションを実行する。たとえば、特定のキーワードを含む投稿を即削除したり、短時間に大量メッセージを送るアカウントを自動でキックしたり。管理者が寝ていても、BOTは24時間働き続ける。

ビジネス用途でも個人コミュニティでも需要が急増している。フリマアプリの出品グループ、ファンクラブのチャットルーム、学校のPTAグループ——それぞれで荒らし対策の必要性が出てきている。保護BOTはもはや「技術者の趣味」ではなく、実用的なグループ管理ツールとして定着しつつある。

作成前に知っておくべき基本知識

LINE保護BOTを作るには、まずLINE Developersアカウントが必要だ。LINE公式が提供する開発者向けプラットフォームで、無料で登録できる。ここでMessaging APIチャネルを作成し、アクセストークンとチャネルシークレットを取得する。この2つのキーがBOTの「身分証明書」になる。

次に、BOTが動作するサーバー環境を用意する。LINEからのWebhookを受け取るためには、外部からアクセスできるHTTPS対応のエンドポイントが必要だ。よく使われる選択肢は3つある。Google Apps Script(GAS)、Node.jsをHerokuやRenderにデプロイする方法、そしてPythonをFlaskで動かすVPS運用だ。初心者にはGASが圧倒的におすすめで、コードを書いてデプロイするだけでサーバー管理が一切不要になる。

Google Apps ScriptでBOTを作る手順

GASを使った保護BOT構築は、意外とシンプルだ。まずGoogleドライブから新しいスクリプトファイルを作成し、コードを記述する。基本的な流れはこうだ。

最初のステップは「doPost関数」の定義だ。LINEからのWebhookはPOSTリクエストとして届くので、この関数がすべての起点になる。受け取ったJSONデータを解析し、イベントタイプ(メッセージ、参加、退出など)を判別する。ここでイベントの種類によって処理を分岐させる設計にすると、後から機能追加がしやすくなる。

次にメッセージ監視のロジックを組む。たとえば「NGワードリスト」を配列で定義しておき、受信メッセージに含まれているか確認する。マッチした場合は返信APIで警告メッセージを送り、必要に応じてキック処理を実行する。LINE Messaging APIにはグループメンバーをキックするエンドポイント(`/v2/bot/group/{groupId}/member/{userId}`へのDELETEリクエスト)が用意されているので、UrlFetchAppを使って叩くだけだ。

GASのデプロイはWebアプリとして公開する形式を取る。「新しいデプロイ」→「ウェブアプリ」→アクセス権限を「全員」に設定してデプロイすれば、URLが発行される。このURLをLINE DevelopersのWebhook URLに貼り付けて検証が通れば、BOTが稼働し始める。

Google Apps ScriptでLINE BOTのWebhookを設定する画面イメージ

保護機能の実装:何を守り、何を監視するか

BOTを「保護」として機能させるには、どんな脅威に対応するかを明確にする必要がある。よく実装される機能はいくつかある。

スパム検知は最も基本的な保護機能だ。同一ユーザーが一定時間内に規定回数以上メッセージを送信した場合、自動で警告またはキックする。GASではスプレッドシートをデータベース代わりに使い、ユーザーIDごとの送信回数と最終送信時刻を記録する方法が一般的だ。シンプルだが効果は高い。

キーワードフィルタリングは投稿内容の監視だ。NGワードだけでなく、URLパターン(外部サイトへの誘導リンクなど)を正規表現でチェックする方法も有効だ。たとえば `http://` や `https://` を含む投稿を自動フラグ立てし、管理者に通知するだけでも十分な抑止力になる。

参加イベント監視も重要だ。新規メンバーが参加した際に自動歓迎メッセージを送りつつ、同時に参加者のユーザーIDをログに記録する。過去にキックされたユーザーが再参加してきた場合は即座にキックする「ブラックリスト機能」も実装できる。

深夜帯のメッセージ制限も地味に効果的だ。たとえば午後11時から午前7時の間はメッセージ投稿を制限し、違反した場合は削除+警告を出す設定にすると、深夜の騒音問題が一気に解決する。

Node.jsを使った本格的な保護BOT構築

より高度な保護機能を求めるなら、Node.jsによる実装が選択肢に上がる。`@line/bot-sdk` という公式SDKが提供されており、Webhook処理からメッセージ送信まで一通りカバーされている。ExpressをWebサーバーとして使い、RenderやFly.ioに無料でデプロイする構成が現在のスタンダードだ。

Node.js実装の大きなアドバンテージは、非同期処理の柔軟性にある。複数グループを同時管理する場合、GASだと実行時間制限(6分)に引っかかる可能性があるが、Node.jsならその心配が少ない。また、MongoDBやFirestoreと組み合わせることで、ユーザー行動履歴の永続的な保存と分析が容易になる。

セキュリティ面でも有利だ。リクエストが本当にLINEから来ているかを確認する「署名検証」(チャネルシークレットを使ったHMAC-SHA256検証)をSDKが自動でやってくれる。GASで手動実装するよりずっと安全だ。

Pythonで作りたい場合のアプローチ

PythonユーザーにはFlaskまたはFastAPIを使う方法が人気だ。`line-bot-sdk-python` をインストールし、Webhookエンドポイントを定義する。ロジックの書きやすさという点でPythonは優秀で、特に機械学習モデルを組み込んだ高度なスパム検知を実装したい場合は、Pythonが最も適した選択だ。

たとえばscikit-learnやtransformersライブラリを使い、過去のスパムメッセージで学習させた分類モデルを組み込めば、単純なキーワードマッチでは検知できない巧妙なスパムも自動識別できる。これは大規模なコミュニティ運営で本当に強力な武器になる。

PythonとFlaskを使ったLINEスパム検知BOTの構成図

LINE APIの権限と注意点

保護BOTを作る上で見落としがちなのが、APIの権限設定だ。グループメンバーをキックするためには、BOTがそのグループに「管理者権限」ではなく「一般メンバー」として参加していても実行できる——ただし、BOTアカウント自体がグループに参加していることが前提だ。

LINE Messaging APIにはレート制限がある。無料プランでは月1,000件のメッセージ送信が上限で、超過すると有料になる。大規模グループで保護BOTを運用する場合は、不必要な自動返信を減らす設計が求められる。警告メッセージをDMで送るのではなくグループ内に送るかどうかも、メッセージ消費量に影響する。

また、個人情報の取り扱いにも注意が必要だ。ユーザーIDやメッセージ内容をログに保存する場合は、プライバシーポリシーを明示し、グループメンバーに収集していることを周知する義務がある。特にビジネス利用では法的リスクを回避するため、専門家への相談も検討したい。

よくあるエラーとトラブルシューティング

BOT構築で詰まりやすいポイントを整理しておこう。

まず「Webhookの検証が通らない」問題。原因の多くはHTTPS未対応、またはURLの末尾スラッシュの有無だ。GASの場合はデプロイURLをそのまま使えば問題ないが、自前サーバーの場合はSSL証明書の設定を確認する。

次に「BOTがメッセージに反応しない」。これはWebhookイベントの設定漏れが原因であることが多い。LINE DevelopersのコンソールでWebhookの利用が「オン」になっているか、応答メッセージ機能が「オフ」になっているかを必ず確認する。応答メッセージがオンのままだとBOTとバッティングする。

「キック処理が失敗する」ケースでは、グループIDとユーザーIDの取得方法を見直す。WebhookのJSONにはグループIDが `source.groupId`、ユーザーIDが `source.userId` として入っている。型のミスや文字列の余白が原因でAPIエラーが出ることも少なくない。

保護BOTをさらに強化するアイデア

基本的な保護機能が動いたら、次のステップとして以下の拡張を検討する価値がある。

管理者向けのDMコマンド機能は実用性が高い。管理者がBOTにDMで「/ban ユーザーID」と送ると対象をブラックリストに追加できる仕組みだ。グループ管理の柔軟性が格段に上がる。

定期レポート機能も人気だ。毎日午前9時に過去24時間の監視ログ(検知件数、対応件数、参加・退出数など)を管理者にDMで自動送信する。グループの「健康状態」を可視化できるのが利点だ。GASならトリガー設定で簡単に実現できる。

多言語対応も大規模コミュニティには有効だ。参加メンバーの国籍が多様な場合、NGワードリストを複数言語で設定し、各言語のスパムパターンに対応させる。

まとめ:BOTは「手間を省く道具」ではなく「コミュニティを守る盾」

LINE保護BOTを作ることは、単なる自動化ではない。グループに参加しているすべての人が安心して会話できる環境を、技術の力で能動的に維持する行為だ。GASなら無料・ノーサーバーで始められ、Node.jsやPythonに移行すれば本格的な保護システムへと育てられる。

作り方の難易度は確かにゼロではないが、一度動かすとその効果は即座にわかる。深夜のスパム通知に叩き起こされることもなく、翌朝確認したらBOTが5件のNG投稿を自動処理していた——そんな体験が、次の機能追加のモチベーションになる。グループの規模や目的に合わせて少しずつ機能を積み重ねていくことが、保護BOT作りの正しいアプローチだ。

LINE Messaging APIの公式ドキュメントは日本語対応も充実しており、困ったときの最初の参照先として活用してほしい。技術の敷居を低く保ちながら、自分のコミュニティをしっかり守る。それがLINE保護BOTの本質的な価値だ。