構築例一覧へ戻る
構築例 07 / Build Example
Example 07 / 11

作業手順ナビシステム

製造現場の作業手順をデジタル化し、作業者を画面で誘導しながら品質を作り込むシステム。表示(ナビ)・制御(ポカヨケ)・記録(トレーサビリティ)・連携(MES/設備)の4本柱で、部品スキャン照合や工具測定値チェック、強制順序制御、遡及検索までをカバーします。

フロントエンド
React + TypeScript + Vite
バックエンド
Express REST API(インメモリ)
設計トレース
業務シナリオ → ユースケース図 / クラス図 / 状態マシン図 / アクティビティ図 → 実装
作業ナビ・誘導 ポカヨケ制御 トレーサビリティ MES・設備連携 条件分岐・ループ 50エンティティ
設計モデル / Design Models

50エンティティ・37ユースケースを、モデルで統べる。

本アプリの実装は、業務シナリオから導出したユースケース図(UC-01〜37)・クラス図・状態マシン図・アクティビティ図に基づきます。規模が大きいためクラス図は業務領域ごとに分割し、俯瞰図で全体の関係を保っています。作業実績・手順バージョンなどが状態マシンを持ち、定義外の遷移はサーバー側で拒否されます(BR-034)。

ユースケース図 Use Case Diagram
作業手順ナビシステム ユースケース図
現場作業者・工程設計者・製造管理者・品質管理者・システム管理者の5アクターと UC-01〜UC-37 の関係を、表示・制御・記録・連携の4本柱で配置。 原寸で開く ↗
クラス図 俯瞰(50クラス) Overview
クラス図 俯瞰(50クラス)
50クラスを作業手順・作業実績・デバイス制御・人(スキル)・分析・外部連携などの領域にグルーピングして俯瞰。 原寸で開く ↗
領域別クラス図 / By Domain

各領域の詳細なクラス図です。クリックすると原寸で開きます(数字はメニュー数)。

本書は、本アプリケーションの操作手順をまとめた利用者向けマニュアルです。画面・ボタン名は実装に準拠しています。

  • 対象アプリ: 作業手順ナビシステム(Work Procedure Navigation)
  • 構成: フロントエンド(React + TypeScript + Vite)+ バックエンド(Express REST API・インメモリ)
  • 設計トレース: 業務シナリオ → ユースケース図 / クラス図 / 状態マシン図 / アクティビティ図 → 実装

01はじめに

本アプリは、製造現場の作業手順をデジタル化し、作業者を画面で誘導しながら品質を作り込むためのシステムです。次の4本柱で構成されます。

区分機能
① 表示(ナビ)作業手順の選択(自動/手動)、複数の動画・画像+説明テキスト、音声ガイド、多言語・スキル別表示
② 制御(ポカヨケ)部品スキャン照合、工具測定値チェック、強制順序制御、NG時のアラート発火
③ 記録(ログ・トレーサビリティ)作業実績・工程実績・エラー/手戻り履歴、「誰が・いつ・何をしたか」の追跡レコード
④ 連携(MES・設備)MESからの作業指示受信と実績返却、デバイスイベントによるイベント駆動制御

代表的なアクター(利用者像):現場作業者 / 工程設計者 / 製造管理者 / 品質管理者 / システム管理者。

本アプリはログイン認証を実装していないため、すべての画面に誰でもアクセスできます。権限は「利用者アカウント」データ上のロール属性として管理します(BR-023)。

02起動と終了

2.1 必要環境

  • Node.js 18 以降(動作確認は Node.js 23 / macOS)
  • 対応OS: macOS / Windows / Linux
Windows で使っていた環境を Mac へ持ち込む場合、node_modules は OS 依存のネイティブバイナリを含むため、そのままでは動きません。backend/node_modules と frontend/node_modules を削除して、Mac 上で npm install をやり直してください。ソースコードとロックファイルの変更は不要です。

2.2 起動手順

2つのサーバーを起動します。ターミナルを2つ使います。

# ① バックエンド(REST API / ポート 4000)
cd app/backend
npm install        # 初回のみ
npm run dev

# ② フロントエンド(画面 / ポート 5173)
cd app/frontend
npm install        # 初回のみ
npm run dev

ブラウザで http://localhost:5173/ を開きます。

フロントエンドは /api へのアクセスを自動的にバックエンド(4000番)へ転送します。先にバックエンドを起動してください。

2.3 終了手順

各ターミナルで Ctrl + C。または以下で停止します。

lsof -ti:4000,5173 | xargs kill

2.4 検証コマンド

cd app/backend  && npx tsc --noEmit && npx jest    # 型チェック + 100テスト
cd app/frontend && npx tsc --noEmit && npm run build

03画面構成

画面左のサイドバーから各機能へ移動します。上段が業務画面、その下がドメイン別のデータ管理画面です。

グループメニュー内容
(上段)ダッシュボード / 作業ナビ / 作業分析ダッシュボード / トレーサビリティ検索 / テストラン主要な業務画面
作業手順ドメイン作業手順 / 手順バージョン / 作業ステップ / 作業ステップメディア / 作業ループ / ステップ遷移 / ステップ指示 / ポカヨケ規則 / チェックリスト項目 / 注意ポイント / 必要スキル手順の設計データ
作業実績ドメイン作業指示 / 作業実績 / 工程実績 / エラー・手戻り履歴 / 部品使用実績 / 工具使用実績 / トレーサビリティ記録実行結果の記録
デバイス制御ドメインデバイス / デバイスイベント / イベント制御ルール / アラート / 作業端末 / オフラインキュー項目設備・IoT連携
人(スキル)ドメイン作業者 / 資格・スキル認定 / 教育履歴 / 作業者別パフォーマンス / 利用者アカウント / 操作権限 / 監査ログ人と権限
コンテンツ管理(CMS)手順コンテンツ / コンテンツ配信動画・画像・音声の管理と配信
外部連携・マスタ製品 / 部品マスタ / 工具 / 生産ライン / 作業ステーション / 連携メッセージ / 検査結果 / 不良情報ERP・MES・QMS 連携
分析作業分析ダッシュボード / 分析指標スナップショット / ボトルネック分析 / エラー分析分析結果データ
発展機能・テストラン画像認識チェック / 異常検知 / 最適手順提案 / 音声操作 / テストラン発展機能

データ管理画面は全50エンティティで共通して 一覧 → 詳細 → 新規/編集 の3画面で構成されます(→ 9章)。

04ダッシュボード

トップ画面(/)です。全体状況の把握と、各機能への入り口として使います。

  • 上段: 作業中 / エラー・保留 / 完了 / 未解除アラート の件数
  • 中段: 作業手順・作業指示・デバイス・アラート履歴の登録件数
  • 下段「主要画面」: カードをクリックして各機能へ移動
ダッシュボード画面
ダッシュボード画面

05作業ナビ

現場作業者が使うメイン画面です(/navi、UC-04〜UC-16)。作業の開始から完了までを1画面で行います。

5.1 作業を開始する(UC-04 / BR-031)

画面上部のパネルで選択モードを選び、「作業を開始」を押します。

選択モード動作必要な入力
自動(外部機器指示)MESから受信済みの「割当済」作業指示を自動的に引き当てる作業者
手動(作業者が選択)作業者が実施する作業手順を自分で選ぶ作業者 + 作業手順
作業開始パネル(手動選択モード)
作業開始パネル(手動選択モード)
上図は「手動」を選んだ状態で、作業手順のプルダウンが追加表示されています。「自動」ではこのプルダウンは表示されません。

開始できない場合は、次のようなメッセージが表示されます。

メッセージ原因
自動選択: 割当済の作業指示がありません状態が「割当済」の作業指示が存在しない
手動選択: 作業手順を選択してください手動モードで作業手順が未選択
この作業者は既に作業中です (WS-xxxxx)1人が同時に作業中にできるのは1件まで(BR-014)
必要スキル・資格を満たしていません: …ステップの必要スキル・資格が不足、または資格が失効(BR-008)
有効期間内の手順バージョンが存在しないため作業を開始できません状態がActiveかつ有効期間内のバージョンがない(BR-009)

既に進行中の作業がある場合、画面を開いた時点で自動的にその作業が選択されます。「進行中の作業実績」プルダウンから別の作業へ切り替えることもできます。

5.2 工程を進める

作業ナビ画面(工程表示・ポカヨケ・チェックリスト)
作業ナビ画面(工程表示・ポカヨケ・チェックリスト)

画面の見方は次のとおりです。

  • 上部のバッジ列 — 作業実績の状態、選択モード、進捗(現在ステップ / 全ステップ)、言語、スキルレベル。ループ中は 🔁 Forループ 1/2 のようなループバッジが追加表示されます。
  • 中央(ステップ表示) — 現在のステップ番号とステップ送り方式(AUTO=イベントエンジンが進める/MANUAL=作業者が「次の工程へ」で進める。BR-033)、1ステップに複数の動画・画像をタイル表示(BR-005)、全ステップ必須の説明テキスト、作業者の使用言語での 🔊 音声ガイド(未翻訳は既定言語へフォールバック。BR-006)。
  • 右側 — ⚠ 注意ポイント、☑ チェックリスト(「必須」項目をすべてチェックするまで「次の工程へ」は押せない)、工程実績(状態・手戻り回数・ループ反復・標準時間)。

下部(進行操作)

ボタン動作
次の工程へ条件分岐・ループ判定を行い次工程へ進む(UC-14)。必須チェックリストが未完了だと無効
手戻り現在の工程を手戻りとして記録し、再実施する(UC-13)
保留作業を保留にする(部材待ちなど。UC-15)
再開保留・エラー状態の作業を再開する
作業完了全工程を完了し実績を確定、MESへ返却する(UC-16 / UC-17)

5.3 ポカヨケ制御(UC-08 / UC-09 / UC-11)

「ポカヨケ制御」セクションには、そのステップに設定されたポカヨケ規則に応じた入力欄が自動的に出し分けされます。規則がない工程では「この工程にポカヨケ規則はありません。」と表示されます。

規則種別表示される操作判定
部品スキャン照合「部品スキャン(バーコード / RFID)」入力+スキャンボタン。右に期待値を表示期待部品と不一致ならNG。アラート発火+進行禁止(BR-002)
工具測定値「工具測定値(トルク)」入力+測定値を送信ボタン。右に規定範囲を表示規定下限〜上限の範囲外ならNG。締め直し(手戻り)を要求(BR-003)

判定結果は画面上部に緑(OK)/赤(NG)のメッセージで表示されます。NGのまま「次の工程へ」を押すと ポカヨケ判定NGのため次工程へ進めません: … となり、進行が止まります(BR-001 強制順序制御)。

5.4 条件分岐とループ(UC-14 / BR-013 / BR-032)

「次の工程へ」を押したときの次工程は、システムが自動的に決定します。

  • 条件分岐 — 製品型番やステップの結果(OK/NG)を判定して分岐先を決めます。
  • ループ — ループ末尾のステップでは継続/終了を判定します。継続時は戻り先ステップへ移動し「ループ継続: 戻り先ステップへ進みました。」と表示。FORループは指定回数だけ繰り返し、WHILEループは終了条件式が真になるまで繰り返します(無限ループ防止のため上限回数で保護)。

全工程を完了すると「全工程完了。MESへ実績を返却しました。」と表示されます。

06作業分析ダッシュボード

製造管理者向けの分析画面です(/analytics、UC-29〜UC-33)。状況の把握 → 問題の特定 → 原因分析 → 改善判断の順に並んでいます(BR-025)。

作業分析ダッシュボード
作業分析ダッシュボード
セクション内容
① 状況の把握作業中/保留/エラー/完了/中止の件数と、完了台数・平均作業時間・NG率・設備稼働率のKPI
② 問題の特定(ボトルネック分析)工程別に平均作業時間と標準時間を比較し、乖離率の大きい順に順位付け。乖離率30%超は赤字+赤バーで強調
③ 原因分析(エラー分析)エラー種別ごとの発生件数・比率・主要因
④ 改善判断(作業者別パフォーマンス)作業者ごとの完了件数・平均時間・NG率・手戻り回数・習熟度
完了台数の時系列BI連携用スナップショットの推移グラフ。テストラン実行中は自動的に変化します

6.1 更新操作

右上の2つのボタンで更新方法を切り替えます。

ボタン動作
自動更新 ON (1秒)1秒ごとに自動再取得(BR-024)。押すたびに ON / OFF が切り替わります
再集計集計をその場で再実行して最新化します

左の「最終更新」バッジで最後に取得した時刻を確認できます。

07トレーサビリティ検索

品質管理者向けの遡及検索画面です(/traceability、UC-18 / BR-017)。

  1. 「製品シリアル番号 / 部品ロット」に検索キーを入力します(例: SN-100100)。
  2. 遡及検索ボタン、または Enter キーで検索します。
トレーサビリティ検索の結果画面
トレーサビリティ検索の結果画面

結果は4つのセクションに分かれて表示されます。

セクション内容
追跡レコード記録日時 / 誰が / 何をしたか / 対象 / 改ざん検知ハッシュ
使用部品スキャンしたコードとシリアル・ロット、照合結果(OK / NG)
工具測定値測定値と単位、判定結果(OK / NG)
関連する作業実績作業実績番号・状態・開始日時

追跡レコードは追記のみで更新・削除ができず、改ざん検知用のハッシュが付与されます(BR-016)。

08テストラン

動作確認・デモ用の付加機能です(/simulation、UC-37)。一定間隔で作業状況をランダムに変化させ、分析ダッシュボードがリアルタイムに動く様子を確認できます。

テストラン画面(実行中・変化ログ)
テストラン画面(実行中・変化ログ)

8.1 実行手順

  1. 左の「実行条件」を設定します(変化間隔(秒)/乱数シード(再現用)/NG発生率(%))。同じシードなら同じ変化を再現できます。
  2. 右上のテストラン開始を押します。以降、設定した間隔で自動的に変化します。
  3. 1周期だけ進めるで、任意のタイミングで1周期分だけ手動実行できます。
  4. 停止で終了します。

8.2 画面の見方

  • 実行条件(左) — 状態(実行中など)・実行番号・生成作業実績件数・生成イベント件数・開始時刻。実行中は入力欄がロックされます。
  • リアルタイム作業状況(右上) — 作業中/保留/エラー/完了/中止の件数と主要KPI。
  • 変化ログ(右下) — 周期ごとに「開始 / 進行 / NG / 手戻り / 完了 / 保留 / デバイスイベント」の件数を新しい順に最大20件表示します。
⚠️ テストランは手動選択モードのみで動作します(BR-031)。生成されたデータは isSimulated で識別され、本番の作業実績を書き換えません(BR-028)。

09データ管理画面(一覧・詳細・フォーム)

サイドバーのドメイン別メニューから開く画面です。全50エンティティで構造が共通しています。

すべての画面は、データの所属を辿れるように設計されています(BR-034)。ID の内部値ではなく、親を含む識別名(例: モータユニット組立手順 / v2 / 3 / ケース固定ボルトを規定トルクで締め付ける)で表示します。

9.1 一覧画面

一覧画面(作業ステップ)
一覧画面(作業ステップ)
  • 識別名列が先頭に固定表示されます。クリックで詳細へ移動します。
  • 参照(FK)列は参照先の識別名で表示されます。
  • 検索ボックスでテキスト項目を検索、列見出しの ⇅ で並び替え。1ページ20件でページ送りが出ます。
  • 右端の編集 / 削除で行を直接操作、右上の新規作成で登録画面へ移動します。

9.2 詳細画面

詳細画面(手順バージョン)
詳細画面(手順バージョン)
  • タイトルが親を含む識別名(例 モータユニット組立手順 / v2)になります。
  • 現在の状態 — 状態を持つデータにバッジ表示。
  • 操作(状態遷移) — 状態マシンに定義されたイベントがボタンで並びます。実行できない遷移を押すとエラーメッセージが表示されます。
  • 詳細情報 — 全項目。参照項目は親の識別名リンクで、クリックで親の詳細へ移動。
  • 関連データ — 子データへのリンク。クリックするとこの親でスコープされた子の一覧へ移動します。

9.3 関連データへのドリルダウン

親でスコープした子データの一覧
親でスコープした子データの一覧
  • 上部の青い帯に「〜に関連する作業ステップ(手順バージョンで絞り込み):7件」と、由来と件数が表示されます。
  • 絞り込み解除で全件表示に戻ります。

これにより 作業手順 → 手順バージョン → 作業ステップ → メディア/ポカヨケ/チェックリスト/注意ポイント/必要スキル の順にドリルダウンできます。

9.4 新規作成・編集フォーム

新規作成フォーム(ポカヨケ規則)
新規作成フォーム(ポカヨケ規則)
  • ラベル右の赤い * は必須項目です。
  • 項目の型に応じて、テキスト / 数値 / 日付 / 日時 / チェックボックス / プルダウン(列挙型)が出し分けされます。
  • 参照項目は関連先のIDを直接入力します(入力欄の下に「関連 work-steps のID」のようにヒントが出ます)。IDは対象の一覧・詳細画面で確認してください。
  • 作成 / 更新で保存し、保存後は詳細画面へ移動。キャンセルで前の画面へ戻ります。

10業務ルールと状態遷移

10.1 作業実績の状態遷移

                保留                    再開
     ┌──────────────────▶ 保留(OnHold) ──────────────┐
     │                        │ 中止                 │
     │                        ▼                      │
 作業中(InProgress)      中止(Aborted) ──[クローズ]──▶ 完了扱い(Closed)
     │  ▲                     ▲                      ▲
     │  │ 是正完了             │ 中止                  │ 実績返却完了
     │  └──── エラー(Error) ◀──┘                      │
     │            ▲  NG検知                          │
     │            └───────────────                   │
     │                                               │
     └──[全工程完了(必須ステップ完了)]──▶ 完了(Completed) ─┘
現在の状態実行できる操作遷移先
作業中(InProgress)保留 / NG検知 / 全工程完了保留 / エラー / 完了
保留(OnHold)再開 / 中止作業中 / 中止
エラー(Error)是正完了 / 中止作業中 / 中止
完了(Completed)実績返却完了クローズ
中止(Aborted)クローズクローズ

10.2 手順バージョンの状態遷移

              公開申請          承認・有効化        新バージョン有効化 /
 下書き ──────────▶ 審査中 ──────────▶ 有効 ───有効終了日到来───▶ アーカイブ
   ▲                 │              │ ▲                          │
   └────差戻し────────┘              │ │一時停止/再開               │廃止
                                    ▼ │                          ▼
                                 一時停止                       廃止済
  • 公開申請にはワークフロー検証がOKであることが必要(開始ステップが1つ/全ステップが到達可能/説明テキストが全ステップにある/ループに上限回数・終了条件がある)。
  • 承認・有効化には有効開始日 ≤ 有効終了日が必要。
  • 1つの作業手順に対して同時にActiveなバージョンは1つだけです(BR-010)。

10.3 主な業務ルール

ID内容アプリでの挙動
BR-001必須ステップはスキップできない(強制順序制御)ポカヨケNG・必須チェック未完了では「次の工程へ」が進まない
BR-002部品スキャンが期待部品と不一致ならNG「スキャン」でNG時はアラート発火+進行禁止
BR-003工具測定値が規定範囲外ならNG「測定値を送信」でNG時は締め直し(手戻り)を要求
BR-004NG時のアラートは画面・音・ランプの全チャネルへ同時発報アラートデータを全チャネル分生成
BR-005説明テキストは必須、1ステップに複数の動画・画像ナビ画面でメディアをタイル表示+件数表示
BR-006作業者の使用言語で提示、未翻訳は既定言語へフォールバック「※未翻訳のため既定言語で表示」を明示
BR-008必要スキル・資格を満たさない作業者は開始できない開始時に「必要スキル・資格を満たしていません」を表示
BR-009/010使用できるのはActiveかつ有効期間内のバージョン1件のみ開始時に検証。新バージョン有効化で旧版を自動アーカイブ
BR-0141人が同時に作業中にできるのは1件開始時に「この作業者は既に作業中です」を表示
BR-016ログ・監査ログは追記のみ、改ざん検知ハッシュを付与トレーサビリティ検索でハッシュを表示
BR-017製品シリアルから手順・作業者・部品・工具まで遡及トレーサビリティ検索画面
BR-020MESへの実績返却は必須、失敗時は自動再送作業完了時に連携メッセージを生成
BR-024分析ダッシュボードは1秒以内でリアルタイム更新「自動更新 ON (1秒)」
BR-031選択は自動/手動の2モード。テストランは手動のみ作業ナビの「選択モード」
BR-032FOR/WHILEループ。無限ループは上限回数で保護ループバッジ表示・検証で上限/終了条件を必須化
BR-034各データは親を含む識別名で表示し、ドリルダウンできる一覧の識別名列・詳細の親リンク・関連データ絞り込み

(全34ルール。上表は画面操作に関係する主なものを抜粋しています。)

11シードデータ

バックエンド起動時に、デモ・テストラン用のデータが自動投入されます(608件 / 46コレクション)。追加のスクリプト実行は不要です。

データ件数データ件数
作業手順3ステップメディア(動画/画像)54
手順バージョン7ステップ指示(日本語・ベトナム語)61
作業ステップ25ポカヨケ規則10
作業ループ(FOR/WHILE)2作業者8
ステップ遷移23デバイス14
作業指示12作業実績8
工程実績42トレーサビリティ記録42
監査ログ12

動作確認に使える値の例:

  • 進行中の作業実績: WS-00007(作業中)、WS-00008(エラー)
  • トレーサビリティ検索キー: SN-100100 〜 SN-100104
  • 手動選択の作業手順: PRC-MOT-A100 モータユニット組立手順

12よくある質問・トラブルシュート

症状原因・対処
「次の工程へ」が押せない(グレーアウト)必須チェックリストが未完了。右側のチェックリストで「必須」項目をすべてチェックしてください。
「ポカヨケ判定NGのため次工程へ進めません」部品スキャンまたは工具測定値がNG。正しい部品をスキャンし直す、規定範囲内で締め直してから再実行してください。
「この作業者は既に作業中です」1人が同時に作業中にできるのは1件(BR-014)。進行中の作業を完了・中止するか、別の作業者を選んでください。
「必要スキル・資格を満たしていません」ステップの必要スキル・資格が不足、または資格が失効(BR-008)。要件を満たす作業者を選んでください。
「自動選択: 割当済の作業指示がありません」状態が「割当済」の作業指示がない。作業指示の詳細で「割当」を実行するか、手動モードで開始してください。
手動モードで手順プルダウンが出ない選択モードが「自動」のまま。「手動(作業者が選択)」に切り替えてください。
詳細画面の状態遷移ボタンでエラーになる現在の状態から実行できない遷移です。10章の遷移表を確認してください。
フォームの参照項目に何を入れるか分からない関連先のIDを入力します(ヒント「関連 xxx のID」)。対象の一覧・詳細画面でIDを確認してください。
画面は出るがデータが空バックエンド未起動。app/backend で npm run dev を実行してください。
登録したデータが消えたインメモリ保持のため、バックエンド再起動でシード状態に戻ります(13章)。
ポートが使用中で起動できない既存プロセスを停止:lsof -ti:4000,5173 | xargs kill
Mac で vite / jest が起動しないnode_modules が別OS(Windows)でインストールされたもの。削除して npm install をやり直してください。

13制約事項

  • データは在メモリ(インメモリ)保持です。バックエンドを再起動すると、登録したデータはシード(初期)状態に戻ります。DB/Prisma は使用していません。
  • ログイン認証はありません。権限は利用者アカウントのロール属性として扱い、業務APIでは loginId による権限判定のみ行います。
  • 動画・画像は実ファイルを再生・表示しません。作業ナビのメディア欄はプレースホルダ(🎬 / 🖼️ とキャプション)で、件数と構成を確認するためのものです。
  • 音声ガイドは音声を再生しません。ガイド文をテキストで表示するところまでが本デモの範囲です。
  • WHILEループの終了条件式は簡易DSL(loopIteration>=N、result==Ok など)で評価します。複雑な条件式には対応していません。
  • 対象言語は ja / en / zh / vi / pt を定義していますが、シードデータは日本語・ベトナム語のみ収録しています。
  • 本番運用では、永続化層を PostgreSQL(Prisma 等)+オブジェクトストレージ(S3 等)へ差し替えることを想定しています。

本マニュアルは uml-workflow-v3 で生成したアプリケーションの実装に基づいています。