オープンソース参考実装(MIT)

出前署名

紙の署名を、配車の体験で。
市長のリコールや条例づくりを住民が請求するには、紙の署名簿への自筆の署名を一定数集める必要があります。 出前署名は、その署名集めを「街頭で待つ」から「呼べば署名簿を持って家に来てくれる」に変える、 フードデリバリー型の配車支援システムです(地方自治法の直接請求に対応)。

🧪 デモを試す(β) 先に「やらないこと」を読む

デモはSMS送信なし(認証コードが画面に表示されます)・データは不定期に消去されます。実在の個人情報は入力しないでください。

しくみ

署名したい有権者が「訪問」を注文すると、受任者(署名収集員)が署名簿を持って伺います。

1注文SMS認証して訪問を依頼
2受諾受諾して初めて住所が開示
3ETA到着予定を共有
4相互確認到着時にコードを照合
5筆数報告紙に自署 → 筆数のみ集計

これは何をしないか

法令上の設計境界です。先にお読みください。

本システムが意図的に持たない機能

  • 電子署名はできません。署名は紙の署名簿への本人の自署のみ有効です。本システムは訪問の手配と筆数の集計だけを行います。
  • 署名者の氏名・生年月日を扱いません。それらは紙にのみ書かれ、アプリに入力欄がありません。
  • 選挙人名簿のデータは扱いません。
  • 報酬・対価の機能はありません。署名に関する利益誘導は処罰対象です(地方自治法74条の4)。受任者はボランティア前提です。
  • 署名簿のスキャン画像を保管しません。

主な機能

法定署名数の自動計算

リコールの1/3(40万・80万超の緩和規定)、条例請求の1/50を浮動小数点誤差のない整数式で算出。

収集期間の自動管理

市町村1か月/都道府県・指定都市2か月。期間外は注文を受け付けません。

選挙期間中の収集停止

blackout登録で注文ブロック・一覧非表示。解職投票フェーズでは注文・配車・報告を全停止(公選法準用)。

E2EE封緘 v0.2

注文者の住所・電話は端末上で受任者の公開鍵へ暗号化。運営サーバは平文を一度も保持しません。

バッチング配車 v0.2

同じ地区×日付の注文を1ルートに集約し、まとめて受諾(最大8件)。

訪問順ルート最適化 v0.3

最近傍+2-optの訪問順計算を受任者の端末内で完結。位置情報はサーバ非可視。

Googleマップ連携 v0.4

APIキー不要のURLスキーム方式。経由地付きナビを受任者の端末から起動し、サーバはGoogleに何も送信しません。

個人情報の自動消去

訪問の完了・キャンセルで住所・電話(E2EE封筒含む)を自動purge。残るのは町丁目コードと筆数のみ。

ダッシュボードと監査

地区別・チャネル別の筆数集計と必要ペース逆算。PIIを含まない追記専用監査ログ。

本番運用スイッチ v0.3+

SMSは差替式(Twilio対応)、職員はBearerトークン認証またはOIDC連携(Code Flow+PKCE)。

プライバシー設計

サーバは住所を知らない

注文者の住所・電話は、資格を持つ承認済み受任者の公開鍵に向けてブラウザの中で暗号化されます(WebCrypto: ECDH P-256 → HKDF → AES-GCM、外部依存ゼロ)。

復号できるのは受任者端末の秘密鍵だけ。受諾前の受任者に見えるのは町丁目コードのみで、運営サーバのディスクに平文が書かれないことはテストで担保されています。

技術構成

外部依存ゼロの Node.js 標準httpサーバ+バニラJS SPA(市民/受任者/事務局の3ロール)。 法令コア・配車ステートマシン・E2EE・ルート最適化を node:test 22件で検証済み。 設計書(概要・法令対応・画面・データ・機能一覧)はリポジトリの docs/ に同梱。