はじめに
この記事では、今後開発予定のお知らせ情報管理用簡易CMSの要件定義書について紹介します。本システムは、お知らせの管理やユーザー権限管理、APIアクセス制御などを備えたCMSを想定しています。
システム設計
要件定義書
システム概要
本システムは、お知らせ情報を管理するCMSであり、以下の主要機能を提供します。
- ユーザー管理(登録、権限、認証)
- お知らせ管理(CRUD操作、カテゴリ階層管理)
- APIアクセス制御(許可されたドメイン/IPとエンドポイント単位の管理)
業務要件
- お知らせを効率的に作成・編集・削除できる仕組みを提供
- ユーザーの役割に応じた権限管理を行う
- 外部アプリケーションとの連携を想定し、APIを介したデータ操作を可能にする
- 外部からのアクセスはデフォルトで遮断し、許可されたアクセスのみ受け付ける
機能要件
ユーザー管理
- ユーザー登録:メール認証を通じて有効化
- ログイン:JWTを使用した認証方式
- 権限管理:管理者、編集者、閲覧者の3種の権限
- ステータス管理:
active
と inactive
お知らせ管理
- お知らせの作成、編集、削除
- 公開/非公開のステータス設定
- カテゴリ管理:カテゴリの階層化
- カテゴリ別のお知らせ取得
APIアクセス制御
- 許可されたドメインまたはIPアドレスを登録
- エンドポイント単位でアクセス制御を設定可能
- 許可されたエンドポイントに対するアクセスのみ許可
- APIエンドポイントの管理機能(一覧取得、作成、更新、削除)
基本設計書
システム構成
フロントエンド
- 技術: Vue.js(CDNを利用), TailwindCSS(CDNを利用)
- 役割:
- お知らせ一覧の表示
- ユーザー管理、カテゴリ管理のUI提供
- フォームによるデータ送信
バックエンド
- 技術: PHP, MySQL
- 役割:
- RESTful APIの提供
- JWT認証の実装
- データベース操作
サーバー
ファイル構成
/api
├── auth
│ ├── login.php
│ ├── register.php
│ ├── verify_email.php
│ ├── logout.php
│ └── profile.php
├── announcements
│ ├── create.php
│ ├── edit.php
│ ├── delete.php
│ ├── list.php
│ └── detail.php
├── categories
│ ├── create.php
│ ├── edit.php
│ ├── delete.php
│ ├── list.php
│ └── detail.php
├── access_control
│ ├── create.php
│ ├── delete.php
│ ├── list.php
│ └── update.php
├── endpoints
│ ├── create.php
│ ├── edit.php
│ ├── delete.php
│ ├── list.php
│ └── detail.php
├── db.php
├── jwt.php
├── config.php
├── utils.php
└── middleware.php
└── .htaccess
/public
├── .htaccess
├── index.html
├── css
│ └── style.css
├── js
│ ├── app.js
│ ├── auth.js
│ ├── announcements.js
│ ├── categories.js
│ ├── access_control.js
│ ├── endpoints.js
│ └── profile.js
├── components
│ ├── header.html
│ ├── footer.html
│ ├── user_form.html
│ ├── announcement_form.html
│ ├── category_form.html
│ ├── access_control_form.html
│ ├── endpoint_form.html
│ └── profile_form.html
└── images
機能構成
ユーザー管理
- APIエンドポイント例:
- POST
/api/register
(メール認証リンク送信)
- GET
/api/verify-email
(メール認証処理)
- POST
/api/login
(ログイン)
- POST
/api/logout
(ログアウト)
- GET
/api/profile
(ユーザー情報取得)
- PUT
/api/profile
(ユーザー情報更新)
お知らせ管理
- APIエンドポイント例:
- GET
/api/announcements
(お知らせ一覧取得)
- GET
/api/announcements/{id}
(お知らせ詳細取得)
- POST
/api/announcements
(お知らせ作成)
- PUT
/api/announcements/{id}
(お知らせ編集)
- DELETE
/api/announcements/{id}
(お知らせ削除)
カテゴリ管理
- APIエンドポイント例:
- GET
/api/categories
(カテゴリ一覧取得)
- GET
/api/categories/{id}
(カテゴリ詳細取得)
- POST
/api/categories
(カテゴリ作成)
- PUT
/api/categories/{id}
(カテゴリ編集)
- DELETE
/api/categories/{id}
(カテゴリ削除)
APIアクセス制御
- APIエンドポイント例:
- GET
/api/access-control
(アクセス制御一覧取得)
- POST
/api/access-control
(アクセス制御ルール作成)
- PUT
/api/access-control/{id}
(アクセス制御ルール更新)
- DELETE
/api/access-control/{id}
(アクセス制御ルール削除)
エンドポイント管理
- APIエンドポイント例:
- GET
/api/endpoints
(エンドポイント一覧取得)
- GET
/api/endpoints/{id}
(エンドポイント詳細取得)
- POST
/api/endpoints
(エンドポイント作成)
- PUT
/api/endpoints/{id}
(エンドポイント更新)
- DELETE
/api/endpoints/{id}
(エンドポイント削除)
詳細設計書
データベース設計
テーブル: users
カラム名 | 型 | 説明 |
---|
id | INT (AUTO_INCREMENT) | ユーザーID |
username | VARCHAR(50) | ユーザー名 |
email | VARCHAR(255) | メールアドレス |
password_hash | VARCHAR(255) | パスワードハッシュ |
role | ENUM(‘admin’, ‘editor’, ‘viewer’) | ユーザー権限 |
status | ENUM(‘active’, ‘inactive’) | 利用可否ステータス |
email_verified | TINYINT(1) | メール認証済みフラグ (0/1) |
テーブル: categories
カラム名 | 型 | 説明 |
---|
id | INT (AUTO_INCREMENT) | カテゴリID |
name | VARCHAR(50) | カテゴリ名 |
parent_id | INT (NULL) | 親カテゴリID |
テーブル: announcements
カラム名 | 型 | 説明 |
---|
id | INT (AUTO_INCREMENT) | お知らせID |
title | VARCHAR(255) | タイトル |
content | TEXT | 内容 |
status | TINYINT(1) | ステータス (0:非公開, 1:公開) |
category_id | INT | カテゴリID (外部キー) |
user_id | INT | 作成者のユーザーID (外部キー) |
created_at | TIMESTAMP | 作成日時 |
updated_at | TIMESTAMP | 更新日時 |
テーブル: api_access_control
カラム名 | 型 | 説明 |
---|
id | INT (AUTO_INCREMENT) | エントリID |
domain_or_ip | VARCHAR(255) | 許可するドメインまたはIP |
api_endpoint_id | INT (NULL) | 対象エンドポイントID (外部キー) |
description | TEXT | エントリの説明 |
created_at | TIMESTAMP | 作成日時 |
updated_at | TIMESTAMP | 更新日時 |
テーブル: api_endpoints
カラム名 | 型 | 説明 |
---|
id | INT (AUTO_INCREMENT) | エンドポイントID |
endpoint | VARCHAR(255) | エンドポイントURL |
description | TEXT | エンドポイントの説明 |
created_at | TIMESTAMP | 作成日時 |
updated_at | TIMESTAMP | 更新日時 |
フロントエンド詳細設計
ユーザー登録フォーム
- UI構成:
- 入力項目: ユーザー名、メールアドレス、パスワード
- ボタン: “登録”
- 登録完了後、認証メール送信メッセージ表示
カテゴリ管理画面
- UI構成:
- カテゴリ一覧表示 (階層構造)
- 新規作成、編集、削除ボタン
バックエンド詳細設計
JWT認証
- ログイン時にトークン発行
- 各APIリクエスト時にトークン検証
メール認証
- ユーザー登録時に認証リンクを生成
- リンククリック時にトークンを検証し、有効化
APIアクセス制御
- リクエスト元のドメイン/IPを取得
api_access_control
テーブルを参照し、エンドポイントごとのルールと照合
- 許可されていない場合は403エラーを返却
おわりに
この記事では、お知らせ情報管理用CMSの要件定義書について紹介しました。これからシステム開発を検討されている方の参考になれば幸いです。詳細な設計や実装については、今後の開発フェーズでさらに掘り下げる予定です。
コメント