開発Tips

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 か所に集約したのがポイントでした。

副産物: 更新で別フィールドを取りこぼしていた

この実装中に、updateStationTabssharedAdultUids(共有先おとなの情報)を保存時に落としていた潜在バグを見つけて直しました。タブの一部フィールドだけを書き戻す処理は、「書いていないフィールドが消える」事故を起こしがちです。

  • 更新系は「全フィールドを漏れなく往復させているか」を必ず確認する。
  • 新フィールド追加のタイミングは、既存フィールドの往復も点検する好機。

UI とテストの落とし穴

  • 設定に「タブの管理」セクションを新設(ON 化・リネーム・図鑑・リセット・削除)。図鑑への導線は育成表示に内蔵し、連携こどものリモート図鑑ボタンは温存。
  • 育成のフル機能(作成 → 成長 → 図鑑 → リネーム → 削除)は、テストアカウントの永続データを変えてしまうため自動 E2E にはせず、手動確認項目として担保。トグル表示のような軽い確認だけ E2E 化しました。

まとめ

  • 多人数運用の機能は、既定 OFF・オプトインで入れると既存ユーザーの体験を壊さない。育成のような「継続する状態」は一方向 ONで事故を防ぐ。
  • 部分更新は「書いていないフィールドが消える」。新フィールド追加時は、既存フィールドの往復も点検する。
  • 永続データを壊す操作は E2E 化を避け、手動確認項目として明示的に管理するのが安全でした。