【要約】メモ追記ツールは常に行の最後のセルに書いていた。表の一つでは最後のセルはメモ欄ではなく、77件が間違った列に入っていた [Zenn_Python] | Summary by TechDistill
> Source: Zenn_Python
Execute Primary Source
// Problem
著者がMarkdownの表で作業記録を管理する際、自動追記ツールと参照ツールの間でデータの不整合が発生した。ツールが「行の最後のセル」という位置情報に基づいてメモを書き込んでいたことが原因である。
- ・特定の表において、メモ欄が末尾ではなく、作業者を示す列の後に配置されていた。
- ・結果として、77件のメモが本来のメモ欄ではなく、誤った列に書き込まれた。
- ・参照ツールは特定の列のみを走査するため、誤った列に存在するデータを見落とした。
- ・行全体の検査ではエラーが出なかったため、不整合が長期間放置された。
// Approach
著者はデータの不整合を解消し、ツールの設計をより堅牢なものにするために以下の手順を踏んだ。
- ・誤った列に書き込まれた77件のメモを、本来のセルへ手動で移行した。
- ・ツールのロジックを、末尾への追記から特定の列(3番目のセル)への書き込みに変更した。
- ・修正の検証として、目印となる文字列を挿入し、実際のデータ構造に正しく書き込まれるかをバイト単位で確認した。
- ・ただし、条件判定のロジックミスにより、修正が正しく機能しているかを確認するプロセスに課題が残った。
// Result
データの修正とツールの改修により、当面の運用上の問題は解決された。修正を通じて、ツールの設計思想とテストの重要性に関する教訓を得ている。
- ・ツールの設計思想を「位置」から「列の意味」へと転換した。
- ・修正が正しく機能しているかを、実際のデータを用いて検証する重要性を再認識した。
- ・テストコードの不備により、修正が正しく適用されているか判断できなかった経験を教訓とした。
Senior Engineer Insight
> 自動化ツールにおける「位置依存」の実装は、スキーマ変更に対して極めて脆弱である。インデックスによる操作は、データ構造のわずかな変化で致命的な不整合を招く。設計時は、列名や意味論的な識別子に基づく操作を徹底すべきだ。また、修正後の検証は、コードの静的確認ではなく、実際のデータを用いた実機テスト(E2E)で完結させる必要がある。