# プロジェクト概要
会社で大学教務システム(fuelPHP)の保守契約を行なっています。そちらは元々別企業のフロントエンジニアが作成したもので、機能を満たしておらずコードも難解で非常に使いにくいものでした。PHPバージョンも低いことから昨年Laravel9に置きかえることになりました。
# チーム情報
* PM、メンバー1人(私)の2人で作業を実施
* 納期は半年
* 別の旧システム保守担当者に仕様を確認しつつ作業
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
# 開発・実装内容1
## 概要
教職員情報画面の開発
## どのような機能の開発・実装か
教職員の新規登録、更新、削除、一覧閲覧ができる画面を作成 ※個人開発
* Bootstrapで画面を作成
* 旧システムを参考にしながら関連テーブル(親子テーブル)を作成
* 基本的なCRUD機能を作成
## 課題・問題点
旧システムのDB構造・テーブル名・カラム名が非常に難解で、仕様を直ぐには把握できない状態。PMと話し合い、新システムではできるだけ直感的にわかるようなDB構造・テーブル名・カラム名になるよう設計を実施。
## 使用した技術
PHP、Laravel、Javascript、MySQL、Bootstrap
## 成果
旧システムよりも直感的にわかりやすいDB構造になった。ただし、テスト実施時にデータのNULL処理によるエラーが思いの外多かったことが心残り。基本的にNOT NULLを使うなど、DBの基本設計についてもう少し工夫できたかもしれない。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
# 開発・実装内容2
## 概要
次年度データ作成画面の開発
## どのような機能の開発・実装か
当年度の学生履歴・科目履歴・成績基準データを次年度に引き継ぐ機能(画面)を作成 ※個人開発
* Bootstrapを使用して画面を作成
* 当年度の学生履歴・科目履歴・成績基準データをDBから取得
* 上記データを次年度様に加工し、次年度データとしてDBに保存
## 課題・問題点
基本的には旧システムの仕様と同様に作成。
次年度では学年を上げることはもちろん、学年が上がる際に初期値に戻すカラムもある。細部の仕様をコード・画面から読み取り設計することがなかなか難しく、PMによく相談を行った。
また、その他の学生関連子テーブルに対し、空データをあらかじめ用意しておかなければならず、確認と作業に手間がかかった。
## 使用した技術
PHP、Laravel、Javascript、MySQL、Bootstrap
## 成果
新しいシステムへの置き換えの難しさを知った。最終的には旧システム仕様にはない「あった方が良い」仕様を足すことができ、使いやすい機能を作成できたと思う。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
# 開発・実装内容3
## 概要
CSV登録機能の開発
## どのような機能の開発・実装か
学生・教員・科目・時間割・履修登録データをCSV登録できる機能を作成 ※個人開発
* Bootstrapを使用して画面を作成
* Ajaxを使って取り込んだCSVデータをサーバーに送信し、画面で再表示
* 再表示した後にPOST送信で再度サーバーにデータを送信し、DB登録処理を実施
## 課題・問題点
旧システムではプログレスバーが動かない、コードが煩雑で読みにくい、等様々な問題点があった。
データの送受信の区切りでプログレスバーを進める必要があったため、適切なタイミングを探りながら最終的にプログレスバーで進捗がわかるようにした。
また、旧システムはCSV登録に関わるクラス・ファイルが複数に分かれており、処理の流れを調べる際にとても見にくい状態だった。ユーティリティ以外は基本的に1つのファイルに処理を書くように変更した。
## 使用した技術
PHP、Laravel、Javascript、MySQL、Bootstrap
## 成果
項目が多数あるのでDBへの保存処理を作成するのがとても大変だった、入力値のバリデーション・バリデーションエラーもしっかりと作成し、旧システムより使いやすい機能にできたと思う。