Excel講座にFILTER関数の章と演習を追加した日:Ctrl+[で構成を見直し、ナレーションは合成音声を手本に自分で録る
Excel講座にFILTER関数の章と演習を追加した日
Excel 講座に FILTER 関数の章を足すと決めたのは、Ctrl+[ を押したときにどこへ飛ぶか、という観点からだった。 ただ、講座の再現動画を作るエンジンは、その時点で FILTER のスピルに対応していなかった。
その前の朝には、別のリポジトリでナレーションの声の扱いを決め直していた。 合成音声は下書きにして、本番は自分の声で録る。
合成音声と自分の声の分担(朝)
9月30日に作った計画を探してもらうところから始めた。 irodori-tts で合成している台本の読み上げを、自分の声の録音に差し替える画面を作る計画が、どこかにあったはずだった。 見つかった計画書は、eurekapu-nuxt4 ではなく sns-shorts リポジトリにあった(ビューアーで読みを直し、本人の声で録り直せるようにする計画)。 確認用のページも 3200 番台だと思っていたが、sns-shorts のビューアーは 3400 番だった。
試しに1文だけ自分で録り、差し込んで作り直してもらった。 録った声は拍1に入り、話速の倍率は 0.89、グリッド検査も OK だった。 マイクや部屋が違う声を1文だけ混ぜると、どうしても浮いて聞こえる。 ただ、測ってもらうと音量そのものは揃っていて、違って聞こえる原因は別のところにありそうだった。
今回入れた声は、合成音声とそれほど違わなかった。 それでも考えが変わった。 60秒以内の動画なら一旦は合成音声で作るが、本番に出すときは全部自分で録り直してもいい。 自分のトーンで感情や起伏を入れたほうが聞きやすいし、1分の全文を録り直すなら録音の環境も揃う。
そこで前提を「合成の声は下書き、投稿する版は1本の全文を自分の声で録り直す」に切り替え、計画書を含む3か所に書き込んでもらった。 全文を録り直すパターンなら irodori-tts のほうになるのか、とここで納得した。 Excel 講座も同じ前提だった気がして確かめてもらうと、9/25 の時点で「本番は全部自分で読む」と決めてあった。
役割分担も決めた。
- irodori-tts の合成は今までどおりで、変えない
- 下書きの声では、テンポと話している内容を自分が確かめる
- 録るときは、BPM 120 で出た声を聞いて「これぐらいの速さで話せばいいのね」と手本にする
- 今回決めたルールを使うのは、読みを修正するときだけ
途中で「dev サーバーが止まっていたので起動し直した」という報告が来て、すぐに訂正が入った。 9:11 に起動した dev サーバー(PID 27508)は、実際には止まらずに動き続けていた。
Ctrl+[ で関数を並べ直す
10時半ごろから Excel 講座に移った。 Ctrl+[ は計算結果ではなく、数式に書かれた参照範囲を選択する。 この観点で並べると、FILTER は INDEX/MATCH と同格で、外れるのは VLOOKUP だけだ、という答えが返ってきた。
ここで FILTER の演習は入れざるを得ない、と思った。 引っかかったのは、最初の表で XLOOKUP も「同上」と扱われていたことだ。 INDEX/MATCH なら Ctrl+[ で第1引数の数値の部分に飛ぶが、XLOOKUP はそうではない。 そう聞き返すと、表の訂正が返ってきた。 Ctrl+[ は数式で最初に出てくる参照に飛び、XLOOKUP の第1引数は作業シートの検索値なので、マスタには飛べない。 マスタに飛べるのは、第1引数が返す範囲になっている INDEX と FILTER だけだった。 XLOOKUP は入れず、FILTER は入れる。 置き場所は、INDEX/MATCH関数_演習の直後、SUMIFS関数の前に独立した章として挟む案になった。
特定の箇所だけでなく、全体の構成を考え直したほうがいい気もした。 そこで FILTER を入れる前提の拡充計画書を作らせ、Codex のレビューまで進めてもらった。 調べていく途中で、シーン再現エンジンが FILTER のスピルに対応していないことが分かった。 実機の Excel でも試してもらい、FILTER はスピル先のセルからでもマスタへ飛べることを確かめた。 Codex のレビューは「致命的な指摘なし」で通った。
判断事項は4件で、計画書 HTML の回答フォームで答えた。 4件とも推奨案(A)を選び、コメントは付けていない。 D1 の中身は、FILTER の章と演習を INDEX/MATCH関数_演習の直後に置き、内訳の検算演習だけを「SUMIFS関数_演習 02」に回す、というものだ。
すぐ実装に入るかは迷った。
コンテキストは24%で、今やってもよさそうに見える。
ただ、別のセッションでもこの講座にかなり手を入れていて、今やると重複するかもしれない。
ワークツリーを切ってそこでやるのを勧められた。
再開用のプロンプトは、ダウンロードフォルダのテキストファイル(excel-filter-expansion-prompt.txt)に書き出してもらった。
worktree で FILTER の章を入れる
11時過ぎ、そのテキストファイルを渡して新しいセッションを始めた。
章を挟むと、ページ内のリンクに使っている ?ci= の番号がずれる。
まず番号に依存する箇所を洗い出させた。
実測の段では、つまずきが2回あった。
Excel の実測スクリプトは、PowerShell の配列の平坦化で止まった。
直して再実行すると、今度は、Ctrl+[ を押すと A1 に移ってしまう、という不可解な結果が出た。
こちらは切り分け用の短いスクリプトで原因を確かめてもらい、実測結果を excel-facts.md に書き込んだ。
横展開の修正では、別セッションとの衝突を先に見た。
別セッションが NG 集を直していたのは 508〜542 行付近で、今回直す VLOOKUP の節(700 行付近)とは重ならなかった。
直したのは、表示されるイントロ(contents.vue)、「1行1件」の原則、NG 集の「VLOOKUP関数は使わない」、XLOOKUP のまとめと実務の二段構え、といった箇所だ。
FILTER の章は、6節と演習2本、それに SUMIFS関数_演習 02 という構成に固まった。
関数一覧ページは ?ci= を直書きしていたので、SUMIFS 以降(ci=10〜16)を2つずらした。
一覧ページのリンクは31本すべて、名前どおりの節に着地した。
設計の原則(ReadableSheets)の節は、子要素の数を19のまま保ち、既存の読み上げで光らせる位置がずれないようにした。
テストは 5/5 で通り、ブランチ excel-filter に 97edbdb4 でコミットした。
画面を確かめてから、追加で頼んだ。
講座の本文だけでなく、動画コンテンツのほうも FILTER 関数で作ってほしい。
「契約書」と言ってしまったが、計画書のことと解釈して追記してもらった。
自分の確認作業は、localhost のフルパス付きで Google タスクに残した。
残っていた作業として、読み上げで「FILTER」を「フィルター」と読ませる対応を足し、8030b85e でコミットした(Codex のレビューは指摘なしで通過)。
改行だけが変わった2ファイルは、git checkout での破棄が拒否されたので、そのまま残してある。
ワークフローで再現動画を作る
12時、次のセッションで Step 4(再現動画の FILTER 対応)に入った。
worktree に main をマージ(d973fc03)してから、Workflow で複数のエージェントを順につなぐ形にした。
エンジンのスピル対応、再現シーン9本の台本、一覧ページ、登録、画面検証という流れで、全体は約8体だ。
起動してから気になって聞いた。 3並列くらいなら、普通のサブエージェントを使うのと同じではないか。 答えは「はい」だった。 同時に動いたのは最大4体(シーン台本3体と、一覧ページと語りの整合の1体)で、全体では8体を順番につないでいた。
そこからは待つ時間が長かった。 ワークフローが終わるまでに、進捗を6回聞いている。
- 開始から約20分:最初の段(エンジン担当)がまだ動いている
- 約40分:エンジン担当がまだ終わらず、後ろの3段は未着手
- エンジンの段は 12:59 に終わり、シーン台本9本も書き上がった
- 登録の段に入って約14分
- 14:05ごろから、2体が並行して再現シーンを Chrome で開き、スクリーンショットで確かめていた
8体ともエラーなしで終わった。
計画の段階で FILTER のスピルに対応していなかったエンジンには、FILTER とスピル、Ctrl+[ のスピル先対応、スピルの青い枠が入った。
Codex のコミットレビューを経て e89256f2 でコミットし、FILTER の再現シーン9本が画面で動くことも確かめた。
音声が無かったので GPU で12本
ところが、再現シーンに音声が無い。 聞いてみると、音声はまだ一度も生成していなかった。 他のセッションでは GPU を使っていないはずなので、使うよう伝えた。
対象は12本になった。
FILTER の再現シーン9本、語りを直した XLOOKUP と NG 集 VLOOKUP の2本、関数一覧ページの動画の語り1本だ。
途中で聞いたときは12本中6本が終わっていて、その先頭は filter-when(142秒)だった。
XLOOKUP と NG 集の2本は、変えていない文を前の音声から使い回せたので、それぞれ1分足らずで終わった。
最終的に12本とも失敗はなく、再現シーン11本は話速が BPM120 にそろい、文の出だしが小節の頭に来ることも確かめた。
9/25 に決めたとおり、Excel 講座も本番の声は自分で読む。 この12本は、朝の役割分担に当てはめれば、テンポと内容を確かめるための下書きの声にあたる。
自分のレビューは途中まで進んでいる。
進捗を計画書の冒頭に「進捗メモ」として残させ、続きを明日(10/3)の Google Tasks に登録した。
計画書と実測、進捗メモの12ファイルは main に 384cc629 でコミットした。
コードは excel-filter ブランチの e89256f2 にある。
振り返り
- Ctrl+[ でどこへ飛ぶか、という一つの観点で関数を並べ直すと、入れる関数と入れない関数が分かれた。FILTER は入れ、XLOOKUP は入れない
- 合成音声は本番の声ではなく、テンポと内容を確かめる下書きで、録るときの速さの手本になる
Workflow を使った今回の Step 4 は、同時に動いたのが最大4体で、並列の幅は普通のサブエージェントと変わらなかった。 違うのは8体を段でつないだところで、その1段目だけで40分を超えて待った。