anTech

News

訪問看護のシフト表をExcelで作る限界 — 現場の相談からシフト管理システムを自作した話【vol.1/全4回】

開発ブログ

この連載は、訪問看護向けのシフト管理システム「YORISOI」を自作した記録です(全4回)。vol.1は、開発のきっかけになった「Excelシフト表の限界」の話から始めます。Excelの何が限界だったのかを整理し、完成画面のデモ動画とあわせてお見せします。

こんな方向けの記事

  • 訪問看護・訪問介護のシフト作成をExcelでやっていて、毎月しんどい思いをしている方
  • 「シフト表を作るだけで何時間もかかる…」という管理者・事務の方
  • PHPでカレンダー系の機能を作ってみたいエンジニア
  • 中小企業でも導入できるシステムの作り方が気になる方

きっかけは、5〜6年前の相談

5〜6年くらい前かな。取引先を通じて、

訪問看護をやっている会社で、シフト作成をExcelでやってて困っているみたいで、相談に乗ってもらえませんか?

という連絡がありました。

そのときは案件として受注には至りませんでしたが、「確かに、変わった形のシフト表だな」と印象に残っていたので、当時の要件を思い出しながら、あらためて作ってみることにしました。

調べてみると、シフト表を機能のひとつとして持っている「カイポケ」などの既存サービスはあります。ただ、相談をくれたのは「シフトだけ作成できたら良い!」という会社様だったので、そこに注力することにしました。

まずは、当時のExcelシフト表を整理

当時見せてもらった、Excelで作成されていたシフト表は、ざっくり以下のような形でした。

訪問看護の現場で使われていたExcelシフト表の再現。縦軸が時刻、横軸は日付・曜日ごとにスタッフの列が並ぶ複雑な構成
当時の要件を元に再現したExcelシフト表(汚くてすみません、、、笑)

表の構造

  • 縦軸が時刻(15分区切りぐらい)
  • 横軸が特殊で、日付・曜日ごとに、出勤スタッフの人数分の列が並ぶ
  • セルの中に訪問先の利用者の名前を記入(入浴介助、食事介助くらいの作業内容も書いてあったかな)

このExcelシフト表の限界 — 4つの問題点

Excelのセルが結合されまくっているといった技術的な話はさておき、業務としての問題点は以下の通りです。

  • スタッフへの共有が大変 — 事務所に来ないスタッフもいるため、シフト表をPDFで共有。スマホで開くと小さくて見にくい
  • 印刷が破綻している — 曜日ごとにスタッフ人数分の列が必要で、A3横で印刷しても縮小されてしまう。1枚で1週間分しか作れないので、シフト表が毎月4〜5枚
  • 毎月「日付の修正」から始まる — 月が変わると日付と曜日の対応がすべてズレるため、シフトを組む前にまず日付の修正作業。至る所でセルが結合されているので、関数での自動化も現実的ではない
  • 細かな調整がつらい — 訪問先は毎月ほぼ固定なのに、「10分ずらす」「この日だけ別のスタッフが対応」といった調整が頻発。Excelでは予定をひとつのカタマリとして動かせず、時間をずらすたびにセルの切り貼りと結合のし直しになる

そのうえ、やっとの思いで作成したシフトを共有すると、スタッフや利用者から予定変更の連絡が入り、上記の作業を繰り返すとのこと。

相談をもらった時点では「シフト作成は複雑だけど、割とテンプレ的な開発かな」と軽く考えていたのですが、整理してみると予想以上に工数の大きい案件でした。紹介ということもあり開発費用の値引きも検討したのですが、それでもご予算に合わなかったのは、今思えばこのボリュームが理由です。

ということで、この連載では当時の要件をベースに、訪問看護向けのシフト管理システム(シフト表作成のWebアプリ)を自作していきます。

先に、完成形をお見せします

完成したシフト管理画面がこちらです。まずは実際に操作している様子をご覧ください。

今日ビュー → スタッフごとビューでドラッグ&ドロップ → 日付ごとビューへ切り替え(1.25倍速・画面はサンプルデータ)

スタッフごとの列に、サービス種別で色分けされた予定が並びます。

YORISOIのシフト管理画面。スタッフごとの列にサービス種別で色分けされたシフトが表示されている
今日ビュー。スタッフごとの列に、当日の予定がサービス種別の色で並びます(画面はサンプルデータ)
YORISOIの日付ごとビュー。週間のシフトを日付単位で確認できる
日付ごとビュー。日付の中にスタッフの列が並ぶ——あのExcelの構成を、そのままWebで再現しています

備えている機能は以下の通りです。

  • 利用者の登録
  • スタッフの登録
  • ログイン機能と、ログインしたスタッフ自身による訪問報告の登録
    • 自分のシフトと全体のシフトを切り替えて見ることも可能
  • シフトの作成(当時の要件に対応したもの)
    • 管理者のみが作成可能
    • カレンダービューの切り替え(当日、スタッフごとの週間シフト、週間全体)
    • シフトのドラッグ&ドロップ

技術スタック

  • CodeIgniter 4 — 安価なレンタルサーバーでも動くPHP環境を想定。中小の事業所でも契約しやすい価格帯のサーバーで運用できるように
  • Tailwind CSS — スタイリングを効率的に。レスポンシブ対応も簡単に
  • JavaScript(自作カレンダーUI) — 訪問看護の現場に特化したカレンダーコンポーネントを独自に実装。ドラッグ&ドロップでのシフト作成に対応

カレンダーはFullCalendarのような既存ライブラリを使わず自作しています。FullCalendar自体は無料で使えるのですが、今回のような「スタッフごとの列に予定を並べる」表示は有償のPremium機能。そのライセンス費用がシステムの提供価格に乗ってしまうのを避けたかったのと、要件がシンプルなら自分で実装できると判断したからです。このあたりの実装の話は vol.3 で詳しく書きます。

次回予告

vol.2では、このシステムの土台になっているデータベース設計を公開します。ER図と9テーブルの実例をもとに、訪問看護特有のデータ設計の考え方と、CodeIgniter 4でのCRUD実装(利用者・スタッフ・サービス種別の登録機能)のポイントをお伝えします。

このシステムについて

この連載で作っている訪問看護シフト管理システムは「YORISOI」として提供しています。機能の詳細・デモのご案内はこちらから。

YORISOIの紹介ページを見る →

お仕事のご依頼について

普段は中小企業様向けのWeb制作・システム開発を中心に活動しています。「うちもこんなシステムが欲しい」「Excelでの業務管理をやめて、スマホで操作できるようにしたい」など、お気軽にご相談ください。Excelからのデータ移行もご協力いたします。

開発の相談をしてみる →

Profile

anTech / アンテク

地域の中小企業様向けにシステム開発・Web制作を行うフリーランスエンジニア。「ちょうどいい」技術で、御社のビジネスをサポートします。

埼玉県川越市拠点 — 川越市・日高市・狭山市・鶴ヶ島市を中心に埼玉県全域対応