#プロジェクト概要
産業機器会社の部品管理システムに図面管理パッケージを組み込み
#期間
2023年11月〜2024年4月(6ヶ月)
#チーム情報
PM 1名
メンバー 4名(私含む)
Laravel11で図面管理システムである自社システムを組み込んだ業務システムを開発した。
PMがクライアントと要件定義し、私は要件定義の打ち合わせに加わりつつ、実装した機能について基本設計から実装、テスト(単体、結合)を担当した。実装した機能はログイン機能とユーザーマスタ機能と検索機能と日英切り替え機能である。またDockerで開発環境を作成し、他メンバーに共有しながら開発を進めた。作成した開発環境(コンテナ)はOSがAmazonlinux2,DBがMysql8.0,サーバーがApache,フレームワークがLaravel11である。
#ログイン機能
【概要】
クライアントからの要望に基づき、Laravelの既存のUserテーブルではなく、新規に作成したUser_Masterテーブルを使用してログイン機能を実装しました。この機能により、セキュリティ上の要件を満たしながら、柔軟なログイン管理を可能にしました。
【課題】
Laravelは既定でUserテーブルを使用するよう設計されていますが、クライアントのセキュリティポリシーにより、独自のテーブルを利用する必要がありました。この制約により、Laravelの標準的な認証プロセスが利用できない問題が発生しました。
【取り組み】
標準機能を活用しつつ、独自テーブルに対応させる方法を検討しました。Laravelの認証設定ファイル(auth.php)やルーティング設定(web.php)のカスタマイズを行い、効率的かつ安全にログインプロセスを実現しました。
【打ち手・使用した技術】
Laravelの認証設定ファイル(auth.php)にUser_Masterテーブルを追加し、カスタマイズした認証プロセスを構築しました。また、オリジナルのログイン画面を作成し、バリデーションエラー時のメッセージ表示やリダイレクト処理を実装しました。
【結果】
新規テーブルを使用した場合でも、標準のUserテーブルを使用した場合と同様にスムーズなログイン体験を提供できるようになり、クライアントのセキュリティ要件を満たしました。
#ユーザーマスタ機能
【概要】
クライアントがログイン可能なユーザーを権限ごとに管理できるように、ユーザーマスタ画面を作成しました。この画面を通じて、ユーザー情報を一括管理するための機能を提供しました。
【課題】
大量のユーザー情報を手作業で管理するには非効率であるため、CSVを用いた一括操作が求められていました。また、アップロード時の入力データの制限やエラーメッセージの整備が必要でした。
【取り組み】
まず、CSVのアップロード・ダウンロードに必要な要件を定義し、クライアントと調整しました。次に、バリデーションの範囲を検討し、不正データの流入を防ぎながら利便性を損なわない設計を行いました。
【打ち手・使用した技術】
Laravelのライブラリを活用してCSVアップロード・ダウンロード機能を実装しました。JavaScriptを用いてボタン操作時の動作を制御し、特定のファイル名でのみアップロード可能にするバリデーション処理を組み込みました。
【結果】
クライアントは、ユーザー情報をCSVファイルで一括管理できるようになり、従来よりも効率的な運用が可能になりました。
#検索機能
【概要】
クライアントからの要望に応え、部品一覧画面に検索機能を実装しました。この機能により、クライアントは特定の条件で絞り込んだ情報を迅速に取得できるようになりました。
【課題】
複数の検索条件を切り替えて使用した場合、検索内容が消える問題が発生し、ユーザーエクスペリエンスの低下を招いていました。この問題を解決する必要がありました。
【取り組み】
検索フォームの状態管理を最適化するため、セッションを活用する設計を検討しました。検索条件が切り替え時に保持されることで、操作性を向上させることを目指しました。
【打ち手・使用した技術】
検索フォームの切り替えをセッションで管理する仕組みを構築しました。Laravelを用いてバックエンド処理を実装し、フロントエンドにはJavaScriptを用いて動的なフォーム切り替えを実現しました。
【結果】
フォームの切り替え後も検索内容が保持されるようになり、ユーザーの利便性が向上しました。
#日英切り替え機能
【概要】
クライアントの要望に基づき、システム内の用語を日英で切り替える機能を実装しました。これにより、国際的な利用者にも対応可能なシステムが実現しました。
【課題】
Laravelの標準的な言語切り替え機能では対応できない部分(例:ログインエラー文)に対して、別途対応が必要でした。
【取り組み】
言語切り替えの範囲を明確化し、システム全体で一貫性のある実装を目指しました。特に、Laravelの標準機能で対応できない部分をどのように拡張するかを検討しました。
【打ち手・使用した技術】
セッションに言語設定用のフラグを持たせ、GETパラメータで切り替え処理を実装しました。Laravelのlang.phpを活用しつつ、カスタムスクリプトを用いて動的に言語を変更できる仕組みを構築しました。
【結果】
システム内の全ての画面で日英切り替えが可能となり、クライアントからの高評価を得ました。