印刷・PDF化:ブラウザで Cmd + P →「PDFとして保存」。この案内は印刷されません。

トレハン王国 消費税の見える化システム | 要件定義書 v1.0

案件 第19回 トレジャーハンティング in つるみ「トレハン王国に行こう!」
開催 2026年11月29日(日)13:00–16:00 / 神奈川県立東部総合職業技術校
主催 公益社団法人 鶴見法人会(協力:鶴見税務署/後援:鶴見区)
  v1.0(2026-07-31) ※ v0.1(07-30)から全面改訂


0. この文書について

誰のための、何か

読む人この文書で分かること
先方(鶴見法人会)何を作り、何を作らないか。誰がどこまで責任を持つか
技術レビューなぜこの構成になったか。判断の理由
来年、拡張する人(AIを含む)なぜこのシステムが存在するのか。触ってはいけない前提は何か

とくに3番目が重要

このシステムはAIを使って開発する。AIは「なぜ」を持っていない。
来年「トレハンの件を拡張して」と指示したとき、AIが読めるのは残っている文書だけである。

たとえば「§1.3 やってはいけないこと」が残っていなければ、
AIはチームランキング機能を良かれと思って提案する。 それは企画書で禁止されている。

この文書は、来年の自分とAIへの申し送りでもある。


1. 背景と目的

1.1 なぜこのシステムを作るのか

このイベントの主旨は租税教育である。キャッシュレスはそのための手段にすぎない。

第19回の実行委員長が「キャッシュレスの仕組みを入れたい」と発案したことが起点。
新しい試みとして、下記を実現する。

**体験料を払うと、その中に消費税が含まれていることを、
子どもが「見て」実感できるようにする。**

去年までは、ブース横のボードに大きな丸を描き、体験のたびに受付の人が
「円」と手書きし、最後に全ブースから舞台へ持っていく、という方式だった。
このシステムは、その手書きの置きかえである。 求められている解像度はその水準。

1.2 成功の定義

1.3 やってはいけないこと(★変更禁止)

企画書および打合せで明示された禁止事項。拡張時もこれを外さないこと。

禁止理由
チーム同士を競わせない(順位・ランキングを作らない)「競う」ではなく「みんなでまちを支える」が主旨
一定額に達したら次へ進む、という設計にしない納税額を達成条件にしない
個人別の納税額を強調しない個人を目立たせない
本物の決済処理をしない疑似決済に留める。実際のお金を動かすと資金決済法の領域になり、個人では受けられない案件になる
氏名以外の個人情報を受け取らない住所・電話・学校名・学年・写真・保護者の連絡先は一切預からない
おみくじ等の運要素を入れない企画書に明記。学びと記念性を両立させる

1.4 前提として重要なこと

紙で絵を作って終わりでも、イベントとしては成立する。(先方の発言)

逃げ道が最初から確保されている。 よって過剰な冗長化に費用をかけず、
その分を「ブースの読み取りが確実に動くこと」に寄せる。


2. 関係者と責任範囲

2.1 誰がどこまで持つか

項目弊方鶴見法人会印刷業者舞台委員会
6画面の制作・記録と集計の仕組み
カード用URL一覧(CSV)の作成・提供
機材/カードの動作条件の提示(別紙)
ホスティング先の作成・公開
実機確認(10月・タブレット1台)貸出
当日の設営・立ち上げ立ち会い
タブレット・Wi-Fi・カード・NFCの手配と費用
カードのデザイン制作
カードの印刷・NFCへの書き込み
参加者名簿の管理(個人情報の管理責任者)
受付・当日運営・スタッフ配置
画像・イラストの用意
各業者間の調整・とりまとめ
会場装飾・舞台演出

2.2 境界の明確化(誤解が起きやすい点)

境界弊方の範囲
機材条件を書面で示すところまで。手配・台数・費用・設置は先方。
条件を満たす機材であれば読み取りの動作を保証する
NFCURL一覧をCSVで渡すところまで。タグの購入・書き込み・貼付は印刷業者
会場モニター表示する画面の制作まで。モニター本体・PC・ケーブル・電源・配線は先方。
当日その機器で画面を開くところは弊方
舞台演出連携しない。(「リンクは考えてない」)システム内で完結する
画像先方支給が前提。制作する場合は別途(1点2,000円〜・点数割引・応相談)
集計の正確性想定外の操作(人為的な誤操作・機種違い)による集計のずれは対象外。
先方より「気にしない」との確認を得ている

3. 用語

意味
トレハンイベント内の架空通貨。実際のお金ではない
体験料1ブースの職業体験にかかる料金。税抜500トレハン
消費税体験料の10%。50トレハン。お支払いは合計550トレハン
チーム参加の単位。子ども3〜4名程度
カードトレハンパスポート。QR1つとNFCタグ1つを持つ
コードカードに割り当てられたランダムな英数字(例 A7K2M)。チームを識別する
復興率会場モニターに出す、目標額に対する達成度

4. 当日の流れ

#場面起きること関与する画面
113:00 受付(入国)チーム単位で来場。カードを配布
2ブース到着30ブースのうち好きなところへ
3体験の前スタッフがタブレットでカードのQRを読むP1
4演出(3〜5秒)550トレハンのうち50が王国のたからばこへP1
5体験職業体験を受ける
63〜5を繰り返す去年はMAX20ブースを回った子がいた
7随時会場モニターに総額と復興のようすP2
8随時/帰宅後保護者のスマホでチームの記録P3
9帰宅後〜12/31同じカードから納税証 → 税金図鑑P4 / P5
常時本部で確認・修正・CSV出力P6

読み取りの想定量:仮に200名×平均8ブース=1,600件/3時間。ピーク20件/分程度。技術的には軽い。


5. 画面一覧

ID画面使う人端末通信
P1ブース決済演出(待機/演出/2回目/手入力の4状態)ブーススタッフタブレット切れても止まらないこと
P2会場モニター来場者全員TV+PC要(数分ごと更新)
P3チームページ保護者各自のスマホ
P4納税証(P3の上部に表示)保護者・子ども各自のスマホ
P5税金図鑑保護者・子ども各自のスマホほぼ静的
P6本部管理画面本部PC

画面イメージhttps://trehan-preview.pages.dev


6. 画面ごとの要件

P1 ブース決済演出(★最重要)

4つの状態を1画面で切り替える。別々の画面を作るのではない。

状態内容
待機カメラが常時動作。「カードをかざしてください」。下に「よみとれないとき」ボタン
演出「ピッ!」→ 550トレハン → コインが500と50に分かれる → 50が王国のたからばこへ → 「ぜいきん50トレハンを王国におさめました!」
完了「つぎの人へ」。5秒で自動的に待機へ戻る
2回目同一チーム×同一ブースの2回目。「もう おさめて くれたね!」+現在の合計。演出は流さない・加算しない
手入力「よみとれないとき」から。その日のチーム名を色つきの丸で一覧表示 → タップで通常と同じ記録

決めごと

P2 会場モニター

P3 チームページ / P4 納税証

カードからの入口は1つ。 QRもNFCも同じURL。

いつ表示
イベント中チーム名・回ったブース・納めた消費税
イベント後一番上に納税証(記録はその下に残る)+「税金図鑑へ」ボタン

P5 税金図鑑

P6 本部管理画面

表記は漢字でよい(内部の人が見る画面。子ども向けのひらがなにしない)。

出すもの
数字消費税合計/読み取り件数/稼働チーム/1チーム平均ブース数
会場モニターの調整実測/調整分/モニター表示/復興率/目標額の変更
ブース別来場数(降順)
チーム一覧金額の手動修正(+50/−50)/手入力の件数/記録を1件消す

調整分の扱い(重要)
先方が「少なかったらいっぱい読み込むか」と発言したことへの対応。

会場モニターの表示 = 実測(チーム合計) + 調整分

やらないこと:リアルタイムのブース別ダッシュボード。分析はイベント後にCSVから資料にする。

手入力の件数を出す理由:特定のブースで手入力が続いていたら、その端末のカメラを疑い、予備機と交換する。当日いちばん役に立つ数字。


7. データ

項目備考
コードA7K2Mランダム。連番にしない
チーム名あかチーム
ブースIDB12端末に設定
読み取り時刻13:42:07
入力種別QR/手入力手入力の件数を管理画面に出すため
体験料500全ブース一律(要確認 Q2)
消費税額50
調整分0チームに紐づかない。別に保持

受け取らないもの:氏名/住所/電話/学校名/学年/写真/保護者の連絡先
カードに印刷されている以上のことをシステムに入れない。

制約

UNIQUE (チームコード, ブースID)

アプリで「有無を調べてから書く」形にしない。同時に来ると隙間ができるため、
データベース側の制約で弾き、2件目は静かに無視する。
テストが1ケースで済み、実装も1行で終わる。


8. 非機能要件

分類要件
通信会場の通信を信用しない。読み取りはまず端末のローカルストレージに保存し、そこからSupabaseへ送る。会場全域のWi-Fiカバーは不要
・通常は読み取りのたびに自動で送信を試みる
・失敗したらローカルに溜まり、次の読み取り時にまとめて送る
保険として画面に「未送信◯件」と手動の送信ボタンを置く(自動再送に頼りきらない)
同時利用端末ごとに独立した記録のため、何台同時でも競合しない。ただし30台の実測試験は行わない
端末別紙「動作条件」による。背面カメラのオートフォーカス必須・同一機種・NFC非搭載またはOFF・自動ロックOFF・10インチ以上
個人情報管理責任者は主催。弊方は委託先。この関係を文字で残す(要確認 Q15)
保存期間12月31日で公開停止、その後データ削除
公開範囲URLを知れば開ける。パスワードは付けない。①非連番 ②noindex ③期限 で守る
落としたときカードには既に名前が印刷されている。ページに載せるのはカードに印刷されている以上のことをしないため、拾った人が新たに知る情報はない
フォールバック紙のスタンプ/紙の絵で代替可(先方了解済み)

9. 技術構成

決定
ホスティングCloudflare Pages(商用OK・無料・帯域無制限)
データSupabase
本番のサブドメインtrehan263.pages.dev(取得済み)
モックの公開先trehan-preview.pages.dev
専用ドメイン取らない
ソース管理プライベートGitHubリポジトリ + Cloudflare Pages連携(2人で触るため)
鍵の置き場Cloudflareの環境変数。リポジトリに入れない
Supabaseへの接続ブラウザから直接(supabase-js)。サーバー関数は挟まない
個人情報を持たず、集計のずれも許容されるため。RLSで書き込みと読み取りを制限する

9.1 RLSの方針

ブラウザから直接つなぐため、anonキーは公開される前提で設計する。

操作許可
読み取り記録の追加許可(ただし §7 のユニーク制約で2件目は弾かれる)
読み取り記録の更新・削除不可(管理画面のみ。別の鍵で行う)
チームページの参照コードを指定した1件のみ。一覧の取得は不可(全チーム分が抜けるのを防ぐ)
集計(総額)参照のみ

割り切っている点:ブース端末のURLを知った人が、書き込みを増やすことは技術的に可能。
ただし個人情報を持たず、金銭も動かず、集計のずれは先方が「気にしない」と明言しているため、
ここに費用をかけない。守るべきものの価値に見合った守り方をする。

QRに入るURLの形

https://trehan263.pages.dev/s/A7K2M

10. スケジュール

時期やること
8月上旬見積・制作範囲・動作条件を提出
8月31日仕様確定(動作にかかわる要望の締切)
8月中受注 → ホスティング先とコード体系の確定 → 仮の動くものを制作
8月下旬URL一覧(CSV)を印刷業者へ提出 ← 全体で最も早い締切
9月上旬仮の動くものを先方に触ってもらう
9月いただいた要望の反映・作り込み(P1・P6を優先)
9月中カード入稿+NFC書き込み(印刷業者)
10月タブレット1台(本番と同一機種)で実機確認/P2〜P5
10月20日中身の差し替え(図鑑・イラスト・文言)の締切
10月末完成・請求書送付
11月28日(可能なら)前日に会場・機材で通し確認
11月29日本番。11:00より設営・立ち上げ立ち会い
12月31日公開終了・データ削除

設計の要点:コード体系を8月中に確定させ、印刷をソフトより先に走らせる。
物理物(カード・NFC)は納期を動かせない。


11. 決定事項と、その理由 ★来年の拡張時はここを読む

#決定理由
1体験料は税抜500+消費税50=550「500のうち50」だと10%の計算に合わない(500に含まれる消費税は約45)。税務署が協力する租税教育イベントなので数字を合わせる
2チーム単位で管理。個人名を持たない先方が「個別でやろうとは思っていない」。氏名を持たなければ個人情報の管理義務がほぼ消え、費用とリスクが下がる
3チーム内のカードは全部同じ誰が読んでも同じ記録になり、当日の順番間違いが構造的に起きない
41チーム×1ブース=1回(DB制約)モニターの数字が実際の体験回数と一致する。手入力とQRが両方通っても二重にならない
5QRとNFCは同じURL。CSVは1列印刷業者の取り違えが起こりえない。企画書にあった保護者用の別QRが不要になる
6QRの中身をURLにするNFC非対応端末(2018年より前のiPhone・安価なAndroid)でもカメラから同じページに行ける。費用ゼロの二重化
7入口は1つ。イベント後は納税証を上に出すカードのコードが1つなので行き先も1つ。かざした瞬間に賞状が見え、タップを増やさない
8オフライン記録+後送「当日Wi-Fiを借りる予定」と聞いたため。当日だけの機材は当日まで状態が分からないので、通信を前提にしない
9タブレット必須。スマホは非常時のみキャッシュレス体験そのものが商品。チラシにも「トレハンカードでキャッシュレス決済」と載っている
10タブレットのNFCは不要/OFF子どもがカードを画面に押し付けると、端末のNFCが反応して別画面が開き、記録できない
11演出は動画でなくアニメーション30台が毎回サーバーから動画を取ると会場の回線が死ぬ
12「よみとれないとき」の手入力を置く読めない時に本部へ走る運用は3時間1,600回では成立しない。カードを忘れた子も救えるので、再発行の仕組みが不要になる
13管理画面に調整分と復興率先方が「少なかったらいっぱい読み込むか」と発言。ただし調整はチームに紐づけない(保護者が見る数字と食い違わせない)
14ブース別来場数を残す19年やってきて数字で見たことがないはず(去年はボードに手書き)。来年の配置・人員・時間割を決められる資料になる
15モニターに順位をつけない企画書の禁止事項(§1.3)
16Cloudflare Pages + SupabaseVercel無料は非商用でクライアント案件に使えない。DBは一発勝負の案件で初めての道具を使わないという理由でSupabase
17専用ドメインを取らない公開は12/31まで。来年はカードを作り直すのでURLが変わってよい。継続性の要件がない
18サブドメインを短くする(trehan263)QRに入る文字数が増えると模様が細かくなり読み取りにくくなる。trehan は既に取得済みだった
19会場下見をしない平日の空の会場で電波を測っても当日と別物。カードもタブレットも11月上旬には揃わない。行っても実装が変わらない
20前日に機材が使えるなら前日確認(無償)当日朝が唯一のリハーサルになるリスクを下げられる。こちらの得でもある
21画像は先方支給が前提先方が「デザインにこだわりはない」「チラシベースでいい」と発言。制作する場合は別途

12. 未決事項

開発に影響するもの(★これだけ先に決まればよい)

#内容影響
Q8申込は事前のみか。当日その場での参加もあるか当日受付があると、受付用の画面が1つ増える

数量・段取り(開発の中身は変わらない)

#内容
Q6チーム数と1チームの人数
Q2全ブース一律料金か
Q9モニターはチーム別も出すか/目標額をいくつにするか
Q14カードの入稿締切
Q20印刷業者へ渡すCSVの書式と提出期限
Q13会場のWi-Fi・電波の状況
Q17前日(11/28)に会場と機材を使えるか
Q15個人情報の管理責任者と名簿の受け渡し方法
税金図鑑の項目リスト(先方が制作予定)
イラストの支給可否
ブース事業者への事前説明の場があるか

解決済み

Q1(550で確定)/Q3・Q4(1チーム1ブース1回)/Q5(チーム名のみ)/Q7(30ブース)/
Q10・Q11(QRとNFCが同じURL)/Q12(12/31で削除)/Q16(印刷時にNFCへ書き込み)/
Q18(舞台と連携しない)/Q19(Cloudflare・専用ドメインなし)/Q22(画像は先方支給)


13. リスクと対策

リスク影響対策
会場の通信が詰まるP1が止まる=致命端末内に記録して後送。モバイルルーター持参
安いタブレットでQRが読めない全ブースで止まる動作条件書+10月に本番と同一機種で実機確認
カードが光沢でQRが読めない同上マット指定を入稿前に伝える
URL未確定のまま入稿されるカード全数が使えないURLを持つ。刷り直し不可8月中にホスティング先と名前を確定
子どもがカードを画面に押し付ける端末のNFCが反応して画面が飛ぶタブレットのNFCをOFF
画面が自動ロックするカメラが止まり、スタッフが解除を繰り返す自動ロックをOFF
NFCが家で読めない納税証にたどり着けないQRからも同じページが開く(費用ゼロ)
カード紛失・二重計上モニターに嘘の数字手入力ボタン+管理画面で修正
当日の朝が唯一のリハになる準備不足のまま本番前日に機材が使えるか確認(Q17)
画像制作を無償で背負う工数が膨らむ見積の「含まないもの」に明記
とりまとめ役を無償で背負う11月に破綻窓口を先方に置いてもらう

14. 変更の管理

14.1 3つの区分

種類定義対応
不具合本書 §6「画面ごとの要件」に記載した動作と異なる場合回数の制限なく無償(本番当日まで)
調整・差し替え記載どおりに動いているが、見え方・文言・素材を変えたい場合
(図鑑の文章・イラスト・文字の大きさ・色・言葉づかい)
合計3時間まで無償。
超過分は1時間 5,000円(税抜)
仕様の変更・追加動作や条件が増える場合
(処理を足す・表示項目を増やす・新しい画面)
別途お見積り

14.2 なぜ「不具合」を本書に紐づけるか(★重要)

「不具合」を定義せずに「無償で直します」と書くと、あとから言ったもの勝ちになる。
「思っていたのと違う」がすべて不具合として持ち込まれ、無償対応が無限に続く。

そこで、不具合の定義を本書 §6 に固定する。

§6 に書いてある動作と違う → 不具合(無償)
§6 に書いていない → 調整、または仕様変更

これは先方を縛るためではなく、両者が同じ基準で話せるようにするためである。
§6 を細かく書いておくほど、双方にとって判断が明確になる。

14.3 なぜ「回数」ではなく「時間」か

「2回まで無償」とすると、1回のなかに50件詰め込まれても1回と数えられてしまう。
実際にかかる手間は件数と量に比例するため、時間で区切るほうが実態に合う。

14.4 締切

なぜ早く聞きたいのか:着手後に前提が変わると、実装と確認をやり直すことになる。
着手前なら費用をかけずに織り込める。同じ要望でも、いただく時期によって費用が変わる。


15. 関連文書

場所
画面イメージ(動く)https://trehan-preview.pages.dev
制作範囲のご確認(A4 1枚)docs/scope.html
御見積書docs/estimate.html
機材の動作条件(別紙)docs/device-spec.html
社内メモ(先方に出さない社内メモ.md
先方の企画書・チラシトレハンイベント/