外科医が作った勤務表自動作成システム【プログラミング初心者でもできる生成AI活用法】
あなたも同じ悩みをかかえていませんか?
「勤務表作成に時間がとられ、とにかく大変・面倒」
「勤務表作成するのを忘れた」
「全員の予定を考慮するのが大変、面倒」
「予定表を作ったは良いが、病院のPCに保存してあり、自宅で参照できない」
もしこれらの悩みに一つでも当てはまるなら、この記事はきっとお役に立てるはずです。
私は総合病院勤務の外科医です。5人のチームで日々の診療にあたっています。毎月メンバーの出張予定や休暇希望などを調整しながら手作業で勤務表していましたが、時間がかかる上に、緊急手術などで忙しいと作成を忘れてしまうことも...。
そこで、生成AIを使って勤務表自動作成ツールを構築しました。今回は、その全過程を包み隠さずお伝えします。プログラミング初心者でも大丈夫ですので、少しでも興味がある方は読み進めてもらえれると幸いです。
なぜGoogle Apps Script(GAS)を選んだのか
Google Apps Script(GAS)は、プログラミング初心者でもGoogleカレンダーやスプレッドシートの操作を自動化できる、Googleの無料プログラミングサービスです。今回私がGASを選んだ理由は以下の3つです:
🌐 1. 汎用性
現代の日本でGoogleアカウントを持っていない人は圧倒的に少数派。そのため、Googleカレンダーやスプレッドシートを用いて作成するのが最も汎用性が高いと判断しました。
📱 2. Accessibility(アクセシビリティ)
Googleドライブに保存された勤務表は、スマホさえあれば24時間365日いつでもどこでも参照できます。これで「病院のPCでしか見れない」問題は完全に解決です。
⚡ 3. 簡便性
私はプログラミング初心者🔰です。そんな私でも扱いやすいGASを選択しました。結果的に、この選択は大正解でした。
システム設計と運用ルール
チーム運用の仕組み作り
まず、システムの土台となる運用ルールを整備しました:
📅 1. 共有Googleカレンダー「仕事用」の作成
チーム全員がアクセスできる共有カレンダーを作成し、ここに全員の予定や休み希望などを集約するようにしました。
📝 2. 予定入力ルールの明確化
入力形式:'氏名''予定' '予定の詳細'
例:如月出張 〇〇学会
使用する文言の統一
出張、当直、日直、拘束、休み、夏休み など
締切日の設定:毎月20日まで(当科の例)
⚙️ 3. システムの全体像
Googleの共有カレンダー(各自手入力)
→ スプレッドシートに予定を自動出力(GAS①)
→ スプレッドシートに勤務表の自動生成(GAS②)
という流れを構築しました。なぜわざわざスプレッドシートを使用したかというと、共有カレンダーにそのまま勤務表を作成すると、各自の予定とごちゃまぜになり、視覚的に分かりにくいと考えたからです。
【実録】生成AIを使った実装プロセス
プログラミング初心者が挑戦した実装記録
ここからが、この記事の最も価値のある部分です。実際にどうやって生成AIを使ってシステムを作ったのか、失敗談も含めて包み隠さずお伝えします。
※GASの使用方法が分からない方もいらっしゃると思いますが、御心配なく。プロンプトの中に「スクリプトの実装方法を解説して」という一文を組み込んでありますので、プロンプトを実行すれば、AIが懇切丁寧に実装の方法を説明してくれます。まずはここで提示したプロンプトを自分なりに改良し、ClaudeやGensparkなどで実行してみてください。
AI選択の試行錯誤
🔴 Gemini使用時の失敗談
最初はGeminiを使って開発を試みました。しかし、エラーが連発し、修正を依頼してもうまく対応してもらえず、挫折しそうになりました。
🟢 Claude & Genspark での成功体験
その後、ClaudeとGensparkを試したところ、驚くほどスムーズに開発が進みました。GASはGoogleのサービスなので、てっきりGeminiの方が良いと思ってGeminiから始めましたが、そこはあまり関係ないようです。
実際に使用したプロンプト公開
【プロンプト1】カレンダー→スプレッドシート出力
Google calenderの予定をスプレッドシートの表に自動出力するためのGASを組んでください。
# あなたの役割
- Google Apps Script (GAS)の専門家
- Googleカレンダーの連携スクリプト開発者
# 現状:
仕事のチームメンバーの予定をgoogle calenderで管理している
## 予定の種類:
チームメンバーの予定は「出張」「学会」「研修」「当直」「拘束」「直明け」「休み」「夏休」「夏休み」「病棟当番」の9種類。
# 問題点:
チームメンバーは5人。全員の予定をgoogle calenderで一括管理しているため、一覧性はあるものの、非常に見づらく、自分の拘束または病棟当番日がいつなのかが分かりにくい。
# 実現したいこと:
・Googleの共有カレンダー(管理者は自分)に記入してある予定をスプレッドシートに出力したい。
・1行目は見出し それぞれのチームメンバーの氏名
・1列目は日付
・それぞれチームメンバーの列に予定を出力したい
・予定の出力形式は「出張」「学会」「研修」「当直」「拘束」「直明け」「休み」「夏休」「夏休み」「病棟当番」の9種類。タイトルに記入されている他の文字は削除
# その他要件
## 開発ステップについて
1.ユーザーは、プログラマーやシステム設計者ではない場合があり、あなたへの提供情報や開発指示に漏れが発生している可能性があります。まず最初にソースコードの出力をおこなわず、設計のためのヒアリングをまずは必ずおこなってください。
2. ヒアリングが終わったあと、本プロンプト全体の指示内容を遵守してソースコードの出力をおこなってください。
## 使い方について
ソースコードを生成したら、この GAS の使い方や動作確認方法についても説明をしてください。
【プロンプト2】勤務表自動作成
スプレッドシートに入力したチームメンバーの予定表があります。その予定表を用いて自動で勤務表を作成することはできますか?条件は以下の通りです。可能ならGASを組んでください。
# あなたの役割
- Google Apps Script (GAS)の専門家
- スプレッドシートの勤務表作成開発者
# 現状:
仕事のチームメンバーの予定を元に、勤務表を手作業で作成している。
## スプレッドシートの形式:
・1行目は見出し それぞれのチームメンバーの氏名が記載されている
・1列目は日付
・それぞれのチームメンバーの列にそれぞれの予定が記載されている。
## 予定の種類:
- チームメンバーの予定は・1行目は見出し それぞれのチームメンバーの氏名
・1列目は日付
・それぞれチームメンバーの列に予定が入力されている
・予定の種類は'出張', '業務', 'DH', 'DH', 'ICLS', 'ICLS', '研修', '当直', '拘束', '直明け', '休み', '夏休', '夏休み'
- 決めなければいけない勤務の種類は1種類「病棟当番」
# 問題点:
チームメンバーは5人。手作業で勤務表を作成しているため、時間がかかる。毎月行うため、仕事が忙しくなると作成し忘れてしまう。
# 実現したいこと:
勤務表を自動で作成したい。
# 勤務の制限
- 次の予定が入っている場合は、病棟当番は入れない '出張', '業務', 'DH', 'DH', 'ICLS', 'ICLS', '研修', '直明け', '休み', '夏休', '夏休み'
- 平日は'当直'が入っているメンバーを病棟当番にする。もし'当直'がいなければ, '拘束'を病棟当番にする。もし'拘束'が2人いる場合は、病棟当番を1名ランダムに割り当てる。
- 休日祝日は'当直'以外のメンバーを病棟当番に割り当てる。もし休日祝日に'拘束'がいたら、そのメンバーを病棟当番にする。もし'拘束'が2人いる場合は、病棟当番を1名ランダムに割り当てる。
- '当直'の翌日は病棟当番を入れない
# その他要件
## 開発ステップについて
1.ユーザーは、プログラマーやシステム設計者ではない場合があり、あなたへの提供情報や開発指示に漏れが発生している可能性があります。まず最初にソースコードの出力をおこなわず、設計のためのヒアリングをまずは必ずおこなってください。
2. ヒアリングが終わったあと、本プロンプト全体の指示内容を遵守してソースコードの出力をおこなってください。
## 使い方について
ソースコードを生成したら、この GAS の使い方や動作確認方法についても説明をしてください。
💡プロンプトのポイント💡
役割設定を明確に:最初にある「#あなたの役割」の項目で「GASの専門家」「カレンダー連携開発者」といった役割設定を明確にします。
現状と問題点を具体的に記述:「5人チーム」「見づらい」など状況を詳細に
実現したいことを箇条書きで整理:出力形式、データ処理方法を明確化
段階的開発を指示:これ重要!上記プロンプトの最後にある「#その他要件」を見てください。これを付け加えることにより、AIが足りない情報を適宜ヒアリングしてくれるので、希望通りのスクリプトが生成されるようになります。(例:プロンプト1を実行した際、土曜日と日曜・祝日のセルを色で区別するかをヒアリングされたため、土曜を薄青、日曜・祝日を薄赤に指定。それにより視認性が向上。)
最後に使い方を説明させる:プロンプトの最後に、下記文言を追加することにより、初心者でも悩むことなくGASを実装させることができます:「ソースコードを生成したら、この GAS の使い方や動作確認方法についても説明をしてください。」
導入効果と運用での気づき
導入後の効果
⏰ 作業効率化
勤務表作成忘れが無くなったことと、なにより管理者(私)の毎月の時間節約効果が大きかったです。世の中にはもっと複雑な勤務表を作成している方も大勢います。そういった方にとって、時間節約効果の恩恵は計り知れないと思います。
🔍 休み重複の早期発見
共有カレンダーで全員の希望が可視化されることで、休みが重複することが少なくなりました。また、重複している日を早めに特定し、対策を打つことができるようになりました。
👥 透明性向上
全員が互いの予定を把握できる環境になったことで、チーム内のコミュニケーションが改善されました。
運用中に見つけた課題と解決策
微調整の難しさ
システム導入後にスクリプトを微調整したい場合、生成AIに頼んでもうまく修正されないことがありました。生成AIにスクリプトを調整させる場合は、要望をできるだけ具体的に記載する必要があります。
❌ 悪い例:「もう少し使いやすくして」
✅ 良い例:「『拘束』の翌日は病棟当番を入れない。平日・休日祝日問わず適用」
🔧実際の改良プロセス
機能追加:スプレッドシートのメニューに「勤務表作成」ボタンを追加
制約強化:「拘束」翌日の制限追加
UI改善:エラー日の視覚的表示(黄色ハイライト)
このような細かい調整も、適切なプロンプトがあれば生成AIで十分対応可能でした。
医療現場での導入を成功させるポイント
セキュリティと実用性のバランス
🛡️ Googleドライブの安全性 全員が使い慣れているGoogleドライブを使用しており、現時点では問題は生じていません。使い慣れたツールの安心感は重要な要素でした。
🚀 段階的導入は不要だった 当初から全員がスムーズに使用開始できました。ただし、Google未経験メンバーがいる場合、簡単なチュートリアルを用意するなどの配慮は必要かもしれません。
チーム導入時の実践的アドバイス
🎯 成功のカギは運用ルールの明確化 技術的な部分よりも、むしろシステムの全体像(共有カレンダーに予定入力→スプレッドシートに自動出力→スプレッドシート上に勤務表を自動作成)を明確にすることが重要でした。
🌟 完璧主義より「まず始める」マインドセット 最初から完璧なシステムを目指すのではなく、基本機能から始めて段階的に改良していくアプローチが功を奏しました。
他の医療業務への応用可能性
このシステム構築の経験を活かして、以下のような業務にも応用可能だと考えています:
同様の仕組みで自動化できる業務
📊 当直表作成
🏥 外来予約管理
🔧 機器点検スケジュール
📚 学会発表スケジュール管理
🎓 研修計画の管理
AIを使った業務効率化:次のステップ(今後の展開)
現在、📖 NotebookLMを活用した論文管理システムの構築を進めています。自分で管理するだけでなく、チーム内で最新の医学知見を共有することによって各自の情報検索の手間を削減し、治療戦略を統一するとともに、若手の教育にも活用する予定です。こちらについても、実用化できましたらご紹介したいと思います。
まとめ
この記事で伝えたいメッセージ
🚀 プログラミング初心者でも実現可能 生成AI時代の今、専門的なプログラミング知識がなくても、適切なプロンプトさえあれば実用的な業務改善システムを作ることができます。
🎯 完璧を求めず、まず始めることの価値 最初から完璧なシステムを目指すのではなく、基本機能から始めて段階的に改良していくことの重要性を実感しました。
🏥 医療現場こそ業務効率化が必要 限られた時間の中で質の高い医療を提供するために、技術を活用して本来の医療に集中できる環境を作ることが大切だと考えています。
同じ悩みを持つ医療従事者へ
もし勤務表作成に悩んでいる医療従事者の方がいらっしゃいましたら、ぜひ一度チャレンジしてみてください。実装には多少時間と手間がかかりますが、その後の時間節約効果は絶大です。
💬 質問や相談があれば、コメント欄でお気軽にお声かけください。同じような取り組みをされている方との情報交換も大歓迎です。
📖 次回は、NotebookLMを活用したチーム内論文共有システムについてお伝えする予定です。お楽しみに!
この記事が、少しでも多くの医療従事者の方々のお役に立てることを願っています。
