島根県安来市のフリーランスエンジニア_プログラマー画像1
独居老人見守りシステムの作り方|LINE連携で安否確認を自動化【島根県安来市の事例】 – Eatransform

独居老人見守りシステムの作り方|LINE連携で安否確認を自動化【島根県安来市の事例】

独居老人見守りLINE連携システム

毎日の安否確認で家族と地域に安心を届ける

📍 島根県安来市 🚧 デモシステム

🚨 深刻化する独居老人問題

高齢化が進む島根県では、一人暮らしの高齢者が増加しています。
家族や地域との繋がりが希薄化し、孤独死のリスクも高まっています。

35.4%
島根県の高齢化率

全国平均29.1%を大きく上回り、全国2位の高齢化率(2023年)

約2.8万人
65歳以上の独居高齢者

島根県内で一人暮らしをする高齢者数(推計値)

年間60件超
孤独死・孤立死の推定件数

発見の遅れにより深刻な社会問題に

質問テンプレート設定

🌅 朝の体調確認(標準)
おはようございます!今日の体調はいかがですか?
🍚 食事確認
こんにちは。お昼ご飯は食べられましたか?
💊 服薬リマインダー
お薬の時間です。飲み忘れはありませんか?
🌙 就寝前確認
おやすみ前の確認です。今日は無事に過ごせましたか?
💡 使い方のヒント:
質問テンプレートを選択してカスタマイズ。設定保存後、毎日自動でLINEメッセージが送信されます。

見守り対象者ダッシュボード

✨ システムの特徴

📱

LINEで簡単安否確認

使い慣れたLINEアプリで毎日質問を送信。高齢者も簡単に返信できるボタン式回答で、スマホ操作に不慣れでも安心です。

🚨

異常検知と自動通知

設定時間内に返信がない場合、家族や民生委員に自動通知。緊急時の早期発見で最悪の事態を防ぎます。

📊

健康状態の可視化

毎日の回答履歴をダッシュボードで一元管理。体調の変化や傾向を把握し、適切なサポートが可能です。

💰

低コストで導入可能

特別なハードウェア不要。スマホとLINEアカウントがあれば誰でも利用開始できます。初期費用・月額費用も最小限。

🚧 これはデモシステムです

実運用システム実装までの詳細ステップ

島根県安来市での実運用を想定した、具体的な実装手順を解説します

1
LINE Messaging APIの準備と設定

作業内容:

  • LINE Developersでアカウント作成
  • 新しいプロバイダーを作成(例: 「安来市見守りシステム」)
  • Messaging API チャネルを作成
  • Channel SecretChannel Access Tokenを取得・保管
  • Webhook URLを設定(後述のサーバーURL)
  • 応答メッセージ機能をOFFに設定(自動応答を無効化)
  • 友だち追加時のあいさつメッセージをカスタマイズ

⚠️ 重要: Channel Access TokenとChannel Secretは絶対に外部に漏らさないでください。環境変数やシークレット管理サービスで厳重に管理する必要があります。

🔑 取得する認証情報
Channel ID Channel Secret Channel Access Token
2
Webhookサーバーの構築(バックエンド開発)

推奨技術スタック:

  • Node.js + Express: 軽量で高速。LINE Bot SDKのサポートが充実
  • Python + Flask/FastAPI: シンプルな記述。データ分析機能も拡張しやすい
  • Ruby on Rails: 管理画面構築が容易
💻 実装サンプル(Node.js + Express)
const express = require(‘express’); const line = require(‘@line/bot-sdk’); const app = express(); const config = { channelAccessToken: process.env.LINE_CHANNEL_ACCESS_TOKEN, channelSecret: process.env.LINE_CHANNEL_SECRET }; const client = new line.Client(config); app.post(‘/webhook’, line.middleware(config), (req, res) => { Promise.all(req.body.events.map(handleEvent)) .then((result) => res.json(result)) .catch((err) => { console.error(err); res.status(500).end(); }); }); function handleEvent(event) { if (event.type === ‘message’ && event.message.type === ‘text’) { // データベースに応答を記録 saveResponse(event.source.userId, event.message.text); const echo = { type: ‘text’, text: ‘回答ありがとうございます!’ }; return client.replyMessage(event.replyToken, echo); } } app.listen(3000);
📦 必要なパッケージ
@line/bot-sdk express dotenv node-cron
3
データベース設計と構築

必要なテーブル設計:

  • users テーブル: 見守り対象者の基本情報
    • id, line_user_id(LINE固有ID), name(氏名), age(年齢)
    • address(住所), phone(緊急連絡先)
    • emergency_contact(家族連絡先), guardian_line_id(見守る人のLINE ID)
  • responses テーブル: 毎日の応答履歴
  • alerts テーブル: 通知履歴
  • templates テーブル: 質問テンプレート管理
🗄️ 推奨データベース
PostgreSQL MySQL SQLite(開発環境)
4
定期メッセージ送信機能の実装

実装方法:

  • cronジョブ(Linux/Mac): サーバーのcrontabで定期実行を設定
  • node-cron(Node.js): アプリ内でスケジューリング
  • Celery(Python): 分散タスクキューで堅牢な実装
  • AWS EventBridge + Lambda: サーバーレスで低コスト運用
💻 実装サンプル(node-cron)
const cron = require(‘node-cron’); const line = require(‘@line/bot-sdk’); // 毎日8:00に実行 cron.schedule(‘0 8 * * *’, async () => { console.log(‘朝の安否確認メッセージを送信開始’); // データベースから対象者リストを取得 const users = await db.getActiveUsers(); for (const user of users) { const message = { type: ‘text’, text: ‘おはようございます!今日の体調はいかがですか?’, quickReply: { items: [ { type: ‘action’, action: { type: ‘message’, label: ‘✅ 元気です’, text: ‘元気です’ }}, { type: ‘action’, action: { type: ‘message’, label: ‘⚠️ 少し不調’, text: ‘少し体調が悪いです’ }}, { type: ‘action’, action: { type: ‘message’, label: ‘🆘 助けて’, text: ‘助けが必要です’ }} ] } }; try { await client.pushMessage(user.line_user_id, message); await db.recordSentMessage(user.id, message.text); } catch (error) { console.error(`送信失敗: ${user.name}`, error); } } }, { timezone: “Asia/Tokyo” });

Quick Replyボタンの活用:

  • 高齢者が簡単にタップして回答できるボタン式UI
  • テキスト入力不要で操作ハードルを大幅に削減
  • 回答の標準化によりデータ分析も容易に
5
異常検知と自動通知システムの実装

実装する検知ロジック:

  • 無応答検知: メッセージ送信後、設定時間(例: 6時間)以内に返信がない場合
  • 体調不良検知: 「体調が悪い」「助けが必要」などの回答を検知
  • 連続無応答検知: 3日間連続で返信がない場合は緊急度UP
  • 異常パターン検知: 普段と異なる時間帯の返信など
💻 実装サンプル(異常検知ロジック)
// 6時間ごとに無応答チェック cron.schedule(‘0 */6 * * *’, async () => { const sixHoursAgo = new Date(Date.now() – 6 * 60 * 60 * 1000); // 6時間以上前に送信したが未返信のメッセージを取得 const noResponses = await db.query(` SELECT r.*, u.name, u.guardian_line_id FROM responses r JOIN users u ON r.user_id = u.id WHERE r.sent_at < $1 AND r.responded_at IS NULL `, [sixHoursAgo]); for (const response of noResponses) { // 家族・見守り者に通知 await sendAlert(response.guardian_line_id, { userName: response.name, alertType: '無応答', sentAt: response.sent_at }); // アラートをDBに記録 await db.recordAlert(response.user_id, 'NO_RESPONSE'); } }); async function sendAlert(guardianLineId, alert) { const message = { type: 'text', text: `⚠️ 【安否確認アラート】\n\n` + `${alert.userName}さんから返信がありません。\n` + `送信時刻: ${alert.sentAt}\n\n` + `ご確認をお願いします。` }; await client.pushMessage(guardianLineId, message); }

通知先の設定:

  • 家族のLINEアカウント(最優先)
  • 民生委員・地域包括支援センター
  • 自治会の見守り担当者
  • 複数の通知先を設定してリスク分散
6
管理画面(ダッシュボード)の構築

実装する機能:

  • 見守り対象者一覧: 登録者リストと最新応答状況
  • 応答履歴表示: カレンダー形式で過去の回答を可視化
  • 健康状態グラフ: 体調の推移を折れ線グラフで表示
  • アラート管理: 未対応の通知を優先表示
  • ユーザー管理: 対象者の追加・編集・削除
  • テンプレート設定: 質問内容や送信時刻のカスタマイズ
  • 統計情報: 応答率、平均応答時間などのKPI表示
🎨 フロントエンド技術
React / Vue.js Next.js Tailwind CSS Chart.js
⚙️ バックエンドAPI設計
GET /api/users GET /api/responses/:userId GET /api/alerts POST /api/templates

認証とセキュリティ:

  • 管理者ログイン機能(JWT認証推奨)
  • 役割ベースアクセス制御(RBAC): 管理者、民生委員、家族など
  • 個人情報保護のための暗号化通信(HTTPS必須)
  • 操作ログの記録(誰がいつ何を閲覧・編集したか)
7
サーバー環境構築とデプロイ

インフラ要件:

  • HTTPS対応必須: LINE Webhook は HTTPS のみ対応
  • 固定IP・ドメイン: Webhook URLとして登録可能なエンドポイント
  • 24時間稼働: cronジョブが確実に実行される環境
  • データバックアップ: 定期的な自動バックアップ設定
🚀 デプロイ先候補
Heroku(簡単) AWS EC2 + RDS さくらVPS Render Railway
🌐 SSL証明書の取得
Let’s Encrypt(無料) Cloudflare(無料) AWS ACM

デプロイ手順(Heroku例):

# Heroku CLIログイン heroku login # アプリ作成 heroku create elderly-care-yasugi # 環境変数設定 heroku config:set LINE_CHANNEL_ACCESS_TOKEN=your_token heroku config:set LINE_CHANNEL_SECRET=your_secret # PostgreSQLアドオン追加 heroku addons:create heroku-postgresql:mini # デプロイ git push heroku main # Webhook URL: https://elderly-care-yasugi.herokuapp.com/webhook

⚠️ 重要: 本番運用では必ず監視ツール(Datadog、Sentry等)を導入し、エラー発生時に即座に通知を受け取れる体制を整えてください。

8
プライバシー保護と法令遵守

遵守すべき法律・ガイドライン:

  • 個人情報保護法: 高齢者の氏名、住所、健康情報は個人情報に該当
  • 要配慮個人情報: 健康状態に関する情報は特に慎重な取り扱いが必要
  • 本人同意の取得: システム利用前に明確な同意を取得(書面推奨)
  • 利用目的の明示: 見守り目的、通知先の範囲を明確に説明
  • 第三者提供の制限: 家族・民生委員以外への情報提供は原則禁止

⚠️ 法的リスク: 個人情報漏洩は刑事罰の対象になります。データベースの暗号化、アクセス制御、監査ログの記録など、適切な安全管理措置を講じてください。

実装すべきセキュリティ対策:

  • データベース内の個人情報を暗号化(AES-256推奨)
  • 通信の暗号化(TLS 1.2以上)
  • アクセスログの記録と定期監査
  • 定期的なセキュリティアップデート
  • バックアップデータの暗号化保管
  • 退職者のアカウント削除プロセス
🔒 セキュリティツール
bcrypt(パスワードハッシュ化) helmet.js(セキュリティヘッダー) express-rate-limit(DoS対策) OWASP ZAP(脆弱性スキャン)
9
運用体制の構築と試験運用

運用開始前の準備:

  • マニュアル作成:
    • 高齢者向け: LINE友だち追加方法、回答方法の図解マニュアル
    • 見守る側向け: 管理画面の使い方、緊急時対応フロー
    • 管理者向け: システム保守、トラブルシューティング手順
  • 説明会の開催: 公民館や福祉センターでシステムの使い方を実演
  • テスト運用: 少数のモニター(5〜10人)で1ヶ月間の試験運用
  • フィードバック収集: 使いづらい点、改善要望をヒアリング
  • 緊急連絡体制: 夜間・休日の対応担当者を決定

想定される課題と対策:

  • スマホを持っていない高齢者:
    • → 家族のスマホで代理登録、または安価なスマホの貸与を検討
    • → タブレット端末の共同利用(地域の集会所など)
  • LINE操作が難しい:
    • → Quick Replyボタンで操作を極限まで簡略化
    • → 訪問サポート員によるセットアップ支援
  • 毎日の返信を忘れる:
    • → 習慣化を促す工夫(朝のルーティンに組み込む)
    • → 無理のない頻度から始める(週3回→毎日へ段階的に)
  • 誤報が多い:
    • → アラート閾値の調整(無応答判定を8時間→12時間に延長など)
    • → 多段階通知(まず本人に再確認→それでも無応答なら家族へ)
💡 成功のポイント:
地域コミュニティとの連携が重要です。民生委員、社会福祉協議会、地域包括支援センターと協力し、見守りネットワークを構築しましょう。
10
継続的な改善と機能拡張

Phase 2: 機能拡張アイデア

  • 服薬管理機能: 薬の飲み忘れ防止リマインダー
  • 通院スケジュール管理: 病院予約日の前日リマインド
  • 買い物代行連携: 地域ボランティアとのマッチング
  • 健康データ記録: 血圧、体温などの日々の記録
  • 音声入力対応: LINEの音声メッセージで回答可能に
  • 画像送信機能: 食事内容や外出先の写真共有
  • 地域イベント情報: 公民館の催しなどを自動配信
  • 緊急SOSボタン: ワンタップで全関係者に一斉通知

Phase 3: 他地域への展開

  • マルチテナント対応(複数の自治体で利用可能に)
  • オープンソース化(GitHub公開でコミュニティ開発)
  • SaaS化(月額課金モデルで他自治体に提供)
  • 国・県の補助金申請(デジタル田園都市国家構想など)
🎯 KPI(重要指標)
  • 登録者数と継続利用率(解約率)
  • 平均応答率(目標: 95%以上)
  • 平均応答時間(習慣化の指標)
  • アラート発報数と対応完了率
  • 緊急事態の早期発見件数
💰 開発・運用コスト見積もり(安来市想定)
初期開発費用(フルスクラッチ) 30万〜100万円
サーバー費用(月額) 0円〜5,000円
LINE Messaging API 無料〜
保守運用(月額) 1万〜5万円

📈 期待される導入効果

🛡️

孤独死リスクの大幅削減

毎日の安否確認により異常を早期発見。発見の遅れによる重症化を防ぎ、救える命を確実に救います。

❤️

家族の安心感向上

遠方に住む家族も毎日の状況を把握可能。仕事中でもスマホで確認でき、精神的負担が軽減されます。

🤝

地域コミュニティの強化

民生委員や近隣住民との繋がりが深まり、支え合いの地域社会が実現。孤立防止にも効果的です。

💪

高齢者の自立支援

見守られている安心感が自信に繋がり、積極的な外出や社会参加を促進。健康寿命の延伸にも貢献します。

【無料】Electronアプリ開発ガイド完全版|データ集計システムの実装手順

デモシステムを作り続ける理由|安来市フリーランスエンジニアの記録