DataBase

【自作GroupWareの作り方】開発準備とプロジェクト構造の理解【詳細解説】

【第1回】PHPで自作GroupWareを作ろう|開発準備とプロジェクト構造の理解

このチュートリアルシリーズでは、実務レベルで使えるグループウェアを、フレームワークを使わずにPHPとJavaScriptで一から構築する方法を徹底的に解説していきます。

第1回では、「開発環境の準備」「プロジェクトの初期構造」「MVCモデルの理解」「データベース設計」など、基盤のすべてを解説します。

🧩 全10回構成チュートリアル(予定構成)

タイトル 内容概要
第1回 開発準備とプロジェクト構造の理解 PHP・MySQL環境構築/MVC構造/ルーター/ベースController・DB接続作成
第2回 ログイン・認証機能の実装 ユーザー登録・ログイン処理/セッション管理/ログインガードの仕組み
第3回 組織管理機能の作成 部署階層のCRUD処理/一覧・追加・編集・削除画面の作成
第4回 ユーザー管理機能の作成 管理者によるユーザー登録・編集/所属部署割当/権限管理
第5回 スケジュール機能の実装 日/週/月カレンダー表示/スケジュール作成・表示・共有/ドラッグ操作対応
第6回 メッセージ機能の実装 チャット風UIでの送受信/グループメッセージ/既読管理/ファイル添付対応
第7回 ワークフロー機能の実装 承認ルート定義/申請→承認プロセス管理/テンプレート作成
第8回 WEBデータベース機能の作成 自由にテーブル設計→入力画面生成/フィルター検索/CSV出力
第9回 タスク管理(カンバン)機能の実装 ボード・リスト・カードの管理/ステータス移動/進捗率表示
第10回 ホーム画面と通知・設定管理 ダッシュボード実装/通知機能/メール通知処理/各種設定項目管理

本記事を読んで実行すれば

  • PHP開発環境を構築できる
  • 自作MVC構成の考え方が理解できる
  • GroupWareアプリの全体像が掴める

また、初学者でも迷わず進められるよう、すべてのコマンド・コード・図解を盛り込みます。

▶ GitHub: Yuusuke9228/groupware


📌 1. 開発環境を整える

1-1. PHP・MySQL・Apacheの準備

Windowsの場合は XAMPP、Macの場合は MAMP を使うのが最も簡単です。

✅ XAMPPの導入(Windows)

  • XAMPP公式サイトからインストーラーをダウンロード
  • PHPバージョン 7.4 以上推奨
  • ApacheとMySQLを「Start」しておく

✅ MAMPの導入(Mac)

  • MAMP公式からインストール
  • 設定画面で、PHPとMySQLのバージョンを確認

1-2. Gitとエディタの準備

コマンド操作に慣れるために、Git Bashターミナルを使いましょう。

コードエディタはVisual Studio Codeを推奨します。


📦 2. プロジェクトをクローン&配置

2-1. GitHubからコードを取得

git clone https://github.com/Yuusuke9228/groupware.git
cd groupware

2-2. 公開ディレクトリの配置

publicフォルダをWebサーバーのルートに設定(例:htdocs/groupware/public

Apacheなら、httpd.conf または VirtualHost の DocumentRoot を以下のように変更:

DocumentRoot "C:/xampp/htdocs/groupware/public"
<Directory "C:/xampp/htdocs/groupware/public">
  AllowOverride All
</Directory>

2-3. configファイルのコピー

cd config
cp config_sample.php config.php
cp database_sample.php database.php

中を開いて、自分のMySQLユーザー名・パスワードに合わせて設定してください。


🧠 3. MVCモデルとは?なぜ使うのか?

MVCとは以下の3つの設計要素を分離するアーキテクチャです:

  • Model:データベース処理
  • View:画面表示(HTML)
  • Controller:画面遷移や処理の制御
MVCモデルの図解
データの流れを分離することでメンテナンス性が上がる

メリット:

  • Viewを変えてもModelはそのまま
  • Controllerが処理を一元管理
  • 役割が分かれ、複数人開発に強い

本プロジェクトでは自作の簡易MVC構造を使って構築されています。


📁 4. プロジェクトの構造を理解する

以下が全体構成図です:

プロジェクト構成図

この構成を見ながら、各ディレクトリの役割を理解していきましょう。

主要ディレクトリの解説:

  • Controllers/:画面・機能別の処理
  • Models/:DBアクセス用クラス
  • views/:HTML出力テンプレート
  • Core/:RouterやDB接続などアプリの中心

Routerの仕組み:

// public/index.php
require_once '../Core/Router.php';
$router = new Router();
$router->dispatch($_SERVER['REQUEST_URI']);

このように、RouterがURLを解釈して適切なControllerに処理を振り分けます。


🗃 5. データベース構築とER図

データベースは db/schema.sql に全て記述済みです。

phpMyAdmin等で次のようにインポートします:

mysql -u root -p groupware_db < db/schema.sql
ER図(Entity Relationship Diagram)
各テーブルは役割ごとに分離され、リレーションが構築されている

主なテーブル例:

  • users:ユーザー管理
  • organizations:部署階層
  • schedules:予定管理
  • messages:チャット・メッセージ

🚀 6. ローカルでの動作確認

Apacheを起動後、以下にアクセスします:

http://localhost/index.php

ログイン画面が表示されれば成功です。

まだ初期ユーザーがいないので、DBに手動で登録しておきましょう。

INSERT INTO users (username, email, password, role) VALUES (
  'admin', 'admin@example.com', MD5('password'), 'admin'
);

(※ セキュリティ強化のため、次回以降で bcrypt に変更します)


🧩 まとめと次回予告

  • PHP + MySQL 環境を構築した
  • GitHubリポジトリをクローン&配置した
  • MVC構造を理解し、Router起点でアプリが起動することを確認
  • データベースとER図の概要を把握

次回(第2回)はいよいよ「ログイン・認証機能の作成」に入っていきます。

初学者が最もつまづきやすいセッション管理、バリデーション、パスワードのハッシュ化をわかりやすく解説予定です。

ぜひお気に入り登録・GitHubスターをお願いします。