教材の内容に関係のない質問や教材とは異なる環境・バージョンで進めている場合のエラーなど、教材に関係しない質問は推奨していないため回答できない場合がございます。
その場合、teratailなどの外部サイトを利用して質問することをおすすめします。教材の誤字脱字や追記・改善の要望は「文章の間違いや改善点の指摘」からお願いします。
機能リストを元にウェブアプリの画面遷移を考えてみましょう。
今回はUMLの一種であるステートマシン図を使います。
ステート(状態)を画面に置き換えて、それぞれの画面で何をしたら次の画面に遷移するのかを考えていきます。
今回はPlantUMLというツールを使って図を作成していきます。
http://plantuml.com/ja/
テキストでルールを書いていく事でキレイな図を出力してくれます。
細かい図の調整などをしなくて良いので、実際の開発の現場でも人気があります。
この教材ではPlantUMLの書式などの解説は省きますが、興味があれば是非調べてみてください。
まずは大まかに考えられる画面を並べてみます。図1-3-1
図1-3-1 ステートマシン図基本
参考までに、PlantUMLのコードは以下です。
Copied!@startuml
[*] --> トップページ
トップページ -> 会員登録
トップページ -left-> ログイン
トップページ --> カート
カート -> お届け先入力
お届け先入力 -> お届け先入力内容確認
お届け先入力内容確認 -> 購入完了
@enduml
次に、画面遷移するきっかけとなるイベントを追加していきます。図1-3-2
図1-3-2 ステートマシン図イベント追加
Copied!@startuml
[*] --> トップページ
トップページ -> 会員登録:会員登録をクリック
トップページ -left-> ログイン:ログインをクリック
トップページ --> カート:カートをクリック
カート -> お届け先入力:注文をクリック
お届け先入力 -> お届け先入力内容確認:入力内容確認をクリック
お届け先入力内容確認 -> 購入完了:注文確定をクリック
@enduml
図を見ながら足りない画面や遷移が無いかを考えます。
これらを図に反映すると図1-3-3のようになります。
図1-3-3 ステートマシン図イベント追加2
Copied!@startuml
[*] --> トップページ
トップページ --> トップページ:ログアウトをクリック
トップページ -> トップページ:商品検索する
トップページ -> 会員登録:会員登録をクリック
会員登録 -> トップページ:トップページをクリック
会員登録 -> トップページ:商品検索する
トップページ -left-> ログイン:ログインをクリック
ログイン -> トップページ:トップページをクリック
ログイン -> トップページ:商品検索する
トップページ --> カート:カートをクリック
カート -> トップページ:トップページをクリック
カート -> お届け先入力:数量を変更/商品を削除
カート -> お届け先入力:注文をクリック
カート --> トップページ:ログアウトをクリック
カート -> トップページ:商品検索する
お届け先入力 -> トップページ:トップページをクリック
お届け先入力 -> カート:カートをクリック
お届け先入力 -> お届け先入力内容確認:入力内容確認をクリック
お届け先入力 --> トップページ:ログアウトをクリック
お届け先入力 -> トップページ:商品検索する
お届け先入力内容確認 -> トップページ:トップページをクリック
お届け先入力内容確認 -> カート:カートをクリック
お届け先入力内容確認 -> お届け先入力:修正をクリック
お届け先入力内容確認 -> 購入完了:注文確定をクリック
お届け先入力内容確認 --> トップページ:ログアウトをクリック
お届け先入力内容確認 -> トップページ:商品検索する
購入完了 -> トップページ:トップページをクリック
購入完了 -> カート:カートをクリック
購入完了 --> トップページ:ログアウトをクリック
購入完了 -> トップページ:商品検索する
@enduml
だいぶ図がごちゃごちゃしてきたので画面をグルーピングして整理します。図1-3-4
図1-3-4 ステートマシン図整理
Copied!@startuml
[*] -> トップページ
会員登録 --> トップページ:トップページをクリック/商品検索
ログイン --> トップページ:トップページをクリック/商品検索
トップページ -> トップページ:ログアウトをクリック
トップページ -> トップページ:商品検索
トップページ -left-> 会員登録:会員登録をクリック
トップページ -left-> ログイン:ログインをクリック
トップページ --> カート内:カートをクリック
カート内 -up-> トップページ:トップページをクリック/商品検索
カート内 -up-> トップページ:ログアウトをクリック
state カート内 {
[*] --> カート
カート -> 注文:注文をクリック
カート -> カート:数量を変更/商品を削除
注文 --> カート:カートをクリック
state 注文 {
[*] --> お届け先入力
お届け先入力 -> お届け先入力内容確認:入力内容確認をクリック
お届け先入力内容確認 -> お届け先入力:修正をクリック
お届け先入力内容確認 -> 購入完了:注文確定をクリック
}
}
@enduml
作成した図を元に、状態遷移表を作ります。
縦軸に画面、横軸にイベントを書きます。
表1-3-1 状態遷移表 画面とイベント
トップ | 検索 | 会員登録 | ログイン | ログアウト | カート | カート修正 | 注文 | 入力内容確認 | 修正 | 確定 | |
---|---|---|---|---|---|---|---|---|---|---|---|
トップページ | |||||||||||
会員登録 | |||||||||||
ログインページ | |||||||||||
カート | |||||||||||
お届け先入力 | |||||||||||
お届け先入力内容確認 | |||||||||||
購入完了 |
左側の画面とイベントの組み合わせで、次に遷移する画面を空いているマスに埋めていきます。
埋めた結果が表1-3-2になります。
赤字にしている部分がステートマシン図では漏れていた
表1-3-2 状態遷移表 遷移を埋める
トップ | 検索 | 会員登録 | ログイン | ログアウト | カート | カート修正 | 注文 | 入力内容確認 | 修正 | 確定 | |
---|---|---|---|---|---|---|---|---|---|---|---|
トップページ | トップページ | トップページ | 会員登録 | ログイン | トップページ ログアウトする |
カート | - | - | - | - | - |
会員登録 | トップページ | トップページ | 会員登録 | ログイン | - | - | - | - | - | - | - |
ログインページ | トップページ | トップページ | 会員登録 | ログイン | - | - | - | - | - | - | - |
カート | トップページ | トップページ | - | - | トップページ ログアウトする |
カート | カート | お届け先入力 | - | - | - |
お届け先入力 | トップページ | トップページ | - | - | トップページ ログアウトする |
カート | - | - | お届け先入力内容確認 | - | - |
お届け先入力内容確認 | トップページ | トップページ | - | - | トップページ ログアウトする |
カート | - | - | - | お届け先入力 | 購入完了/メール送信 |
購入完了 | トップページ | トップページ | - | - | トップページ ログアウトする |
カート | - | - | - | - | - |
表1-3-2で赤字になっている部分がステートマシン図では漏れていた箇所です。
漏れていた部分をステートマシン図に反映しましょう。図1-3-5
図1-3-5 ステートマシン図修正
Copied!@startuml
[*] -> トップページ
会員登録 --> トップページ:トップページをクリック/商品検索
ログイン --> トップページ:トップページをクリック/商品検索
トップページ -> トップページ:ログアウトをクリック
トップページ -> トップページ:商品検索
トップページ -left-> 会員登録:会員登録をクリック
会員登録 -> 会員登録:会員登録をクリック
ログイン -> 会員登録:会員登録をクリック
トップページ -left-> ログイン:ログインをクリック
会員登録 -> ログイン:ログインをクリック
ログイン -> ログイン:ログインをクリック
トップページ --> カート内:カートをクリック
カート内 -up-> トップページ:トップページをクリック/商品検索
カート内 -up-> トップページ:ログアウトをクリック
state カート内 {
[*] --> カート
カート -> 注文:注文をクリック
カート -> カート:数量を変更/商品を削除/カートをクリック
注文 --> カート:カートをクリック
state 注文 {
[*] --> お届け先入力
お届け先入力 -> お届け先入力内容確認:入力内容確認をクリック
お届け先入力内容確認 -> お届け先入力:修正をクリック
お届け先入力内容確認 -> 購入完了:注文確定をクリック
}
}
@enduml
このように画面とイベントの組み合わせを全て確認する事で、設計の段階で漏れている部分を洗い出します。
作ったアプリのテストをする際にも、この状態遷移表をもとに実装漏れが無いかチェックすることが出来ます。
これで画面遷移が洗い出せました。
次にデータベース設計をしていきます。