# 生鮮食品の流通卸システム
商品の受発注、製造加工や在庫管理などを行うwebシステム
## 生鮮食品の流通卸システム作成
メンバーとして以下の作業内容に従事した。
- API作成
- 画面作成
- DB設計
- CI導入
- 高速化
### API作成: 工場の製品を製造するためのスケジュール自動作成
商品を製造するための工場で使う機能開発を行っていました。バックエンドにはLaravelを使っていました。
工場では商品を製造する計画をexcelを使って受注した商品の在庫や出荷日などから担当者が考えて手作業で製造の予定をたてていました。製造の予定を立てるのに時間がかかるため工場の人たちが製造するためのスケジュールを自動で作成するように機能開発を行いました。
マスタに設定されている製造工程と工場の稼働時間、利用可能な製造ラインなどの情報から工場出荷日を目安に消費期限が可能な限り長くなるように自動的に製造のスケジュールを設定する機能を開発しました。カレンダーから製造の工程を手動変更できるようにも対応しました。手動で変更した場合にバッチ処理で最適化されるように調整する機能や製造スケジュールを固定する機能の実装もおこないました。
### CI導入: コンテナのビルドチェック自動化
債権、債務、受注、発注、在庫、マスタ、帳票など大規模プロジェクトでチーム、メンバーの数が多くプルリクエスト作成時にはテストやAPIドキュメントの確認、コンテナのビルドチェックなど、プルリクエスト作成の確認項目が非常に多い状況でした。開発者の負担を減らすためにGithubActionsでバックエンドのコンテナのビルドチェックなどプルリクエスト作成時に必要な決まり事を自動で行えるようにしました。
### 高速化: バックエンド&フロントエンド
大規模プロジェクトでマイグレーションに時間がかかっているため簡単なPRを出しても完了待ちが発生したり、GithubActionsの無料枠を超過してコストがかかっているためマイグレーションファイルをまとめて高速化しました。
フロントエンドではwebpackからviteに移行してnodeのバージョンを12から18に変更しました。TypeScriptを利用していませんでしたがviteに移行したときにTypeScriptを導入して型安全を確保してタイポやデグレを減らすことができるようになりました。
また、CIの実行時間を大幅に短縮できたためコスト削減につながりました。