📖 ADVENTURE JOURNAL
Day 0070
どの扉から入っても、同じ家
§ 1
WORK LOG
- 「冒険者の家」(自分の成長を可視化する村の中央施設・FTP直置きの独立アプリ)の Phase 1「PC・スマホでデータ共有」第一目標を実機で達成。稼働中アプリ(portal.js 2,969行)を実データを失わずに Google Tasks 保管へ移行。
- 段階リリースで実装: ストレージ抽象化レイヤ → 往復検証 → ドライラン → 本移行cutover → 同期配線(前景20秒定期同期+離脱時フラッシュ)→ セカンダリ端末の起動時自動アダプト → 状態リスト名の明確化。
- 実機デバッグで4つのバグを修正: ①状態リストがTODO算出に混入する無限ループ肥大 ②端末間の照合で別プロフィールを誤上書き(→「同一アカウントは累積EXP高い方をbase+森バッジはunion」へオーナー訂正)③Service Workerが旧ビルドを配信し続ける ④重複・肥大した状態リストの掃除。
- 受け入れ: PC・スマホで同一データ(Lv2/累計1375+森バッジunion)+双方向同期成立。状態リスト1個・blob 2レコードで肥大なし。
- Phase 1 仕上げ・検証後の堅牢化: 全31編集ハンドラの保存を新backendへ整合・離脱時flush/復帰時pull追加、Google保存blobを軽量化(タスク本体キャッシュ除外で約2.6KB)、リストアが新backendで取り消されるバグ修正、プライバシーポリシー§8を「状態はユーザー自身のGoogle Tasksに保存」へ更新(スコープ追加なし)。
- 「冒険者の家」のGA4計測を追加: index.htmlにgtag.js(LifeGame個人サイトと同一プロパティ)+page_view、portal.jsに連携・移行イベント。表記を「自分の家」→正式名称「冒険者の家」へ統一。
- 派生発見: FTP直置きの静的アプリはWPサイト全体のGA4を継承しない盲点。「成長マネジメントの森」アプリも同じく未計測だったため横展開で計測追加。deployスクリプトを汎用化。
- 前日Day69(Sonnet作成)の生成物を事後検証 → 酒場シナリオJSONに文字化け(U+FFFD)28箇所を発見・修復。再発防止にビルダー2本(酒場・冒険手帳)と文字化け機械ゲートを新設。memory運用も「横断的な学びは両ストアに個別登録」へ改訂。
ボリューム
★★★★★
成果
★★★★★
§ 2
ADVENTURE SCENARIO
「冒険者の家」には、ずっと秘密があった。
冒険者の家——村の中央にある、自分の成長を映す施設。レベルも、積み上げた経験値も、森で集めた証も、すべてここに飾られている。
けれど、その家は一つの机の上にしか建っていなかった。
机を変えると——つまり、別の端末から訪ねると——家は空っぽだった。同じ名前の、別人の家がそこにあった。PCのHiroと、スマホのHiroが、別々に暮らしていた。
家の記録は、その机の引き出し(ブラウザのlocalStorage=その端末だけに残る保管庫)にしまわれていた。引き出しは旅に持って出られない。だから家は、机から動けなかった。
今日、その引き出しを世界に開いた。
記録の保管先を、自分のGoogle Tasks(どの端末からでも同じ中身が見える、本人専用の保管庫)に移す。家の正本はそこに置き、机の上のは「写し」にする。どの扉から入っても、同じ家が建っている——そういう作りに変える。
いきなり全部を運び出すのは怖い。稼働中の家を壊したら、積み上げた記録ごと消える。
だから、橋を一本ずつ架けた。
まず記録の出し入れを一か所にまとめる回廊を通し、次に小さな荷物で往復を試し、本番の引っ越しは控えの写しを取ってから。同期の線をつなぎ、別の端末で訪ねたら自動で家を引き継ぐ仕掛けを置く。一段ごとに眠らせて、自分の手で確かめてから次へ。
それでも、家は素直に従わなかった。
引き出しの中の「家を管理するためのメモ」が、ふつうのやることリストに混ざり込み、際限なくふくらんだ。家が自分の設計図を、やるべき家事だと勘違いして増殖していく——奇妙な無限ループだった。除外の印をつけて止めた。
いちばん肝を冷やしたのは、端末どうしの照合だった。
PCとスマホ、どちらの家が「正しい」か。最初は経験値の高い方を機械的に採った。すると、別の顔をした記録が、もう一方を上書きして消しかけた。
ここで手が止まった。
——これは「勝ち負け」じゃない。同じ一人の、二つの記録だ。
採るべきは、累積経験値の高い方を土台にして、森で集めた証は両方を足し合わせる(union)。消すのではなく、重ねる。そう直したとき、家はようやく一つになった。
スマホがいつまでも古い家を映し続ける怪奇もあった。玄関で配膳役(Service Worker=一度読んだ画面を素早く出すために手元に溜めておく仕組み)が、古い設計図を握りしめて離さなかった。札を打ち替えて、新しい家を強制的に運ばせた。
夕方、スマホでひらいた家に、PCで貯めた経験値が、そのまま立っていた。Lv2、累計1375。森のバッジも欠けていない。PCに戻ると、スマホで触った続きがそこにある。
机の上にしか建たなかった家が、世界のどこからでも同じ姿で立つようになった。
家を一つにしたあと、ついでに家へ「目」も付けた。誰が訪ねているのか——これまで一人も数えられていなかった。家にも、隣の森にも、訪問者を数える小窓(GA4)を開けた。FTPで直に置いた家は、本館の数える仕組みを受け継いでいなかった。盲点を一つ、塞いだ。
家は、どの扉から入っても同じ家でなければならない。
当たり前のことを、今日やっと、当たり前にした。
—
冒険者の家——村の中央にある、自分の成長を映す施設。レベルも、積み上げた経験値も、森で集めた証も、すべてここに飾られている。
けれど、その家は一つの机の上にしか建っていなかった。
机を変えると——つまり、別の端末から訪ねると——家は空っぽだった。同じ名前の、別人の家がそこにあった。PCのHiroと、スマホのHiroが、別々に暮らしていた。
家の記録は、その机の引き出し(ブラウザのlocalStorage=その端末だけに残る保管庫)にしまわれていた。引き出しは旅に持って出られない。だから家は、机から動けなかった。
今日、その引き出しを世界に開いた。
記録の保管先を、自分のGoogle Tasks(どの端末からでも同じ中身が見える、本人専用の保管庫)に移す。家の正本はそこに置き、机の上のは「写し」にする。どの扉から入っても、同じ家が建っている——そういう作りに変える。
いきなり全部を運び出すのは怖い。稼働中の家を壊したら、積み上げた記録ごと消える。
だから、橋を一本ずつ架けた。
まず記録の出し入れを一か所にまとめる回廊を通し、次に小さな荷物で往復を試し、本番の引っ越しは控えの写しを取ってから。同期の線をつなぎ、別の端末で訪ねたら自動で家を引き継ぐ仕掛けを置く。一段ごとに眠らせて、自分の手で確かめてから次へ。
それでも、家は素直に従わなかった。
引き出しの中の「家を管理するためのメモ」が、ふつうのやることリストに混ざり込み、際限なくふくらんだ。家が自分の設計図を、やるべき家事だと勘違いして増殖していく——奇妙な無限ループだった。除外の印をつけて止めた。
いちばん肝を冷やしたのは、端末どうしの照合だった。
PCとスマホ、どちらの家が「正しい」か。最初は経験値の高い方を機械的に採った。すると、別の顔をした記録が、もう一方を上書きして消しかけた。
ここで手が止まった。
——これは「勝ち負け」じゃない。同じ一人の、二つの記録だ。
採るべきは、累積経験値の高い方を土台にして、森で集めた証は両方を足し合わせる(union)。消すのではなく、重ねる。そう直したとき、家はようやく一つになった。
スマホがいつまでも古い家を映し続ける怪奇もあった。玄関で配膳役(Service Worker=一度読んだ画面を素早く出すために手元に溜めておく仕組み)が、古い設計図を握りしめて離さなかった。札を打ち替えて、新しい家を強制的に運ばせた。
夕方、スマホでひらいた家に、PCで貯めた経験値が、そのまま立っていた。Lv2、累計1375。森のバッジも欠けていない。PCに戻ると、スマホで触った続きがそこにある。
机の上にしか建たなかった家が、世界のどこからでも同じ姿で立つようになった。
家を一つにしたあと、ついでに家へ「目」も付けた。誰が訪ねているのか——これまで一人も数えられていなかった。家にも、隣の森にも、訪問者を数える小窓(GA4)を開けた。FTPで直に置いた家は、本館の数える仕組みを受け継いでいなかった。盲点を一つ、塞いだ。
家は、どの扉から入っても同じ家でなければならない。
当たり前のことを、今日やっと、当たり前にした。
—
— 次回、一つになった家に、住む人の足音が記録されはじめる。
§ 3
DAILY HABITS EXP
| カテゴリ | 入力値 | EXP | 備考 |
|---|---|---|---|
| 睡眠 | 5.5h | 0 | 7h未満 |
| 食事管理 | 普通 | 10 | |
| 環境整備 | なし | 0 | |
| 運動 | ウォーキング7000歩 | 25 | 30分以上 |
| 健康記録 | あり | 10 | |
| 学習 | なし | 0 | |
| 小計 | 45 EXP | ||
§ 4
WORK LOG ANALYSIS
| 作業内容 | カテゴリ | 規模 | 確定EXP |
|---|---|---|---|
| 冒険者の家 Phase1 クロスデバイス基盤 第一目標達成(PC・スマホでデータ共有・段階リリース・実機4バグ修正) | 開発・実装 | 大 | 240 |
| 冒険者の家 Phase1 仕上げ・検証後の堅牢化(永続化整合・blob軽量化・リストアバグ修正・プライバシーポリシー更新) | 開発・改善 | 大 | 150 |
| 冒険者の家 GA4計測追加+表記「冒険者の家」統一 | 開発・実装 | 中 | 120 |
| 成長マネジメントの森アプリ GA4計測追加+deploy汎用化(静的ページ盲点の横展開) | 開発・改善 | 中 | 80 |
| Day69文字化け修復+ビルダー2本新設+機械ゲート+memory運用改訂 | 調査・改善 | 大 | 216 |
| 小計 | 806 EXP | ||
§ 5
QUEST REWARDS
| Quest ID | クエスト名 | 進捗 | 報酬EXP | 備考 |
|---|---|---|---|---|
| 本日のクエスト報酬はありません。 | ||||
STATUS
REPORT
⚔ STATUS REPORT ⚔
2026-06-05
Lv28
Adventurer
次のLvまで 1,531 EXP
HP
240 (+0)
名もなき商人QUEST ×1.1
MP
384 (+0)
無名の旅人BOOST ×1.0
EXP
2,569 / 4,100
76,789 → 77,769+980
基礎行動EXP45
業務EXP806
クエスト報酬0
行動EXP合計851
EXP BOOST × 1.152
Lv28 / Physical:1.00 / ENV:0.90
Lv28 / Physical:1.00 / ENV:0.90
実獲得EXP980
🎁 TODAY’S LOOT
— 今日の戦利品
- 💎 端末をまたぐ照合は「勝ち負け」で上書きしない——同一アカウントなら累積値の高い方を土台に、集めた証は両方を足し合わせる(union)。消すのではなく重ねる
- 💎 FTPで直に置いた静的ページは、本館(WordPress)のサイト全体タグを受け継がない——アクセスを数える小窓も、画面を更新する仕組みも、家ごとに自分で持たせる必要がある
- 💎 大きな日本語ファイルを書いたら、人の目で確かめる前に機械の関所で文字化けを止める——一括で書く構造ほど壊れやすいので、骨組みは機械に組ませ、人は中身の言葉だけ書く
⚔ この冒険を見届ける
毎日更新中。フォローするか、ブックマークしてまた来てほしい。
📩 メルマガ準備中 — 開設時にお知らせします
