
背景・課題
検査後の製品に貼るラベルの作成・印刷が手作業中心で、担当者の経験に頼る部分が大きかった。型番ごとに寸法や色番号を台帳やAccessファイルから調べて手入力しており、入力ミスや二度手間が起きやすい状態だった。また、ラベルには後工程の別システムが読み取るバーコード/QRコードを添える必要があり、印字品質やコードの形式を現場の運用に合わせ込む必要があった。

主要機能・特徴
型番の入力だけで、寸法や加工詳細(管理番号・色・数量・備考等)をSQL Serverから自動取得する。色名からの色番号自動照会も表記ゆれを吸収して行う。バーコード(Code128)/QRコードは選択式で埋め込み、後工程システムでの読み取りに対応。印刷履歴は無期限保存でCSVダウンロードでき、共有フォルダへの自動出力で別システムとも連携する。タイ語/日本語/英語/中国語の4言語に対応している。

技術選定・アーキテクチャ
現場のPCは社内ネットワークの中に閉じており、常時オンラインや外部クラウドを前提にできない環境だった。そのためブラウザ経由のWebアプリではなく、ローカルにインストールして動くデスクトップアプリとして作ることにし、Tauri(Rust)を採用した。UIはHTML/CSS/Vanilla JSでこれまでのWeb開発の資産をそのまま活かしつつ、プリンターへの直接コマンド送信、ローカルファイルの読み書き、SQL Serverへの照会といった「失敗が許されない」処理はRust側に集約した。フロントは表示とバリデーションに専念し、ファイルI/Oやプリンター制御は型のあるRust側でまとめて検証・保護する、という責務分担を意識した構成にしている。

技術的工夫
色番号の取得は当初、静的な設定ファイルを同梱する方式だったが、色の追加・変更のたびにファイルを配り直す必要があり運用が回らなかったため、データベースを都度照会する方式に切り替えた。バーコードは当初ラベル全体を画像化してプリンターへ送っていたが、現場から「かすれて読み取れないことがある」と報告があり、原因を調べたところ画像の二値化処理で細いバーが潰れていた。プリンター側のSBPLコマンドを直接組み立てて送信する方式に切り替え、印字品質を安定させた。また、ある端末で印刷履歴ファイルが破損しデータが失われる事故が発生した際、読み込み失敗時に空データとして扱い上書きしてしまう設計上の弱点が判明した。以後は保存前の検証、3世代の自動バックアップ、破損ファイルを削除せず退避する仕組み、バックアップからの自己修復、共有フォルダのCSVからの手動復元機能を実装し、同種の事故が起きても運用を止めない設計に改めた。設定情報についても、一部端末でブラウザ保存領域が消去されて再起動のたびに消える不具合があったため、設定ファイルへの二重保存に切り替えて解消している。

成果・インパクト
複数台のPCで日常的に使われており、印刷履歴は無期限に保持されたまま共有フォルダ経由で別システムと自動連携できる状態を維持している。過去に起きたデータ消失事故を教訓にバックアップと自己修復の仕組みを整えたことで、同種の障害が起きても現場の作業を止めずに復旧できるようになった。開発と並行してアプリと同じデザインのユーザーマニュアルと技術仕様書も整備し、現場からの改善要望を反映しながら継続的にアップデートしている。
