Claude Codeの並列セッションでExcel操作動画を作る:CF精算表講座をStep 2〜5まで進めた一日
Claude Codeの並列セッションでExcel操作動画を作る:CF精算表講座をStep 2〜5まで進めた一日
夕方に開いたセッションで「resume」と打った。 Claude Code から返ってきたのは、「いま eurekapu-nuxt4 のセッションが私のほかに3つ動いています」という確認だった。 CF精算表の作業は、朝は1本のセッションで進めていた。 夕方には、Step ごとに別のセッションが並んでいた。
やっていたのは、CF精算表(キャッシュフロー精算表)講座の Excel 操作シーンを、Step ごとに動画にしていく作業である。 Step 1 を仕上げ、Step 2 と Step 3 を順に進め、Step 3 の途中で Step 4〜6 を別のセッションへ切り出した。
一つだけ、気がかりを抱えたまま閉じた Step がある。 Step 3 を閉じるとき、自分は「利息のところが気になってはいる」と言いながら、一旦完了にした。
朝のセッションで Step 1 を仕上げ、再生速度を足した
9時台のセッションは、ダウンロードフォルダに置いた引き継ぎのテキストファイルを渡して始めた。 Claude Code に計画書を書かせ、Codex のレビューを通してから、判断フォームで4項目を選んだ。 4項目とも推奨案にした。
実装で目を引いたのはカメラの動きである。 CF精算表のシートでは、カーソルを当てている間は寄り(100%)になり、確かめる場面では引き(シート全体、約52%)になる。 台本にカメラの指定は書かず、エンジンが操作から自動で決める形にしてもらった。
改修の前には、今の試作の全コマをハッシュにしてテストへ固定させた(8,220コマ、274秒)。
計算の部分では、空のセルを指す数式(=H4 で H4 が空のもの)を、Excel と同じく 0 として返すように直させた。
数式を読んで書き戻す往復は、228本すべて一致した。
値の計算ではエラーが106件出たので、原因を調べさせた。
最後まで残った O14〜O16 の3セルは、実物の Excel でもエラーになるセルだった。
プレビューには、再生速度の切り替え(1倍、1.5倍、1.75倍、2倍)を頼んで足してもらった。 最初の計測では、1.5倍にしても4秒で4.7秒しか進まず、約1.17倍にとどまっていた。 再生を始めてすぐボタンを押す手順で測り直させ、最終的に4段の切り替えが入った。 声の高さは変わらず、速さだけが変わる。 書き出す MP4 は1倍のままにしてある。
「次って何する予定なんでしたっけ」と聞いて、計画書を Chrome で開いてもらった。 そこで、Step 2 は Dropbox の CF_304(9/14 版、消費税込み)を正本にすると指示した。 講義ノートの数字も消費税込みの版に書き換えて、動画とそろえる。 Step 1 は数字が同じなので触らない。
Step 2 の計画書を作ったところで区切り、引き継ぎのプロンプトを受け取った。 Claude Code はまずチャットに出してきたので、ダウンロードフォルダにテキストファイルで置くよう頼み直した。 9時台から15時台のセッションは、どれもそのテキストファイルのパスを貼るところから始まっている。
Step 2 は動画2本と講義ノート、そしてサイドバー
12時台のセッションでは、関数6つと、「必要なセルだけ計算する」評価器を足させた。 作業の途中で、1コマの描画は平均 68ms から 9ms に下がった。
動画は2本に分けた。 動画 A は取引モジュールから年次推移表まで、動画 B は CF精算表と法人税、チェック2と3である。 本人の声で合成した長さは、A が342秒、B が316秒だった。
数字の検算は3段で回させた。 3段とも 2,482/2,482 で一致し、2段目のセル比較では37,670セル中の違いが0だった。 講義ノートの数字は、符号付きで77件を突き合わせて全件一致した。 さらに、ページの「△1,607,650」を1か所だけ「1,607,650」に変えて、突き合わせが誤記を検出できるかも確かめさせた(確かめたあとすぐ戻した)。
講義ノートでは、モバイル幅で表3つが30〜55px はみ出していたので、横スクロールの枠で包ませた。 CFWS の年度が「2,022」と表示されていたのも直させた。
動画を見て、大きな問題はないと判断した。 TTS の読みの修正は後回しにして、スクリプトが正しければ一旦それで進めると伝えた。
ところが、2本目の動画がどこで見られるのか、自分で分からなくなっていた。 そこで、プレビューの左側に動画一覧のサイドバーを作ってもらった。 当時の動画は4本(Excel 基礎講座1本、CF精算表ステップ学習3本)で、「講座 → 動画」の2段にした。 各動画に「音声あり」「MP4あり」の印が付き、どこまでできているかが一目で分かる。
このセッションの引き継ぎも、チャットに出てきたものをダウンロードフォルダのテキストファイルに出し直してもらった。
Step 3 の途中で、Step 4〜6 を別のセッションへ切り出した
14時台に Step 3(貸付金、CF_302)を始めた。 計画書の判断4件は、すべて推奨案(A)にした。
ここで並列化を相談した。 Claude Code に Step 4〜6 の題材と共有ファイルを洗い出させ、セッションを並べるための下地を作らせた。
- 合成(Irodori)と Excel の COM 検算を、4つのセッションが同時に走らせないための排他ロック
- Step 4〜6 用の worktree を3つ(Git LFS のファイルが worktree ごとにコピーされても、1つあたり約280MB で、空きは150GB あった)
- 3つのセッションに渡す引き継ぎプロンプト(ダウンロードフォルダに書き出し)
この下地のコミットでは、Codex のコミットレビューで3件の指摘が出た。 Claude Code は3件とも実際に起きうると見て high 相当と判定し、直した。 別に出た、クラッシュ後の PID の再利用についての指摘は、待たされるだけで二重実行にはならないとして low と判定し、理由を残して見送った。
ロックが効いているところも見た。 別のセッション(関数の活用)が Irodori で合成している間、こちらのテストは順番を待っていた。
CF_302 の作り直しは自分で許可した。
その前に、それまでの作業をコミットして push すること、今の版を old/ に移すことを指示した。
生成スクリプトを1行直すと、返済表がシートの数式と合うようになった(2022年は14,049)。
動画は3本(3a、3b、3c)に分けた。 静止画で確かめさせると、読めない場面がいくつか出てきた。 引きの画で2つのまとまりが1つに合わさり、文字が約11pxまで縮んだ場面があった。 52行をまとめて埋めるコピーの場面では、カメラが引きすぎて文字が約6pxになった。 どちらも直させ、文字は読める大きさに戻った。
共有ファイル scenes.ts で、セッション同士がぶつかった
並べたセッションが実際にぶつかったのは、シーンの一覧を持つ scenes.ts だった。
シーンは、このファイルに登録して初めてプレビューと API に出る。
朝のセッションでも、別のセッションがコミットしている最中で index.lock が残っていた。
このときは、ロックを消さずに待たせた。
最初の衝突は Step 2 のセッションで起きた。
別のセッション(5c)のコミットに、こちらの scenes.ts の変更が混ざって入った。
そのコミットは、まだコミットしていないこちらのファイルを読み込む状態だったので、HEAD が一時的に読み込みエラーになった。
こちら側のファイルをコミットして直させ、5c にも事情を伝えさせた。
Step 3 では、共有のインデックスに 5c のステージ済みファイルがすでに入っていた。 そこで、自分の変更だけを入れた一時インデックスを経由してコミットさせた。
Step 5 のセッションでは、main への載せ直しのあと、衝突の印が1行だけ scenes.ts に残った。
改行コードが CRLF で、置換が当たらなかったためである。
印を消して、直前の途中コミットに畳み込ませた。
合流の直前にも、main 側に誰かがコミットしていない scenes.ts の変更が残っていて止まった。
自分から「別のセッションの方に一言、メッセージを送っておいてください」と頼んだ。
どれが持ち主か一覧からは分からなかったので、同じ文面を3つのセッション(5c、bd、6a)に送らせた。
6a からは、自分のものではなく担当は 5c だという返事があった。
5c がコミットしたあと、載せ直してテストを流し、main に合流させた。
Step 4 のセッションでは、git rebase main が許可されずに止まった。
「リベースしていいっすよ」と返し、scenes.ts と系列の定義の2か所の衝突を、両方の行を残す形で解かせた。
利息の気がかりと、3万6240円
Step 3 の動画3本と講義ノートは、検算まで終えて push した。 自分はここで、利息のところが気になると言いつつ計画書を閉じさせた。 積み残しは6件あり、計画書の §13 に書き込ませた。
そのあと、気になっていた中身を言葉にした。 3万6240円が、取引モジュールのキャッシュインフローと合っているのか。 CF精算表で文字色が緑のセルは、ほかのシートを参照している。 なかでも利息の受取額は、緑の文字のセルとしては唯一だと思っていた。 だから、Ctrl+[ で参照元のシートへ飛び、どこから集計しているかを動画の中で確かめる流れを入れてほしいと頼んだ。 ほかのシートでも同じことをしてほしい、とも伝えた。
5c がエンジンに足したばかりの Ctrl+[ の操作を使わせて、3b と 3c に出どころをたどる流れを入れさせた。 台本が変わったので、音声は変わった文だけを合成し直した。 「他のシートでも」という依頼は、Step 4〜6 のセッションへ転送させた。 その後、Step 5 のセッションからは、5b と 5c に同じ流れを入れたという連絡が届いた。
数字そのものの整合性は、Step 4(借入金、CF_301)のセッションで確かめることになった。 Step 4 でも、生成スクリプトの初回の利息を日割に直していた。 「ステップ3かな」と見当を付けつつ、ほかのステップとの整合性も確認しておいてと頼んだ。 Claude Code に、同じ種類のずれ(生成スクリプトの値とシートの数式の食い違い)をステップ横断で探させた。
探させると、Step 3 と Step 4 の数字は裏返しで一致していた。 2022年は24,076、14,049、10,027、2023年は26,213、36,240 である。 同じ種類のずれが残っていたのは、総合演習の CF_300 だけだった。
CF_300 は、夕方の Step 7 のセッションで作り直した。 そのセッションからは、作り直した版では受取利息と支払利息が24,076に変わり、利益と法人税と期末現金は変わらなかったという知らせが届いた。 取引モジュールとの突き合わせは、動画の中で Ctrl+[ でたどって見せる形に落ち着いた。
メモリ不足と、応答しない Chrome DevTools MCP
セッションを並べていた午後から夕方にかけて、PC のメモリが何度も足りなくなった。 Step 4 のセッションでは、空きが 2.1GB / 32GB まで減り、Claude Code が裏の処理を3つ止めた。 判断フォームのサーバーも同じ理由で止まった。
Chrome DevTools MCP も応答しなくなった。
Step 4 と Step 5 のセッションで、new_page と list_pages はどちらも30分応答がないまま打ち切られた。
Step 5 のセッションでは、描画の確認をヘッドレスの Chrome に切り替えさせた。
Step 5 では、dev サーバーを止めて空きを 3.5GB に戻した。
回帰テストは裏に回さず、2回に分けて手前で流させた。
MP4 の書き出しは ffprobe が見つからずに止まったが、Step 4 と Step 5 のどちらも FFMPEG と FFPROBE の環境変数で場所を指定して通した。
途中、Step 5 のセッションが英語で返答していたので、「全部日本語でお願いしますよ」と伝えた。
試行錯誤
| セッション | 試したこと | 結果 |
|---|---|---|
| 09:14 | 再生速度 1.5倍を計測 | 4秒で4.7秒(約1.17倍)。測り直して4段の切り替えが入った |
| 12:14 | 別のセッションのコミットに自分の scenes.ts が混入 | HEAD が一時読み込みエラー。自分側をコミットして復旧 |
| 14:22 | 引きの画とコピーの場面を静止画で確認 | 文字が約11px、約6pxに縮む。直して読める大きさに戻った |
| 14:55 | git rebase main を実行 | 許可されず停止。許可後に2か所の衝突を両側残しで解消 |
| 15:17 | main へ載せ直し | CRLF のため衝突の印が1行残る。削除して畳み込み |
| 15:17 | 合流前の main に他人の未コミット scenes.ts | 3セッションへ同じ文面で連絡。持ち主の 5c がコミットしたあとに合流 |
学び
- 並列のセッションは、共有ファイル1つ(
scenes.ts)に書き込みが集まるところでぶつかった。持ち主の分からない変更は、候補のセッション全部に同じ文面で頼み、返事で持ち主を特定した。 - 利息の気がかりは、Step 3 の中だけでは片付かなかった。Step 4 のセッションでステップ横断に探させると、Step 3 と Step 4 の数字は裏返しで一致し、ずれは CF_300 にだけ残っていた。
残っていること
- Step 3 の動画3本の試聴(TTS の読みの修正は後回しにしている)
- Step 3 の積み残し6件(計画書 §13)
- Step 6(法人税等、CF_306)の計画書。夕方の時点では、まだ作られていないようだった
- Step 7(総合演習)の実装。判断5件は全部推奨で確定し、CF_300 も作り直した。Step 5 の合流で数式エンジンに AND が入り、
#NAME?は消えた。実装を待つ前提があと2つある - Step 5 の合流分の push(合流の時点では push していない)