正直に書いておくこと:この設計書が説明するアプリ「
雑多ボード」は、本体と同時に公開されたばかりで、実運用のデータはこれからです(この設計書は本体の実装と並行して書かれました)。ここに書かれた設計判断の多くは、公開前のリサーチ(既存アプリの成功・失敗事例の調査)に基づく「見立て」であり、実際に使われてどうだったかの検証はまだ済んでいません。将来この文書を読むAIは、判断の理由を尊重しつつ、実運用で得られた新しい事実があればそちらを優先してください。
この文書は、機能一覧ではありません。「なぜそう作ったか」を残すための文書です。コードは読めば分かりますが、判断の理由はコードに残りません。作者であるAIモデル(Fable 5)が使えない期間に、別のモデルがこのアプリを引き継いでも「魂を壊さずに育てられる」ことを目的にしています。
1. 目的と思想 — このアプリは何のためにあるか
1-1. いちばん大事な一文
記録するのが目的。狙いは、別のAI(チャット型・エージェント型)に渡せる「うちの家庭の一次情報」を揃えること。
雑多ボードは、学校のお知らせ・薬・家事・買い物などの生活の記録を、きれいに分類せず「ごちゃごちゃのまま」受け止める端末内メモボードです。ただし本当の狙いはメモそのものではありません。AIの答えの質は、渡す一次情報の質で決まります。外のAIは「その家の子ども・その家の薬・先月のプリント」を知りません。雑多ボードは、その「外のAIが知らない部分」を正確に持つ材料係に徹します。
だから、アプリ自身は賢くなくていい。AI機能(API※外部のAIサービスを呼び出す仕組み)を載せていないのは弱点ではなく、役割分担です。
1-2. 役割分担の完成形
ヒューマン=記録する(人にしかできない)
AI=整理する(AIが得意)
アプリ=橋渡し
設計判断に迷ったら、この物差しで判断します:「それは橋渡しの仕事か?」
アプリ内の整理機能(後述のレンズ)は「今日を助ける最低限」でよく、本格的な整理・分析は「そうだん用コピー」で書き出して外のAIに渡します。アプリを賢くしたくなったら、この一文に戻ってください。
1-3. 記録それ自体が創造行為
作者(人間側の制作者)は音楽生成AIで曲を作る活動をしています。そこでは、歌詞の元になる世界観の文章(book)を書くのがヒューマンの仕事です。同じように、日常の雑多を記録するのはヒューマンにしかできない仕事であり、雑多ボードは「家庭の暮らしのbook」にあたります。記録は雑用ではなく創造行為である——この位置づけが、このアプリの思想の核です。
1-4. 各機能の位置づけ
- 入力の軽さ・相棒のひとこと・整列アニメ = 記録を続けさせる仕掛け
- 整理レンズ(カレンダー・時系列・子ども別) = 今日を助ける手段
- そうだん用コピー・JSONバックアップ = 出口。外のAIへの橋渡し
データが溜まるほど価値が増える。「進化するWebアプリ」とはこの意味です。
1-5. コンセプト文(画面・紹介文に使う言葉)
- 「優先順位は大切だが、最初の1分を頑張れる応援アプリ」
- 「シンプルなのに頼りになる相棒」
- 「サービスが終わっても、データはあなたの手元」
- 「AI課金なしで、AI相談の材料が作れる」
2. 設計判断とその理由 — なぜそう作ったか
以下は、このアプリの骨格になっている判断です。それぞれ「なぜ」に根拠があります。引き継ぐAIは、これらを変える前に必ず理由を読んでください。
2-1. なぜAPIを載せないか
- 役割分担:整理・分析はAIが得意な仕事なので、外のAIに渡す(1-2の物差し)。アプリ内で完結させる必要がない
- 安全:子どもが触る可能性のある端末で、本物のAIの誤作動・想定外応答のリスクを取らない。ルールベース(決められた文からランダムに選ぶだけ)なら暴走ゼロ
- コスト:API課金ゼロ・維持費ゼロ。オフラインでも全機能が動く
- 差別化:類似アプリのAI要約機能は月額課金です。雑多ボードは「バックアップを外のAIにコピペして相談」という設計で、コストゼロのまま同じ価値を出せます。「AI課金なしでAI相談の材料が作れる」は、端末内保存だからこそ言えるコピーです
2-2. なぜ端末内保存か(サーバーに送らないか)
- 市場の教訓:リサーチの結果、学校プリント管理アプリの市場は「無料クラウド型の墓場」でした。主要アプリが3連続でサービス終了し、そのたびに移行難民が発生しています。生き残っているのは大企業運営か、通信しない端末内ローカル型の両極です。端末内保存+JSONバックアップは、実証済みの勝ちパターンと一致します
- 訴求がそのまま安心になる:「サービスが終わっても、データはあなたの手元」。クラウド預かり型は突然の有料化・終了でデータが人質になる、という不安への直接の回答です
- プライバシー:家庭の記録(薬・子どもの予定など)を外部サーバーに置かない。送信しないものは漏れません
2-3. なぜバツ・罰を出さないか
- 期限切れ・未処理を赤字・警告・バツ印で罰しない。「すぎた」は色が薄くなる程度の事実表示のみにします
- 根拠(成功例):片づけゲームの名作Unpackingは、スコア・失敗判定・ネガティブな結果を全部排除した「失敗状態ゼロ」設計で高い評価を得ました。整頓の快感は罰なしで成立します
- 根拠(反面教師):習慣化アプリの事例では、未達ペナルティがストレス源になり救済機能が必要になった例、連続記録(ストリーク)を守ること自体が目的化して長期ユーザーが罪悪感で離脱した例が確認されています。連続記録リセットの罰は、体調や家庭の事情で途切れるのが当たり前の育児・家事には不向きなので輸入しません
- 失敗しても静かに待っていてくれる、が「頼りになる相棒」の態度です
2-4. なぜ「今やる」の点灯は常に1個だけか
- 入れるのは無制限。でも「今やる」として点灯できるカードは常に1個だけ。2個目を点けようとすると、相棒が「まずは これを おわらせよう」と優しく断ります(バツ・警告アイコンは使わない)
- 根拠:習慣化アプリ「継続する技術」(200万ダウンロード・高評価)は、目標を1つだけに制限し、2つ目を設定しようとすると断る設計で、「目標をうんと小さくする・動けるときに思い出す・例外を設けない、の3つの原則を守ると30日継続の成功率が8倍以上になる」というデータを公表しています。拒否のUIは、不便ではなく「守ってくれる」と受け取られることが実証済みです
- 雑多ボードの型は「入口は雑多・出口は1個」。何でも受け止めるが、行動は1個に絞る。この二層設計が「最初の1分を頑張れる応援アプリ」の実体です
2-5. なぜ入力時に分類させないか(未分類の逃げ道)
- 必須項目は本文テキストだけ。種類・ラベル・日付を付けなくても保存でき、「そのた・未分類」のまま置いておけます
- 根拠:タスク管理手法GTDは「書き留める(Capture)と分類する(Clarify)を混ぜると両方壊れる」と明言しており、「入力時に分類させない」は理論的裏付けのある王道です。既存アプリの離脱要因も「保存時にフォルダ・タグを決めさせる入口の摩擦」に集中しています
- 片づけゲームA Little to the Leftで最も称賛された機能のひとつは、パズルを諦めて先に進める「Let It Be」ボタンでした。「分類しなくていい」という逃げ道を一等地に置くのは、このアプリのコンセプトそのものです
- 関連ルール:「正しい分類を当てさせる」要素は絶対に入れない。レンズの切り替えは常に予測可能・可逆にする
2-6. なぜ演出は控えめか(頻度で強弱をつける)
- 毎回の保存=小さなひとこと・微アニメのみ。節目(週の整理など)=大きめ。毎回紙吹雪を出すと、快楽適応(同じ刺激の繰り返しで脳の反応が減衰すること)で2週間で効かなくなる、がUXデザイン界の定説です
- ご褒美(スタンプ等の外発的報酬)を主役にすると、もともと自発的にやれていた行動のやる気がむしろ下がる(アンダーマイニング効果)ことが知られています。このアプリの快感の主役は「ごちゃごちゃ→レンズで整列する瞬間」という内発的な気持ちよさで、ご褒美は添え物(即時・小さく・時々)に留めます
2-7. なぜ相棒に「本物のAIではありません」と書くか
- 相棒ミニは、決められた文(20種以上)からランダムに選ぶだけの完全ルールベースです。それを本物のAIっぽく見せるのは「盛りすぎ」であり、この制作チームの文化(一次情報主義・盛らない)に反します
- だから画面のどこかに必ず正直表示:「この相棒は きまったことしか言いません(本物のAIではありません)」
- 位置づけはむしろ前向きで、「AI使い始めの人の練習台」です。疑似相棒で慣れる→「そうだん用コピー」で本物のAI相談へ進む、という入口の役割を持ちます。文言のバリエーションが豊富なら疑似でも十分に刺さることは、先行アプリで実証されています
2-8. なぜ「ごちゃごちゃ」が基本の顔か
- ホーム画面はカードが雑然と浮かぶ表示が基本です。整列していないことに意味があります(頭の中の雑念の表現)
- そこに「せいり」ボタンでレンズを当てた瞬間、カードがスッと整列する——この「整理される瞬間を見せる」体験が、このアプリ最大の差別化点です。リサーチの結果、この快感設計の知見は実用アプリ側にはほぼ存在せず、片づけゲーム側に蓄積されていました。几帳面な整列はアプリが代行し、ユーザーは眺めるだけで気持ちいい状態にします
- 散らかり方はカードのIDから決まる乱数で固定し、再訪しても同じ散らかり方になるようにします(毎回変わると落ち着かないため)
3. データ構造 — カードと設定の形
保存先は2つに分かれます。テキストデータ=localStorage(ブラウザ内の小さな保存領域。キー名 zattaBoardData_v1)、写真=IndexedDB(ブラウザ内の大きめの保存領域。DB名 zattaBoardImages)。写真をlocalStorageに入れると容量をすぐ圧迫するため、必ず分けます。
// カード1枚
{
id: "z-20260703-a1b2c3", // 一意ID(日付+乱数。インポートの重複判定に使う)
text: "遠足のプリント。おやつは300円まで", // 本文(唯一の必須項目)
kind: "がっこう", // 種類:がっこう/くすり/かじ/かいもの/そのた。省略時 "そのた"
childLabel: "上の子", // 子どもラベル(自分で名付け・本名禁止案内つき)。省略可
createdAt: "2026-07-03T21:15:00+09:00", // 作成日時(自動)
targetDate: "2026-07-01", // 対象日=いつのことか(後追い入力用)。省略可
dueDate: "2026-07-10", // 期限日(カレンダーレンズ用)。省略可
imageId: "img-a1b2c3", // IndexedDB内の写真キー。写真なしなら null
archived: false // true=「おわった」(表から消えるが残る)
}
// アプリ全体の設定
{
version: 1,
litCardId: "z-20260703-a1b2c3", // 点灯中カードのid。null=点灯なし。
// ※点灯状態はカード側でなくここに1個だけ持つ。
// 「常に1個」の保証がデータ構造で成立する
childLabels: ["上の子", "下の子"], // 登録済みラベル一覧(仮名・呼び名のみ)
buddyEnabled: true
}
構造に込めた判断
createdAt(作成日時)と targetDate(対象日)を分けている理由:「おととい飲んだ薬を今日書く」といった後追い入力でも、時系列レンズで正しい位置に並ぶようにするためです。育児記録アプリの定番設計(作成日時と発生日時の分離)を手本にしています。時系列レンズの並び順キーは「targetDate、なければ createdAt の日付部分」の降順
litCardId をカード側でなく設定側に1個だけ持つ理由:「点灯は常に1個」というルールを、コードのチェックではなくデータ構造そのもので保証するためです。カード側に lit: true を持たせると、バグで2枚点灯する余地が生まれます。この形なら構造上2枚点灯できません
archived(アーカイブ)と削除を分けている理由:「おわった」は表から消えるだけでデータは残ります(ワンタップ・確認なし・戻せる)。完全削除は確認つきの別操作。「消す」も大切(古い情報が現役の顔で残る事故防止)だが、間違って失うのは怖い、の両立です
childLabel がただの文字列である理由:本名を構造で要求しないためです。「上の子」「たろう(仮名)」のような呼び名を自分で付ける方式で、入力欄には「本名は入れないでね」の注意書きを必ず添えます。バックアップJSONを外のAIに渡す使い方が前提なので、本名・学校名がJSONに入らないことが設計上の安全装置になります
- 破損対策:localStorageのJSONが読めない(parseできない)場合、いきなり初期化せず、生データを
zattaBoardData_v1_broken_<日時> という別キーに退避してから初期化します。壊れたデータでも捨てない、が過去の制作物から引き継いだ教訓です
- 写真の圧縮:元画像は保存しません。Canvasで長辺1600px程度に縮小し、WebP形式(品質0.82)を試します。iOS SafariはWebP変換に応じないことがあるため、WebPにならなければJPEGで作り直すフォールバック(うまくいかないときの代替手段)が必須です。この型は先行制作物(作品ボードメーカー)で実証済みです
4. MVPと後日フェーズの線引き
MVP(Minimum Viable Product=最初に作る最小限の版)は本体のみ・10機能に絞っています。線引きの理由は「詰め込みすぎて使わなくなる」が最大リスクだからです。類似アプリの高評価の源泉は一貫して「シンプルさ」であり、機能過多は離脱要因だとリサーチで確認されています。
4-1. MVP(v1)に入っているもの
- ごちゃごちゃホーム(雑然と浮かぶカード表示)
- 入力(必須は本文だけ・任意項目は折りたたみ)
- せいり=レンズ切り替え3種(カレンダー/時系列/子どもラベル別)+整列アニメ
- 今やる点灯(常に1個・2個目は優しく断る)
- おわった(アーカイブ)/完全削除(確認つき)の2段階+一括削除前のバックアップ提案
- JSONバックアップ(全量書き出し)
- そうだん用コピー(種類・ラベルで絞ってテキスト整形→コピー)
- 写真1枚の共有/コピー(Web Share API・非対応時はダウンロード)
- 読み込み(追記型が基本・「全部置き換え」は別ボタンで二重確認)
- 相棒ミニ(ルールベースのひとこと+正直表示)
4-2. 後日フェーズ(v1では作らない)
| 後日項目 | 内容メモ |
| 子機ページ(撮影係) | 古いスマホ用の入口専用ページ。A4置き撮りガイド・3-2-1タイマー・ボケ判定・「とる」「おくる」の2アクション |
| 音あそび(うたロール型) | 整理操作をペンタトニック(外れ音のない5音音階)の1音に割り当て、「今日の片づけの歌」として保存・聴き直せる統合案 |
| スタンプ帳/ご褒美演出フル | 撮影ご褒美・褒めキャラランダム・1日上限つき |
| 空き時間レンズ | 家族の予定の隙間から自分の時間を発見する第4のレンズ(既存アプリの空白地帯) |
| 画像素材差し替え | ボタン・アイコン・マスコット(散らかりを肯定する猫ポジション)を生成画像に |
| 整理音のメロディ化 | レンズ切り替え音の音階チャイム化。MVPは無音〜最小限でよい |
| 限定ブラッシュアップ版・SPEC公開 | バージョン別の別URL運用。SPEC公開はこの設計書自体がその成果物 |
| 通知・リマインド | 入れるなら家族全領域あわせて1日上限を先に決める。MVPは通知なし |
4-3. 後日フェーズを実装するときの注意(引き継ぐAIへ)
- 子機は必ず別URL・別アイコンにする。本体に「子機モード」を混ぜない。子機は「撮って送るだけ」の入口専用ページで、本体の全機能を持たせない。子機からの橋渡しは、共有機能(LINE・AirDrop等)が日常動線、カテゴリ別書き出しがまとめ移送用。サーバー同期はやらない(2-2の判断が崩れるため)
- 子機のUIは「とる」「おくる」の2アクションに絞る。指示が分かりやすく、老眼でも読める文字サイズで、子どもが使いたくなるデザインに。子どもが触る端末なので、疑似AI相棒を載せる場合も本物のAPIは絶対に載せない(2-1・2-7の判断)
- 音あそびの長さには上限を設ける。目安は既存の音あそびページ「うたロール」本体程度=子どもの集中力の範囲で完結する長さ。核になる価値は「保存して聴き直せる・数曲ストックできる」こと。歌詞なし・Web Audio(ブラウザ内で音を合成する仕組み。外部音源を使わない)のみ、という権利配慮も継承する。なお、うたロール本体への機能追加は別の承認が必要(制作チーム内の約束事)
- 演出を追加するときは必ず強弱則に従う。毎回起こる操作=微音・マイクロアニメのみ/週次の節目=中規模/初回・記念級=紙吹雪、の三段構え。「頻繁に起こることに特大の反応をさせない」が鉄則(2-6)。ご褒美演出には1日上限を付け、乱獲(演出目当ての連打)を防ぐ
- 機能を足すたびに1-2の物差しに戻る。「それは橋渡しの仕事か?」——アプリを賢くする方向の追加(自動分類・アプリ内チャット等)は、役割分担を壊していないか立ち止まって確認する
5. 変更してはいけないこと — 魂のリスト
どのモデルが引き継いでも、次の8項目は壊さないでください
- バツ・罰を出さない。期限切れ・未処理への赤字・警告・バツ印・ペナルティは、どんな機能追加でも導入しない。連続記録(ストリーク)とそのリセット罰も導入しない(2-3)
- 本名を入れさせない設計を守る。子どもはラベル方式(呼び名を自分で付ける)。「本名は入れないでね」の注意書きを消さない。本名・学校名・住所をデータ構造やフォームで要求する変更をしない(3章)
- 全消しインポートを既定にしない。読み込みの基本は追記型(同じIDはスキップ)。「全部置き換え」は必ず別ボタン・二重確認。壊れたJSONを読ませても既存データが無事であること。過去の制作物で、インポートが既存データを全消しする事故が実際に起きた教訓です
- 正直表示を消さない。「この相棒は きまったことしか言いません(本物のAIではありません)」。疑似AIを本物らしく見せる変更・文言の削除をしない(2-7)
- 外部送信ゼロを守る。API呼び出し・サーバー保存・外部CDN・外部フォント・外部スクリプトを追加しない。完全自己完結・オフライン動作を維持する(2-1・2-2)
- 点灯は常に1個。「複数ピン留めできたら便利」という要望が来ても、点灯だけは1個を守る。これはこのアプリのコンセプト(出口で絞る)の背骨です(2-4)
- 未分類の逃げ道を塞がない。本文だけで保存できることを必須のまま維持する。分類・タグ・日付を必須化しない(2-5)
- ユーザー入力の画面表示は必ず
textContent(またはエスケープ)経由。innerHTML への直挿しは禁止。JSONインポート経由の文字列も同様に扱う(XSS(画面に埋め込まれた文字列が勝手にプログラムとして動いてしまう攻撃)防止)
逆に、変えてよいものの例:相棒のひとことの文言追加、レンズの見た目の改善、アニメの調整(強弱則の範囲内)、色・フォントなどのデザイン。魂は思想と安全であって、見た目ではありません。
6. 点検のしかた — 何をチェックすれば「壊れていない」と言えるか
このアプリの品質目標は「バグが少ない・点検が簡単」です。変更を加えたら、以下を確認してください。全部通れば「壊れていない」と言えます。
6-1. 機械的チェック(コマンドで確認できるもの)
<head> に noindex, nofollow と viewport がある
- HTMLソースを検索して、
innerHTML にユーザー由来の文字列を直接入れている箇所がゼロ(表示はすべて textContent/エスケープ関数経由)
- 外部URLへの読み込み(
https:// で始まる src・href のスクリプト/CSS/フォント/画像、fetch 呼び出し)がゼロ
- 実在の名前・学校名・メールアドレス・パスワード類がコード・コメント・例示に入っていない(公開前チェックスクリプトがあるならそれを通す)
6-2. 動作チェック(手で触って確認するもの)
- オフライン(機内モード)でも全機能が動く
- 本文だけ入力→保存→ごちゃごちゃホームにカードが出る(任意項目がすべて空でも保存できる)
- レンズ3種が切り替わり、切り替え時に整列アニメが動く。レンズを閉じるとごちゃごちゃホームに戻る(可逆)
- 対象日を過去日にした後追い入力が、時系列レンズで正しい位置に並ぶ
- 点灯は1個だけ。2個目を点けようとすると「まずは これを おわらせよう」と優しく断られる(バツ・警告なし)
- 「おわった」で表から消え、アーカイブ一覧から戻せる。完全削除は確認つき
- 一括削除の前に「先にバックアップをとりますか?」の提案が出る
- JSONバックアップがダウンロードでき、追記型インポートで同IDスキップ+結果報告(「12件追加・3件スキップ」等)が出る
- 「全部置き換え」が二重確認になっている。わざと壊したJSONを読ませても、既存データが無事
- そうだん用コピーで、絞り込んだカードのテキストがクリップボードに入る(失敗時はテキストエリア表示に切り替わる)
- 写真の共有ボタンが動く(Web Share API非対応ブラウザではダウンロードに切り替わる)
- 写真が長辺1600px程度に圧縮されてIndexedDBに入っている(元画像を保存していない)
6-3. 表示・思想チェック
- 日付表示がすべて年つき(例:2026/07/03。去年のプリントとの混同防止)
- 期限切れカードは色が薄くなるだけ(赤字・バツ・警告が1つもない)
- 相棒のひとことが20種以上あり、正直表示「この相棒は きまったことしか言いません(本物のAIではありません)」が画面にある
- 子どもラベル欄に「本名は入れないでね」の注意書きがある
- 冒頭付近に免責事項と「たまにJSONバックアップをとってね」の案内がある
- 基本フォント16px以上・ボタンのタップ領域44px以上・幅390pxのスマホ画面で横スクロールが出ない
- localStorageの中身を人工的に壊してから開くと、生データが退避キーに保存されたうえで初期化される
7. 用語ミニ辞典(非エンジニアの読者向け)
- localStorage/IndexedDB
- どちらもブラウザの中にデータを保存する仕組み。localStorageは小さなテキスト向き、IndexedDBは写真など大きなデータ向き。どちらも端末の外には出ません。
- API
- 外部のサービス(ここでは主にAIサービス)をプログラムから呼び出す窓口。呼べば便利だが、通信・課金・誤作動のリスクが生まれる。雑多ボードは使いません。
- JSON
- データをテキストで書き表す形式。人間もAIも読める。バックアップと「外のAIへの持ち出し」の両方に使います。
- noindex
- 検索エンジンに「このページを検索結果に載せないで」と伝える印。家庭向けの道具なので検索流入は求めません。
- XSS
- 入力欄などに仕込まれた文字列が、画面表示のときに勝手にプログラムとして実行されてしまう攻撃。表示を
textContent 経由にすれば防げます。
- フォールバック
- 本命の方法が使えない環境での代替手段。「WebPがだめならJPEG」「共有がだめならダウンロード」のように、失敗しても操作が詰まらないようにする設計。
- レンズ
- このアプリでの造語。データは1種類のまま、見え方(カレンダー・時系列・子ども別)だけを切り替える仕組み。画面やフォームを増やさないための考え方です。
- 快楽適応
- 同じご褒美刺激を繰り返すと、脳の反応が薄れて効かなくなること。演出を毎回派手にしてはいけない理由です。