業務改善・運用設計

シフトアンケート自動化

人材派遣会社において、勤務希望日のアンケート作成・回答集計・運用管理を仕組み化した案件。毎月の定型業務を人手に依存しない流れへ整え、回答データの蓄積、進捗確認、障害時の追跡まで含めて運用しやすい状態を設計した。

業務改善・運用設計
人材業界
シフトアンケート自動化
アンケート作成・集計時間を削減
運用まで含めた“ムダのないDX”設計(手作業コピー依存を排除)
append-only設計+OpsLogで“壊れにくく追える”(監査・復旧が速い)
非エンジニア運用を前提に進捗可視化(Progressダイアログ)

従来のプロセス

  • 月次フォーム準備が人の記憶と手作業コピーに依存(抜け漏れ・誤設定が発生)
  • 回答転記が属人化し、どの回答がどこに反映されたか追跡しづらい
  • 障害時に原因追跡が困難(ログ不足/状況再現ができない)

導入後

  • 月次フォーム準備を仕組み化(人手コピー・編集に依存しない)
  • 回答は年月シートへ追記して蓄積し、履歴消失を防止
  • ログで“いつ・どこで・何が起きたか”を追跡でき、復旧判断が速い

プロジェクト概要

システムの特徴

Google Apps Script(GAS)で構築した「勤務希望管理の自動化システム」。
Googleフォームの回答を、年次ブック・月次シートへ一貫したパイプラインで連携し、
回答は追記(append-only)で蓄積。通知とOpsLogを組み合わせることで、運用漏れを防ぎつつ、
障害時も追跡できる“運用可能な自動化”を実現した。

自由記述を設けず、勤務可否を選択式で収集することで、不要な個人情報の混入を抑制。回答先スプレッドシートは管理者のみが閲覧できる構成とし、回答データは追記型で蓄積。処理状況をログで確認できるようにすることで、日常運用と障害時の確認を両立した。

役割・担当範囲

  • フェーズ: 要件整理〜設計〜実装〜テスト〜運用改善
  • 役割: 業務改善・DX推進アドバイザー / アーキテクト / フルスタック(GAS + UI + 運用設計)
  • 担当範囲: データ設計、転記ロジック、ログ基盤、進捗UI、年度切替設計まで一貫担当

プロジェクトの背景・課題

月次の勤務希望フォームを継続運用するにあたり、単に「自動化できる」だけでは不十分であった。
必要だったのは、手作業依存を外す仕組み化、過去データを壊さないデータ設計、障害時に追えるログ、 そして非エンジニアでも状況が分かる進捗の可視化である。

手作業依存

毎月の質問項目作成に15分+回答の集計作業。
人手に依存し、抜けもれが起きやすい。

履歴毀損リスク

上書き更新が発生すると、過去データ消失や監査性低下につながる

非属人的なフロー

運用フローを“人のスキル”ではなく“仕組み”に寄せ、継続運用の再現性を担保

復旧が速い

ログにより「いつ・どこで・何が起きたか」を追跡可能

技術的な工夫

1. 責務分割とオーケストレーションを前提にした運用構造

年次ブック管理・月次シート生成・転記・UI・共通関数・ログ基盤を責務単位で分離し、各処理の呼び出し関係と実行順をオーケストレーションとして整理することで、変更に強く、保守しやすい構造を実現。

2. 設定参照の一本化による安定運用

設定値の参照を façade(getSetting_)に集約し、マスターブック正統派 → 年次ブック互換フォールバックの三層で吸収することで、設定差異や参照先変更があっても運用が崩れにくい構造を設計。

3. ログの可観測性を維持する記録設計

LOG_DETAIL の2モードで出力粒度を切り替え、要約 → 強制縮小(forceShrink)まで含めてログ書き込みを成立させることで、ログ自体が障害要因になりにくい可観測性重視の設計を採用。

4. 転記処理を整合性中心で組み立てたデータ設計

日付列マップ構築、値整形、行決定、必要行作成、日付マーク更新、ログ記録までを分解し、単純な更新処理ではなく、履歴保持と例外耐性を前提とした整合性中心の転記フローとして設計。

使用技術

フロントエンド

HTML5 CSS3 JavaScript (ES6+) Google Apps Script HTML Service Progress UI(進捗ダイアログ) google.script.run(クライアント⇔サーバ呼び出し)

バックエンド

Google Apps Script Triggers LockService(排他制御) PropertiesService(設定・状態管理)

Google Workspace 連携

Google Forms Google Sheets DriveApp(ファイル操作/年度ブック管理) SpreadsheetApp(集計・転記・整形)

通知・運用オペレーション

GmailApp / MailApp(メール通知) テンプレ化メッセージ(運用者向け通知) OpsLog(監査ログ・診断ログ) smoke_(超軽量到達ログ)

データ設計・品質

append-only データ設計 Linkシート(BOOK/FORM行によるルーティング) Observability(診断可能性) ログ縮約(LOG_DETAIL 2モード) エラー分類(error_flag / error_kind)

UI/進捗管理

モーダル/サイドバー(HtmlService) ポーリング型進捗取得(PollProgress) runId + seq(実行単位の追跡) 段階的ステップ実行(Step1〜StepN)