11 — 実習先

Besq Sarana Abadi

企業実習中に作った工場の生産管理情報システム。Go(Gin、GORM)のバックエンド、SvelteKit の画面、そして作業者は機械の QR コードを読み取ってログインします。

企業実習

公開リポジトリもスクリーンショットもありません。コードと画面は会社のものです。

実習先の情報

会社
PT Besq Sarana Abadi
場所
インドネシア、西ジャワ州ブカシ
役職
実習生 — フルスタック開発者
期間
2026年1月5日 – 6月22日
技術スタック
Go · Gin · GORM · SQLite · JWT · SvelteKit (Svelte 5 Runes) · Chart.js · jsQR

実習の記録

実習先について

PT Besq Sarana Abadi は、ゴム製品と金属の表面処理を手がけるメーカーで、ISO 9001:2015 の認証を受けています。工場は3交代制で24時間稼働しています。

生産の記録はまだ手作業でした。とくに間違いやすかったのは二つ。毎日の生産時間報告(Laporan Waktu Produksi、LWP)の計算と、機械ラインが止まっていた時間(ラインストップ)の記録です。

担当したこと

ウェブベースの工場生産管理情報システムを、データベースのスキーマから製造現場の作業者用画面まで、フルスタックで作りました。

ソフトウェアのほかに、社内ネットワーク設定の保守も担当範囲に含まれていました。詳細はここには書きません。

システムのつくり

SQLite データベースの上に、Go と Gin、GORM によるバックエンド。認証は JWT で、権限は管理者、マネージャー、チームリーダー、作業者の段階に分かれています。フロントエンドは SvelteKit(Svelte 5 Runes)です。

作業者は実際の機械に貼られた QR コードを読み取ってログインし(ブラウザ上の jsQR で読み取り)、サイクルタイムの記録、不良品(NG)の登録、LWP の送信を行います。管理職にはグラフのダッシュボードがあります。

判断と制約

システムを実際に使い始めてから、開発中には出なかった問題が二つ見つかりました。

JWT トークンの期限が切れて、シフトの途中で急に作業者が認識されなくなる。

グローバルな fetch インターセプターで解決しました。バックエンドからの応答をすべて一か所で確認し、401 を受け取ったらローカルの記憶を消してログイン画面に戻します。呼び出しごとではなく一か所で処理するので、処理から漏れるリクエストはありません。

日報の保存がマスターパラメーターのログと混ざる。 どちらも、はっきり分かれていないクエリの経路で保存されていて、その混ざり合いが誤ったデータを生んでいました。二つがはっきり分かれるまでクエリを整理しました。

結果と引き継ぎ

システムの最終的な性能は、企業側の指導担当者がテストしました。

実習期間の終わりに、コードベースと管理者権限を会社の IT チームに引き継ぎました。