研修教材の図をSVGに作り直し、Before/Afterギャラリーを図が主役の並びに直した
研修教材の図をSVGに作り直し、Before/Afterギャラリーを図が主役の並びに直した
セッションを開いて最初に打ったのは、作業の指示ではなく待機の指示だった。 別のセッションで組んだプロンプトをあとから自分の手で貼りにくる予定だったからだ。 このセッションは丸一日、税務の講本の図をSVGに作り直す担当になった。
前の日に残した宿題は「どの図をどこまでSVGに起こすか」だった。 並べてみないと決まらない、と書いてある。 その並べる場所が、Before/Afterを横に置く作業用のギャラリーである。
権利の確認から始めさせた
作図より先に、権利を確認していない図が5枚残っていた。 原本のPDFに当たらせて確認させた。 5枚とも第三者の出典が入っていない自作図だったので、そのまま起こしてよいと判断がついた。 このときに、図の名前が原本のページ番号と一致しているかどうかも突き合わせた。
入門にあたる分野は14枚で、13枚をSVGにして1枚を除外した。 このうち最大の図は40項目が入る機構図で、座標を手で置くと必ずどこかがずれる。 そこはスクラッチパッドに生成スクリプトを書かせて、数字から座標を出す形にさせた。
61枚をまず仕分けさせる
所得税の分野は61枚あった。 全部をSVGに起こす必要はないはずで、表として組んだほうが読める図も混ざっている。
そこで、読み取り専用の仕分けエージェントを4本並行で走らせた。 返ってきたのはSVGが37枚、表が22枚、対象外が2枚という内訳だった。 判断を台帳に書き戻してから、基準になる2枚だけを先に作らせている。
残りは作図エージェントに分担させた。 このとき、守ってほしい規約はスキル名を渡すのではなく、指示文の本文に丸ごと埋め込ませた。 出てきたものは全数を自分の目で見た。 機械の検査を通ったことと、図として読めることは別の話だからだ。
親族図だけは保留にした。 4親等から6親等の傍系にあたるラベルが原図から読み切れず、推測で埋めれば嘘の図になる。 ここまでで、全体346枚のうち48枚がSVGになった。
「総務課と調査部門は署長に対して並列」
出てきた組織図を見て、階層が読み取れないと伝えた。 総務課と調査部門は署長に対して並列なのだが、箱を並べただけでは上下の関係なのか並列なのかが読み取れない。 関係は線で引いてくれ、と頼んだ。
直しは1枚では終わらせず、48枚すべてに広げさせた。 入門にあたる分野の13枚を先に直させ、所得税の分野の35枚は点検用のエージェント2本に投げた。 同じ指摘を三度言わずに済むよう、作業ガイドの側にも恒久ルールとして書かせている。
ギャラリーは図が主役でいい
最初に外させたのは、コンテンツ領域の幅の上限だった。 講義ノートの本文には読みやすい幅の上限を入れてあるが、Before/Afterを横に並べるページでその幅は邪魔でしかない。 図が2枚とも縮んで、比べたい細部が見えなくなる。 他の講座に影響が出ないよう、ギャラリーのホスト側だけで上書きさせた。
右側の目次も消させた。 トピックの列も、既にある2列と同じく折りたためるようにさせた。 比べる作業をしているあいだは、図以外のものが画面に残っている理由がない。
もうひとつ直したのが、図より上に積まれていたメタ情報だった。 図のタイトルと、前後の図へ移るボタンが並ぶヘッダーは残していい。 その下にあった原本のページ番号、章タイトル、参考の出典は、全部まとめて図の下へ落とさせた。 これでPCの横画面でも、開いた瞬間に修正前と修正後の両方が縦に収まる。
並べたら中身の誤りが見えた
見やすくした途端に、図の中身のほうが引っかかりはじめた。
国際比較の積み上げ棒で、合計が原図と合っていない。 原因を見ると、財政赤字が国民所得に占める割合はマイナスの値なのに、それを上に足し上げていた。 原図では0より下に描かれている項目である。 おまけに1か国だけ、この項目そのものが存在しない。 0の軸を入れて描き直させ、マイナス側の棒が薄くて見えなかったので濃度も上げさせた。
歳入と歳出の図は、誤りではなく構造の問題だった。 内訳を別のブロックに切り出したせいで、どの費用がどこに属するのかが読めなくなっている。 原図のほうがそこは分かる、と伝えて1本のウォーターフォールに統合させた。 所属は位置とインデントと接続線の3つで示す。 小さい内訳の棒が薄くて沈んでいたので、階層の濃淡は上位ほど濃くなる向きに入れ替えさせた。 円グラフをウォーターフォールに置き換えるこの手は使い回せるので、型として書き残させている。
組織図のほうは、答えを出さずに置いた。 審議会が次長の下ではない位置に挟まっていて、どこに属しているのかが図から読み取れない。 原図と本文の両方を当たらせた。 原図がそう描いているのだから、まあいいのか、というところで止めている。
1,000万円の線を再現させる
所得税の分野をレビューしていて、いちばん手が止まったのがこの図だった。
原図は、左の軸の1,000万円が全体の基準になっている。 共通のベースラインが1本、共通の1,000万円のラインが1本あって、3つのケースがそれを横切る形で描かれている。 これを右側で再現してほしい、と頼んだ。
ここで接続が切れた。
API Error: Connection refused が返ったきり返事がこない。
同じ問いを二度打って、三度目に「これってダメなの、進められないの」と打った。
進められます、と返ってきたのは、そのあとだった。
v1のどこが悪かったのかは、動きだしてすぐはっきりした。 3つのケースをバラして、それぞれに別々の1,000万円の線を引いていたのである。 線が3本あると、1,000万円が共通の基準だという図の主旨が消える。 原図が線を1本にしている理由がそこにある。
v2で作り直させたが、v1は消させなかった。 どこが違うのかを並べて見たいので、旧版を退避してバージョンとして持つ仕組みを入れさせている。 ギャラリーの生成側に旧版を検出させ、CSSを3列以上に対応させた。 これで原図とv1とv2が横に並ぶ。
運用をスキルにする
同じ判断を明日も口で言うのは避けたかったので、この日の運用をスキルに落とさせた。
置き場所は3つに割れた。 講本の図を起こす手順そのものは、プロジェクト側の作業スキルに置いた。 SVGの設計として一般化できるルールは、既存の作図スキルへ足した。 規約を指示文へ埋め込むという委譲のやり方は、作業を問わない行動規範のほうに書いた。
全部を1か所に押し込むと、次に必要になったときに読まれない。 性質ごとに置き場所を分けるところまでが、スキル化の作業だった。
コミットとデプロイ
区切りがついたのでステージングとコミットをさせた。
変更は作業リポジトリと設定リポジトリの2つに散っていて、未追跡だけで367件あった。 中身を確認させたところ、全部が今回の講座関連だった。 図の作業と、前日から残っていた無関係なメモを分けてコミットさせている。
デプロイの前で一度止まった。 別の分野を担当している並行セッションがまだ動いていて、生成物と原稿の突き合わせが差分1件で落ちる。 直近3分の更新がゼロになったのを確認してから、生成物を整合させて流した。
ビルドが209秒。 Workerのバンドルは1.858 MiB(gzip)で925チャンク、3.0 MiBの枠に対して1.14 MiBほど余っていた。 デプロイまで含めて3.9分、exit 0で終わった。
ギャラリーだけ本番に出す
講座は全部下書き扱いにしてあるが、作業用のギャラリーだけは本番でも見たかった。
ここで一度、誤った報告をさせている。
本番には露出していないと書かせたのだが、確認に使った curl に --compressed を付けておらず、圧縮された中身をそもそも読めていなかった。
実際にはカードが出ていた。
あらためて調べさせると、サーバー側が返すHTMLにカードは入っておらず、クライアント側で描画されていた。
挙動そのものは仕様どおりだった。 下書きの講座は、管理者としてログインしたときだけ一覧に出る。 ログインすれば全部が見られるわけではない、というところまで確かめさせた。
修正前の原図を本番に出すこと自体は、著作権を明示すれば問題ないという整理になった。 ただし画像をそのままGitに載せるとリポジトリが膨らむ。 オブジェクトストレージに逃がす方針だけをメモに残させた。 そのメモへの導線は、最初は入らなかった。 並行セッションが進捗ドキュメントを書き換えていて、挿入しようとした位置が消えていたためだ。
残ったもの
- 明日は所得税の分野のレビュー継続から。作り直したものを原図と並べて確かめる作業が途中で止まっている
- 次に着手する分野は所得税ではなく法人税で、63枚ある
- 保留にした親族図。傍系のラベルを原図から読み切れるまで手を付けない
- 原図をオブジェクトストレージへ移す件は方針だけ。実装はこれから
- 組織図の審議会の位置づけ。原図がそう描いている以上、直すかどうかも決めていない
作業用のギャラリーは http://localhost:3200/lessons/zeimu/figures/nyumon で見ている。 マイナスの積み上げに気づいたのも、修正前と修正後を横に並べたこの画面の上だった。 図を1枚ずつ作っていたら、合計が合わないことには最後まで気づかなかったはずである。