SOMPOケア — IoT・AI・生成AIで「予測する介護」を実現、残業半減・離職率20%→7%に改善
企業概要
- 社名: SOMPOケア株式会社
- グループ: SOMPOホールディングス傘下
- 事業: 介護付きホーム・サービス付き高齢者向け住宅・グループホーム等の運営
- 規模: 約400施設以上、管理データ数 約8万人(1人あたり600種類以上の情報を集約)
- DX推進方針: 「変わらぬ生活の支援をデジタル×専門性で実現」
背景と課題
介護業界は深刻な人材不足と高い離職率に直面している。夜間巡回・記録作成・シフト管理など、「人の手がなければできない仕事」と「実はデジタルで代替できる仕事」が混在しており、多くの職員が事務作業に追われ本来のケア業務に集中できない環境にあった。
SOMPOケアは「人にしかできない温かいケア」に職員が集中できる環境をデジタルで実現することを目指し、段階的なDXを推進した。
導入したシステム・AI
① 睡眠測定センサー(全介護付きホームに導入)
マットレス下に設置するセンサーで寝返り・呼吸・心拍をリアルタイム計測し、入居者の睡眠状況を可視化。
- 効果: 夜間の定期巡回を「必要な時だけの訪室」へ変換
- 成果: 職員の夜間業務負担を軽減しつつ、入居者の睡眠の質が向上
② 自社業務支援システム(FIKAIGO)によるシフト・業務管理
自社開発の業務支援システムで分刻みの業務シフト最適化と勤怠・書類管理を自動化。
- ラヴィーレ衣笠山公園での実績:
- 残業時間:月10時間 → 月5時間(50%削減)
- 離職率:20% → 7%(13pt改善)
- 全社平均残業: 月7.4時間(業界平均と比較して低水準)
③ データ分析プラットフォーム
約8万人の入居者データを管理し、1人あたり600種類以上の情報を統合。健康状態のトレンド分析・転倒・排泄パターンの予測に活用し「予測する介護」を実現。
④ 介護特化型生成AI「教えて!KAiGO」(2025年12月〜)
ABEJA株式会社の技術支援を受けて開発した介護現場向け生成AIシステム。
- 技術: RAG(Retrieval-Augmented Generation)で内部データのみ参照 → ハルシネーション抑制
- データ: SOMPOケアが保有するケアマニュアル・介護事例・文献、および現場インタビューで収集した「暗黙知」まで反映
- 第一弾: 「教えて!排泄ケア」- 排泄ケアに関する判断・記録を支援
- ロードマップ: 食事ケア・認知症ケア、事故報告書・議事録の自動作成へ拡張予定
成果
| 指標 | 導入前 | 導入後 |
|---|---|---|
| 月次残業時間(ラヴィーレ衣笠山公園) | 10時間 | 5時間(50%削減) |
| 離職率(同施設) | 20% | 7% |
| 全社平均月残業 | — | 7.4時間(業界平均比低水準) |
| 管理入居者データ | — | 約8万人・600種類/人 |
| センサー導入範囲 | — | 介護付きホーム全室 |
実装方法
IoT・AI層のアーキテクチャ
SOMPOケアのDXは「センサー → データ収集 → AI分析 → 現場アクション」のループで設計されている。
- センサーレイヤー: 睡眠センサー・体位変換マット・見守りカメラ等がリアルタイムデータを生成
- データ統合レイヤー: 独自プラットフォームで8万人分のケアデータを1元管理(EHR連携含む)
- AI分析レイヤー: 転倒予測・体調変化予兆検知・排泄パターン分析を実施
- 現場アクションレイヤー: 職員のタブレット端末へ「今すぐ訪室が必要な入居者」を通知
生成AI「教えて!KAiGO」の実装詳細
- RAG構成: SOMPOケア内部のケアマニュアル・インタビュー記録をベクターDB化し、GPTベースのモデルが参照
- ハルシネーション対策: 外部の一般的な医療・介護情報は参照せず、検証済みの社内データのみを参照
- 開発体制: SOMPOケアの現場ナレッジ × ABEJAの機械学習・生成AI技術の協業
シフト管理の自動化(FIKAIGO)
人の手による「エクセルシフト管理」を廃止し、スタッフのスキル・資格・休暇希望を入力すると最適シフトを自動生成。書類作成も自動化し、管理職が「書類作業」から解放されたことが残業半減・離職率改善の主要因。
自前で実装するなら(参考コード)
「教えて!KAiGO」相当のRAGナレッジシステムと、センサー異常検知パイプラインの参考実装です。
1. 介護ナレッジRAGシステム(「教えて!KAiGO」相当)
from openai import OpenAI
from langchain_openai import OpenAIEmbeddings
from langchain_community.vectorstores import Chroma
from langchain.text_splitter import RecursiveCharacterTextSplitter
client = OpenAI()
def build_care_knowledge_base(manual_texts: list[str]) -> Chroma:
"""介護マニュアル・ケア事例をベクターDBに格納"""
docs = RecursiveCharacterTextSplitter(
chunk_size=400, chunk_overlap=60,
separators=["\n## ", "\n### ", "\n\n", "\n"]
).create_documents(manual_texts)
return Chroma.from_documents(
docs, OpenAIEmbeddings(), persist_directory="./care_knowledge_db"
)
def ask_care_question(question: str, kb: Chroma) -> str:
"""施設内マニュアルのみを参照して回答(ハルシネーション抑制)"""
context = "\n---\n".join(
[d.page_content for d in kb.similarity_search(question, k=5)]
)
response = client.chat.completions.create(
model="gpt-4o",
messages=[
{"role": "system", "content":
f"あなたは介護施設の業務支援AIです。\n"
f"【重要】以下の「施設内マニュアル・事例」の内容のみを根拠に回答してください。\n"
f"マニュアルに記載のない情報は「マニュアルに記載がありません。担当者に確認してください。」と答えてください。\n\n"
f"【参照可能な情報】\n{context}"},
{"role": "user", "content": question}
]
)
return response.choices[0].message.content
# 使用例
care_db = build_care_knowledge_base([
"排泄ケアマニュアル: 排泄パターンの記録は朝・昼・夕・就寝前の4回実施。"
"尿意の訴えがない場合も2時間ごとに声かけする...",
"転倒予防プロトコル: リスクスコア3以上の入居者には必ずセンサーマットを設置。"
"夜間トイレ誘導は20時・23時・3時の3回実施...",
])
answer = ask_care_question("夜間の排泄ケア対応で優先すべき入居者の見分け方は?", care_db)
print(answer)
2. センサーデータ → AI異常検知 → 職員アラート パイプライン
import json
from datetime import datetime
from openai import OpenAI
client = OpenAI()
def analyze_sensor_anomaly(sensor_data: dict, resident_history: str) -> dict:
"""睡眠センサーデータの異常をAIで解析し、対応優先度をJSON形式で返す"""
response = client.chat.completions.create(
model="gpt-4o-mini",
response_format={"type": "json_object"},
messages=[
{"role": "system", "content":
'以下のJSON形式で出力してください: '
'{"priority": "high/medium/low", '
'"reason": "判断理由(1〜2行)", '
'"action": "推奨する対応", '
'"urgent": true/false}'},
{"role": "user", "content":
f"センサーデータ: {json.dumps(sensor_data, ensure_ascii=False)}\n"
f"入居者の過去記録: {resident_history}\n"
f"現在時刻: {datetime.now().strftime('%H:%M')}"}
]
)
return json.loads(response.choices[0].message.content)
# 使用例: 深夜に心拍数の急上昇を検知
result = analyze_sensor_anomaly(
sensor_data={
"heart_rate": 108, # 通常: 65-75 bpm
"respiration": 23, # 通常: 14-18 回/分
"movement": "restless",
"time": "03:20"
},
resident_history="85歳女性。心房細動の既往あり。先週も深夜に同様の兆候あり。"
)
# → {"priority": "high", "reason": "心拍数108は基準値を大幅に超過...",
# "action": "即時訪室と血圧測定、必要に応じ当直医へ連絡", "urgent": true}
# 優先度highの場合はナースコール/タブレット通知APIに連携
if result["urgent"]:
print(f"[緊急] {result['action']}")
アーキテクチャのポイント: センサーからのデータ収集は asyncio + MQTT で実装し、分析は analyze_sensor_anomaly() を非同期で呼び出すことでリアルタイム性を確保できます。