2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

LINE Botで実現する感情モニタリングシステム:研究者のためのEMA/EMI実装ガイド

Last updated at Posted at 2025-08-03

ソースコード: GitHubリポジトリ - EMI-Linebot

はじめに

心理学研究において、参加者のリアルタイムな感情や行動を記録する Ecological Momentary Assessment(EMA)/Ecological Momentary Intervention(EMI)(Experience Sampling Methodとも呼ばれる)の重要性が高まっています。EMA/EMIは、参加者の日常生活の中で、その瞬間の感情や体験を記録する手法で、従来の回顧的な調査では捉えきれない貴重なデータを提供します。

しかし、従来のEMA/EMI手法には以下のような課題がありました:

  • 専用アプリ:新しいアプリのダウンロードや操作方法の習得が参加者の負担
  • 継続性の問題:日常的でない手法は、参加者の継続率を下げる要因

本記事では、これらの課題を解決する LINE Bot を活用したEMA/EMIシステム の特徴と、構築方法、運用方法について解説します。

screenshot.gif

システムの実際の動作例:参加者がLINEでボタンを押すだけで感情データを記録

システムの特徴

参加者にとってのメリット

  • 操作が簡単:普段使っているLINEで完結、新しいアプリは不要
  • 負担が少ない:ボタンを押すだけの直感的な操作
  • プライバシー保護:感情データのみ記録、詳細な個人情報は保存されない

研究者にとってのメリット

  • 高品質データ:リアルタイム収集で回想バイアスを排除
  • 研究デザイン対応:実験群・統制群の自動管理
  • 運用が楽:24時間自動稼働、手動介入は最小限

研究者向けセットアップガイド

本システムの構築は、初歩的なアプリケーション開発経験(プログラミング、データベース、デプロイメント)がある研究者であれば、順序通りに進めることで完了できるよう設計されています。1つずつ丁寧に進めていきましょう。

⚠️ 重要な注意事項

  • LINE Bot API: 大量のメッセージ配信時は課金が発生する可能性があります
  • Heroku: 無料プランには制限があり、本格運用時は有料プランが必要な場合があります
  • 各サービスの料金体系を事前に確認し、研究予算に応じてプランを選択してください

事前準備:必要なアカウントの作成

1. LINE Developersアカウント(無料)

何のため? LINE Botを作成し、参加者とやり取りするため

手順:

  1. LINE Developersにアクセス
  2. LINEアカウントでログイン(普段使っているLINEアカウントでOK)
  3. 「プロバイダー」を作成(研究室名など、分かりやすい名前で)
  4. 「Messaging APIチャネル」を作成
    • チャネル名:「○○研究用EMABot」など
    • チャネル説明:研究の簡単な説明
  5. 作成後、以下の情報をメモ(後で使用):
    • チャネルアクセストークン(長い英数字の文字列)
    • チャネルシークレット(短い英数字の文字列)

2. Herokuアカウント(無料〜)

何のため? システムを24時間稼働させるクラウドサービス

手順:

  1. Herokuにアクセス
  2. 「Sign up for free」で無料アカウント作成
  3. メール認証を完了
  4. Heroku CLIをダウンロード・インストール
    • Windowsの場合:.exeファイルをダウンロードして実行
    • Macの場合:.pkgファイルをダウンロードして実行

3. プログラムのダウンロード

手順:

  1. GitHubリポジトリにアクセス
  2. 緑色の「Code」ボタン → 「Download ZIP」をクリック
  3. ダウンロードしたZIPファイルを展開
  4. フォルダ名を「EMI-Linebot」に変更(分かりやすくするため)

システムの構築手順

Step 1: Herokuでアプリケーションを作成

  1. Herokuにログイン

    • コマンドプロンプト(Windows)またはターミナル(Mac)を開く
    • heroku login と入力してEnter
    • ブラウザが開くので、ログイン
  2. アプリケーション作成

    • Herokuダッシュボードで「New」→「Create new app」
    • App name:「your-research-ema-bot」(英数字とハイフンのみ、世界で唯一の名前)
      ※ここは例です。研究内容に合わせて「psycho-ema-2024」「health-ema」など、研究者が一意の名前を考えて入力してください
    • Region:「United States」を選択
    • 「Create app」をクリック

Step 2: データベースの準備

何のため? 参加者の回答データを安全に保存

  1. データベースの追加

    • 作成したHerokuアプリの「Resources」タブへ
    • 「Add-ons」で「JawsDB Maria」を検索・追加(無料プラン)
    • 追加後、「Settings」タブ → 「Reveal Config Vars」で接続情報を確認
  2. テーブルの作成

    • データベースにアクセスして、必要なテーブルを作成
    • 詳細手順は技術サポートが必要な場合があります

Step 3: システムの設定

  1. 環境変数の設定

    • Herokuアプリの「Settings」タブ → 「Config Vars」
    • 以下の値を設定:
      LINE_CHANNEL_ACCESS_TOKEN = (Step1で取得したアクセストークン)
      LINE_CHANNEL_SECRET = (Step1で取得したシークレット)
      
  2. システムのデプロイ(アップロード)

    • ダウンロードしたプログラムをHerokuにアップロード
    • GitやHeroku CLIを使用(技術サポートを推奨)

Step 4: LINE Botの最終設定

  1. Webhook URLの設定

    • LINE Developersコンソールに戻る
    • 「Messaging API設定」で以下を入力:
      Webhook URL: https://[あなたのApp name].herokuapp.com/callback
      ※[あなたのApp name]はStep 1で作成したHerokuアプリ名に置き換えてください
      
    • 「Webhookの利用」を有効化
  2. 自動応答の無効化

    • 「応答設定」で以下を設定:
      • 応答モード:Bot
      • Webhook:有効
      • 自動応答メッセージ:無効
      • あいさつメッセージ:無効

Step 5: 自動通知の設定

  1. Heroku Schedulerの追加

    • Herokuアプリの「Resources」タブ
    • 「Heroku Scheduler」アドオンを追加(無料)
  2. スケジュールジョブの作成

    • Schedulerダッシュボードで「Create job」
    • Command: python triggers/scheduler.py
    • Frequency: Every 10 minutes
    • 「Save job」をクリック

初期設定とテスト

参加者用感情語の設定

データベース管理ツール(phpMyAdmin、HeidiSQL、Sequel Pro等)からmoodsテーブルに感情語を設定します:

テーブル:moods

mood_name valence sort_order
うれしい 1 1
楽しい 1 2
落ち着いた 1 3
悲しい 2 4
不安な 2 5
イライラした 2 6

※ valence: 1=ポジティブ、2=ネガティブ、sort_order: 表示順序

システムの動作確認

  1. LINE Botを友だち追加

    • LINE Developersで生成されたQRコードをスキャン
  2. 基本動作のテスト

    • 「ID登録」と送信 → 登録プロセスが開始されるかチェック
    • テスト用IDを入力 → 正常に登録されるかチェック
  3. 自動通知のテスト

    • データベースでテストユーザーを実験群(group_id = 1)に設定
    • 通知時間帯に通知が届くかチェック

よくあるトラブルと解決方法

Q: LINE Botが応答しない

A: 以下を確認してください:

  • Webhook URLが正しく設定されているか
  • Herokuアプリが正常に稼働しているか(Herokuダッシュボードで確認)
  • LINE Botの応答設定が正しいか

Q: 自動通知が送信されない

A: 以下を確認してください:

  • ユーザーが実験群(group_id = 1)に設定されているか
  • Heroku Schedulerが正常に動作しているか
  • 現在時刻が送信時間帯(10:00-22:00)内か

Q: データが保存されない

A: 以下を確認してください:

  • データベース接続情報が正しく設定されているか
  • テーブルが正常に作成されているか

技術サポートについて

初回のセットアップでは、技術的な部分でサポートが必要な場合があります。以下のような専門知識を持つ方にご相談することをお勧めします:

  • 大学の情報系研究室の学生・研究者
  • プログラミング経験のある大学院生
  • 大学のIT部門スタッフ

実際の運用方法

研究開始前の準備

  1. 参加者の群分け設定

    • データベース管理ツールでusersテーブルを開く
    • group_id列を編集:0=統制群、1=実験群
    • 例:P001〜P050を実験群(1)、P051〜P100を統制群(0)に設定
  2. 参加者への説明

    • LINE Botを友だち追加後、「ID登録」と送信
    • 研究者から配布された参加者IDを入力
    • 1日3回の通知が届いたら、感情ボタンを選択→強度を5段階で評価
    • ボタンの有効期限は90分、通知を見逃しても次の通知で回答可能

日常的な運用作業

自動で行われること

  • 実験群への定期通知:毎日自動で3回送信(10:00-22:00の間、3時間間隔)
  • データ記録:参加者の回答は自動でデータベースに保存

研究者が行う作業(週1-2回程度)

  1. 回答率の確認

    • データベース管理ツールでmonitor_viewテーブルを開く
    • 各参加者の回答状況をチェック
  2. 手動メッセージ送信(必要に応じて)

    研究の進捗確認や参加継続の動機づけのため、手動でメッセージを送信できます:

    操作手順:

    1. Herokuダッシュボードにログイン
    2. 作成したアプリ名をクリック
    3. 右上の「More」→「Run console」をクリック
    4. 以下のコマンドのいずれかを入力して実行:

    統制群のみに送信:

    python triggers/manual_push.py --control
    

    実験群のみに送信:

    python triggers/manual_push.py --experimental
    

    両方の群に送信:

    python triggers/manual_push.py --both
    

    使用例:

    • 研究開始時の挨拶メッセージ
    • 週次の参加継続お礼メッセージ
    • 研究終了時の感謝メッセージ

    ※送信されるメッセージ内容はmessage_templatesテーブルで事前設定

  3. データの取得

    • monitor_viewテーブルからCSVエクスポート
    • フィルタ条件:participant_id = 'P001'(特定参加者)
    • 並び順:created_at(時系列順)

まとめ

LINE Botを活用したEMA/EMIシステムは、参加者の負担を最小化しながら高品質な研究データを収集できる優れたツールです。研究者にとって:

  • 導入の容易さ:クラウドベースで初期投資が少ない
  • 運用の安定性:24時間自動稼働
  • データの信頼性:研究用途に特化した設計

本システムが、より多くの研究者の皆様の研究活動に貢献し、心理学研究の発展に寄与することを願っています。

技術的な改善点

  • GUI管理画面の開発:プログラミング知識がない研究者でも直感的に操作できるWebベースの管理インターフェース
  • 設定ファイルの簡素化:コード編集不要な設定システム
  • ワンクリックデプロイ:技術的ハードルをさらに下げる自動デプロイシステム

リポジトリ: EMI-Linebot
ライセンス: MIT License
技術詳細: README.mdを参照

※実際の研究での使用前に、必ず所属機関の研究倫理審査を受けてください。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?