p261004-02 の「段階 2+: 声の切り替え」では、選んだ声を localStorage に残していた。保存先を利用者に聞かずに決めたため、キーが 2 つに増え、作品をまたいで共有され、期限も画面から消す手段も無かった。
利用者と決め直し、タブを閉じれば消える sessionStorage にする。開いた人の手元に残っている古い値は消す。
sessionStorage。タブを閉じれば消えるkamishibai.voice(66-A)。全作品で共有するselect)で選んだ項目の値 1 つ。区切りは「:」
b:声の名前(内蔵もネットも b。b: の後ろは分けない。声の名前に「:」があっても困らない)r:声の key:形式(r:zundamon:wav など)。いまの r:zundamon に形式を足す。あとで mp3 を別の項目として足したとき(r:zundamon:mp3)に区別できるようにするformat: 'wav' を持たせ、make-voice.ts が書き出す(69-A)。wav は作り直さないmake-voice.ts で確かめ、あれば止める(70-A)r:zundamon:wav(いまと同じずんだもんの wav)。mp3 を足したら、既定を mp3 に替える(次の計画)localStorage の 2 つのキーは引き継がずに消す。消すのは別のファイル src/engine/clear-old-storage.js にし、作品の index.html の先頭で読み込む(67-A)| 保存先 | キー | 値 | 消えるとき | 読み書きするところ |
|---|---|---|---|---|
sessionStorage | kamishibai.voice | 選んだ項目の値(b:声の名前 か r:key:形式) | タブを閉じたとき | player.js |
localStorage | kamishibai.voice | 旧。ブラウザの声の名前 | 開いたときに消す | clear-old-storage.js |
localStorage | kamishibai.voice.recorded | 旧。事前生成の声の key か browser | 開いたときに消す | clear-old-storage.js |
player.js にまとめる。一覧の値(b:…・r:…)を組み立てているのが player.js のため。speech.js・recorded.js の localStorage の読み書きは外すtests/momotaro.spec.ts)
localStorage に残した 2 つのキーは、開いたときに消えるr:key:形式 で、何も選んでいなければ r:zundamon:wavsessionStorage に何も書かないmake-voice.ts は、key に「:」があれば止まるlocalStorage の記述、status を直す結果: ✅ 済(2026-10-12)。読み書きは player.js、古い値の消去は src/engine/clear-old-storage.js、key の確かめは tools/20_build/voice-key.ts。voice.js は make-voice.ts で書き直した(音声は 108 本とも流用)。テストは先に書いて落ちるのを見てから実装し、chromium と webkit で全件が通った(79 件。Web Audio の無い webkit の 5 件は従来どおり飛ばす)。sessionStorage に「b:」だけを置くと、ブラウザの声を既定の選び方で選ぶ(テストがこれを使う)。