
背景・課題
染色加工を伴う製造現場の検査後工程では、ロール(巻き)ごとの検査結果を票(レシート)に印字し、製品に添付している。この票を発行する専用ツールは古い世代の開発環境で作られた実行ファイルで、ソースや仕様書が十分でなく、変更や環境の入れ替えが難しかった。 置き換えるにあたっては、票のレイアウトや印字内容が現場の運用にそのまま合うこと、業務データベースには書き込まないこと、そして製品コードの形式が本番品と試験品で異なる現実に対応することが条件だった。原典の実行ファイルを解析して仕様を書き起こし、Tauri v2 と Rust による後継アプリとして作り直した。

主要機能・特徴
型番と製造番号をバーコードスキャンすると、区切りなしで連結されて届く文字列を自動で分解し、データベースから色・ロット・営業担当などを照会して入力欄に反映する。作業者はロールごとの欠点数と長さ、備考を入力して印刷する。右側のプレビューは印刷と同じ内容で、バーコード付きの票をそのまま確認できる。 複数ロールの結果は1枚の検査票にまとめて印字し、最後に、印刷済みの各票の合計を並べた集計票を発行できる。印刷履歴は画面内に表示し、誤りがあれば行を選んで削除できる。

主要機能・特徴: 集計票
集計票のボタンにカーソルを合わせると、印刷される集計票をその場でプレビューできる。各行は検査票1枚分の欠点数と長さで、末尾に枚数と総計が並ぶ。データベースへの確定書き込みは行わず、印刷のみで完結させることで、既存の業務データに影響しないようにしている。

技術選定・アーキテクチャ
アプリは、Tauri非依存の Rust ライブラリ(スキャン文字列の分解、SQL生成、票の整形、入力検証、CSV出力)と、Windows実機向けの Tauri バックエンド、素の HTML/CSS/JavaScript のフロントで構成している。中核が画面・印刷・DBから独立しているため、開発用のLinux環境でも単体テストを回せる。 データベース接続と印刷は、Windowsに標準で入っている PowerShell を介して行う(本番DBは OLE DB、試験DBは ODBC、印刷は GDI)。専用のドライバ実装を持たず配布物を小さく保てる一方、外部プロセスの失敗やバージョン差の影響を受ける弱点があるため、後述の堅牢化を継続している。
技術的工夫: 本番品と試験品の自動判別
製品コードには、本番品と試験品が混在する。実績データ約1万2千件を調べたところ、Web番号の桁数で本番(4桁)と試験(5桁)を反例なく判別できたため、その規則で参照先を自動的に切り替える。バーコードには区切りがないので、末尾側の英字と前半の長さから型番・Web番号・コースを一意に分解する処理も用意した。 試験品には色番号の専用欄がなく、加工内容の文字列に括弧付きで色番号が埋め込まれている場合と、そうでない場合がある。前者は文字列から数字を抽出し、後者は該当なしとして手入力にする。この抽出規則は現場の名称ゆれに依存するため、実データを見ながらの調整が継続中である。

技術的工夫: 元の票との一致を保証するテスト
票は20桁固定幅のプレーンテキストで、桁ずれが現場の読み取りに直結する。そこで、元のツールが出力した実際の票をテンプレートとして保存し、新しい整形処理の出力がバイト単位で一致することを自動テストで検証している(色あり・なしの両パターン)。純ロジック部分に27件、アプリ側に17件のテストがあり、変更のたびに回帰を検知できる。 バーコードはプレビューでは画面上で描画し、印刷ではPowerShell側で描画する。二重実装になるため、表示の見た目と印字結果のずれには注意が必要で、実機の印字での確認は現場運用と並行して続けている。

技術的工夫: 障害に強い印刷と保存
PowerShell経由の処理は、必要なスクリプトが欠けていたり途中で壊れていたりすると止まる。起動時にスクリプトを自己修復する仕組み、内部エラー(パニック)を閉じ込めて画面に通知する処理、PowerShell 5.1 の日付表記の正規化、応答JSONの解析の強化を入れた。CSVは一時ファイルに書いてから置き換える方式とし、端末IDの保存ファイルは破損時に退避ファイルから復旧する。 また、印刷の成功を契機に、共有フォルダへ工程完了イベントを追記する機能を加えた。共有フォルダは書き込み専用の追記のみで、失敗しても印刷そのものには影響しない設計とした。備考欄も追加し、閲覧アプリで印刷履歴とコメントを確認できる。

成果・現状
バージョン0.3系として、本番品・試験品の両方で票と集計票を印刷でき、印刷履歴が共有フォルダを通じて閲覧アプリに反映されるところまで完成している。データベースは参照専用のままで、既存の業務データに書き込まない。 一方、旧ツールからの切り替えによってどれだけ作業時間が変わったかは、まだ測定していない(継続中)。Windowsの実機依存の部分(印刷・DB接続)は開発環境では動かせず、単体テストの範囲外である。今後は、現場で見つかる名称ゆれや例外に合わせて、判別規則と堅牢化を続ける予定である。
