← ポートフォリオトップへ

SCREEN PREVIEW

業務システムCRUDサンプル:在庫管理画面

在庫の登録・更新・削除・CSV一括インポート/エクスポートと、入出庫の変更ログを備えた小規模業務システムです。同じCRUD+CSVの構成は、勤怠管理・受発注・会員管理のような Access/kintone 代替の小規模システムにそのまま転用できます。

このページについて:本サンプルは Node.js の CLI ツール(GUIなし)です。ここに表示している一覧・ログ・実行結果は、実際のコマンド出力とレポートファイルの内容を静的HTMLで再現したプレビューです。数値・氏名はすべて架空データです。

現在庫

codenamequantityunitPricestatusupdatedAt
SKU-001ノートPC 14インチ768,000在庫僅少2026-07-31 09:05
SKU-003USB-Cハブ453,200適正2026-07-31 09:10
SKU-004モバイルディスプレイ815,800在庫僅少2026-07-31 09:00

status は quantity が10未満の行を「在庫僅少」として画面表示用に色分けしたものです(しきい値は表示上の例)。

入出庫ログ(movements)

codetypedeltareasonat
SKU-004create+8新規登録09:00:00
SKU-001out-5出庫: 発注分出荷09:05:00
SKU-003in+20入庫: 定期発注分09:10:00
SKU-002delete-40廃番09:15:00

在庫の増減は create/in/out/delete の種別・差分・理由・日時で自動記録され、Excelの上書き入力と違って履歴が残ります。

CSV一括インポート結果

  • 追加: SKU-004(モバイルディスプレイ)
  • スキップ: SKU-002(code SKU-002 は既に存在します(重複))

コード重複・数量マイナス化・型チェックは登録・更新の全経路で共通のバリデーション関数を通すため、CLIから入れてもCSVから入れても同じルールが効きます。

実行結果(node src/runDemo.js

初期在庫3件に対し、CSV一括インポート(1件追加・1件スキップ)→ 出庫 → 入庫 → 廃番(削除)→ CSVエクスポートを固定シナリオで通しで実行した、実際のコンソール出力です。

$ node src/runDemo.js

# 在庫管理デモ 実行結果

## インポート結果
- 追加: SKU-004
- スキップ: SKU-002(code SKU-002 は既に存在します(重複))

## 現在庫(エクスポート後)
| code | name | quantity | unitPrice | updatedAt |
|---|---|---|---|---|
| SKU-001 | ノートPC 14インチ | 7 | 68000 | 2026-07-31T09:05:00.000Z |
| SKU-003 | USB-Cハブ | 45 | 3200 | 2026-07-31T09:10:00.000Z |
| SKU-004 | モバイルディスプレイ | 8 | 15800 | 2026-07-31T09:00:00.000Z |

## 入出庫ログ(movements)
| code | type | delta | reason | at |
|---|---|---|---|---|
| SKU-004 | create | 8 | 新規登録 | 2026-07-31T09:00:00.000Z |
| SKU-001 | out | -5 | 出庫: 発注分出荷 | 2026-07-31T09:05:00.000Z |
| SKU-003 | in | 20 | 入庫: 定期発注分 | 2026-07-31T09:10:00.000Z |
| SKU-002 | delete | -40 | 廃番 | 2026-07-31T09:15:00.000Z |

時刻は固定値のため何度実行しても同じ結果になります。この出力は reports/summary_sample.md としてリポジトリにコミット済みで、上の表・ログと同一データです。

CLIコマンド一覧

$ node src/cli.js <add|update|delete|list|import|export> [--file path] [flags]
  add    --code <c> --name <n> --quantity <n> --unitPrice <n>
  update --code <c> --delta <±n> [--reason <text>]
  delete --code <c>
  list
  import --csv <path>
  export --csv <path>

これは cli.js の usage 出力そのものです。個別コマンドとしても、上記シナリオとしても同じロジック(src/store.js)で動作します。

▸ ソースコード(GitHub) ▸ ポートフォリオトップへ戻る