教材の内容に関係のない質問や教材とは異なる環境・バージョンで進めている場合のエラーなど、教材に関係しない質問は推奨していないため回答できない場合がございます。
その場合、teratailなどの外部サイトを利用して質問することをおすすめします。教材の誤字脱字や追記・改善の要望は「文章の間違いや改善点の指摘」からお願いします。
このパートでは、今回作成するevernote風メモアプリ(simple memo)について、設計を考えていきます。
PHPバージョンとLaravelバージョンで設計方針に違いはありませんが、LaravelバージョンはログインにLaravelの認証機能を使うので、データベース設計に差異があります。
必要な画面を洗い出して、画面遷移方法の確認とデータベース設計を考えています。
今回のWebアプリケーションに必要な画面を考えてみると、下記の3画面になります。
ユーザー登録画面には、ユーザーの名前とメールアドレス、パスワードを入力して登録します。
登録が終わるとメモ投稿画面に遷移します。
ログイン画面ではユーザーのメールアドレスとパスワードを入力してログインします。
ログインするとメモ画面を表示します。
アカウント作成リンクをクリックすると、ユーザー登録画面に遷移します。
メモ画面ではユーザーが投稿した一覧と、投稿用のフォームが表示されます。
プラスボタンを押すと、新規のメモを追加します。
プラスボタンの右のアイコンを押すとログアウトします。
ゴミ箱ボタンはメモの削除です。フロッピーのアイコンを押すと、入力した内容で保存されます。
画面遷移を考えてみると下記のようになります。
最初にWebアプリケーションにアクセスされると、ログイン画面に遷移します。
アカウントがある場合は、そのままログインしてメモ投稿画面を表示します。
アカウントがない場合はアカウントを作成リンクをクリックして、ユーザー登録画面に遷移します。
ユーザー登録画面でユーザー登録をするとメモ投稿画面を表示します。
メモ投稿画面からログアウトすると、ログイン画面に戻ります。
登録するユーザー情報やメモ情報はデータベースに保存していくので、テーブル設計を考えます。
必要なテーブルを洗い出すときには、フォームで入力される内容を元に保存されるデータを考えていくと良いです。
今回のアプリケーションでは、フォームで入力して保存されるのはユーザー登録・メモ投稿です。
画面や画面遷移から考えると、登録するデータはユーザーの情報とメモの情報だけになります。
ユーザー情報のテーブルをusersテーブル
、メモ情報のテーブルをmemosテーブル
とします。
ER図で表すと下記のようになります。1人のユーザーに複数のメモが紐づくイメージです。
この二つのテーブルで、必要な情報は保存できます。
usersテーブルには次の項目を持っています。
memosテーブルには次の項目を持っています。
基本的にはPHPバージョンと同じですが、Laravelの方ではLaravelの機能を使って、ログイン・ログアウトを実装します。
テーブル構造を変えると標準の機能でエラーになることもあるので、Laravel標準のテーブル構造を保ちつつ、usersテーブルとmemosテーブルを用意してみました。
ER図で表すと下記のようになります。
PHPバージョンと基本的には同じですが、usersの方だけemail_verified_atとremember_tokenがあります。
email_verified_atカラムはLaravelでユーザー登録をしたときに、確認メールがユーザーに届きます。
その時の確認判定で使われています。
remember_tokenカラムはLaravelにログインするときの機能で、remember meのチェックボックスにチェックが入っていると、次回から自動でログインできる機能で使われています。
今回は両方とも使いませんので、気にしなくて良いです。レコードの2つの値は常に空になります。
以上で、画面の確認とデータを保存するテーブル構成の確認ができました。
次の章に進んで、実際に開発を行っていきましょう。