PHPとMySQLでWeb稟議システムを自作してみたので振り返り


仕事の効率化やペーパーレス化を意識して、Web上で稟議の提出から承認までを行えるワークフローシステムを自作した。Webブラウザ上で動くシステム。

技術的には非常にシンプルな構成で、バックエンドにはPHPとMySQL、フロントエンドにはHTML、CSS、JavaScript(Vanilla JS)を採用している。フレームワークを使わずセッション管理やデータベース接続(PDO)、非同期通信(Fetch API)による画面更新など、Webアプリの基本的な仕組みで組み上げた。

実際の利用手順は以下の通り。提出者と承認者でログインアカウントや画面が分かれているのが特徴。

まず、初期画面であるログイン画面にアクセスする。提出者用アカウント(user1)と承認者用アカウント(boss1)が用意されており、まずは提出者用IDでログインを行う。

提出者画面へ遷移すると、上部に「件名」「金額」「詳細」「添付ファイル(見積書など)」を入力できる申請フォームがある。必要事項を入力して送信すると、データベースへ即座に登録され、画面下の「申請一覧」にリアルタイムで反映される。この画面には承認ボタンが存在しないため、自分自身で承認することはできないようになっている(当然だけど)。

次に、今度は承認者用アカウントでログインし直す。

すると承認者専用の画面へと切り替わり、提出された稟議の一覧が表示される。一覧からは提出者名や金額、申請日時を確認できるほか、添付されたファイルも元のファイル名のままダウンロードして内容をチェックできる。内容に問題がなければ、操作列にある「承認する」ボタンをクリックする。

ボタンを押すとステータスが「承認済み」に変わり、データベース側の承認履歴テーブルに「誰がいつ承認したか」のログがしっかりと残るようになっている。

最初は自分で自分の申請を承認できてしまうような初歩的な仕様漏れもあったけど、提出者と承認者の権限を明確に分けたことで、実用的なワークフローシステムに仕上がった。

自分のポートフォリオサイト上で手軽に試せるデモサイトを公開した。(なお、ここではポートフォリオサイトは非公開)