
## 1. システム概要と構成

添付資料から把握できるシステムは、以下の構成になっています：

1. **マスタデータ管理**
   - 隊員マスタ（従業員情報）
   - 現場マスタ（警備現場の情報）

2. **業務フロー**
   - ①週間予定表作成 → ②日報入力 → ③勤怠集計 → ④請求管理 → ⑤給与計算

3. **主要機能シート**
   - 隊員マスタ
   - 現場マスタ
   - 週間予定表
   - 日報管理
   - 勤怠集計
   - 請求書管理

## 2. GASなしで実現するための基本方針

スプレッドシートの標準機能のみで実現するため、以下の方針を提案します：

### 2.1 データ構造とシート構成

```
【警備業務管理システム.xlsx】
├── 管理シート（非表示）
│   ├── システム設定
│   └── 計算用ワークシート
├── マスタデータ
│   ├── 01_隊員マスタ
│   └── 02_現場マスタ
├── 運用シート
│   ├── 03_週間予定表
│   └── 04_日報管理
└── 集計・帳票シート
    ├── 05_勤怠集計
    ├── 06_請求管理
    └── 07_給与計算
```

### 2.2 標準機能で実現する代替手段

| GASで実現する機能 | 標準機能での代替方法 |
|-------------------|---------------------|
| データ自動連携 | VLOOKUP, INDEX-MATCH, QUERY関数 |
| イベントトリガー | 手動更新+条件付き書式による視覚的表示 |
| カスタムメニュー | ハイパーリンクとフィルター機能 |
| フォーム入力 | データ検証ドロップダウン+チェックボックス |
| 外部API連携 | 手動データ入力+テンプレート |

## 3. 各シートの実装詳細

### 3.1 隊員マスタ

- **実装方法**:
  - 標準テーブル形式
  - データ検証による入力制限
  - 条件付き書式で視覚的表示（資格者、高齢者など）

- **主要列**:
  - No. / 氏名 / フリガナ / 資格 / 血液型 / 生年月日 / 年齢 / 電話番号 / 携帯電話
  - 住所 / 前回健康診断 / 血圧 / 入社日 / 雇用契約満了日 / 被保険者番号 / マイナンバー
  - 緊急連絡先氏名 / 緊急連絡先電話 / 主担当現場 / 備考

### 3.2 現場マスタ

- **実装方法**:
  - 標準テーブル形式
  - 条件付き書式で現場ステータスを表示

- **主要列**:
  - 現場ID / 現場名称 / クライアント名 / 現場種別 / エリア / 現場住所 / 集合場所
  - 基本単価 / 残業割増 / 夜勤加算 / 距離 / 遠隔地加算 / 資格要件 / 資格者加算
  - 開始日 / 終了日 / ステータス / 備考

### 3.3 週間予定表

- **実装方法**:
  - クロス集計表形式（隊員×日付）
  - データ検証によるドロップダウン選択
  - 条件付き書式で状態表示
  - COUNTIF関数で出動回数自動計算

- **主要機能**:
  - 隊員ごとの週間スケジュール管理
  - 現場ごとの稼働人数集計
  - 過剰稼働チェック（連続勤務日数など）

### 3.4 日報管理

- **実装方法**:
  - 日付ごとのタブまたはフィルター
  - データ検証を活用した入力制限
  - SUMIFS, COUNTIFS関数による自動集計

- **主要列**:
  - 日付 / 顧客名 / 現場名 / 隊員名 / 請求 / 請求中止 / 0円中止
  - 上番時間 / 退勤時間 / 下番時間 / 休憩 / 時間外 / 同乗者 / 合計 / 報告事項

### 3.5 勤怠集計

- **実装方法**:
  - QUERY関数による日報データ集計
  - SUMIFS, COUNTIFS関数による集計
  - 条件付き書式による視覚的表示

- **主要機能**:
  - 隊員ごとの勤務時間集計
  - 超過勤務時間計算
  - 距離・交通費自動計算
  - 同乗費・休業手当計算

### 3.6 請求管理

- **実装方法**:
  - QUERY, SUMIFS関数による集計
  - テンプレート形式の請求書
  - フィルター機能による表示制御

- **主要機能**:
  - 取引先別請求一覧
  - 現場別明細データ
  - 日報データとの連携

## 4. 実装のポイント（外注エンジニア向け）

### 4.1 マスタデータの一元管理

- 隊員マスタと現場マスタをシステムの基盤として扱う
- データ変更はマスタのみで行い、他シートはすべて参照する
- 例：`=VLOOKUP(B5,隊員マスタ!A2:J30,9,FALSE)`

### 4.2 データ参照と自動計算

- 各シート間のデータ連携は関数で自動化
- 例：週間予定表から日報への連携
  ```
  =IF(ISBLANK(週間予定表!E5),"",週間予定表!E5)
  ```

### 4.3 データ入力の制限と検証

- データ検証機能を活用したドロップダウンリスト
  ```
  例：現場名のドロップダウン = 現場マスタ!B2:B30
  ```
- 入力規則による形式チェック（日付、時間など）

### 4.4 条件付き書式による視覚的表示

- 連続勤務アラート：
  ```
  条件式 =IF(L5>=5,TRUE,FALSE)
  書式 = 背景色赤
  ```
- 過剰・過少稼働表示：
  ```
  条件式 =IF(J5>18,TRUE,FALSE)
  書式 = 背景色黄色
  ```

### 4.5 集計機能

- 勤務時間集計
  ```
  =SUMIFS(実働時間列,隊員名列,A5,日付列,">="&G2,日付列,"<="&H2)
  ```
- 残業時間集計
  ```
  =SUMIFS(残業時間列,隊員名列,A5,日付列,">="&G2,日付列,"<="&H2)
  ```

## 5. 拡張機能とデータ保護

### 5.1 保護と権限設定

- セル保護機能の活用
- シート保護による編集制限
- 重要数式セルの保護

### 5.2 データ入出力機能

- ボタンクリックで実行するマクロ（GASなし）
  - HYPERLINK関数を使った疑似ボタン
  - 条件付き書式による状態表示

## 6. 実装上の注意点

1. **数式の複雑化を避ける**
   - ネストが深すぎる数式は避け、中間計算用セルを設ける

2. **シート間参照を明確にする**
   - シート名!セル範囲 の形式で明示的に参照

3. **データ検証の徹底**
   - 入力ミスを防ぐための制約を設ける

4. **命名規則の統一**
   - 名前付き範囲、シート名などの命名規則を統一

## 7. 質問と確認事項

以下の点について確認が必要です：

1. 最大登録隊員数は何名の想定ですか？
2. 同時に管理する現場数の最大値は？
3. 勤怠集計の期間単位（日次/週次/月次）はどのように設定しますか？
4. 請求書の出力形式に指定はありますか？
5. 交通費計算のルール（距離単価、上限など）は？
6. 資格手当などの特別手当の計算ルールは？
7. データのバックアップ方法は検討されていますか？

