1台の端末で複数のこどもを — タブごとに育成 ON/OFF を選べるようにする
「ぽんっ!」(旧称:でいりんぐ)は 1 台の端末で複数のこども(兄弟)が使うことがあります。おとなのホームには、こどもごとの「タブ(StationTab)」があります。ここに、タブごとにキャラ育成を ON/OFF できる機能を足しました。多人数運用に効く設計のポイントを残します。
背景(当時の状況)
1 台の端末を兄弟で使う、というケースに向けた機能です。多人数運用を想定して 2026-07 に設計し、既存のこども共通育成を壊さないことを最優先にしながら、タブごとに育成の ON/OFF を選べるようにしました。
設計: 既定 OFF・一方向 ON
育成は全員に強制せず、使いたいタブだけ有効化する形にしました。
StationTab.enableCreature(既定false)を追加。- 一方向 ON(うっかり OFF に戻して育成中のキャラを見失う事故を避ける)。
UserModel/updateStationTabsの往復(保存・復元)にenableCreatureを通す。ネストした構造でも false フォールバックで安全に扱う。
給餌ゲートはどこに置くか
「誰が・どのタブに」えいようをあげられるかは、給餌のゲートで決めます。
- おとなは、
enableCreature=trueな自分のタブにだけ給餌できる。 - こども共通の育成(ユーザー単位で集約する既存の仕組み)は変更しない。
新機能を足すときに「既存の集約ロジックを壊さない」ことを最優先にし、ゲートを 1 か所に集約したのがポイントでした。
副産物: 更新で別フィールドを取りこぼしていた
この実装中に、updateStationTabs が sharedAdultUids(共有先おとなの情報)を保存時に落としていた潜在バグを見つけて直しました。タブの一部フィールドだけを書き戻す処理は、「書いていないフィールドが消える」事故を起こしがちです。
- 更新系は「全フィールドを漏れなく往復させているか」を必ず確認する。
- 新フィールド追加のタイミングは、既存フィールドの往復も点検する好機。
UI とテストの落とし穴
- 設定に「タブの管理」セクションを新設(ON 化・リネーム・図鑑・リセット・削除)。図鑑への導線は育成表示に内蔵し、連携こどものリモート図鑑ボタンは温存。
- 育成のフル機能(作成 → 成長 → 図鑑 → リネーム → 削除)は、テストアカウントの永続データを変えてしまうため自動 E2E にはせず、手動確認項目として担保。トグル表示のような軽い確認だけ E2E 化しました。
まとめ
- 多人数運用の機能は、既定 OFF・オプトインで入れると既存ユーザーの体験を壊さない。育成のような「継続する状態」は一方向 ONで事故を防ぐ。
- 部分更新は「書いていないフィールドが消える」。新フィールド追加時は、既存フィールドの往復も点検する。
- 永続データを壊す操作は E2E 化を避け、手動確認項目として明示的に管理するのが安全でした。