Try   HackMD

高度2Bグループワーク

バッドUI

  • ゲーム
  • 登録できたらクリアできるやつ

メンバー

  • くめさん
  • はまなが
  • ミーマ君

資料共有用URL

https://drive.google.com/drive/folders/1dyCWCFI-WvFT92eHixYlPSW54aGgP0st?usp=sharing

ドキュメント編集用URI

document

機能要件

  • 登録機能の提供
    • 登録する時に必要なページ
    • 登録すべきユーザー情報
      • ハンドルネーム
      • 携帯メールアドレス
      • パスワード*
      • ニックネーム
      • メールアドレス*
      • 携帯電話番号
        • プルダウン方式×9
      • パスワード確認
      • 本名
      • 電話番号(自宅)
      • ユーザーネーム*
      • 「はい」「いいえ」の位置が場所によってバラバラ
        • 左右とか上下とか
    • 利用規約
      • 利用規約に同意する必要がありますとしか書かれておらず、どこで同意できるかが分からない
        • 仮に利用規約を見れたとしても操作性が非常に悪い
    • プライバシーポリシー
    • reCAPTCHA
      • 紛らわしい写真
      • 読めない
      • 文字 or 数字の桁数が非常に多い
  • ログイン機能の提供

授業で扱ったMVCアーキテクチャとの相違点

必要なもの

  • 仮登録ページ
    • 仮登録メール送るページ的なやつ
    • メールが来た演出?
    • 画面遷移?
  • 本登録ページ
  • ログインページ
  • 登録完了ページ

今すべきこと

  • ドキュメント
    • ユースケース図 (くめさん)
    • クラス図 (みまし)
    • シーケンス図 (ながはま)

提供する機能

  • 仮登録
    • メールアドレスのみを保持
    • 他のデータも入力させるが、使わない
    • 送信ボタンを押すことで、メール送信に遷移
    • メールアドレスと挑戦開始時間(予定)をDBに保存する
  • メール送信
    • 仮登録で得られたメールアドレスを用いてメールを送信する
  • 本登録
    • メールアドレス等の情報を入力させる
    • 登録ボタンを押すと、DBに保存する
    • 保存後、登録完了画面が表示される
  • ログイン
    • メールアドレスとパスワードの照合を行う
    • 合ってればログイン成功
    • 間違っていれば画面遷移はしない
    • メールアドレスとパスワード以外の入力項目もあるが、必要なのは実はその二つのみ

データディクショナリ

データ項目 桁数・byte NOT NULL PRIMARY KEY 備考
ユーザーID int
ハンドルネーム varchar 30
ニックネーム varchar 30
氏名 varchar 30
携帯メールアドレス varchar 70
メールアドレス varchar 70 メールアドレスだけのテーブルも作る4
挑戦開始時刻 timestamp
かかった時間 interval
電話番号 (自宅) varchar 15 入力メソッド未定
電話番号 (携帯) varchar 15 0から9とハイフンを選べるプルダウンをいくつも並べる
パスワードハッシュ varchar 15

Data-dic作りながら思ったこと:

  • ハイフン除いて10段式でもいいのでは?

データベース設計

まず必要なものは以下のデータベース

  • 仮登録情報
    • 仮登録に必要
    • 挑戦開始時間を保持する
  • ユーザー情報
    • ログインに使用
    • 仮登録情報から挑戦開始時刻を貰ってくる

仮登録(pre_)

データ項目 カラム名 桁数・byte NOT NULL PRIMARY KEY
仮登録ID ID int
メールアドレス email varchar 70
挑戦開始時刻 start_time timestamp

ユーザー情報(user_info)

データ項目 カラム名 桁数・byte NOT NULL PRIMARY KEY
ユーザーID ID int
仮登録ID pre_ID int
ハンドルネーム handle_name varchar 30
ニックネーム nickname varchar 30
氏名 name varchar 30
携帯メールアドレス phone_email varchar 70
かかった時間 recorded_time interval
電話番号 (自宅) home_number varchar 15
電話番号 (携帯) phone_number varchar 15
パスワードハッシュ hashed_pass varchar 15

シナリオ

  • ミス無し仮登録シナリオ

    • シナリオ概要
      • 一切ミスせず仮登録を行う
    • 事前条件
      • アクターのメールアドレスが未登録
      • システムはホーム画面を表示している
    • ステップ
      1.アクターは会員登録ボタンを探し出し、クリックする
      2.システムは仮登録画面に遷移する
      3.アクターはメールアドレス欄を探し出し、メールアドレスを入力する
      4.アクターはメールアドレスを入力したのでメール送信ボタンを探し出し、クリックする
      5.システムは入力されたメールアドレスに対して、本登録画面に遷移するメールを出す
      6.システムは入力されたメールアドレスを仮登録する
      7.システムはメール送信完了画面に遷移する
    • 事後条件
      • アクターのメールアドレスが登録済み
      • システムはメール送信完了画面を表示している
  • ミス無し本登録シナリオ

    • シナリオ概要
      • 一切ミスせず本登録を行う
    • 事前条件
      • アクターのメールアドレスが登録済み
      • アクターは本登録画面に遷移するURLが記載されたメールを受け取り済み
    • ステップ
      1.アクターは入力したメールアドレスに届いたメールに書かれたURLを開く
      2.アクターは本登録画面で登録すべきアクター情報を全て入力する
      3.アクターは入力が完了したので登録ボタンを探し出し、クリックする
      4.システムは登録完了画面に遷移する
    • 事後条件
      • アクター情報が登録済み
      • システムは登録完了画面を表示している
  • ミス無しログインシナリオ

    • シナリオ概要
      • 一切ミスせずログインを行う
    • 事前条件
      • アクターのメールアドレスが登録済み
      • システムは登録完了画面を表示している
    • ステップ
      1.アクターはホームに戻るボタンを探し出し、クリックする
      2.システムはホーム画面に遷移する
      3.アクターはログインボタンを探し出し、クリックする
      4.システムはログイン画面に遷移する
      5.アクターはパスワードとメールアドレス入力欄をそれぞれ探し出し、入力する
      6.アクターはログインボタンを探し出し、クリックする
      7.システムはログイン成功画面に遷移する
    • 事後条件
      • システムはログイン成功画面を表示している
  • 通常ログインシナリオ

    • シナリオ概要
      • ログイン情報の入力ミスをしてからログインに成功する
    • 事前条件
      • アクターのメールアドレスが登録済み
      • システムはホーム画面を表示している
    • ステップ
      1.アクターはログインボタンを探し出し、クリックする
      2.システムはログイン画面に遷移する
      3.アクターはユーザーネームとパスワード入力欄をそれぞれ探し出し、入力する
      6.アクターはログインボタンを探し出し、クリックする
      7.システムはメールアドレスの入力を要求する
      8.アクターはメールアドレス入力画面を探し出し、入力する
      9.アクターはログインボタンをクリックする
      10.システムはログイン成功画面に遷移する
    • 事後条件
      • システムはログイン成功画面を表示している
  • 本登録挫折シナリオ

    • シナリオ概要
      • 本登録画面において登録ボタンが見つけられずに挫折する
      • また、その過程で何度かクリックするべきボタンを間違える
    • 事前条件
      • アクターのメールアドレスが未登録
      • システムはホーム画面を表示している
    • ステップ
      1.アクターは間違えてログインボタンをクリックする
      2.システムはログイン画面に遷移する
      3.アクターは戻るボタンを探し出し、クリックする
      4.システムはホーム画面に遷移する
      5.アクターは会員登録ボタンを探し出し、クリックする
      6.システムは仮登録画面に遷移する
      7.アクターはメールアドレス、携帯メールアドレス、名前欄をそれぞれ探し出し、入力する
      8.アクターは必要な項目を入力したのでメール送信ボタンを探し出し、クリックする
      9.システムは入力されたメールアドレスに対して、本登録画面に遷移するメールを出す
      10.アクターは入力したメールアドレスに届いたメールに書かれたURLを開く
      11.アクターは本登録画面で登録すべきユーザー情報を全て入力する
      12.アクターは入力が完了したが、間違ってログインボタンをクリックする
      13.システムはログイン画面に遷移する
      14.アクターは戻るボタンを探し出し、クリックする
      15.システムは本登録画面に遷移する
      11.アクターは本登録画面で登録すべきユーザー情報を全て入力する
      12.アクターは入力が完了したが、戻るボタンをクリックする
      13.システムはホーム画面に遷移する
      14.アクターは本登録を中断する
    • 事後条件
      • アクターのメールアドレスが登録済み
      • システムはホーム画面を表示している

Ref.

PageCtrlはdoPostでHttpServletRequest request, HttpServletResponse responseをもらう
PageCtrlはrequestの中身を分析する
requestの中身はregist用だったので、PageCtrlはRegisterCtrlにrequestごと投げる
RegisterCtrlはrequestからregDataを取り出す
RegisterCtrlはUserManagerにregDataを渡してDBに保存してもらう

Java Note

jsp

  • request.setCharacterEncoding("utf-8")でutf-8に設定すること
  • request.getParameter("hoge")で, urlのlocalhost/page/?hoge=fugafugaを取得できる
  • セッションの設定
    • session.setAttribute("name", "value")
  • セッションの取得
    • session.getAttribute("name")

Servlet

  • doGet()はclient(Webブラウザ)からGetリクエストが送られた時にServletで呼び出される
  • client(Webブラウザ)からの要求を処理するのがrequest
    • request.setCharacterEncoding("utf-8")を設定すること
  • server(Webサーバ)からの応答を処理するのがresponse
    • response.setContentType("text/html; charset=utf-8");
  • TODO: これらの設定はwrapすることで解消できそう
  • アノテーション
    • localhost:8080/jsp/以降のエンドポイント
    • @WebServlet("/hoge/fuga")のように書く

めるめる

https://k11i.biz/blog/2018/06/26/maven-artifacts-for-java9-deprecated-modules/
https://fa11enprince.hatenablog.com/entry/2014/04/13/075248