---
# System prepended metadata

title: 神谷文太のjava-semi仕様書

---

# 神谷文太のjava-semi仕様書

## ToDoリストシステム

### 改版履歴
|日付|版数|変更内容|
|:---:|:---:|:---|
|2022/04/22|初版|初版作成|
|2022/04/26|第2版|大幅の修正|
|2022/04/27|第3版|データベース構造の作成|
|2022/05/15|第4版|カテゴリ登録機能の追加とデータベース構造の作成|
|2022/05/16|第5版|データベース構造の修正および追加（外部キーや更新日時の追加）　　　　機能の追加（カテゴリ登録機能）|


### 用語の定義
|用語|定義|
|:---|:---|
|システム|この要求仕様書に基づいて開発するToDoリストシステムのこと。|
|ユーザ|本システムを利用する利用者のこと。|
|データベース|本システムを運用するために用いるMySQLのこと。|
|タスク|ユーザが登録したユーザがやるべきこと|
|カテゴリ|ユーザが登録したタスクのひとまとまりのこと|


### 1. 目的
　ユーザがタスクを洗い出し、カテゴリ別に分けたりすることで、タスクの抜け漏れを防止するためにシステムを開発する。ユーザはタスクを登録することができ、それらに優先順位や期限をつけて整理することができる。<br>
 　これらの機能を備えたシステムを開発することで、ユーザが安心してタスクを終われせることができ、優雅な生活の一助となることが期待される。


### 2. 機能要件
#### 2-1. 新規登録機能
ユーザがシステムを利用するために、システムのデータベースにユーザ情報を登録する機能。
ユーザが新規登録ページにおいて下記の事項を正しく入力し、ページ下部の「登録する」ボタンを押すことで、新規登録が完了する。

|入力事項|制約|備考|
|:---|:---|:---|
|ユーザネーム|NOT NULL|半角英数字|
|メールアドレス|NOT NULL, UNIQUE||
|パスワード|NOT NULL, 数字のみ不可, 英字のみ不可|半角英数字の組み合わせ|

#### 2-2. ログイン機能
ユーザが新規登録時に登録した情報を用いて、システムの2-3. 以下の機能を使用する為にログインする機能。
ユーザがログインページにおいて必要事項を正しく入力し、ページ下部の「ログイン」ボタンを押下することで、ログインできる。
ログイン後は、トップページに遷移する。
正しい情報が入力されなかった場合は、エラーメッセージが表示され、再度入力が求められる。

|入力事項|制約|備考|
|:---|:---|:---|
|メールアドレス|NOT NULL, UNIQUE||
|パスワード|NOT NULL, 数字のみ不可, 英字のみ不可|半角英数字の組み合わせ<br>パスワード確認も行う|

#### 2-3. タスク登録機能
ユーザがタスクを登録する機能。
ユーザがタスク閲覧ページで、「新規作成」をクリックすることで、タスクの登録が完了する。

#### 2-4. タスク閲覧機能
ユーザはカテゴリを選ぶと、そのカテゴリに属するタスクを閲覧することができる。

#### 2-5. タスクの実施記録機能
ユーザがタスクの実施を完了した際に、実施完了記録をつけることができる。

#### 2-6. カテゴリ登録機能
ユーザがカテゴリを登録する機能。
ユーザがカテゴリ閲覧ページで、「新規作成」をクリックすることで、カテゴリの登録が完了する。

#### 2-7. ログアウト機能
ユーザがシステムを使用後に、他者に不正に使用されないようにログアウトする機能。
ログイン後の各ページ上部にある「ログアウト」ボタンを押下することで、ログアウトできる。
ログアウト後は、ログインページに遷移する。

#### 2-8. カテゴリ登録機能
ユーザがカテゴリを登録する機能。
ユーザがカテゴリ閲覧ページで、「新規作成」をクリックすることで、カテゴリの登録が完了する。


### 3. データベース構造
#### 3-1. ユーザテーブル

|カラム名|説明|型|制約|備考|
|:---|:---|:---|:---|:---|
|id|ユーザテーブルのキー|INT|PRIMARYKEY<br>AUTO INCREMENT<br>NOT NULL||
|name|ユーザネーム|VARCHAR(20)|NOT NULL||
|email|メールアドレス|VARCHAR(256)|UNIQUE<br>NOT NULL||
|password|パスワード|VARCHAR(20)|NOT NULL||
|created_at|作成日時|DATETIME|NOT NULL||
|updated_at|更新日時|DATETIME|NOT NULL||


#### 3-2. カテゴリテーブル

|カラム名|説明|型|制約|備考|
|:---|:---|:---|:---|:---|
|id|カテゴリテーブルのキー|INT|PRIMARYKEY<br>AUTO INCREMENT<br>NOT NULL||
|name|カテゴリの名前|VARCHAR(50)|UNIQUE<br>NOT NULL||
|created_at|作成日時|DATETIME|NOT NULL||
|updated_at|更新日時|DATETIME|NOT NULL||
|user_id|登録したユーザーのID|INT|NOT NULL||





#### 3-3. タスクテーブル
|カラム名|説明|型|制約|備考|
|:---|:---|:---|:---|:---|
|id|タスクテーブルのキー|INT|PRIMARYKEY<br>AUTO INCREMENT<br>NOT NULL||
|name|タスクの名前|VARCHAR(50)|NOT NULL||
|created_at|作成日時|DATETIME|NOT NULL||
|updated_at|更新日時|DATETIME|NOT NULL||
|completed|タスクが完了したか否か|BOOLEAN|NOT NULL||
|memo|メモ|VARCHAR(500)|NOT NULL||
|deadline|タスクの期限|DATETIME|||
|user_id|登録したユーザーのID|INT|NOT NULL||
|category_id|属しているカテゴリのID|INT|NOT NULL||
