[{"data":1,"prerenderedAt":645},["ShallowReactive",2],{"content-/2026-10-15-diary":3,"all-pages-for-dir":626,"related-/2026-10-15-diary":627,"og-image-/2026-10-15-diary":644},{"id":4,"title":5,"body":6,"category":606,"concepts":607,"description":608,"extension":609,"meta":610,"navigation":547,"ogImage":607,"path":611,"project_name":612,"published":613,"publishedAt":614,"seo":615,"source":616,"stem":617,"tags":618,"todo":607,"unpublished":613,"updatedAt":607,"__hash__":625},"pages/2026-10/2026-10-15/diary-2026-10-15.md","2026年10月15日の開発日記 - R2のWAV 4,127件の削除、囲碁のルール講座、財務諸表講座の動画を直す",{"type":7,"value":8,"toc":589},"minimark",[9,14,18,22,29,32,37,45,51,65,76,79,83,86,90,98,106,108,112,119,123,134,142,144,148,151,155,171,179,181,185,188,192,200,208,210,213,509,511,514,531,533,536,562,564,567],[10,11,13],"h1",{"id":12},"_2026年10月15日の開発日記","2026年10月15日の開発日記",[15,16,17],"p",{},"朝いちばんの仕事は、R2 から WAV を消すことだった。\n消す一覧は Codex の判定を通っていた。\nところが、消す処理を書いたスクリプトのほうはレビューを通っていなかった。\n「むちゃくちゃ怖い」と言って、安全版の削除スクリプトと復元スクリプトを作り直させ、試しの10件を自分で消してから 4,127 件に手を付けた。\n同じ日に動かしていたほかのセッションでも、手を動かす前に一度立ち止まって確かめる場面が続いた。\n確かめた先では、R2 に届いていなかった mp3 が100本見つかり、コミット前のレビューから計画書が外れかけていたことも分かった。",[19,20,21],"h2",{"id":21},"今日のタイムライン",[15,23,24],{},[25,26],"img",{"alt":27,"src":28},"タイムライン","/2026-10/2026-10-15/timeline-2026-10-15.png",[19,30,31],{"id":31},"今日やったこと",[33,34,36],"h3",{"id":35},"_1-r2-の-tts-音声-wav-の削除と配布-excel-の命名ルール","1. R2 の TTS 音声 WAV の削除と、配布 Excel の命名ルール",[15,38,39,40,44],{},"安全版の削除スクリプトは、Codex のレビュー2回で通った。\n試し削除10件のあと、全 4,127 件（",[41,42,43],"code",{},"--jobs 8","）を自分で実行した。\n削除は途中で一度止まった（残り 1,882 件）が、R2 を全件照合すると、消えていたのは削除一覧に載せたものだけだった。\nPhase 5 では Google Drive と Dropbox（rclone）に 254 件を退避し、全件一致を確かめた。\nR2 を操作するスクリプトはレビュー3回で通してから①〜④を自分で実行し、R2 全体は 9.77 GB に収まった。",[15,46,47],{},[48,49,50],"strong",{},"主な成果:",[52,53,54,62],"ul",{},[55,56,57,58,61],"li",{},"並行して進めた IB フォーマットの統一で、配布 Excel の名前を「日時＋",[41,59,60],{},"_提出版","」に決めた",[55,63,64],{},"V2 を「旧版」「新版」に改め、139 冊の外部リンクを0にした",[15,66,67,70,71],{},[48,68,69],{},"詳細:"," ",[72,73,75],"a",{"href":74},"/r2-wav-safe-delete-and-excel-naming-rule","R2のTTS音声WAV 4,127件を安全に消す：Codexレビュー必須の削除スクリプトとDropbox退避、配布Excelの命名ルール",[77,78],"hr",{},[33,80,82],{"id":81},"_2-財務諸表ストーリー版の動画プレイヤー","2. 財務諸表ストーリー版の動画プレイヤー",[15,84,85],{},"ストーリー版（36回）を 07:43 に本番へ公開したあと、画の下の灰色の帯をやめて列いっぱいに広げるよう頼んだ。\nPC版（横）を足し、10:15 に本番へ出した。\n字幕の帯の下には、文の区切りに線が入り、「何文目／全何文」と時刻が出る進捗バーを付けさせた。\n午後はフィードバック6件を6つの観点にまとめさせ、説明の回10本のうち9本を直してコミットした。\n取引の回25本（PC版）では、⑥ 財務諸表の段で ③ 仕訳帳と ⑤ 残高試算表を隠し、⑥ 全体が真ん中に来るようにさせた。",[15,87,88],{},[48,89,50],{},[52,91,92,95],{},[55,93,94],{},"音声 mp3 252本（約86 MiB）の R2 アップロードが途中で落ちていたので、18回分（107本）を上げ直させた",[55,96,97],{},"252本すべてが 200 を返すことを確かめた",[15,99,100,70,102],{},[48,101,69],{},[72,103,105],{"href":104},"/fs-story-video-player-feedback","財務諸表ストーリー版の動画プレイヤーを直す：字幕領域の拡張、区切り付き進捗バー、フィードバックの観点化",[77,107],{},[33,109,111],{"id":110},"_3-参考書の図を講座の-web-スライドへ移す","3. 参考書の図を講座の Web スライドへ移す",[15,113,114,115,118],{},"ある資格試験の参考書の図を Web スライドへ移す作業で、ファイル31と33では、表題用の ",[41,116,117],{},"Title_slide"," レイヤーに図も描かれていた。\nスクリプトがこのレイヤーを丸ごと隠していたのが原因だった。\nファイル単位で隠し方を切り替える直しを入れてもらい、31は4ページから26ページに、33は27ページすべてに図が入った。\nいちばん重い34は、前半と後半に分ける案を自分から出したが、分けずに流し切った。\nIllustrator が 6.6GB まで膨らんだあと、81枚を18分で書き出し終え、41本すべての書き出しが済んだ。",[15,120,121],{},[48,122,50],{},[52,124,125,128,131],{},[55,126,127],{},"羊が歩く SVG アニメは15コマで採用した",[55,129,130],{},"Q-002 の3枚目で試した取引の図の動きは、「全部そろえるのはかなり難しく面倒」と判断して取り下げた",[55,132,133],{},"デプロイの途中で、10/14 以降は電子書籍版の画像746枚が R2 に1枚も無かったと分かった。羊の図19枚と一緒にアップロードさせ、講座が参照する画像749枚が本番ですべて200になった",[15,135,136,70,138],{},[48,137,69],{},[72,139,141],{"href":140},"/illustrator-artboard-slides-svg-animation","Illustratorスクリプトで参考書の図を講座スライドへ移した記録（メモリ増加、アートボード追加のスキル化、SVGアニメの取り下げ）",[77,143],{},[33,145,147],{"id":146},"_4-囲碁のルールをストーリー版講座にする","4. 囲碁のルールをストーリー版講座にする",[15,149,150],{},"X のポストを起点に、囲碁のルールのストーリー版講座を計画させた。\n計画書は Codex のレビューで3回指摘を受け（1回目3点、再レビュー1点、eurekapu 版で駄目詰めの1点）、そのたびに直させた。\n実装は13講153ステップで、テスト51件が通り、コミットは4件になった。\n公開OKを出し、講座一覧の区分は「なるほど研究室」を選んだ（最初の案「一般教養」は上から目線すぎるので見送った）。\n公開設定は 40682a2c でコミット済みだが、本番デプロイはまだしていない。",[15,152,153],{},[48,154,50],{},[52,156,157,160],{},[55,158,159],{},"管理者でもコンピュータ講座が見られない件は、コードを変えていない。原因は 17:04 の別セッションの本番デプロイ直後の一時的な失敗（524/503）だった",[55,161,162,163,166,167,170],{},"コミット前 Codex レビューゲートが「差分が上限の1万行を超えた」で止まった件では、1回目の改修で計画書までレビューから外れていた。待ったをかけ、書き起こし、データ、pandoc 生成の ",[41,164,165],{},".html"," は外し、計画書の ",[41,168,169],{},".md"," はレビューに残す形に決めた",[15,172,173,70,175],{},[48,174,69],{},[72,176,178],{"href":177},"/igo-rules-story-lesson-and-review-gate","囲碁のルールをストーリー版講座にした1日：日本囲碁規約で裏取りした計画書から13講の公開設定、Codexレビューゲートの差分上限の見直しまで",[77,180],{},[33,182,184],{"id":183},"_5-財務3表の動画講座の改善と間接法の導入","5. 財務3表の動画講座の改善と、間接法の導入",[15,186,187],{},"午前は、旧講座の音声を Mac の Whisper で書き起こしてもらい、391本を今の文と照合して食い違いを22件に絞った。\n台本から同じ読みを洗い出すと、「百五十万円」を含む拍は9本すべてで「五十万円」に聞こえた。\n系統的な崩れだが、原因はこの日の時点ではまだ分かっていない。\n夕方、ストーリー版が間接法の仕組みを説明していない（台本では「ずれを一つずつ直す」の一言だけ）と気づき、判断4件を推奨案で決めた。\n導入はボリューム多めでよいと伝えて実装を進めてもらった。",[15,189,190],{},[48,191,50],{},[52,193,194,197],{},[55,195,196],{},"書き起こし391本と食い違い22件の洗い出し",[55,198,199],{},"間接法の導入の実装（変わった12本の仮の声の合成は、12本中6本の完了報告のあと PC のメモリ不足で途中で止まった。未コミット）",[15,201,202,70,204],{},[48,203,69],{},[72,205,207],{"href":206},"/fs-course-transcript-mishearing-and-indirect-method-intro","財務3表の動画講座を改善した日：Whisperの書き起こしで読み上げの聞き違いを洗い出し、ストーリー版にキャッシュフロー計算書の間接法を足す",[77,209],{},[19,211,212],{"id":212},"今日の試行錯誤",[214,215,216,238],"table",{},[217,218,219],"thead",{},[220,221,222,226,229,232,235],"tr",{},[223,224,225],"th",{},"#",[223,227,228],{},"テーマ",[223,230,231],{},"試したこと",[223,233,234],{},"結果",[223,236,237],{},"気づき",[239,240,241,259,290,307,332,349,369,386,403,441,458,475,492],"tbody",{},[220,242,243,247,250,253,256],{},[244,245,246],"td",{},"1",[244,248,249],{},"WAV の削除（06:31）",[244,251,252],{},"安全版の削除スクリプトと復元スクリプトを作らせて Codex レビュー2回。10件で試し削除してから 4,127 件を削除",[244,254,255],{},"試し10件は成功し、対象外の変化0。全件削除は途中で止まり（残り 1,882 件）、再実行で完了",[244,257,258],{},"消す一覧と消す処理は、別々にレビューする",[220,260,261,264,267,274,277],{},[244,262,263],{},"2",[244,265,266],{},"配布 Excel の外部参照（06:31）",[244,268,269,270,273],{},"Excel の相対パスを絶対パスに。perl の置き換えが当たらず ",[41,271,272],{},"-Mutf8"," を付け、日本語パスの化けは BOM 付きの呼び出し用ファイルで回避",[244,275,276],{},"139 冊すべてで外部リンク0。994 セル一致、動的配列 27 個を保持",[244,278,279,280,283,284,286,287,289],{},"命名は ",[41,281,282],{},"_Final","→日付＋",[41,285,282],{},"→",[41,288,60],{}," と変遷した",[220,291,292,295,298,301,304],{},[244,293,294],{},"3",[244,296,297],{},"R2 の mp3 の実在確認（06:30）",[244,299,300],{},"引き継ぎを読ませ、R2 の実在を全数 HEAD で確かめさせた",[244,302,303],{},"252本中152本があり、100本（18回分）が未着。上げ直して252本すべて 200",[244,305,306],{},"アップロードの完了は、R2 側の実在で確かめる",[220,308,309,312,315,322,329],{},[244,310,311],{},"4",[244,313,314],{},"マインドマップの余白（06:30）",[244,316,317,318,321],{},"部品に ",[41,319,320],{},"bare"," 指定を足させて灰色の余白を消した",[244,323,324,325,328],{},"根から右下へ曲線が出た。枝の線が ",[41,326,327],{},"portrait"," だけを見て向きを決めていたのが原因で、判定を直させると縦のツリーに戻った",[244,330,331],{},"見た目の指定を変えると、別の判定に響く",[220,333,334,337,340,343,346],{},[244,335,336],{},"5",[244,338,339],{},"PC版の全数検証（06:30）",[244,341,342],{},"全数検証を流させたところで、対象が膨大ではないかと確認した",[244,344,345],{},"残り108件を1件ごとに時間切れを付けて流し直させ、PC版108件とスマホ版20件がすべて通過",[244,347,348],{},"変えた版だけを全数にし、変えていない版は境目の1チャプターに絞れば足りた",[220,350,351,354,357,360,366],{},[244,352,353],{},"6",[244,355,356],{},"図の書き出し（07:36）",[244,358,359],{},"ファイル31の書き出し原因を診断（Perl の置換、出力名の衝突、jsx の日本語コメント、heredoc のバックスラッシュ）",[244,361,362,363,365],{},"原因は ",[41,364,117],{}," レイヤーの丸ごと非表示。ファイル単位の切り替えで31は26ページ、33は27ページ",[244,367,368],{},"ファイルによってレイヤーの使い方が違う",[220,370,371,374,377,380,383],{},[244,372,373],{},"7",[244,375,376],{},"重いファイルの書き出し（07:36）",[244,378,379],{},"34をメモリ監視しながら単独で書き出し（前半と後半に分ける案も出した）",[244,381,382],{},"分けずに流し切り、6.6GB まで膨らんだあと81枚を18分で完了",[244,384,385],{},"分割せずに済んだ",[220,387,388,391,394,397,400],{},[244,389,390],{},"8",[244,392,393],{},"囲碁講座の計画書（07:53）",[244,395,396],{},"Codex でレビュー→決裁6件→eurekapu 用に作り直して再レビュー",[244,398,399],{},"1回目3点、再レビュー1点（規約第八条）、eurekapu 版で1点（駄目詰め）を直して「着手可」",[244,401,402],{},"セキの扱いは、日本は第八条、中国は第9条の条文に当てて直した",[220,404,405,408,411,414,438],{},[244,406,407],{},"9",[244,409,410],{},"レビューゲートの差分上限（08:27）",[244,412,413],{},"書き起こしと計画書を両方ともレビュー対象から外した",[244,415,416,417,419,420,70,423,70,426,70,429,70,432,70,435,437],{},"待ったをかけ、計画書の ",[41,418,169],{}," は残して ",[41,421,422],{},".txt",[41,424,425],{},".srt",[41,427,428],{},".json",[41,430,431],{},".tsv",[41,433,434],{},".csv",[41,436,165],{}," を外す形に決定",[244,439,440],{},"外すのは、読んでもレビューにならないものだけ",[220,442,443,446,449,452,455],{},[244,444,445],{},"10",[244,447,448],{},"書き起こし（09:31）",[244,450,451],{},"mlx_whisper に複数ファイルをまとめて渡した",[244,453,454],{},"最初の1本しか出力されず、1本ずつ呼ぶ形でやり直して391本そろった",[244,456,457],{},"まとめて渡すと最初の1本しか出ないことがある",[220,459,460,463,466,469,472],{},[244,461,462],{},"11",[244,464,465],{},"カメラの寄り（12:23）",[244,467,468],{},"⑥ のカメラを、③〜⑤ を隠して ⑥ を真ん中に置く形に直させた",[244,470,471],{},"1.31〜1.44倍の「少しだけ寄る」画が残ったため、しきい値を 1.5 に上げさせた",[244,473,474],{},"中途半端な寄りは、しきい値で切る",[220,476,477,480,483,486,489],{},[244,478,479],{},"12",[244,481,482],{},"取引の図の動き（12:46）",[244,484,485],{},"Q-002 の3枚目で取引の図を SVG アニメにする試作",[244,487,488],{},"取り下げて元の図に戻した（羊の15コマは残した）",[244,490,491],{},"動かせることと、そろえられることは別",[220,493,494,497,500,503,506],{},[244,495,496],{},"13",[244,498,499],{},"CF精算表の場面（17:22）",[244,501,502],{},"「減価償却の直接法と間接法」の場面が表示できないように見えた",[244,504,505],{},"新しいタブで開き直すと表示され、S1-3 は再生バーが0:54まで進んだ",[244,507,508],{},"読み込みが止まったタブを疑う",[77,510],{},[19,512,513],{"id":513},"今日の学び",[52,515,516,519,522,525],{},[55,517,518],{},"削除は「何を消すか」と「どう消すか」を別々にレビューする。消す一覧が Codex の判定を通っていても、消す処理そのものはレビューを通っていなかった",[55,520,521],{},"直接の指摘を6つの観点に言い換えておくと、指摘していない回にも同じ物差しを当てられる。説明の回10本のうち9本に当てはまる場面があった",[55,523,524],{},"書き起こしで照合すると、文は正しいのに声が違う、という食い違いを拾える。「百五十万円」の崩れは1本ではなく、9本すべてに共通していた",[55,526,527,528,530],{},"ゲートから外すのは、読んでもレビューにならないものだけにした。計画書の ",[41,529,169],{}," はレビューに残した",[77,532],{},[19,534,535],{"id":535},"明日やること",[52,537,540,550,556],{"className":538},[539],"contains-task-list",[55,541,544,549],{"className":542},[543],"task-list-item",[545,546],"input",{"disabled":547,"type":548},true,"checkbox"," 囲碁のルール講座を本番へデプロイする",[55,551,553,555],{"className":552},[543],[545,554],{"disabled":547,"type":548}," 間接法の導入で止まった仮の声の合成（12本中6本まで報告済み）を再開する",[55,557,559,561],{"className":558},[543],[545,560],{"disabled":547,"type":548}," 「百五十万円」が「五十万円」に聞こえる原因を調べる",[77,563],{},[19,565,566],{"id":566},"関連記事",[52,568,569,573,577,581,585],{},[55,570,571],{},[72,572,75],{"href":74},[55,574,575],{},[72,576,105],{"href":104},[55,578,579],{},[72,580,141],{"href":140},[55,582,583],{},[72,584,178],{"href":177},[55,586,587],{},[72,588,207],{"href":206},{"title":590,"searchDepth":591,"depth":591,"links":592},"",2,[593,594,602,603,604,605],{"id":21,"depth":591,"text":21},{"id":31,"depth":591,"text":31,"children":595},[596,598,599,600,601],{"id":35,"depth":597,"text":36},3,{"id":81,"depth":597,"text":82},{"id":110,"depth":597,"text":111},{"id":146,"depth":597,"text":147},{"id":183,"depth":597,"text":184},{"id":212,"depth":591,"text":212},{"id":513,"depth":591,"text":513},{"id":535,"depth":591,"text":535},{"id":566,"depth":591,"text":566},"diary",null,"R2に溜まったTTS音声のWAV 4,127件を、Codexレビューを通した削除スクリプトで筆者が自分で消した。囲碁のルールをストーリー版講座にして公開設定まで進め、財務諸表講座の動画プレイヤーと参考書のWebスライドを直した。","md",{},"/2026-10-15-diary","daily-log",false,"2026-10-15T00:00:00.000Z",{"title":5,"description":608},"make-diary","2026-10/2026-10-15/diary-2026-10-15",[619,620,621,622,623,624],"日記","動画講座","R2","Codex","Illustrator","囲碁","8EenNSJLbTHTJ0aqeIkRds6Zsmb9zmfqMiyINDIlpQk",[],[628,632,636,639,643],{"title":629,"path":630,"publishedAt":631},"2026年10月14日の開発日記 - 講座18講の台本完成、Cloudflare課金の点検、ランドマーク地図を公開の手前まで","/2026-10-14-diary","2026-10-14T00:00:00.000Z",{"title":633,"path":634,"publishedAt":635},"2026年10月18日の開発日記 - 講座4本を並走させ、どれも引き継ぎで閉じた日曜","/2026-10-18-diary","2026-10-18T00:00:00.000Z",{"title":637,"path":638,"publishedAt":635},"簿記ストーリー講座の図を電子書籍の素材へ差し替える。Illustratorが開いていないように見えた理由と430コマの置き換え","/bookkeeping-story-ebook-figure-replace",{"title":640,"path":641,"publishedAt":642},"2026年10月16日の開発日記 - 読み上げ音声をMacに任せ、Windowsで教材の図と台本を直した日","/2026-10-16-diary","2026-10-16T00:00:00.000Z",{"title":178,"path":177,"publishedAt":614},"https://log.eurekapu.com/og/blog/2026-10-15-diary.png?v=2026-10-15T00%3A00%3A00.000Z&title=2026%E5%B9%B410%E6%9C%8815%E6%97%A5%E3%81%AE%E9%96%8B%E7%99%BA%E6%97%A5%E8%A8%98%20-%20R2%E3%81%AEWAV%204%2C127%E4%BB%B6%E3%81%AE%E5%89%8A%E9%99%A4%E3%80%81%E5%9B%B2%E7%A2%81%E3%81%AE%E3%83%AB%E3%83%BC%E3%83%AB%E8%AC%9B%E5%BA%A7%E3%80%81%E8%B2%A1%E5%8B%99%E8%AB%B8%E8%A1%A8%E8%AC%9B%E5%BA%A7%E3%81%AE%E5%8B%95%E7%94%BB%E3%82%92%E7%9B%B4%E3%81%99&author=Kei%20Komatsu&sig=ca8841e6dbf08af7",1792550156794]