目次
この記事で伝えたいこと
OCRで図種を判定し、DXFを分割できた時点で、技術的には動いていました。ところが日常業務に置くと、再実行、既存OUTPUT、ZIP失敗、原本削除、レビュー後の保存といった別の問題が出てきます。
ここから先は、処理を増やすというより、失敗しても戻せることと、次に触る人が迷わないことを詰めていきました。
背景
以前の状態
図種判定とDXF生成ができた段階では、技術的なPoCとしては成立していました。
ただし日常業務では、同じ案件を再実行したり、途中でZIPが失敗したり、WindowsとMacでファイルを受け渡したりします。
また従来運用では、DXFを図種ごとに準備する、ファイル名を正しく付ける、PDFを想定どおりの順に出力する、といった人の手順遵守に依存する箇所が多く、実際に手順ミスによる誤りも発生していました。
なぜ見直したのか
業務ツールは「成功したときに動く」だけでは不足です。
既存成果物がある、処理が途中で止まる、原本を削除する、別OSで開く、といったケースでも安全に扱える必要があります。
今回やったこと
失敗しても元に戻せるようにした
実ファイルを触る前に出力計画を作り、処理後に生成物を確認します。
Analyze
↓
Validation
↓
Dry Run
↓
Execute
↓
Final Verify 既にOUTPUTがある場合は、「上書き」「削除して作り直す」「キャンセル」から選べます。変更前のOUTPUTはTEMPへ退避し、途中で失敗した場合は復元を試みます。
原本削除も同じ考え方です。設定でONにした場合でも、Final Verifyが終わるまで削除しません。TEMPへのバックアップとサイズ確認を済ませてから削除します。
Revisionがない特定案件では、成果物とは別に空の @最新図 フォルダも作ります。これは既存の保存ルールに合わせるための処理です。
利用者にPython環境を作らせない
OCRやDXF解析はPythonでも実装できます。ただ、今回は他の人も使うツールです。
社内PCではネットワーク上の制約で pip からパッケージを入れられないことがありました。利用者ごとにPythonや仮想環境を準備する運用は避け、既に入っているExcelを実行基盤にしました。
起動もExcelを直接開かせません。VBSをダブルクリックするとExcelを非表示で起動し、xlsmを開いてマクロを実行して終了します。通常時の確認ダイアログは出さず、OUTPUT重複など本当に判断が必要な場面だけ止めます。
ZIPはMacへ渡せる形まで確認する
ZIPは日本語ファイル名をUTF-8で持たせ、内部パスをWindowsの \ ではなく / に統一しました。Windowsで作れたことだけでは済ませず、生成後にCRC、UTF-8フラグ、パス区切りを検査しています。
macOS Finderで実際に展開する確認だけは、まだ残っています。
Everythingで店舗フォルダを探す作業をなくした
v13.2.2では、レビュー者向けに店舗用フォルダへのショートカットを作るようにしました。
店舗用フォルダには、その店舗の過去案件と今回案件の情報が入っています。以前はレビュー時やメール送信後に、Windows向けの高速ファイル検索ソフト Everything を使って対象店舗のフォルダを探していました。今はレビュー用フォルダに置かれたショートカットから直接開けます。
OUTPUTを確認
↓
レビュー用フォルダへ保存
↓
レビュー
↓
ショートカットから店舗用フォルダを開く
↓
過去情報・今回案件の情報を確認
↓
メール送信
↓
同じ店舗用フォルダへ必要なデータを保存 小さな変更ですが、自分の処理が終わった後に、次の人がどこを探すかまで見るようになりました。
実際に確認したこと
正常系の6図種について、PDF判定からDXF生成、ZIP作成まで通ることを確認しました。
生成ZIPについては、6ファイル、CRCエラーなし、全エントリUTF-8フラグあり、内部パスが / であることを構造的に確認しています。
entries: 6
UTF-8 flag: ON
path separator: /
CRC/integrity error: none 一方、macOS Finderでの実際の展開確認は、この構造検証とは別の確認項目として残しています。
v13.2.2で追加した店舗用フォルダへのショートカットについては、実環境でレビュー者が必要情報へアクセスでき、メール送信後のデータ保存にも利用できることを確認済みです。
難しかったこと・うまくいかなかったこと
ZIP工程で一度失敗した
実ファイル出力PoC中にZIP生成で失敗しました。
処理を段階化し、今回作成した成果物だけをロールバックする構成だったため、原本を壊さず戻せました。
UTF-8にしただけではMac対応にならなかった
日本語ファイル名をUTF-8にした後も、ZIP内部パスがWindows形式の \ になっていました。
ZIP標準の / へ修正し、生成後に内部構造を検査するようにしました。
Excel画面やコンソールが作業を邪魔した
外部コマンドやExcelが前面に出ると、機能が正しくても日常作業の邪魔になります。
そのため外部コマンド非表示、VBSからのExcel非表示起動へ寄せました。
どう判断したか
採用した方法
- 実処理前のDry Run
- 最終Verify後にのみ不可逆操作を行う
- 既存OUTPUTはTEMPへ退避してから変更する
- 重複時だけユーザーへ選択を求める
- ZIPはUTF-8 +
/区切りで生成する - 原本削除は設定でON/OFFにする
- VBSから非表示実行する
採用しなかった方法
- 既存出力を無条件で上書きする
- 失敗時に中途半端な成果物を残す
- Final Verify前に原本を削除する
- 通常処理のたびに確認ダイアログを出す
- Windowsで開けたことだけでZIP互換性OKとする
最大限無人化するのではなく、定型処理は自動化し、不可逆・曖昧な場面だけ人間へ判断を戻す構成にしました。
結果
できるようになったこと
中心の自動処理だけでなく、再実行からレビュー後の保存までつながるようになりました。
- OUTPUTを変更する前に退避し、失敗時に戻せる
- 原本削除をFinal Verifyの後ろに置ける
- UTF-8 +
/のZIPと@最新図を既存運用に合わせて作れる - VBSから起動でき、利用者側のPython環境構築を不要にできる
- レビュー者がファイル検索ソフトで店舗フォルダを探さず、ショートカットから直接移動できる
まだ確認・改善が必要なこと
- 最新版の異常系テスト
- macOS Finderでの展開確認
- 原本削除ON時の実環境ロールバック確認
- 実運用での削減時間とエラー率の計測
AIを使った範囲
AIに任せたこと
- VBA実装案
- ZIP形式の調査と構造チェック
- ロールバック処理の実装案
- VBS起動方法の整理
- 異常系テスト観点の整理
自分で判断したこと
- どの確認を省略し、どこで人間に判断を戻すか
-
@最新図の実際の運用仕様 - 原本削除を設定化すること
- Macとの受け渡しを要件に含めること
- Excel/VBAを配布基盤にする判断
- 実ファイルを使った受入判断
今回の学び
- 業務ツールは正常系だけでは完成しない
- 重複、失敗、再実行、削除、別OSなど周辺条件が実運用を左右します。
- 不可逆操作は最後へ寄せる
- 原本削除はFinal Verifyとバックアップ後にしました。
- 自動化は自分の操作だけを速くすればよいわけではない
- 定型処理は自動化しつつ、方針選択が必要な場面は人間へ戻し、さらにレビューや保存など次工程の導線まで見る必要がありました。
- 成果物は内部形式まで検証する
- ZIPが開けるだけでなく、文字コードや区切り文字まで確認しました。
まとめ
作っている途中で、手間が増えたのはOCRやDXF生成の中心ロジックより、その周りでした。再実行したときに何を残すか、失敗したらどこまで戻すか、他の人のPCでどう起動するか。そこを詰めないと日常業務には置けません。
v13.2.2では、レビュー後に店舗フォルダを探すところまで対象にしました。自分の作業時間だけを短くするより、前後の人が迷わない流れにする方が実運用では効きます。