列見出しは白抜きと下線だけ。SVG図解の規約を番号で管理し、生成スクリプトの無い127枚を作り直した日
同じ修正を、もう一度頼むことになった
朝は前日の引き継ぎドキュメントから再開した。 税務の講義用テキストの図をSVGに直す作業で、所得税法のレビューの続きと、冊をまたぐ宿題が3件、台帳のtodoが残っている。
ビューアに次の図を出させて、すぐ手が止まった。 「区分」という列見出しと、その下の1レコード目がくっついている。 1つ前の図はバージョン2になっていて、そちらには見出しと本体のあいだに隙間がある。 同じ修正を一括でかけたはずなのに、この図には届いていない。
白抜きと下線だけに統一する
頼み方を変えた。 列見出しは白抜きと下線だけにする。 帯の塗りつぶしも囲みも使わない。 それを規約として確定させ、番号を振らせた。
まず現状を測らせた。 全322枚をスキャンして、見出しの描き方が今どうなっているかを出させてから当てにいった。 22枚に一括適用。 途中で変換の不具合が出た。 帯が二重に描かれている図があり、片方しか消えていない。 いったん全部戻してから直させた。
記録が時系列だと、規約が読み取れない
修正ログのHTMLを開いて、これは時系列に並んでいるだけだと気づいた。 14番目に書いてある「列見出しは白抜きと下線だけ」は、その日1回の修正ではなく以後ずっと効くルールだ。 時系列の中に埋もれていると、次に同じ判断をするときに探し出せない。 規約の単位で整理し直してほしいと頼んだ。 上がってきたのは、現行ルールの表と時系列の記録を層に分けた1枚のHTMLだった。
整理の途中で、記録そのものが書き換わる仕掛けが見つかった。 過去のエントリの「修正後」の画像が、現在公開中のファイルを指している。 今日の規約変更でその図の見た目が変わったので、当時の記録の画像まで一緒に変わってしまう。 全件を機械で検出させたら、最初のロジックはこのエントリ自身を拾えなかった。 条件を直させて洗い直した。
候補に挙がった63枚
この規約を全ての図に当ててほしい、と頼んだ。 あわせて確かめたいことがあった。 この図はスクリプトから作っているはずだ。 ピクセル単位で座標が決まっているのだから。
当て漏れを機械で探させたら、候補が63枚出た。 中身を見ると大半は組織図やフローの先頭ボックスで、列見出しではない。 帯の中の文字属性で分類し直させて12枚。 そこからさらに一覧で目視して線を引いた。 「組織」「事務内容」のような列の名前は当てる。 「構成比」や「【課税標準】」のような図中のセクション見出しは外す。 20枚に確定し、旧版を退避してから適用した。 ここでもバグが2つ出て(復元時に壊れた線が残る、1枚はもともと下線があった)、最終的に19枚が入った。
一括適用と言っても、最後は自分の目で1枚ずつ線を引くことになる。
株主名と持ち株数のあいだ
法人税法の図で、もう一つ引っかかるものが出た。 株主名と持ち株数が並んでいる。 代表取締役Aの持株数は18、という具合だ。 これはテーブルデータだ。 レコードとレコードのあいだは離れているのに、株主名と持ち株数のあいだには何もない。 行と行のあいだと同じ幅で開ければ、これが表だと目で分かる。
構造を調べさせたら、1レコードが1つの箱で、その中に株主名(左寄せ)と持株数(右寄せ)が同居していた。 同じ形の図は5枚だけ。 列の位置は原図の設計どおりに割り出せて、ある図では見出しの中心と完全に一致した。 箱を列ごとに割る規約を1本足した。
面白かったのは順序のほうだ。 箱を割って初めて、「見出しは箱の幅に合わせる」という前の規約が適用できる状態になる。 当てる順番も含めて直させた。 ここでも取りこぼしがあった。 列を割る処理が、今回足した属性つきの箱を拾えない。 背景の白い矩形まで割ってしまう。 1つずつ潰した。
生成スクリプトが残っていない127枚
洗い出しの結果は、予想したとおりだった。 127枚は生成スクリプトが残っておらず、SVGだけがある。 これだと、今日のような規約を足すたびに手で座標を触ることになって、微修正ができない。 規模は大きいが、スクリプトから全部作り直すことにした。
要件は一つだけ置いた。 既存の見た目を変えずにスクリプト化すること。 レビューの済んだ3冊分がある。 そこを勝手に描き直したら、ここまでの積み上げが崩れる。
作業そのものは別セッションに切り出した。 サブエージェントを7体並列で走らせ、途中でセッションの上限に当たって止まり、解除後に残り3体を回した。 確定版127枚に、監査の誤検出で漏れていた2枚を足して129枚。 採用版との機械照合は129枚中129枚が一致し、見た目の変わった図はゼロだった。
その流れで、閲覧用のビューアがどこにあるかを確認した。 作業中に見ていたのは開発サーバー上の図ギャラリーだった。 一覧のHTMLは無かったので、129枚を1ページに並べたものを作らせた。 並べて眺めたらすぐ気づいた。 ヘッダーのところに、線が1本余分に入っている。 指摘は4件になった。 見出しを下線の幅に対して中央へ寄せる、箱を持たない見出しにも下線を出す、といった直しが入っている。 見た目が変わったのは14枚で、残る308枚は要素単位の照合で変更なしだった。
追い越す矢印はアーチにする
昼からは消費税法の図に移った。 事業区分の判定フローで、第1種から第6種までの並びと、その横のボックスが近すぎる。 矢印が別の分岐の「いいえ」の上にかぶっていて、どこへつながっているのか読めない。 加工賃などを対価とする役務の提供に当たるなら第4種へ行くはずなのに、その線が別の分岐に食われている。
原図を見ると、線が他の線を追い越すところはアーチを描いていた。 これは1枚の話ではなく規約にしたほうがいい。 共通部品に入れさせた。 ほかに、斜めに走っていた矢印を90度折れに直させた。 親の箱の高さは子の上端から下端にピクセル単位で合わせさせ、下端が切れていた1枚には注記を本文から復元させた。
点線が結んでいた相手
相続税法の親族関係の図では、点線のつなぎ先が間違っていた。 AとXの父が点線で結ばれている。 BとCの点線は、今度はXの父に入っている。 そもそも点線は2種類要る。 ドットの大きいものと、小さくて隙間の細かいものを描き分ければ、意味の違う関係を1枚に載せられる。
原図を分割して拡大させ、点線の走り方を読み取らせた。 点線は結ぶ線ではなく、囲む輪だった。 甲と共通する親をどこまで持つかを囲んでいる。 全血の輪には先妻と父とAが入り、甲は入らない。 意味が分かってから引き直させたので、2種類の点線に役割を割り当てられた。 相続税法はほかに気になるところが無かったのでOKにした。 国税徴収法もざっと見て、こちらも一旦終了と判断した。 国税通則法の図では、ブロック矢印を普通の矢印に直させている。
間接税法では、酒類の製造工程図6枚に手を入れた。 縦が工程の進行、横が原料や製品の系統という構造が6枚で共通していたので、横軸に意味を持たせるレーン構成に作り直させた。 原料用アルコールの3つの作り方、ワインの搾る順の違い、といった具合だ。
本番に上がっていない気がする
夕方、少し引っかかった。 今日はコミットが別セッションと何度も混ざっている。 ステージした直後に向こうが全ファイルをコミットしてしまい、図の20ファイルが別件のメッセージの中に入っていたこともあった。 修正ログの採番も衝突して振り直している。 最初のコミットは学習ゲートを通したが、以後はスキップを指示した。
それならR2へのアップロードも、向こうの作業に巻き込まれて漏れているのではないか。 本番で確かめてほしいと頼んだ。
今日変更した124枚を本番とmd5で突き合わせさせた。 118枚は反映済みだった。 別セッションのアップロードに自分の分も乗って上がっていた。 残る6枚は直前に作った製造工程図で、これだけが旧版のままだった。 さらに一段あった。 オリジンが最新でも、エッジキャッシュが旧版を返している。 キャッシュに載ってから約17分たっていた。 推測は半分当たりだった。 上がっていなかったのは6枚だけで、他は上がっているのに見えていなかった。
基準はまだ揺れている
朝に手が止まった図に戻る。 あの図へ修正が届かなかったのは、頼み方が「この図のマージンを入れて」だったからだ。 対象がその1枚に閉じていた。 番号を振って規約にしたら、全322枚を点検して当て漏れを拾う作業になった。
前日、原図に無い矢印は消させたのに原図に無い欄は足させた、と書いた。 今日はさらに足す側へ寄っている。 原図に無いマージンを開け、原図で1つだった箱を列ごとに割り、原図がたまたまアーチだった描き方を全図の規約にした。
一方で、127枚の作り直しには「見た目を変えるな」を要件として置いている。 同じ日に、片方では原図を離れ、片方では現状を凍結している。 対象が違うのだから矛盾ではない、と説明はできる。 レビューを通した図は読み手が意味を取れる状態が正で、まだ通していない図は現状が正だ。 ただ、レビューを通す前の図に今日の規約を当てるとき、自分がどちらを見て判断しているのかは、やはり言い切れない。