====================================================================
依頼89：寄りの字幕の時刻を「開店から 2時間14分」の形に直し、問題に寄る動画とパネル付き動画を作り直す
2026-11-04 06:35〜06:50
====================================================================

結論
  ・6 店（② fam_p0・③ fam_p1・④ fam_p2・⑤ fam_p3・⑥ fam_p4・⑦ fam_p5）とも focus_v2/ と panel_v3/ ができた
  ・寄りの字幕の時刻は「開店から 2時間14分〜2時間20分」の形になった（1時間未満は「42分〜45分」の形）。6 店の png を目で見て確かめた
  ・panel_v3 の mp4 は 54 本とも 1920x1080・30fps。コマ数は 54 本とも panel_v2 と同じ。focus_v2 の mp4 は 48 本ともコマ数が focus_v1 と同じ
  ・upload_v3/ に mp4 6 本と jpg 6 枚を書き出した（R2 へは入れていない。サイトも触っていない）
  ・focus_v1・panel_v1・panel_v2・upload_v2・録画・frames.csv は消していない・上書きしていない。Unity は触っていない。録画は撮り直していない


--------------------------------------------------------------------
1. 作り方
--------------------------------------------------------------------
  置き場所：KIOXIA の service_sim/unity/night/20261104_focus89/
    focus_clips_used.py：使った focus_clips.py の写し（記録用）
    run_focus89.sh・focus_log.txt：focus_v2 を作ったもの・その出力
    panel89.py・run89.sh・log_fam_p0〜p5.txt・panel_log.txt：panel_v3 を作ったもの・その出力
    diff_panel88_89.txt：panel88.py との差分
    check89.py・check89_out.txt：確かめ・その出力
    export89.sh・export89_log.txt：サイト用の書き出し
  focus_clips.py：iCloud の unity/focus_clips/focus_clips.py を /tmp/rec89/fc/ に写して使った（中身は変えていない）
    md5 63829a223b8d615c88a44ef493f60cd4（iCloud の今のもの・写し・記録用の写しの 3 つとも同じ）
    直す前の写し focus_clips_pre20261104.py（md5 a7e1829a…）との違いは hm() を足したことと、caption() の 2 行目だけであることを diff で見た
  focus_v2 の引数：依頼87 の focus_v1（night/20261104_rec87/post.py）と同じ
    python3 focus_clips.py {店}/ {回のフォルダ} {店}/focus_v2、環境は FOCUS_FONT＝ヒラギノ角ゴシック W6 だけ
    （FOCUS_TEXT_SCALE・FOCUS_TOP などは focus_v1 と同じく決めていない＝初めの値）
    回した時間 06:37:25〜06:37:55（6 店とも rc=0）。問題の場所・まとめ方・止まった合計は 6 店とも focus_v1 と同じ
  panel_v3：panel89.py（下の 4 章）を run89.sh で 2 店ずつ回した。題は依頼88 と同じく各店の panel_v1/panel_log.txt の 1 行目
    make_panel_video.py：status_videos/tools/ の今のもの（md5 eed8539039501415828a5ff39384c889。依頼88 と同じ）
    回した時間 06:38:09〜06:43:24（6 店とも rc=0）


--------------------------------------------------------------------
2. 店ごとにできた動画（長さは秒）
--------------------------------------------------------------------
  字幕（focus_v2 の各問題。focus_log.txt から）と panel_v3 の長さ

  ② fam_p0　題「② 定番の郊外型・ロボット2台」
    字幕：1「開店から 1時間41分〜1時間42分・止まった合計 117秒（2回）」／2「1時間10分〜1時間11分・116秒（2回）」／3「42分〜45分・106秒（2回）」
    focus_v2：focus_trial 55.7／p00_open 8.0／p01a_wide 3.0／p01b_focus 10.8／p02a 3.0／p02b 10.6／p03a 3.0／p03b 17.3
    panel_v3：whole_wide_l30_panel 76.1（9 倍）／p00_open 8.0／p01a 3.0／p01b 10.7／p02a 3.0／p02b 10.5／p03a 3.0／p03b 17.3／focus_trial_panel 55.6
  ③ fam_p1　題「③ 標準ファミレス・ロボット2台」
    字幕：1「開店から 2時間14分〜2時間20分・止まった合計 256秒（5回）」／2「43分〜46分・159秒（2回）」／3「1時間08分〜1時間10分・120秒（2回）」
    focus_v2：focus_trial 69.0／p00 8.0／p01a 3.0／p01b 17.3／p02a 3.0／p02b 17.3／p03a 3.0／p03b 17.3
    panel_v3：whole 76.2（10.5 倍）／p00 8.0／p01a 3.0／p01b 17.3／p02a 3.0／p02b 17.3／p03a 3.0／p03b 17.3／focus_trial_panel 68.9
  ④ fam_p2　題「④ 効率重視・小さめの店・ロボット2台」
    字幕：1「開店から 2時間03分〜2時間09分・297秒（5回）」／2「1時間38分〜1時間43分・292秒（5回）」／3「31分〜33分・194秒（4回）」
    focus_v2：focus_trial 69.0／p00 8.0／p01a 3.0／p01b 17.3／p02a 3.0／p02b 17.3／p03a 3.0／p03b 17.3
    panel_v3：whole 76.4（11 倍）／p00 8.0／p01a 3.0／p01b 17.3／p02a 3.0／p02b 17.3／p03a 3.0／p03b 17.3／focus_trial_panel 68.9
  ⑤ fam_p3　題「⑤ ゆったり・入口が正面・ロボット2台」
    字幕：1「開店から 1時間13分〜1時間16分・323秒（6回）」／2「1時間04分〜1時間07分・180秒（3回）」／3「2時間45分〜2時間46分・60秒（1回）」
    focus_v2：focus_trial 61.8／p00 8.0／p01a 3.0／p01b 17.3／p02a 3.0／p02b 17.3／p03a 3.0／p03b 10.1
    panel_v3：whole 75.3（10.5 倍）／p00 8.0／p01a 3.0／p01b 17.3／p02a 3.0／p02b 17.3／p03a 3.0／p03b 10.1／focus_trial_panel 61.7
  ⑥ fam_p4　題「⑥ ゆったり・入口が横・ロボット2台」
    字幕：1「開店から 2時間10分〜2時間13分・120秒（2回）」／2「1時間32分〜1時間34分・108秒（2回）」／3「1時間18分〜1時間19分・60秒（1回）」
    focus_v2：focus_trial 61.1／p00 8.0／p01a 3.0／p01b 17.3／p02a 3.0／p02b 16.6／p03a 3.0／p03b 10.1
    panel_v3：whole 74.5（9.5 倍）／p00 8.0／p01a 3.0／p01b 17.3／p02a 3.0／p02b 16.5／p03a 3.0／p03b 10.1／focus_trial_panel 60.9
  ⑦ fam_p5　題「⑦ 効率重視・席を詰めた店・ロボット2台」
    字幕：1「開店から 1時間20分〜1時間25分・213秒（4回）」／2「1時間13分〜1時間15分・153秒（2回）」／3「1時間58分〜2時間00分・120秒（2回）」
    focus_v2：focus_trial 68.7／p00 8.0／p01a 3.0／p01b 17.3／p02a 3.0／p02b 17.1／p03a 3.0／p03b 17.3
    panel_v3：whole 75.5（10.5 倍）／p00 8.0／p01a 3.0／p01b 17.3／p02a 3.0／p02b 17.0／p03a 3.0／p03b 17.3／focus_trial_panel 68.6
  （panel_v3 の部品の名前は pNN…_panel.mp4。店の時刻の範囲は各店の panel_v3/panel_log.txt。依頼88 と同じ値）
  focus_v2 には mp4 のほか episodes.json・list.txt・ov_*.png も focus_clips.py が出した（focus_v1 と同じ形）
  png：各店の panel_v3/whole_wide_l30_panel_mid.png（panel89.py が出す通しの真ん中）と
       panel_v3/focus_trial_panel_p01b_mid.png（確かめ用。② はコマ 491、ほかの 5 店はコマ 589）


--------------------------------------------------------------------
3. 確かめの結果（check89_out.txt）
--------------------------------------------------------------------
  ・panel_v3：54 本とも 1920x1080・30/1。コマ数は 54 本とも panel_v2 と同じ（違う 0）
      例 ② whole 2284・p01b 322・focus_trial 1667／③ whole 2286・focus_trial 2067／⑤ focus_trial 1851／⑥ 1828／⑦ 2058
    focus_trial_panel.mp4 のコマ数＝部品 7 本のコマ数の和（6 店とも）
  ・focus_v2：48 本とも 1280x720・30/1 で、コマ数は focus_v1 と同じ（違う 0）
    focus_v2 の部品は focus_v1 と同じく 1280x720（focus_clips.py の出す大きさ。1920x1080 になるのは panel_v3 のほう）
  ・focus_v1 と focus_v2 を真ん中のコマで比べた：p00_open・pNNa_wide（字幕に時刻が無い部品）は違いなし。
    寄りの部品で違うのは字幕の 2 行目の場所（x 15〜約 660・y 51〜73）。いくつかの部品で字幕の外に違いが出たので
    ⑥ p02b_focus で調べたところ、字幕の外で差が 40 を超える画素は 81 万 9200 画素のうち 1 画素（差 46）で、圧縮の揺れだった
  ・目で見た：6 店の focus_trial_panel_p01b_mid.png（③ ② は全体、残りは字幕の所を切り出して並べた）
    6 店とも 2 行目が「開店から 1時間41分〜1時間42分・止まった合計 117秒（2回）」の形。「134:14」の形は出ていない。
    字幕は左端の「寄」から最後の「（N回）」まで枠の中にあり、色の説明（上の余白）とも重ならない。パネルの「開店から 2時間15分」と書き方がそろった
  ・upload_v3：mp4 6 本とも h264・1920x1080・30/1・音なし。コマ数は元の focus_trial_panel.mp4 と同じ。6 本とも moov が mdat より前（faststart）。
    jpg 6 枚とも 1920x1080。AppleDouble（._）なし
  ・そのままであることの確かめ：focus_v1・panel_v1・panel_v2 の中に、依頼88 の確かめより後に変わったファイルは無い。
    upload_v2 のファイルの時刻は 06:22〜06:23（今回の作業より前）で、今回は触っていない


--------------------------------------------------------------------
4. panel89.py と panel88.py の差分（diff panel88.py panel89.py）
--------------------------------------------------------------------
  27,28c27,28
  < focus = rec / 'focus_v1'
  < out = rec / 'panel_v2'
  ---
  > focus = rec / 'focus_v2'
  > out = rec / 'panel_v3'
  30c30
  <     sys.exit('panel_v2 がもうあります（上書きしません）: %s' % out)
  ---
  >     sys.exit('panel_v3 がもうあります（上書きしません）: %s' % out)
  読む部品（focus_v2）と出力先（panel_v3）だけ。30 行目は出力先がもうあるときに止まる知らせの文で、出力先の名前に合わせただけ。
  --fit の付け方・説明の文・一時フォルダの名前（panel88_）はそのまま。
  部品のコマと時刻の計算に使う focus_clips は panel88.py のまま /tmp/rec87/fc（直す前の写し）を読む。
  直しは字幕の文字だけで、コマと時刻の計算は直す前と同じなので結果は変わらない（コマ数が計算と合うことは panel89.py の中でも確かめて通った）


--------------------------------------------------------------------
5. upload_v3 の中身（KIOXIA の service_sim/unity/series8_web_20261104/upload_v3/）
--------------------------------------------------------------------
  series8_unity_fam_p0_v3.mp4  1,049,334 バイト  55.6 秒  1667 コマ
  series8_unity_fam_p0_v3.jpg     97,012 バイト
  series8_unity_fam_p1_v3.mp4  1,588,877 バイト  68.9 秒  2067 コマ
  series8_unity_fam_p1_v3.jpg    105,725 バイト
  series8_unity_fam_p2_v3.mp4  1,247,625 バイト  68.9 秒  2067 コマ
  series8_unity_fam_p2_v3.jpg    106,811 バイト
  series8_unity_fam_p3_v3.mp4  1,252,906 バイト  61.7 秒  1851 コマ
  series8_unity_fam_p3_v3.jpg    112,144 バイト
  series8_unity_fam_p4_v3.mp4  1,303,673 バイト  60.9 秒  1828 コマ
  series8_unity_fam_p4_v3.jpg    108,590 バイト
  series8_unity_fam_p5_v3.mp4  1,883,410 バイト  68.6 秒  2058 コマ
  series8_unity_fam_p5_v3.jpg    111,633 バイト
  mp4：ffmpeg -i panel_v3/focus_trial_panel.mp4 -c:v libx264 -preset veryfast -crf 26 -movflags +faststart -an
  jpg：ffmpeg -ss 1 -i （書き出した同じ mp4）-frames:v 1 -q:v 4
  R2 へは入れていない。サイトの差し替えもしていない（依頼どおり Claude がする）


====================================================================
変えたファイル・作ったもの
====================================================================
  新しく置いた：night/20261104_focus89/（1 章のもの）
                rec_focus_20261104/fam_p0〜fam_p5/focus_v2/・panel_v3/
                series8_web_20261104/upload_v3/（mp4 6 本・jpg 6 枚）
                claude_code_reports/20261104_focus89.txt（これ）
                /tmp/rec89/fc/focus_clips.py（使った写し）
  変えていない：focus_clips.py（iCloud）・panel88.py・make_panel_video.py・focus_v1・panel_v1・panel_v2・upload_v2・録画・frames.csv・Unity・台帳
  git：触っていない（作ったものは KIOXIA と iCloud の中で、リポジトリの外）


====================================================================
決めてほしいこと
====================================================================
  なし

判定：合格
