要件ドキュメント

「みんなの水」要件整理

熊本・八代版 | 最終更新 2026-09-01 | 原本 docs/requirements.md

「みんなの水」熊本・八代版を作り直すための要件を一冊にまとめる。
第 1 部(1〜6 章)はビジネス要件で、サービスとして何を約束し、どう運用し、何を変えたいかを、実現方式から切り離して記す。
第 2 部(7〜11 章)はシステム要件で、現行実装(GAS のエクスポート)から吸い出した仕組みを記す。
現行の挙動は、作り直しで引き継ぐふるまいの基準になる。
新システムの技術構成や移行手順は本書では扱わない。

控えの欠け:公開一覧ページ(世帯カードが並ぶ画面)の HTML はエクスポートに含まれていない。
サーバー側の実装から仕様を補った。Phase 1 の公開サイトは現行を踏襲せず新規に作るため(6 章)、この欠けが作り直しに影響することはない。

第 1 部

ビジネス要件

サービスとして何を約束し、どう運用し、何を変えたいか。
実現方式には踏み込まない。

1サービス概要

地震で井戸が使えなくなった熊本県八代市の世帯に、給水車で水を届ける NPO サービス。
サポーターは一覧から 1 世帯を選び、世帯人数に応じた月額(平均水道料金と同額)を寄付して、その世帯の給水を支える。

運営は一般社団法人 能登乃國百年之計。
決済はコングラントの継続寄付を使う。

サービスを支える 3 つのアプリ

申し込みフォーム世帯

被災世帯がタンクとポンプの無料設置を申し込む入口。
申し込むと受付番号が発行され、スタッフが訪問して設置する。
仕組みの詳細は 8 章

みんなの水 本体サポーター

サポーターが水を待つ世帯の一覧から 1 世帯を選び、月々の寄付で支える公開サイト。
給水が始まると、世帯からの毎月の便りがここを通じてサポーターへ届く。
仕組みの詳細は 9 章

給水マップ給水スタッフ

給水スタッフが「今日どこへ水を届けるか」を確認し、配達の実績を記録する地図。
班分けと巡回順の管理にも使う。
仕組みの詳細は 10 章

2用語

世帯
井戸が使えなくなり、給水を必要とするお宅。
サポーター
一つの世帯を選び、月々の寄付でその世帯の給水費を支える人。
マッチング
世帯とサポーターの組が成立すること。
支援コード
寄付がどの世帯に向けたものかを決済側に伝えるコード(形式 MZ-A003-K7QF)。
設置完了
給水を受けるためのタンクとポンプの設置が終わった状態。現行の申込管理では「対応完了」。厳密な定義は未確定(5.1)。
便り
給水中の世帯が月 1 回投稿する近況とお礼。サポーターにメールで届く。
自費世帯
給水費を寄付でなく自分で払う世帯。一覧には掲載しない。
その日に給水を回る給水トラックのチーム。
採番
マップのピンへ、班ごとの巡回順の番号を振り直すこと。
隔日(青ピン)
2 日に 1 回の給水でよい世帯の属性。マップの青色(本日給水済み)とは別物だが、運用の呼び名として定着しているため併記する。
遅れ(赤ピン)
前回給水から 3 日以上(隔日世帯は 4 日以上)空いた状態。マップでは赤で表示される。

3サービスのルール

世帯とサポーターの流れ

支援は次の 1〜5 の順に進む。

1申込世帯

支援の対象は、井戸が使えず、水道の契約がない世帯である。
水道契約が有る世帯は対象外とする。
タンクとポンプの設置と毎日の給水は無料で、世帯の負担は消耗品費用(3,000 円ほど)のみ。
公開一覧への掲載には本人の同意を取る。

2掲載運営

公開するのは匿名化した情報だけで、氏名、番地、電話番号、メールアドレスは公開しない。

元データ公開してよい形
ふりがなイニシャル(やつしろ たろう → Y.T)
住所町名まで(八代市◯◯町。抽出できなければ「八代市内」)
断水の状況160 字に整形した公開メモ(空欄なら井戸の状況からの定型文)
世帯人数そのまま(月額の算出にも使う)
氏名、番地、電話番号、メールアドレス公開しない

世帯には掲載区分(掲載/非掲載/自費)があり、公開一覧に出るのは「掲載」だけである。

3マッチングサポーター

サポーターは一つの世帯を選んで支え、一つの世帯につくサポーターは一人である(複数を認めるかは未確定、5.2)。
選ばれた世帯は 30 分間仮押さえされ、そのあいだ他の人は選べない。

現状のマッチング成立は、サポーターの自己申告または運営の入金確認の時点である(変更 2 で寄付完了時点に改める)。

4便りと給水の継続世帯サポーター

給水中の世帯は月に 1 回、近況とお礼の便りをサポーターへ送る。
「便りが届くと給水が継続される」ことがサポーターとの約束である。

便りが 35 日途絶えたら運営が世帯の状況を確認する。
給水終了の判断は自動化せず、必ず人が行う。

サポーターが支援をやめる場合は、コングラント側で継続寄付を停止したうえで運営へ連絡してもらう。
やめた後の世帯の扱いは未確定である(5.2)。

5卒業運営

井戸が復旧(通水)したら給水を終了し、サポーターに寄付停止を案内する。
卒業は取り消さない。

共通のルール

月額と料金表サポーター

サポーターの月額は、世帯人数に応じた平均水道料金と同額に設定する。

世帯人数12345678910
月額(円)2,5004,5005,5006,5007,5009,00010,50012,00013,50015,000

11 人以上は 1 人 1,500 円を加算。
人数不明は 6,500 円。
給水に使うタンクやポンプなどの資機材は、単発の寄付で別に募っている。

自費世帯と自己負担世帯

給水費を自分で払う世帯(自費世帯)は公開一覧に載せず、運営が毎月の寄付を案内する。
申込の完了画面では、費用を自分で払いたい世帯向けに、任意の自己負担(世帯人数分の月額を寄付)を案内する。
寄付の有無で給水の内容は変わらない。

給水の運用給水スタッフ

給水は原則毎日で、2 日に 1 回でよい世帯は「隔日(青ピン)」として扱う。
前回給水から 3 日以上(隔日は 4 日以上)空いた世帯は「遅れ(赤ピン)」とみなす。

その日の班数を決め、班ごとに効率のよい順番で回る(順番の付け方は 変更 6 で見直す)。

設置スタッフの報酬設置スタッフ

タンク設置はスタッフへの委託で、報酬はタンク 1 台 8,000 円(税込)。
法人へ月ごとに請求する。

4変更したい点

#対象現状変更後
1寄付の手順サポーターが支援コードを控えて、コングラントのコメント欄に手で入力するコードを意識させず、選んだ世帯が自動で寄付に紐づくようにする
2マッチングの成立時点サポーターの自己申告、または運営の手動確認の時点寄付の完了を確認できた時点
3世帯の掲載開始掲載同意があれば、取り込まれた時点で自動掲載設置完了した時点
4ドメイン「みんなの水」と被災者側フォームの URL が別々minnano-mizu.jp に統一し、被災者側フォームも同じドメインで動かす
5寄付の入口コングラントの決済のみ八代市へのふるさと納税で発行されるコードでも寄付できるようにする
6採番とピンの扱い有効な給水先をすべて同じ扱いで採番する遅れ(赤ピン)を優先し、隔日(青ピン)は採番の対象から外す
7班数の上限画面の選択肢は最大 4(コード上は 6)最大 15 班程度

4.1 支援コードの手入力をなくす

手入力には、控え忘れや入力間違いで寄付とマッチングが結びつかない弱点と、転記の手間がサポーターの離脱点になる弱点がある。
変更後は、世帯ごとの寄付リンクから決済フォームへ遷移するだけで、どの世帯への寄付かが運営に伝わる状態を目指す。

実現の候補はコングラントの「支援ルート」機能(世帯ごとの専用 URL を作ると、決済記録に経由 URL が自動で残る)。

flowchart LR
    subgraph now["現状"]
        A1["世帯を選ぶ"] -->|"支援コードを発行"| B1["サポーターが控える"] -->|"コメント欄に手入力"| C1["コングラントで決済"]
    end
    subgraph after["変更後"]
        A2["世帯カード"] -->|"世帯ごとの専用リンク"| C2["コングラントで決済(世帯が自動で記録)"]
    end
  

4.2 マッチングを寄付完了時点に移す

現状は自己申告や手動確認で成立とするため、決済の事実とずれうる。
寄付の完了(決済側の記録)をもって成立とし、一覧の表示と実際の支援状況を一致させる。

4.3 掲載を設置完了時点に移す

現状は、掲載に同意した世帯が資機材の設置を待たずに一覧へ載る。
変更後は設置完了した世帯だけを掲載し、一覧の世帯はすべて「サポーターがつけば給水を始められる家」にする。

stateDiagram-v2
    direction LR
    [*] --> 申し込み済み: フォーム入力
    申し込み済み --> 募集中: 設置完了(ここで掲載)
    募集中 --> 水が届いている: 寄付完了
    水が届いている --> 井戸が復旧: 通水
  

状態の正式な名前と全体像は 5.1 で定義し直す。

4.4 ドメインを minnano-mizu.jp に統一する

サポーター向けサイトと被災者側フォームは一続きの仕組みなので、同じドメインの下で動かす。

4.5 ふるさと納税コードによる寄付を加える

八代市にふるさと納税をした人にコードを発行し、「みんなの水」で入力すると寄付ができるようにする。
月々の寄付とは別の入口であり、制度と仕様の両方に未確定点が多い(5.4)。

4.6 採番にピンの扱いを反映する

現状の採番は緊急度と隔日を考慮しないため、優先して届けたい世帯でも順番が後ろになることがある。
変更後は遅れ(赤ピン)の世帯が早い番号になるよう優先し、隔日(青ピン)の世帯は採番の対象から外す(隔日は番号を持たない)。

flowchart LR
    subgraph now["現状の採番"]
        direction LR
        n1(["1"]):::other --> n2(["2"]):::blue --> n3(["3"]):::red --> n4(["4"]):::other --> n5(["5"]):::red --> n6(["6"]):::blue
    end
    subgraph after["変更後の採番"]
        direction LR
        a1(["1"]):::red --> a2(["2"]):::red --> a3(["3"]):::other --> a4(["4"]):::other
        b1(["隔日"]):::blue
        b2(["隔日"]):::blue
    end
    classDef red fill:#bf4a3d,color:#ffffff,stroke:none
    classDef blue fill:#3f6dab,color:#ffffff,stroke:none
    classDef other fill:transparent,stroke:#888888,color:#888888
  

優先の度合いと、隔日世帯を外す期間の扱いは未確定(5.5)。
班数の上限(変更 7)は同じ画面の設定であり、15 程度へ広げる。

5未確定の仕様

決めないと実装や運用に進めない点を挙げる。

5.1世帯の状態と掲載

関連:3 章の流れ 1〜24.39 章の世帯の状態

課題:現状の 5 状態に掲載区分とキャンセルが重なり、変更後はさらに「申し込み済みで未設置」が加わる。

決めること

  • 状態の一覧と遷移を一枚で定義し直す。
  • 「設置完了」の定義。何をどこまで設置したら完了とし、誰がいつ記録するか。
  • 未設置の世帯をトップの「水を待つ家」の数に含めるか。
  • 掲載同意を取る時点。申込時か、設置完了時か。

5.2マッチング

関連:3 章の流れ 34.2

課題:マッチングの成立と解消それぞれで、定義と競合時の扱いが決まっていない。

決めること

  • 「寄付完了」の時点。初回の決済が成功した時点か、申し込み操作が済んだ時点か。
  • 仮押さえの見せ方と期限(現行は 30 分)。
  • 同じ世帯に二人が寄付を完了した場合、二人目へ返金するか、複数サポーターとして認めるか。
  • サポーターが継続寄付をやめた場合の扱い。解約をどう検知するか、次のサポーターが見つかるまで給水を続けるか。

5.3支援コードの扱い

関連:4.19 章の支援の成立

課題:手入力を廃止しても、便りの宛先管理や問い合わせ対応では世帯とサポーターの組を指す名前が必要になる。

決めること

  • 支援コードという概念自体を残すか。
  • 残す場合、ふるさと納税のコード(5.4)との呼び分け。

5.4ふるさと納税コード

関連:4.5

課題:ふるさと納税の使途あるいは返礼品として成立するかは八代市との調整次第で、すべての前提になる。

決めること

  • コードの発行主体と発行の流れ。
  • 納税額に応じて、コード一枚が何か月分の給水に相当するか。
  • 利用者が世帯を選べるのか、運営が割り当てるのか。
  • 利用者はサポーターとして毎月の便りを受け取るのか。
  • 有効期限と、使われなかったコードの扱い。
  • 領収書。控除はふるさと納税側で受けるため「みんなの水」側では出さない、でよいか。

5.5マップと採番

関連:3 章の給水の運用4.610 章

課題:採番の見直し(変更 6)の細部と、マップ運用の残る論点が決まっていない。

決めること

  • 遅れ(赤ピン)を優先する度合い。必ず各班の最初に回すのか、効率が大きく落ちない範囲で早めるのか。
  • 隔日(青ピン)の世帯を外す期間。常に対象外か、給水に行く日には戻すのか。前回給水日は記録済みのため判定は可能。
  • 自動判定のほかに、運営が手動で優先度を指定する手段が要るか。
  • 班数上限 15 の根拠。実際に稼働しうる班数か、余裕を持たせた数か。
  • ピンと世帯の対応。世帯 ID の統合(5.6)と合わせて決める。
  • 管理画面の保護。共有の暗証番号だけで世帯の位置が見える現状を、氏名や番地を公開しない方針とどう整合させるか。

5.6作り直しの範囲

関連:第 2 部の全機能

課題:現行システムには公開一覧のほかに多くの機能群があり、Phase 1(6 章)は公開サイトしか作らない。

決めること

  • 次の各機能を、新システムに含めるか、当面現行のまま残すか、廃止するか。
    • 申し込みフォームと、スタッフ向けの申込管理。
    • 給水マップ(給水記録、日報、現場メモ、写真、班分けと採番)。
    • 便り(月次投稿、35 日途絶の検知、メール通知)。
    • 申込キャンセル時のサポーター自動移行。
    • 自費世帯の月次報告。
    • 設置スタッフの請求書発行。
  • 世帯の番号 3 系統を一つの世帯 ID に統合するか。
  • 世帯一覧と給水マップのデータを一つにするか。

6段階分け

作り直しは段階に分けて進める。
最初の段階を Phase 1 と呼ぶ。

Phase 1(公開サイトを一日で作る)

目的は新しい公開サイトのガワを見せることで、何よりも速さを優先する。

実施日は未定。
着工までに必要な準備は次のとおり。

実装時の注意

第 2 部

システム要件(現行実装)

コードから吸い出した現行の仕組み。
作り直しで引き継ぐふるまいの基準。

7全体構成

GAS ウェブアプリ 3 つが、スプレッドシート 2 冊を介して連携する。
アプリ間の API はなく、すべてシートの読み書きとメールでつながる。

flowchart LR
    R[被災世帯] --> FORM
    S[サポーター] --> MAIN
    V[給水スタッフ] --> MAP
    subgraph gas["GAS ウェブアプリ"]
        FORM["申し込みフォーム"]
        MAIN["みんなの水 本体"]
        MAP["給水マップ"]
    end
    subgraph sheets["スプレッドシート"]
        SS1[("水回り支援_申込一覧")]
        SS2[("給水ボランティア記録")]
    end
    CG["コングラント(決済)"]
    FORM -->|"申込を追記"| SS1
    MAIN <-->|"30分ごとに取り込み・状態更新"| SS1
    FORM -->|"対応完了でピン追加"| SS2
    MAP <--> SS2
    MAIN -.->|"寄付ページへ誘導"| CG
    CG -.->|"コメント欄の支援コードを運営が目視照合"| MAIN
  

3 つのアプリの役割分担

アプリ使う人役割コードの控え
申し込みフォーム被災世帯、設置スタッフ申込の受付、対応管理、請求書発行origin/form
みんなの水 本体サポーター、世帯、運営世帯の公開、マッチング、便り、卒業までの管理origin/minnano-mizu
給水マップ給水スタッフ給水記録、巡回ルート、日報origin/map

世帯からみると、申込から卒業までのあいだに 3 アプリすべての世話になる。
受け持ちが途中で切り替わる点が、後述する連携の弱さ(11 章)の背景である。

flowchart LR
    S(["世帯が申し込む"]) --> T["30分ごとに取り込み<br>同意があれば掲載(本体)"]
    S --> I["訪問調査と設置<br>対応完了でピン登録(フォーム→マップ)"]
    T --> M["サポーターが決まり給水中(本体)"]
    I --> W["毎日の給水と記録(マップ)"]
    M --> L["毎月の便り(本体)"]
    W --> G
    L --> G(["通水で卒業<br>本体とマップを別々に手動更新"])
  

外部サービスとの連携

サービス用途連携方法
コングラント継続寄付の決済リンクで誘導するだけ。決済結果の連携はなく、コメント欄の支援コードを運営が目視照合する
メール(GAS の MailApp)すべての通知運営宛は個人の Gmail、返信先は法人アドレス
Google ドライブ写真と請求書 PDF の保存便りと給水ポイントの写真はリンク共有で公開
ジオコーダ住所から座標への変換フォームは Google、マップは国土地理院を使っており不一致
LINE日報の共有、世帯への便り URL 送付共有リンクと手動コピペ
OpenStreetMapマップの地図タイルLeaflet から参照

世帯を指す番号が 3 系統ある

番号発行元用途
受付番号260819-190434申し込みフォーム申込の管理。本体への取り込みキー
支援IDA004みんなの水 本体公開一覧と便り
ポイントIDP003給水マップ給水記録
flowchart LR
    A[("申込一覧<br>受付番号")] -->|"受付番号をキーに取り込み"| B[("支援募集<br>支援ID")]
    A -->|"氏名と住所の文字一致で連携"| C[("給水ポイント<br>ポイントID")]
    B -. "対応表なし" .- C
  

支援ID とポイントID を結ぶ情報はどこにもなく、同じ世帯を二重に管理する原因になっている(11 章)。

8申し込みフォーム

概要

被災世帯がタンクとポンプの無料設置を申し込むフォーム。
同じ画面にスタッフ向けの申込管理と請求書発行が同居する(共有の暗証番号つき。番号は本書に記載しない)。

役割

本来の役割は申込の受付だが、受付後の運用もここで完結する。
スタッフは同じ画面で対応状況を管理し、対応完了にした世帯は給水マップへ自動でピン登録される。

設置スタッフへの支払いも担っており、月ごとの設置実績から請求書 PDF を発行して法人へ請求する(報酬のルールは 3 章)。
フォームの冒頭には、未対応と対応中の件数から「現在◯人待ち」を表示する。

データモデル

「水回り支援_申込一覧」スプレッドシートの「申込一覧」シート 1 枚に、性格の違う列が同居する。

区分主な列
申込内容受付日時、受付番号、申込No、要件、氏名、ふりがな、住所、世帯人数、携帯電話、メールアドレス、LINE ID、代理申込(3 列)、断水の状況、費用のご希望
現地の状況水道契約、井戸の状況と詳細、井戸水ポンプ、外水栓、屋外電源、タンク置き場所、その他、写真(4 列)
対応管理対応状況、対応開始日と担当者、対応完了日と担当者、キャンセルの日付と担当者と理由、最新情報とその更新日時

写真はドライブ「水回り支援_申込データ」、請求書は「請求書控」シートと PDF フォルダに記録する。

処理の流れ

申込世帯

sequenceDiagram
    actor R as 世帯
    participant F as フォーム
    actor O as 運営
    R->>F: 入力して送信
    F->>F: 受付番号を発行し、シートへ追記。写真はドライブへ保存
    F-->>O: 全文と写真添付のメール
    F-->>R: 受付完了メール
    F-->>R: 完了画面で任意の自己負担を案内
  

受付番号は yyMMdd-HHmm に乱数 2 桁を足した形式。
水道契約が有る世帯は対象外として送信をブロックし、それ以外の世帯には掲載への同意チェックを必須とする。

完了画面の自己負担の案内(ルールは 3 章)では、コングラントのコメント欄に受付番号を書いてもらい、運営がどの世帯の負担かを突き合わせる。

対応管理設置スタッフ

stateDiagram-v2
    direction LR
    [*] --> 未対応: フォーム送信
    未対応 --> 対応中: 訪問調査
    対応中 --> 対応完了: 設置完了
    未対応 --> キャンセル
    対応中 --> キャンセル
  

状態の更新には担当者名と日付を、キャンセルには理由も記録する。
対応完了にした瞬間、給水マップへ「氏名+様宅」の名称でピンを自動登録する(同名か同住所のピンがあれば追加しない)。

キャンセルにすると、本体側の取り込みが検知してサポーターの自動移行が走る(9 章)。

請求書設置スタッフ

設置スタッフが対象月の自分の設置実績を読み込み、住所と振込先を入力すると、請求書 PDF が発行される。
PDF は本人へメールされ、台帳シートに記録が残る。

9みんなの水 本体

概要

サポーターが世帯を選んで支援する公開サイトと、その裏の運営処理。
世帯の取り込みから公開、マッチング、便り、卒業までのライフサイクルを管理する。

役割

世帯のライフサイクル全体を一手に担う。
30 分ごとに申込一覧から世帯を取り込んで匿名化し、掲載に同意した世帯を公開一覧に載せる。
サポーターの申し込みを仮押さえと支援コードで受け付け、入金確認を経て給水開始とその通知を行う。

給水開始後は、便りの受付と 35 日途絶の検知で支援の継続を見守り、申込がキャンセルされた場合はサポーターを別の世帯へ自動で移す。
このほか、自費世帯の一覧を毎月 1 日に実名と電話つきで運営へメールする。

データモデル

申込と同じスプレッドシートに 3 シートを追加する。
3 シートは支援ID で結びつく。

シート
支援募集
(世帯ごと 1 行)
支援ID、受付番号、掲載、状態、表示名、地区、世帯人数、公開メモ、月額、支援者ハンドル、応援メッセージ、支援コード、仮押さえ期限、給水開始日、最終便り日、便りトークン、運用メモ
支援申告
(支援の申込ごと 1 行)
申告日時、支援コード、支援ID、支援者ハンドル、お名前、メールアドレス、月額、応援メッセージ、確認状況、確認日時、運用メモ
近況便り
(投稿ごと 1 行)
投稿日時、支援ID、メッセージ、写真、サポーター通知、運用メモ

月額は世帯人数から自動計算する(料金表は 3 章)。
同じ表がフォームの完了画面にもハードコードされている(11 章の課題 3)。

世帯の状態

stateDiagram-v2
    [*] --> 募集中: 取り込み(同意があれば掲載)
    募集中 --> お手続き中: サポーターが選ぶ
    お手続き中 --> 募集中: 30分で期限切れ
    お手続き中 --> 給水中: 自己申告または入金確認
    state 給水中 {
        [*] --> 便りが続いている
        便りが続いている --> 連絡確認中: 世帯の投稿が35日途絶(自動)
        連絡確認中 --> 便りが続いている: 世帯が便りを投稿(自動で復帰)
    }
    給水中 --> 募集中: サポーター離脱(運営の手動操作)
    給水中 --> 通水・卒業: 運営の終了操作
  

連絡確認中とは:便りが 35 日止まった世帯を、運営が電話などで確かめている状態。
便りが止まる典型は井戸が直って連絡が不要になったケースで、通水していればそのまま終了操作で卒業になり、まだ水が要るなら便りの再開で元に戻る。
公開一覧ではどちらも「給水中」と表示され、区別は運営にしか見えない。

図とシートの対応:シートの状態列の値は「募集中」「お手続き中」「給水中」「連絡確認中」「通水・卒業」の 5 つ。
図で「便りが続いている」と描いた内部状態が、シートの「給水中」にあたる。

状態と掲載区分は別もの:世帯は状態のほかに掲載区分(掲載/非掲載/自費)を持ち、公開一覧に出るのは「掲載」の世帯だけである。

卒業とサポーター離脱:「通水・卒業」にした世帯は戻せない。
サポーターの解約(コングラント側の継続寄付停止)を検知する仕組みはなく、気づいた運営が支援申告を「停止」にし、シートを直接編集して世帯を募集中へ戻す。

処理の流れ

取り込みと匿名化(30 分ごと)自動

要件に「設置」を含む申込だけを取り込み、支援ID(A+3 桁連番)を振る。
個人情報は 3 章の公開範囲に従って変換する。
イニシャルはふりがなから作り、地区は住所から町名までを抽出し、断水の状況は 160 字の公開メモに整形する。

掲載区分は申込の「費用のご希望」で決まる。
掲載同意があれば「掲載」、実費(旧フォームのみ)は「自費」、選択がなければ「非掲載」のまま運営が手動で確認する。

支援の成立サポーター運営

sequenceDiagram
    actor S as サポーター
    participant M as みんなの水
    participant C as コングラント
    actor O as 運営
    S->>M: 世帯を選ぶ(名前とメールを入力)
    M-->>S: 支援コードを発行(30分仮押さえ)
    S->>C: コメント欄にコードを書いて継続寄付
    S->>M: 「寄付を完了しました」ボタン
    Note over M: 申告だけで「給水中」になる(決済の裏取りなし)
    O->>C: コメント欄のコードを目視照合
    M-->>S: 給水開始メール
    M-->>O: 世帯へ便りURLの送付依頼(世帯メール未登録時)
  

給水中への遷移は、自己申告ボタンのほかにシートのメニューと確認状況セルの直接編集があり、入口が 3 つある。
処理は共通で、便りトークンを発行し、サポーターへ開始メールを、世帯へ便り URL を送る。
期限切れの仮押さえは 10 分ごとの自動実行が募集中へ戻す。

サポーターへの連絡サポーター

タイミング連絡
給水開始(入金確認後)開始のお知らせメール(自動)
便りの投稿ごと便りの本文と写真を届けるメール(自動)
世帯側キャンセルでの支援先変更変更のお知らせメール(自動。月額が変わる場合は金額変更の依頼つき)
給水終了(卒業)自動送信なし。運営が手動で御礼と寄付停止の案内を送る
サポーター自身の解約システムでは受け付けない。コングラント側で停止し、運営へ連絡してもらう

便り世帯

sequenceDiagram
    actor H as 世帯
    participant M as みんなの水
    actor S as サポーター
    H->>M: 専用URLから近況とお礼を投稿(月1回、写真は任意)
    M-->>S: 便りをメールで届ける
    Note over M: 最終便り日を更新。連絡確認中なら給水中へ自動復帰
    loop 毎朝7時
        M->>M: 便りが35日途絶えた給水中の世帯を「連絡確認中」へ
    end
  

メッセージは 500 字までの必須項目。
継続の約束と終了判断のルールは 3 章のとおりで、システムが自動化しているのは途絶の検知までである。

申込キャンセルとサポーター自動移行自動

flowchart TD
    A["申込側がキャンセルになる"] --> B{"給水中だったか"}
    B -->|いいえ| C["一覧から外し、運営へ記録メール"]
    B -->|はい| D{"募集中の世帯があるか"}
    D -->|ある| E["サポーターを自動移行<br>月額が同じ世帯を最優先<br>次に世帯人数が近い順"]
    E --> F["サポーター、新世帯、運営へメール"]
    D -->|ない| G["運営へ要対応メール<br>サポーターには連絡しない"]
  

月額が変わる移行では、サポーターへコングラント側での金額変更を依頼するメールが送られる。

10給水マップ

概要

給水スタッフが現場で使う地図アプリ(Leaflet と OpenStreetMap)。
どこへ水を届けるべきかの把握と、給水実績の記録に使う。

役割

給水先、水源、拠点をピンで管理し、前回給水からの経過日数で緊急度を色分けして「今日どこへ行くべきか」を示す。
スタッフはその場で給水量と担当者を記録し、本日の合計 L と給水済み箇所数がヘッダーに集計される。

管理メニューでは班分けとルート採番を行い、1 日の終わりには LINE にそのまま貼れる日報を生成する。
ピンごとに現場メモ(例「バックで入る」)と写真も持てる。

データモデル

独立した「給水ボランティア記録」スプレッドシートを使う。
世帯一覧との対応表はない。

シート
給水ポイントID、名称、住所、緯度、経度、設備、種別(給水先/水源/拠点)、状態(有効/停止/通水済み)、頻度(空欄=自動/毎日/隔日)、タンク所有者、担当団体、現場メモ、用途(生活用水/トイレ)、ルート順
給水記録記録日時、日付、ポイントID、ポイント名、給水量L、担当者、備考
設定管理者PIN(本書には記載しない)、隔日判定のしきい値
写真登録日時、ポイントID、ファイルID

ピンの色は保存値ではなく、表示のたびに前回給水からの経過日数で決まる(「遅れ」の定義は 3 章)。

毎日ペース隔日ペース
本日給水済み0〜1 日前
1〜2 日前2〜3 日前
3 日以上(記録なし含む)4 日以上

隔日ポイントには白丸「2」のバッジが重なる。
隔日は手動指定できるほか、直近 3 回の給水が 1 日あたり 100L 以下なら自動でそうみなす。
水源と拠点は青緑、通水済みは灰色で、いずれも給水記録の対象外である。

処理の流れ

給水の記録給水スタッフ

ピンを開いて給水量 L(満水で不要なら 0)と担当者、備考を記録すると、ヘッダーの本日集計が更新される。
担当者名は端末に記憶され、次回の入力を省ける。

日報給水スタッフ

「本日の報告」を押すと、給水済み、未給水、隔日スキップ、通水済みをまとめたテキストが生成され、そのまま LINE へ共有できる。

班分けと採番(管理メニュー)運営

flowchart LR
    A["対象を抽出<br>有効な給水先のみ"] --> B["作業量を見積もる<br>滞在10分+給水量見合い"]
    B --> C["扇形に班数分割<br>作業量が均等になる切り方"]
    C --> D["班ごとに巡回順を決定<br>水源起点の最近傍法+2-opt"]
    D --> E["A1、A2…と採番<br>担当団体列とルート順列へ"]
  

対象から水源、拠点、通水済み、座標のないピンを除く。
隔日かどうかは考慮しない。
給水量の実績は直近 7 日の平均を使い、実績のない新規ピンは 150L/日 とみなす。
班数は画面では 1〜4、コード上は 6 まで選べる。

「AI が並べ直す」と呼ばれてきた機能の実体はこのヒューリスティックで、LLM 等は使っていない。

その他の管理運営

ピンの追加は住所を国土地理院のジオコーダで座標化し、見つからなければ地図をタップして位置を指定する。
重複ピンの整理は、住所の表記ゆれをならしたうえで、住所と用途が同じピンを 1 件残して停止にする。

11横断的な課題

  1. 世帯の番号が 3 系統で、対応表がない(7 章)。
  2. 世帯一覧と給水マップが別のデータベースで、卒業(通水)を別々に手で更新している。
  3. 料金表と寄付 URL が 2 箇所にハードコードされている。
  4. 給水中への遷移の入口が 3 つあり、挙動差が生まれやすい。
  5. 入金確認は申告ベースで、決済の事実を確認していない。
  6. ジオコーダが 2 種類あり、同じ住所でも座標がずれうる。
  7. 便りと給水ポイントの写真は、リンクを知っていれば誰でも見られる。
  8. 暗証番号は平文で、フォームとマップに別々にある。
  9. 一括操作や誤り訂正の手段がなく、使い捨てスクリプトをエディタから直接実行してきた。
  10. 本体の公開 URL がハードコードされ、再デプロイのたびに書き換えが要る。