— 受託開発 —

案件管理システム

System · 2026更新日

社内の案件を一元管理する業務システム。進捗・見積・請求など、案件に関わる情報を集約し、担当者やステータスごとにフィルタ・検索できる管理画面を提供。Googleカレンダーとの連携により、スケジュール管理も業務フローにシームレスに組み込めるように設計しました。

経緯

取引先で私が担当している案件を、自分で管理しやすくしたくて作りました。依頼を受けて作った受託開発ではなく、取引先の社内ツールとして1から作っています。

それまで Google スプレッドシートで管理していた作業実績も、このシステムに移し、Web の画面で記録・集計できるようにしました。

できること

案件管理

案件の画面の上部。期間・人日・受注額・粗利・営業利益など(案件名・取引先名・金額は伏せ、何が入っていたかを赤字で添えています)
案件の画面の上部。期間・人日・受注額・粗利・営業利益など(案件名・取引先名・金額は伏せ、何が入っていたかを赤字で添えています)

進捗管理

利益率と進捗の比較(金額はダミー)。予定の進捗と実績の進捗の差から「予定通り」と判定
利益率と進捗の比較(金額はダミー)。予定の進捗と実績の進捗の差から「予定通り」と判定

アサイン管理

メンバー別のガントチャート。タスクの予定(緑のバー)と作業実績(紫の点)、今日の線(赤)。期間を選んで表示できる(名前と案件名は伏せています)
メンバー別のガントチャート。タスクの予定(緑のバー)と作業実績(紫の点)、今日の線(赤)。期間を選んで表示できる(名前と案件名は伏せています)
月ごとの稼働時間(メンバー別の積み上げ)と人数
月ごとの稼働時間(メンバー別の積み上げ)と人数

作業実績

作業実績の画面。月の合計・予想・残りの営業日などを上に表示し、手入力・もくもく投稿からの取り込み・前日分の複製・Excel の入出力ができる(名前と案件名は伏せています)
作業実績の画面。月の合計・予想・残りの営業日などを上に表示し、手入力・もくもく投稿からの取り込み・前日分の複製・Excel の入出力ができる(名前と案件名は伏せています)

どんなシステムか

案件ごとの受注額に対して、人件費と経費を自動で集計し、利益率をその場で表示する社内の業務システムです。作業時間を記録するだけで、案件の利益が見えるようにしました。

社内通貨(社内通貨システム)も、このシステムの機能のひとつです。

全体の流れ

  1. 案件を登録する(受注額・予定人日・期間)
  2. タスクを作る(担当・期間・重み・業務種別)。これがスケジュールになり、ガントチャートで予定と実績を見比べられる
  3. 作業実績を記録する(朝礼報告・もくもく投稿・Google カレンダーから取り込み/手入力/Excel の取り込み)。作業時間 × 単価で人件費を自動で計算する
  4. 案件の画面に、粗利・営業利益・利益率と、完了時の利益の予測を表示する

案件管理

キャッシュフローのグラフ。累計の入金(緑)と累計のコスト(赤)
キャッシュフローのグラフ。累計の入金(緑)と累計のコスト(赤)
稼働の分析(業務の分類・種別ごとの割合)とタスクの一覧(名前とコストは伏せています)
稼働の分析(業務の分類・種別ごとの割合)とタスクの一覧(名前とコストは伏せています)

人件費の出し方(雇用形態ごと)

利益の出し方

アサインとスケジュール管理(タスク管理とガントチャート)

作業実績

金額の見せ方

その他の画面

ダッシュボード。稼働時間・朝活・残業なし・深夜・出社・社外の打ち合わせ・投稿・対応案件のランキング(名前は伏せています)
ダッシュボード。稼働時間・朝活・残業なし・深夜・出社・社外の打ち合わせ・投稿・対応案件のランキング(名前は伏せています)
ログイン画面。Google アカウントでログインする
ログイン画面。Google アカウントでログインする

関連するページ

使った技術

バックエンド
PHP 8.2 以上Laravel 12Laravel Socialite(Google アカウントでログイン)
フロントエンド
BladeTailwind CSS v4Vite 7Chart.js 4axios
ガントチャート
外部のライブラリを使わず自作
データベース
MySQL
テスト・品質
PHPUnit 11MockeryFakerLaravel Pint
デプロイ
GitHub Actions(main は本番、dev は開発環境へ自動デプロイ)
ロボットではないことを確認するためです。
見事退治ができたら詳細が表示されます。

このハエ叩きは、reCAPTCHA のような「人間かどうかの確認」に使える仕組みです。
見た目はサイトに合わせて自由に作れて、判定は裏で Cloudflare Turnstile が行います。