← 概要へ戻る

製造現場向け検査日報アプリ(スキャン入力・共有フォルダ運用)

製造現場向け検査日報アプリ(スキャン入力・共有フォルダ運用)

背景・課題

染色加工を伴う製造現場の検査部門では、作業者が検査結果(コース番号・不良の数量・不良項目)を手書きのノートや共有フォルダ上のファイルに記録していた。共有ファイルは誰かが開くと他の人が開けず、同時に書き込むと壊れるおそれがあり、集計も後から人手で転記する必要があった。 前提条件も厳しかった。社内の本番システムが完成するまでの暫定運用であること、SQLサーバーなどを新設できず共有フォルダしか使えないこと、PC約10台・作業者約30名がそれぞれ1日に何度も登録すること、そしてPC未経験者や高齢の作業者、タイ語話者が使うこと。「ノートに書くより速く、間違えにくい」ことを合格ラインに、Tauri v2 のデスクトップアプリとして設計した。

背景・課題

主要機能・特徴

作業者カードをタップして担当者を選び(共同作業なら複数名)、製品バーコードをスキャンすると、型番・ロット・色・検査長・コース数が自動で入力画面に反映される。不良は「コース → 数量 → 不良項目」の3欄にEnterで進みながら入力し、1件ずつチップとして確定する。不良の合計長さ・件数・検査長に対する割合が常に表示され、保存後はスキャン画面へ戻るので連続検査にそのまま移れる。 入力画面は1280×1080でスクロールなしに収め、訂正や取消も同じ入力画面を再利用する設計にして、覚える操作を増やさないようにした。

主要機能・特徴

入力設計:熟練者もPC未経験者も同じ画面で

入力欄の下にある大きなエリアは、フォーカスしている欄に応じてコース選択、数量プリセット、不良項目(6×6のタイル)へと丸ごと切り替わる。切り替えることで各ボタンを大きく表示でき、PC未経験者の認知負荷を下げられる。一方で3欄は常に表示されているため、熟練者はパレットを見ずに「打ってEnter」だけで高速に入力できる。 細部にもこだわった。不良項目の番号にUnicodeの丸数字(①②…)を使うとOSやフォントで字形や大きさが崩れるため、CSSの円で描画する方式にして全画面で統一した。バーコードスキャナが末尾に送るEnterで意図せず次の欄へ進まないよう、画面遷移直後の250msはEnterを無視する対策も入れている。

入力設計:熟練者もPC未経験者も同じ画面で

技術選定・アーキテクチャ

共有フォルダ上にSQLiteを置く案は、SMB越しのファイルロックが当てにならずDB破損の危険があるため採用しなかった。代わりに「提出ごとに新規ファイルを作り、既存ファイルは二度と開かない」追記専用の方式にしている。 アプリは Tauri v2 とバンドラなしの素のJavaScript(フレームワーク不使用)で構成した。業務用の非力なPCでも軽く動き、配布は実行ファイル1つで済み、Rust側でファイル保存とマスター参照を堅牢に扱えるためである。ODBCによる製品マスターの読み取りはPowerShell経由ではなくRustから直接行い、外部プロセスの起動遅延と文字化けの要因を排した。

技術的工夫:複数PCが同時に保存しても壊れない

1件の提出は「PC名・日時・UUID」を組み合わせた一意な名前の新規ファイルとして保存し、一時ファイルへ書いて同期してから名前を確定させるため、書き込み途中の半端なファイルを他のPCが読むことはない。訂正や取消も既存ファイルの修正ではなく新しい記録として追記し、読み手が「置き換えられていない最新の有効な記録」だけを採用する。 試験用の製品記録は月あたりのファイル数を抑えるため、端末別・プロセス別の月次ファイルに1行ずつ追記する。書き手が常に1つなので追記も競合せず、1行を1回の書き込みにまとめて確実にディスクへ反映する。読み取り側は壊れた行や書き込み途中の一時ファイルを読み飛ばし、大量の小さなファイルを並列に読んでネットワーク越しの遅延を抑えている。閲覧中に別のPCが保存しても互いに干渉しない。

技術的工夫:本番/試験の判別と、DBが止まっても動く製品情報取得

スキャンした文字列から型番と製造番号を分解し、番号の桁数で本番品か試験品かを判定する処理を、副作用のない純粋関数として実装した。試験品は共有フォルダのマスターCSVを先に参照し、見つかればDBへ接続せずにロット・色・検査長を取得する。DBが不通でも動き、応答も速い。マスターに無い場合や検査長が未取得(空・0)の場合は、定数で埋めて誤ったデータを作ることを避け、DB参照へフォールバックする。 当初はDB参照のみで実装したが、応答時間とDB停止時の影響を考えてマスター優先の構成へ変更した。試験品の入力画面は薄い緑に切り替えて、本番品との取り違えを視覚的に防いでいる。CSVの読み取りは引用符内の改行やBOMにも対応し、実データで起きた列ずれを修正した。

技術的工夫:本番/試験の判別と、DBが止まっても動く製品情報取得

多言語対応と現場への適応

作業者の中心はタイ語話者のため、UIはタイ語を既定にし、開発・保守用に日本語と英語を切り替えられるようにした。文言は辞書ファイルに集約して属性で適用し、辞書を迂回した日本語のハードコードが残らないよう見直しも行っている。タイ語フォントはアプリに同梱し、オフライン環境でも表示が崩れない。

多言語対応と現場への適応

閲覧・訂正・取消

「自分の記録」では、期間内に自分が関わった記録を一覧で確認できる。共同作業の記録は関わった全員の一覧に表示され、行末の「訂正」を押すと通常の入力画面が記録内容入りで開く。新しい画面や操作を覚える必要がない。取消した記録は取消済みとして残り、本番品と試験品はワンタッチで絞り込める。 訂正も取消も新しい記録の追記なので、元の記録は消えず、いつ誰が何を直したかを後から追える。締めた月の記録は訂正できないようにして、集計後の数字が変わらないようにしている。

閲覧・訂正・取消

成果・現状

作業者は「自分の記録」から期間内の記録を確認し、そのまま訂正や取消ができる。管理側は期間内の全記録を製品種別×日別の件数で集計して閲覧でき、CSV出力や月次の締め(締め後は訂正不可)も行える。訂正や取消は追記なので、履歴が消えずに追跡できる。 バージョン0.9系として運用しながら段階的に改善を続けている。保存層とマスター読み取りにはRustの単体テスト(19件)を用意した。定量的な工数削減の測定はこれからで、また、マスター由来のコース数とDB由来のコース数の定義差は実機で確認を進めている。

成果・現状
← 概要へ戻る