ソースコード: GitHubリポジトリ - EMI-Linebot
はじめに
心理学研究において、参加者のリアルタイムな感情や行動を記録する Ecological Momentary Assessment(EMA)/Ecological Momentary Intervention(EMI)(Experience Sampling Methodとも呼ばれる)の重要性が高まっています。EMA/EMIは、参加者の日常生活の中で、その瞬間の感情や体験を記録する手法で、従来の回顧的な調査では捉えきれない貴重なデータを提供します。
しかし、従来のEMA/EMI手法には以下のような課題がありました:
- 専用アプリ:新しいアプリのダウンロードや操作方法の習得が参加者の負担
- 継続性の問題:日常的でない手法は、参加者の継続率を下げる要因
本記事では、これらの課題を解決する LINE Bot を活用したEMA/EMIシステム の特徴と、構築方法、運用方法について解説します。
システムの実際の動作例:参加者がLINEでボタンを押すだけで感情データを記録
システムの特徴
参加者にとってのメリット
- 操作が簡単:普段使っているLINEで完結、新しいアプリは不要
- 負担が少ない:ボタンを押すだけの直感的な操作
- プライバシー保護:感情データのみ記録、詳細な個人情報は保存されない
研究者にとってのメリット
- 高品質データ:リアルタイム収集で回想バイアスを排除
- 研究デザイン対応:実験群・統制群の自動管理
- 運用が楽:24時間自動稼働、手動介入は最小限
研究者向けセットアップガイド
本システムの構築は、初歩的なアプリケーション開発経験(プログラミング、データベース、デプロイメント)がある研究者であれば、順序通りに進めることで完了できるよう設計されています。1つずつ丁寧に進めていきましょう。
⚠️ 重要な注意事項
- LINE Bot API: 大量のメッセージ配信時は課金が発生する可能性があります
- Heroku: 無料プランには制限があり、本格運用時は有料プランが必要な場合があります
- 各サービスの料金体系を事前に確認し、研究予算に応じてプランを選択してください
事前準備:必要なアカウントの作成
1. LINE Developersアカウント(無料)
何のため? LINE Botを作成し、参加者とやり取りするため
手順:
- LINE Developersにアクセス
- LINEアカウントでログイン(普段使っているLINEアカウントでOK)
- 「プロバイダー」を作成(研究室名など、分かりやすい名前で)
- 「Messaging APIチャネル」を作成
- チャネル名:「○○研究用EMABot」など
- チャネル説明:研究の簡単な説明
- 作成後、以下の情報をメモ(後で使用):
- チャネルアクセストークン(長い英数字の文字列)
- チャネルシークレット(短い英数字の文字列)
2. Herokuアカウント(無料〜)
何のため? システムを24時間稼働させるクラウドサービス
手順:
- Herokuにアクセス
- 「Sign up for free」で無料アカウント作成
- メール認証を完了
-
Heroku CLIをダウンロード・インストール
- Windowsの場合:.exeファイルをダウンロードして実行
- Macの場合:.pkgファイルをダウンロードして実行
3. プログラムのダウンロード
手順:
- GitHubリポジトリにアクセス
- 緑色の「Code」ボタン → 「Download ZIP」をクリック
- ダウンロードしたZIPファイルを展開
- フォルダ名を「EMI-Linebot」に変更(分かりやすくするため)
システムの構築手順
Step 1: Herokuでアプリケーションを作成
-
Herokuにログイン
- コマンドプロンプト(Windows)またはターミナル(Mac)を開く
-
heroku login
と入力してEnter - ブラウザが開くので、ログイン
-
アプリケーション作成
- Herokuダッシュボードで「New」→「Create new app」
- App name:「your-research-ema-bot」(英数字とハイフンのみ、世界で唯一の名前)
※ここは例です。研究内容に合わせて「psycho-ema-2024」「health-ema」など、研究者が一意の名前を考えて入力してください - Region:「United States」を選択
- 「Create app」をクリック
Step 2: データベースの準備
何のため? 参加者の回答データを安全に保存
-
データベースの追加
- 作成したHerokuアプリの「Resources」タブへ
- 「Add-ons」で「JawsDB Maria」を検索・追加(無料プラン)
- 追加後、「Settings」タブ → 「Reveal Config Vars」で接続情報を確認
-
テーブルの作成
- データベースにアクセスして、必要なテーブルを作成
- 詳細手順は技術サポートが必要な場合があります
Step 3: システムの設定
-
環境変数の設定
- Herokuアプリの「Settings」タブ → 「Config Vars」
- 以下の値を設定:
LINE_CHANNEL_ACCESS_TOKEN = (Step1で取得したアクセストークン) LINE_CHANNEL_SECRET = (Step1で取得したシークレット)
-
システムのデプロイ(アップロード)
- ダウンロードしたプログラムをHerokuにアップロード
- GitやHeroku CLIを使用(技術サポートを推奨)
Step 4: LINE Botの最終設定
-
Webhook URLの設定
- LINE Developersコンソールに戻る
- 「Messaging API設定」で以下を入力:
Webhook URL: https://[あなたのApp name].herokuapp.com/callback ※[あなたのApp name]はStep 1で作成したHerokuアプリ名に置き換えてください
- 「Webhookの利用」を有効化
-
自動応答の無効化
- 「応答設定」で以下を設定:
- 応答モード:Bot
- Webhook:有効
- 自動応答メッセージ:無効
- あいさつメッセージ:無効
- 「応答設定」で以下を設定:
Step 5: 自動通知の設定
-
Heroku Schedulerの追加
- Herokuアプリの「Resources」タブ
- 「Heroku Scheduler」アドオンを追加(無料)
-
スケジュールジョブの作成
- 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: 表示順序
システムの動作確認
-
LINE Botを友だち追加
- LINE Developersで生成されたQRコードをスキャン
-
基本動作のテスト
- 「ID登録」と送信 → 登録プロセスが開始されるかチェック
- テスト用IDを入力 → 正常に登録されるかチェック
-
自動通知のテスト
- データベースでテストユーザーを実験群(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部門スタッフ
実際の運用方法
研究開始前の準備
-
参加者の群分け設定
- データベース管理ツールで
users
テーブルを開く -
group_id
列を編集:0=統制群、1=実験群 - 例:P001〜P050を実験群(1)、P051〜P100を統制群(0)に設定
- データベース管理ツールで
-
参加者への説明
- LINE Botを友だち追加後、「ID登録」と送信
- 研究者から配布された参加者IDを入力
- 1日3回の通知が届いたら、感情ボタンを選択→強度を5段階で評価
- ボタンの有効期限は90分、通知を見逃しても次の通知で回答可能
日常的な運用作業
自動で行われること
- 実験群への定期通知:毎日自動で3回送信(10:00-22:00の間、3時間間隔)
- データ記録:参加者の回答は自動でデータベースに保存
研究者が行う作業(週1-2回程度)
-
回答率の確認
- データベース管理ツールで
monitor_view
テーブルを開く - 各参加者の回答状況をチェック
- データベース管理ツールで
-
手動メッセージ送信(必要に応じて)
研究の進捗確認や参加継続の動機づけのため、手動でメッセージを送信できます:
操作手順:
- Herokuダッシュボードにログイン
- 作成したアプリ名をクリック
- 右上の「More」→「Run console」をクリック
- 以下のコマンドのいずれかを入力して実行:
統制群のみに送信:
python triggers/manual_push.py --control
実験群のみに送信:
python triggers/manual_push.py --experimental
両方の群に送信:
python triggers/manual_push.py --both
使用例:
- 研究開始時の挨拶メッセージ
- 週次の参加継続お礼メッセージ
- 研究終了時の感謝メッセージ
※送信されるメッセージ内容は
message_templates
テーブルで事前設定 -
データの取得
-
monitor_view
テーブルからCSVエクスポート - フィルタ条件:
participant_id = 'P001'
(特定参加者) - 並び順:
created_at
(時系列順)
-
まとめ
LINE Botを活用したEMA/EMIシステムは、参加者の負担を最小化しながら高品質な研究データを収集できる優れたツールです。研究者にとって:
- 導入の容易さ:クラウドベースで初期投資が少ない
- 運用の安定性:24時間自動稼働
- データの信頼性:研究用途に特化した設計
本システムが、より多くの研究者の皆様の研究活動に貢献し、心理学研究の発展に寄与することを願っています。
技術的な改善点
- GUI管理画面の開発:プログラミング知識がない研究者でも直感的に操作できるWebベースの管理インターフェース
- 設定ファイルの簡素化:コード編集不要な設定システム
- ワンクリックデプロイ:技術的ハードルをさらに下げる自動デプロイシステム
リポジトリ: EMI-Linebot
ライセンス: MIT License
技術詳細: README.mdを参照
※実際の研究での使用前に、必ず所属機関の研究倫理審査を受けてください。