2021年4月12日月曜日

PHP:Laravel-05

Vueと同時にしていると、Laravel自体の特徴がうまく使えないので、
改めてプロジェクトを作成することにする

まずは設計

1.機能設計

ToDo アプリが持つ機能の箇条書きは以下の通りです。

  • ユーザーはタスク(ToDo)を作成することができる。
  • タスクはタイトル、期限日、状態を持つ。
  • タスクの状態とは、「未着手」「着手中」「完了」の3種類である。
  • ユーザーはタスクを一覧表示することができる。
  • ユーザーはタスクのタイトル、期限日、状態を編集することができる。
  • タスクはフォルダに分類して管理する。
  • そのため、ユーザーはフォルダを作成することができる必要がある。
  • また、ユーザーはフォルダの一覧を表示できる必要がある。
  • ユーザーごとにアカウントを持ち、ログインしたユーザーは自分のフォルダおよびタスクだけを閲覧または編集することができる。
  • ユーザーはパスワードを忘れた場合には再登録することができる。

2.画面設計

画面は省略

2.1.タスク一覧ページ

出入力

項目出入力
フォルダ タイトル出力
タスク タイトル出力
タスク 状態出力
タスク 期限日出力

アクション

項目種類働き
フォルダ作成リンクフォルダ作成ページに遷移する。
タスク作成リンクタスク作成ページに遷移する。
タスク編集リンクタスク編集ページに遷移する。

2.2.フォルダ作成ページ

出入力

項目出入力
フォルダ タイトル入力

アクション

項目種類働き
送信ボタンフォルダを新規作成し、タスク一覧ページに遷移する。

2.3.タスク作成ページ

出入力

項目出入力
タスク タイトル入力
タスク 状態入力
タスク 期限日入力

アクション

項目種類働き
送信ボタンタスクを新規作成し、タスク一覧ページに遷移する。

2.4.タスク編集ページ

出入力

タスク編集ページでは登録済みの情報を画面に出力しておく必要もあります。

項目出入力
タスク タイトル出力
タスク 状態出力
タスク 期限日出力
タスク タイトル入力
タスク 状態入力
タスク 期限日入力

アクション

項目種類働き
送信ボタンタスクを編集し、タスク一覧ページに遷移する。

2.5.ヘッダー

画面をまたいで共通で定義されるパーツもあるでしょう。

今回はヘッダーナビゲーションがすべての画面に共有して配置されます。

出入力

項目出入力
アプリ名出力
ユーザー名出力

アクション

項目種類働き
ログアウトリンクログインしている時のみ表示する。
ログアウト処理を行い、ログイン画面に遷移する。
会員登録リンクログインしていない時のみ表示する。
会員登録ページに遷移する。
ログインリンクログインしていない時のみ表示する。
ログインページに遷移する。

3.URL設計

URLメソッド処理
/folders/{フォルダID}/tasksGETタスク一覧ページを表示する。
/folders/createGETフォルダ作成ページを表示する。
/folders/createPOSTフォルダ作成処理を実行する。
/folders/{フォルダID}/tasks/createGETタスク作成ページを表示する。
/folders/{フォルダID}/tasks/createPOSTタスク作成処理を実行する。
/folders/{フォルダID}/tasks/{タスクID}/editGETタスク編集ページを表示する。
/folders/{フォルダID}/tasks/{タスクID}/editPOSTタスク編集処理を実行する。

4.テーブル定義

フォルダテーブル

カラム論理名カラム物理名型の意味
IDidSERIAL連番(自動採番)
タイトルtitleVARCHAR(20)20文字までの文字列
作成日created_atTIMESTAMP日付と時刻
更新日updated_atTIMESTAMP日付と時刻

タスクテーブル

カラム論理名カラム物理名型の意味
IDidSERIAL連番(自動採番)
フォルダIDfolder_idINTEGER数値
タイトルtitleVARCHAR(100)100文字までの文字列
状態statusINTEGER数値
期限日due_dateDATE日付
作成日created_atTIMESTAMP日付と時刻
更新日updated_atTIMESTAMP日付と時刻