Giter Site home page Giter Site logo

furima-39147's People

Contributors

kazuho1222 avatar

Watchers

 avatar

furima-39147's Issues

ユーザー管理機能

実装概要

  • Deviseの導入を行う。新規登録/ログイン/ログアウトができるまで実装する。モデルの単体テストまでを行い、コードレビューを依頼する。LGTMが出たら完了とする。

実装方針

  • ブランチを作成する。
  • Deviseを導入する。
  • ユーザー管理機能を実装する。
  • モデルの単体テストコードを書く。
  • プルリクエストを作成してメンターにレビューを依頼する。
  • LGTMをもらい、マージをする。
  • デプロイをする。

実装条件

  • モデルにてバリデーションの記述を行うこと。
  • 必要な情報を適切に入力して「会員登録」ボタンを押すと、ユーザーの新規登録ができること。
  • 必要な情報を適切に入力して「ログイン」ボタンを押すと、ユーザーのログインができること。
  • 新規登録・ログイン共にエラーハンドリングができること(入力に問題がある状態で「会員登録」または「ログイン」ボタンが押された場合、情報は受け入れられず、各ページでエラーメッセージが表示されること)。
  • エラーハンドリングによって新規登録/ログインページに戻った場合でも、入力済みの項目(パスワード・パスワード確認用以外)は消えないこと。
  • エラーハンドリングの際、重複したエラーメッセージが表示されないこと。

新規登録/ユーザー情報

  • ニックネームが必須であること。
  • メールアドレスが必須であること。
  • メールアドレスが一意性であること。
  • メールアドレスは、@を含む必要があること。
  • パスワードが必須であること。
  • パスワードは、6文字以上での入力が必須であること
  • パスワードは、半角英数字混合での入力が必須であること
  • パスワードとパスワード(確認)は、値の一致が必須であること。

新規登録/本人情報確認

  • お名前(全角)は、名字と名前がそれぞれ必須であること。
  • お名前(全角)は、全角(漢字・ひらがな・カタカナ)での入力が必須であること。
  • お名前カナ(全角)は、名字と名前がそれぞれ必須であること。
  • お名前カナ(全角)は、全角(カタカナ)での入力が必須であること。
  • 生年月日が必須であること。

トップページ

  • ログアウト状態の場合には、トップページ(商品一覧ページ)のヘッダーに、「新規登録」「ログイン」ボタンが表示されること。
  • ログイン状態の場合には、トップページ(商品一覧ページ)のヘッダーに、「ユーザーのニックネーム」と「ログアウト」ボタンが表示されること。
  • トップページ(商品一覧ページ)ヘッダーの、「新規登録」「ログイン」ボタンをクリックすると、各ページに遷移できること。
  • トップページ(商品一覧ページ)ヘッダーの、「ログアウト」ボタンをクリックすると、ログアウトができること。

補足情報

  • 配布しているビューファイルのname属性などは、初期値として「hoge」と設定しているため、実装する際には自身のデータベース設計に合わせて変更すること。
  • 配布しているビューファイルにも、コメントアウトにて実装の案内が記述されているため、適宜読んで実装を行うこと。
  • 「rails g devise」のコマンドで生成されたマイグレーションファイルには、デフォルトでemailとpasswordカラムが生成されるよう記載されている。そのため、この2つのカラムに関しては、自身でマイグレーションファイルに設定を記載する必要はない。
  • 以下の項目に関しては、モデルで新たにバリデーションを実装する必要はない(Deviseにデフォルトでバリデーションが備わっているため)。しかし、単体テストコードを書き、バリデーションが働いているかの検証は必要。
    ・メールアドレスが必須であること。
    ・メールアドレスが一意性であること。
    ・メールアドレスは、@を含む必要があること。
    ・パスワードが必須であること。
    ・パスワードは、6文字以上での入力が必須であること。
    ・パスワードとパスワード(確認)は、値の一致が必須であること。
  • Deviseによるカスタムコントローラの生成は不要(rails g devise:controllersのコマンドは、必須機能実装においては入力不要)。
  • トップページ(商品一覧ページ)とは、app/views/items/index.html.erb を指す。

注意事項

  • 機能毎に、commitとpushを行うこと。
  • 配布されたビューファイルに最初からコメントアウトで指示などが記されている場合があるが、それらは機能を実装できた時点で削除すること。
  • メンターにコードレビューを依頼すること。
  • 機能の様子はGyazo GIFを用いて、テストコードが通っている様子はGyazoを用いて撮影し、それぞれのリンクをプルリクエストへ添付すること。
  • Gyazoのリンクを添付する際は、何を撮影したGyazoのリンクか分かるように、リンクの前に説明を記載すること。
  • コードレビューを依頼する前に、Rubocopを実行すること。
  • コードレビューを依頼する際は、テストコードを書き終わってから依頼すること(テストコードの含まれていないレビューは対応しません。実際の開発現場でも同様の対応であるためです)。
  • プルリクエストには、「What」と「Why」を記述すること(「What」と「Why」の記載されていないレビューは対応しません。実際の開発現場でも同様の対応であるためです)。
  • LGTMが出るまでマージしないこと。
  • LGTMが出る前に他の実装へ着手することは、推奨しない(Gitにおける複雑なコンフリクト等を引き起こす可能性があるためです)。

プルリクエストへ記載するgyazo

  • 必要な情報を適切に入力して「会員登録」ボタンを押すと、ユーザーの新規登録ができる動画
  • 入力に問題のある状態で「会員登録」ボタンが押された場合、ユーザーの新規登録はできず、エラーメッセージが出力される動画
  • 必要な情報を適切に入力して「ログイン」ボタンを押すと、ユーザーのログインができる動画
  • 入力に問題のある状態で「ログイン」ボタンが押された場合、ユーザーのログインはできず、エラーメッセージが出力される動画
  • ログアウトに成功する動画
  • テストに成功する画像

参考カリキュラム

  • Deviseの導入・実装
    応用カリキュラム Lesson2 「ユーザーを登録しよう」
    応用カリキュラム Lesson6 「ChatAppのユーザー管理機能を実装しよう」

  • マイグレーションファイルのロールバック
    基礎カリキュラム Lesson7 「データの保存場所と管理役を作ろう」

  • RSpec
    応用カリキュラム Lesson5 「PicTweetのモデルの単体テストコードを書こう」
    応用カリキュラム Lesson6 「ChatAppのモデル単体テストコードを書こう」

商品購入機能

実装概要

商品をクレジットカード決済で購入する機能を実装から単体テストまで行い、コードレビューを依頼する。LGTMが出たら完了とする。

実装方針

  • ブランチを作成する
  • API導入
  • クレジットカード決済での購入機能を実装する
  • モデルの単体テストコードを書く。
  • プルリクエストを作成してメンターにレビューを依頼する。
  • LGTMをもらい、マージをする。
  • デプロイをする。

実装条件

  • 必要な情報を適切に入力して「購入」ボタンを押すと、商品の購入ができること。
  • 商品出品時に登録した情報のうち、「商品名・商品画像・価格・配送料の負担」の4つの情報が、見本アプリと同様の形で表示されること。
  • ログイン状態の場合は、自身が出品していない販売中商品の商品購入ページに遷移できること。
  • ログイン状態の場合でも、自身が出品していない売却済み商品の商品購入ページへ遷移しようとすると、トップページに遷移すること。
  • ログイン状態の場合でも、自身が出品した商品の商品購入ページに遷移しようとすると、商品の販売状況に関わらずトップページに遷移すること。
  • ログアウト状態の場合は、商品購入ページに遷移しようとすると、商品の販売状況に関わらずログインページに遷移すること。
  • 購入が完了したら、トップページに遷移すること。
  • エラーハンドリングができること(入力に問題がある状態で「購入」ボタンが押された場合、情報は受け入れられず、購入ページでエラーメッセージが表示されること)。
  • エラーハンドリングによって購入ページに戻った場合でも、入力済みの項目(カード番号・有効期限・セキュリティコード以外)は消えないこと。
  • エラーハンドリングの際、重複したエラーメッセージが表示されないこと。

クレジットカード情報

  • クレジットカード情報は必須であり、右記のPAY.JPテストカードの情報で決済ができること(カード番号:4242424242424242 有効期限:今日より未来の日付 セキュリティコード:123)。
  • クレジットカードの情報は購入の都度入力させること。

配送先情報

  • 配送先の住所情報も購入の都度入力させること。
  • 郵便番号が必須であること。
  • 郵便番号は、「3桁ハイフン4桁」の半角文字列のみ保存可能なこと(良い例:123-4567 良くない例:1234567)。
  • 都道府県が必須であること。
  • 市区町村が必須であること。
  • 番地が必須であること。
  • 建物名は任意であること。
  • 電話番号が必須であること。
  • 電話番号は、10桁以上11桁以内の半角数値のみ保存可能なこと(良い例:09012345678 良くない例:090-1234-5678)。

他機能関連

  • 売却済みの商品は、画像上に「sold out」の文字が表示されるようになっていること(商品一覧機能)。
  • 売却済みの商品は、画像上に「sold out」の文字が表示されるようになっていること(商品詳細機能)。
  • ログイン状態の場合でも、売却済みの商品には、「商品の編集」「削除」「購入画面に進む」ボタンが表示されないこと(商品詳細機能)。
  • ログイン状態の場合でも、自身が出品した売却済み商品の商品情報編集ページへ遷移しようとすると、トップページに遷移すること(商品情報編集機能)。

補足情報

  • 配布されたビューファイルに最初からコメントアウトで指示などが記されている場合があるが、それらは機能を実装できた時点で削除すること。
  • 購入機能を実装する際は、「Formオブジェクトを用いた購入情報の登録機能」と「PAY.JPを用いたクレジットカードでの決済機能」という2つのタスクに分けて実装すると良い。
  • 一度に複数のテーブルへ情報を保存する際は、以下のカリキュラムを参考にして、Formオブジェクトを使用すること。
    最終課題補足カリキュラム Lesson1 「1つのフォームから複数のテーブルに情報を保存するアプリを作成しよう」
  • クレジットカードでの決済機能は、以下のカリキュラムを参考にして、PAY.JPを使用すること。
    最終課題補足カリキュラム Lesson1 「クレジット決済機能ミニアプリを作成しよう」
  • 「ログイン状態の場合でも、自身が出品していない売却済み商品の商品購入ページへ遷移しようとすると、トップページに遷移すること」「ログイン状態の場合でも、自身が出品した商品の商品購入ページに遷移しようとすると、商品の販売状況に関わらずトップページに遷移すること」「ログアウト状態の場合は、商品購入ページに遷移しようとすると、商品の販売状況に関わらずログインページに遷移すること」という機能に関しては、URLを直接入力して確認すること。

注意事項

  • 機能毎に、commitとpushを行うこと。
  • 秘密鍵などは、値の見える状態でGitHubにpushしないこと。環境変数化してからcommitすること。
  • このタスクに関係のないアクションやメソッドなどの記述は行わない(プルリクエストにて、適切な差分が表示されない原因となるため)。
  • メンターにコードレビューを依頼すること。
  • 機能の様子はGyazo GIFを用いて、テストコードが通っている様子はGyazoを用いて撮影し、それぞれのリンクをプルリクエストへ添付すること。
  • Gyazoのリンクを添付する際は、何を撮影したGyazoのリンクか分かるように、リンクの前に説明を記載すること。
  • コードレビューを依頼する前に、Rubocopを実行すること。
  • コードレビューを依頼する際は、テストコードを書き終わってから依頼すること(テストコードの含まれていないレビューは対応しません。実際の開発現場でも同様の対応であるためです)。
  • プルリクエストには、「What」と「Why」を記述すること(「What」と「Why」の記載されていないレビューは対応しません。実際の開発現場でも同様の対応であるためです)。
  • LGTMが出るまでマージしないこと。
  • LGTMが出る前に他の実装へ着手することは、推奨しない(Gitにおける複雑なコンフリクト等を引き起こす可能性があるためです)。

プルリクエストへ記載するgyazo

  • 必要な情報を適切に入力して「購入」ボタンを押すと、商品の購入ができる動画
  • 入力に問題がある状態で「購入」ボタンが押された場合、情報は受け入れられず、購入ページでエラーメッセージが表示される動画
  • ログイン状態の場合でも、URLを直接入力して自身が出品していない売却済み商品の商品購入ページへ遷移しようとすると、トップページに遷移する動画
  • ログイン状態の場合でも、URLを直接入力して自身が出品した商品の商品購入ページに遷移しようとすると、商品の販売状況に関わらずトップページに遷移する動画
  • ログアウト状態の場合は、URLを直接入力して商品購入ページに遷移しようとすると、商品の販売状況に関わらずログインページに遷移する動画
  • 売却済みの商品は、画像上に「sold out」の文字が表示される動画(商品一覧機能実装時に未実装であった場合)
  • 売却済みの商品は、画像上に「sold out」の文字が表示される動画(商品詳細機能実装時に未実装であった場合)
  • ログイン状態の場合でも、売却済みの商品には、「商品の編集」「削除」「購入画面に進む」ボタンが表示されない動画(商品詳細機能実装時に未実装であった場合)
  • ログイン状態の場合でも、URLを直接入力して自身が出品した売却済み商品の商品情報編集ページへ遷移しようとすると、トップページに遷移する動画(商品情報編集機能実装時に未実装であった場合)
  • テスト結果の画像

参考カリキュラム

  • フォームオブジェクトの実装
    発展カリキュラム Lesson2 「実践的なModelを学ぼう」
    最終課題補足カリキュラム Lesson1 「1つのフォームから複数のテーブルに情報を保存するアプリを作成しよう」

  • PAY.JPの使用方法
    最終課題補足カリキュラム Lesson1 「クレジット決済機能ミニアプリを作成しよう」

  • JSによるデータの取り扱い
    発展カリキュラム Lesson4 「Ajaxでコントローラーにリクエストを送信しよう」

  • フォームオブジェクトのRSpec
    最終課題補足カリキュラム Lesson1 「クレジット決済機能ミニアプリを作成しよう」

商品削除機能

実装概要

商品の情報を削除する機能を実装し、コードレビューを依頼する。LGTMが出たら完了とする。

実装方針

  • ブランチを作成する。
  • 商品削除機能を実装する。
  • プルリクエストを作成してメンターにレビューを依頼する。
  • LGTMをもらい、マージをする。
  • デプロイをする。

実装条件

  • ログイン状態の場合にのみ、自身が出品した商品情報を削除できること。
  • 削除が完了したら、トップページに遷移すること。

補足情報

  • 「ログイン状態の場合にのみ、自身が出品した商品情報を削除できること」とは、詳細ページにおける「削除」ボタンの表示・非表示に加え、コントローラー側でも条件を設けることを指す。

注意事項

  • 機能毎に、commitとpushを行うこと。
  • 配布されたビューファイルに最初からコメントアウトで指示などが記されている場合があるが、それらは機能を実装できた時点で削除すること。
  • このタスクに関係のないアクションやメソッドなどの記述は行わない(プルリクエストにて、適切な差分が表示されない原因となるため)。
  • コードレビューを依頼する前に、Rubocopを実行すること。
  • メンターにコードレビューを依頼すること。
  • 機能の様子はGyazo GIFを用いて撮影し、リンクをプルリクエストへ添付すること。
  • Gyazoのリンクを添付する際は、何を撮影したGyazoのリンクか分かるように、リンクの前に説明を記載すること。
  • プルリクエストには、「What」と「Why」を記述すること(「What」と「Why」の記載されていないレビューは対応しません。実際の開発現場でも同様の対応であるためです)。
  • LGTMが出るまでマージしないこと。
  • LGTMが出る前に他の実装へ着手することは、推奨しない(Gitにおける複雑なコンフリクト等を引き起こす可能性があるためです)。

プルリクエストへ記載するgyazo

  • ログイン状態の出品者のみ、詳細ページの削除ボタンを押すと、出品した商品を削除できる動画

参考カリキュラム

  • 登録情報の削除
    応用カリキュラム Lesson2 「ツイートを削除しよう」

Basic認証

実装概要

  • アプリケーションにBasic認証を導入する。

実装方針

  • 認証に必要なユーザー名やパスワードは、環境変数を呼び出す形式で実装する。
  • 開発環境および本番環境に、環境変数を設定する。

実装条件

  • 適切なユーザー名やパスワードが入力された場合は、認証を通過できること。
  • 適切ではないユーザー名やパスワードが入力された場合は、認証は通過できないこと。

補足情報

なし

注意事項

  • メンターへのコードレビュー依頼は不要。
  • 認証に必要なユーザー名やパスワードは、任意で決めて実装すること

参考カリキュラム

  • Basic認証の導入
    発展カリキュラム Lesson5 「ユーザー認証の導入」

商品情報編集機能

実装概要

画像を含む商品の情報を編集する機能を実装し、コードレビューを依頼する。LGTMが出たら完了とする。

実装方針

  • ブランチを作成する。
  • 商品情報編集機能を実装する。
  • プルリクエストを作成してメンターにレビューを依頼する。
  • LGTMをもらい、マージをする。
  • デプロイをする。

実装条件

  • 必要な情報を適切に入力して「変更する」ボタンを押すと、商品情報(商品画像・商品名・商品の状態など)を編集できること。
  • 何も編集せずに「変更する」ボタンを押しても、画像無しの商品にならないこと。
  • ページ下部の「もどる」ボタンを押すと、編集途中の情報は破棄され、商品詳細表示ページに遷移すること。
  • ログイン状態の場合は、自身が出品した販売中商品の商品情報編集ページに遷移できること。
  • ログイン状態の場合でも、自身が出品した売却済み商品の商品情報編集ページへ遷移しようとすると、トップページに遷移すること。
  • ログイン状態の場合でも、自身が出品していない商品の商品情報編集ページへ遷移しようとすると、商品の販売状況に関わらずトップページに遷移すること。
  • ログアウト状態の場合は、商品情報編集ページへ遷移しようとすると、商品の販売状況に関わらずログインページに遷移すること。
  • 商品出品時とほぼ同じ見た目の商品情報編集ページが表示されること。
  • 商品名やカテゴリーの情報など、すでに登録されている商品情報は、商品情報編集画面を開いた時点で表示されること(商品画像・販売手数料・販売利益に関しては、表示されない状態で良い)。
  • 編集が完了したら、商品詳細表示ページに遷移し、変更された商品情報が表示されること。
  • エラーハンドリングができること(入力に問題がある状態で「変更する」ボタンが押された場合、情報は保存されず、編集ページに戻りエラーメッセージが表示されること)。
  • エラーハンドリングによって編集ページに戻った場合でも、入力済みの項目(画像・販売手数料・販売利益以外)は消えないこと。
  • エラーハンドリングの際、重複したエラーメッセージが表示されないこと。

補足情報

  • 配布しているビューファイルのname属性などは、初期値として「hoge」と設定しているため、実装する際には自身のデータベース設計に合わせて変更すること。
  • 「ログイン状態の場合でも、自身が出品した売却済み商品の商品情報編集ページへ遷移しようとすると、トップページに遷移すること」「ログイン状態の場合でも、自身が出品していない商品の商品情報編集ページへ遷移しようとすると、商品の販売状況に関わらずトップページに遷移すること」「ログアウト状態の場合は、商品情報編集ページへ遷移しようとすると、商品の販売状況に関わらずログインページに遷移すること」という機能に関しては、URLを直接入力して確認すること。
  • 「ログイン状態の場合でも、自身が出品した売却済み商品の商品情報編集ページへ遷移しようとすると、トップページに遷移すること」という機能に関しては、商品購入機能実装後に実装すること(商品購入機能実装前に商品情報編集機能を実装する場合、コードレビュー時にこの機能は実装されていなくても良い。しかし、最終課題終了報告時に実装できていない場合、最終課題終了とはみなされない)。

注意事項

  • 機能毎に、commitとpushを行うこと。
  • 配布されたビューファイルに最初からコメントアウトで指示などが記されている場合があるが、それらは機能を実装できた時点で削除すること。
  • このタスクに関係のないアクションやメソッドなどの記述は行わない(プルリクエストにて、適切な差分が表示されない原因となるため)。
  • コードレビューを依頼する前に、Rubocopを実行すること。
  • メンターにコードレビューを依頼すること。
  • 機能の様子はGyazo GIFを用いて撮影し、リンクをプルリクエストへ添付すること。
  • Gyazoのリンクを添付する際は、何を撮影したGyazoのリンクか分かるように、リンクの前に説明を記載すること。
  • プルリクエストには、「What」と「Why」を記述すること(「What」と「Why」の記載されていないレビューは対応しません。実際の開発現場でも同様の対応であるためです)。
  • LGTMが出るまでマージしないこと。
  • LGTMが出る前に他の実装へ着手することは、推奨しない(Gitにおける複雑なコンフリクト等を引き起こす可能性があるためです)。

プルリクエストへ記載するgyazo

  • ログイン状態の出品者は、商品情報編集ページに遷移できる動画
  • 必要な情報を適切に入力して「更新する」ボタンを押すと、商品の情報を編集できる動画
  • 入力に問題がある状態で「変更する」ボタンが押された場合、情報は保存されず、編集ページに戻りエラーメッセージが表示される動画
  • 何も編集せずに「更新する」ボタンを押しても、画像無しの商品にならない動画
  • ログイン状態の場合でも、URLを直接入力して自身が出品していない商品の商品情報編集ページへ遷移しようとすると、商品の販売状況に関わらずトップページに遷移する動画
  • ログイン状態の場合でも、URLを直接入力して自身が出品した売却済み商品の商品情報編集ページへ遷移しようとすると、トップページに遷移する動画(現段階で商品購入機能の実装が済んでいる場合)
  • ログアウト状態の場合は、URLを直接入力して商品情報編集ページへ遷移しようとすると、商品の販売状況に関わらずログインページに遷移する動画
  • 商品名やカテゴリーの情報など、すでに登録されている商品情報は商品情報編集画面を開いた時点で表示される動画(商品画像・販売手数料・販売利益に関しては、表示されない状態で良い)

参考カリキュラム

  • 登録情報の編集
    応用カリキュラム Lesson2 「ツイートを編集しよう」

  • 更新に失敗した場合の処理
    応用カリキュラム Lesson6 「ChatAppのユーザー管理機能を実装しよう」

データベース設計

実装概要

  • フリーマーケットサイトを再現するために必要な、データベースの設計を行う。
  • ER図を描画した後、READMEに設計情報を記述し、コードレビューを依頼する。LGTMが出たら完了とする。
  • 以下の機能の実装条件を確認し、データベース設計を行うこと。
    ・ユーザー管理機能
    ・商品出品機能
    ・商品購入機能

実装方針

  • ブランチを作成する。
  • フリマアプリの機能を考え、必要なテーブル・カラム情報を洗い出す。
  • ER図を書く。
  • READMEにデータベース設計を記述する。
  • プルリクエストを作成してメンターにレビューを依頼する。
  • LGTMをもらい、マージをする。

実装条件

  • ER図作成ツールを使用してER図を作成すること。

補足情報

  • データベース設計を行う際は、以下のカリキュラムを参考にする。
    最終課題補足カリキュラム Lesson1 「DB設計の方針を立てよう」
  • 予約語については以下のカリキュラムを参考にする。
    最終課題補足カリキュラム Lesson2 「データベース設計」

注意事項

  • メンターにコードレビューを依頼すること。
  • プルリクエストには、ER図を添付すること(Gyazoで撮影し、URLを記載しましょう)。
  • データベース設計のコードレビュー最中にREADMEを修正する場合は、都度最新のER図をプルリクエストに添付すること。
  • プルリクエストには、「What」と「Why」を記述すること(「What」と「Why」の記載されていないレビューは対応しません。実際の開発現場でも同様の対応であるためです)。
  • LGTMが出るまでマージしないこと。
  • 必須機能以外のテーブルに関しては、コードレビューの対象とはならない(必須機能では使用しないコメント用のテーブルなどがある場合、そこに対するメンターからの指摘は入りません)。
  • 実装段階で仕様が変更された場合や、機能を追加する際に、テーブルやカラムに変更修正が生じることがある。その場合は、都度ER図やREADMEを更新すること(変更に伴うメンターへのコードレビューは不要です)。
  • テーブルの作成は、そのテーブルが必要となる機能実装時に作成すること。不要なテーブルを作成してしまうと、修正が発生した場合の対応が困難になるため(例:ユーザー管理機能の実装時には、ユーザー管理機能に必要なテーブルのみを作成する。商品用のテーブルなどは作成しない)。
  • LGTMが出る前に他の実装へ着手することは、推奨しない(Gitにおける複雑なコンフリクト等を引き起こす可能性があるためです)。

参考カリキュラム

  • データベース設計とは何か・外部キーの設定
    応用カリキュラム Lesson3 「設計をしよう」

  • 中間テーブルの考え方・外部キーの設定
    応用カリキュラム Lesson6 「ChatAppのDB設計をしよう」

  • FURIMAのDB設計概要
    最終課題補足カリキュラム Lesson1 「DB設計の方針を立てよう」

商品出品機能

実装概要

商品の情報が保存できるように実装し、単体テストを行った後、コードレビューを依頼する。LGTMが出たら完了とする。

実装方針

  • ブランチを作成する。
  • 商品出品機能を実装する。
  • モデルの単体テストコードを書く。
  • プルリクエストを作成してメンターにレビューを依頼する。
  • LGTMをもらい、マージをする。
  • デプロイをする。

実装条件

  • 必要な情報を適切に入力して「出品する」ボタンを押すと、商品情報がデータベースに保存されること。
  • ログイン状態の場合のみ、商品出品ページへ遷移できること。
  • ログアウト状態の場合は、商品出品ページへ遷移しようとすると、ログインページへ遷移すること。
  • 商品画像を1枚つけることが必須であること。
  • 商品名が必須であること。
  • 商品の説明が必須であること。
  • カテゴリーの情報が必須であること。
  • カテゴリーは、「---、メンズ、レディース、ベビー・キッズ、インテリア・住まい・小物、本・音楽・ゲーム、おもちゃ・ホビー・グッズ、家電・スマホ・カメラ、スポーツ・レジャー、ハンドメイド、その他」の11項目が表示されること(--- は初期値として設定すること)。
  • 商品の状態の情報が必須であること。
  • 商品の状態は、「---、新品・未使用、未使用に近い、目立った傷や汚れなし、やや傷や汚れあり、傷や汚れあり、全体的に状態が悪い」の7項目が表示されること(--- は初期値として設定すること)。
  • 配送料の負担の情報が必須であること。
  • 配送料の負担は、「---、着払い(購入者負担)、送料込み(出品者負担)」の3項目が表示されること(--- は初期値として設定すること)。
  • 発送元の地域の情報が必須であること。
  • 発送元の地域は、「---」と47都道府県の合計48項目が表示されること(--- は初期値として設定すること)。
  • 発送までの日数の情報が必須であること。
  • 発送までの日数は、「---、1~2日で発送、2~3日で発送、4~7日で発送」の4項目が表示されること(--- は初期値として設定すること)。
  • 価格の情報が必須であること。
  • 価格は、¥300~¥9,999,999の間のみ保存可能であること。
  • 価格は半角数値のみ保存可能であること。
  • 入力された価格によって、販売手数料や販売利益の表示が変わること。
  • 販売手数料と販売利益は、小数点以下を切り捨てて表示すること。
  • 出品が完了したら、トップページに遷移すること。
  • エラーハンドリングができること(入力に問題がある状態で「出品する」ボタンが押された場合、情報は保存されず、出品ページに戻りエラーメッセージが表示されること)。
  • エラーハンドリングによって出品ページに戻った場合でも、入力済みの項目(商品画像・販売手数料・販売利益以外)は消えないこと。
  • エラーハンドリングの際、重複したエラーメッセージが表示されないこと。

補足情報

  • 配布しているビューファイルのname属性などは、初期値として「hoge」と設定しているため、実装する際には自身のデータベース設計に合わせて変更すること。
  • カテゴリー選択など、基本的に変更されないデータを取り扱う際は、以下のカリキュラムを参考にして、ActiveHashを使用すること。
    最終課題補足カリキュラム Lesson1 「カテゴリーの選択を工夫しよう」
  • 画像投稿の実装は、ActiveStorageを使用すること(画像の複数枚投稿は追加実装となるため、この段階では、画像1枚での出品機能を実装する)。
  • 販売手数料や販売利益の計算は、JavaScriptを使用して実装すること。
  • 出品に失敗した場合に、画像・販売手数料・販売利益の欄が空欄になることは問題ない。
  • 販売手数料と販売利益におけるカンマでの区切り表示は必須ではない。

注意事項

  • 機能毎に、commitとpushを行うこと。
  • 配布されたビューファイルに最初からコメントアウトで指示などが記されている場合があるが、それらは機能を実装できた時点で削除すること。
  • 販売手数料や販売利益の表示機能実装の際に、jQuery等のライブラリは使用しないこと。
  • このタスクに関係のないアクションやメソッドなどの記述は行わない(プルリクエストにて、適切な差分が表示されない原因となるため)。
  • メンターにコードレビューを依頼すること。
  • 機能の様子はGyazo GIFを用いて、テストコードが通っている様子はGyazoを用いて撮影し、それぞれのリンクをプルリクエストへ添付すること。
  • Gyazoのリンクを添付する際は、何を撮影したGyazoのリンクか分かるように、リンクの前に説明を記載すること。
  • コードレビューを依頼する前に、Rubocopを実行すること。
  • コードレビューを依頼する際は、テストコードを書き終わってから依頼すること(テストコードの含まれていないレビューは対応しません。実際の開発現場でも同様の対応であるためです)。
  • プルリクエストには、「What」と「Why」を記述すること(「What」と「Why」の記載されていないレビューは対応しません。実際の開発現場でも同様の対応であるためです)。
  • LGTMが出るまでマージしないこと。
  • LGTMが出る前に他の実装へ着手することは、推奨しない(Gitにおける複雑なコンフリクト等を引き起こす可能性があるためです)。

プルリクエストへ記載するgyazo

  • ログイン状態の場合は、商品出品ページへ遷移できる動画
  • 価格が入力されると同時に、販売手数料と販売利益が表示される動画
  • 必要な情報を適切に入力して「出品する」ボタンを押すと、商品情報がデータベースに保存される動画
  • 入力に問題がある状態で「出品する」ボタンが押された場合、情報は保存されず、出品ページに戻りエラーメッセージが表示される動画
  • ログアウト状態の場合は、商品出品ページへ遷移しようとすると、ログインページへ遷移する動画
  • テスト結果の画像

参考カリキュラム

  • データの登録
    基礎カリキュラム Lesson7 「データを保存しよう」
    応用カリキュラム Lesson2 「ツイートを保存しよう」
    応用カリキュラム Lesson6 「メッセージ投稿機能を実装しよう」

  • 画像の投稿
    応用カリキュラム Lesson6 「画像投稿機能を実装しよう」

  • ActiveHash
    最終課題補足カリキュラム Lesson1 「カテゴリーの選択を工夫しよう」

  • ログインしていない場合のリダイレクト
    応用カリキュラム Lesson6 「ChatAppのユーザー管理機能を実装しよう」

  • 出品に失敗した場合の処理
    応用カリキュラム Lesson6 「ChatAppのユーザー管理機能を実装しよう」

  • 販売手数料等の計算
    発展カリキュラム Lesson3 「JavaScriptで画面上の表示を変えてみよう」
    発展カリキュラムLesson4「JavaScriptの練習問題を解いてみよう」

  • 投稿機能のRSpec
    応用カリキュラム Lesson5 「PicTweetのモデルの単体テストコードを書こう」

  • 画像付き投稿のRSpec
    応用カリキュラム Lesson6 「ChatAppのモデル単体テストコードを書こう」

デプロイ

実装概要

  • Renderを用いてデプロイを行い、アプリケーションを公開する。

実装方針

  • 取得済みのRenderアカウントへpushする。

実装条件

  • Renderのアプリケーション名は、開発環境のアプリケーション名と同じにすること(例:furima-00000)。
  • ルートパスへアクセスすると、ダウンロードしたview素材のapp/views/items/index.html.erbが表示されること。

注意事項

  • ブランチの作成は不要。
  • メンターへのコードレビュー依頼は不要。
  • デプロイは、「ルートパスへアクセスすると、ダウンロードしたview素材のitems/index.html.erbが表示されること」という実装条件をローカル環境で確認した後に行うこと。
  • Renderでのデータベースは、PostgreSQLを使用すること。
  • デプロイする際は、アプリ名にアンダースコアを使用しないこと。Renderでアンダースコアを含むアプリ名は、エラーとなるため(良い例:furima-00000 良くない例:furima_00000)。

参考カリキュラム

  • デプロイ・本番環境のデバッグ
    発展カリキュラム Lesson5 「AjaxAppを公開しよう」

終了報告

概要

FURIMAの実装が完了したことを報告する

提出までの流れ

  • 本番環境で、すべての機能が実装条件通りに動くことを確認する。
  • 本番環境のデータベースをリセットする。
  • 本番環境で新たにユーザーを作成する。
  • 終了報告フォームを提出する。

提出条件

  • すべてのプルリクエストに対して、LGTMが出ていること。
  • 本番環境で、すべての機能が実装条件通りに動いていること。
  • 本番環境のデータベースをリセットした上で、ユーザーを再度作成していること。

注意事項

  • 参考カリキュラムをよく読み、終了報告を行うこと。

参考カリキュラム

  • 終了報告の提出
    最終課題カリキュラム Lesson2 「最終課題を提出しよう」

商品一覧表示機能

実装概要

出品された商品はトップページに一覧で表示されること。コードレビューを依頼する。LGTMが出たら完了とする。

実装方針

  • ブランチを作成する。
  • 商品一覧表示機能を実装する。
  • プルリクエストを作成してメンターにレビューを依頼する。
  • LGTMをもらい、マージをする。
  • デプロイをする。

実装条件

  • 商品一覧表示ページは、ログイン状況に関係なく、誰でも見ることができること。
  • 出品されている商品が一覧で表示されること。
  • 画像が表示されており、画像がリンク切れなどにならないこと。
  • 商品が出品されていない状態では、ダミーの商品情報が表示されること。
  • 左上から、出品された日時が新しい順に表示されること。
  • 商品出品時に登録した情報のうち、「画像・商品名・価格・配送料の負担」の4つの情報が、見本アプリと同様の形で表示されること。
  • 売却済みの商品は、画像上に「sold out」の文字が表示されること。

補足情報

  • 「売却済みの商品は、画像上に『sold out』の文字が表示されること」という機能に関しては、商品購入機能実装後に実装すること(商品購入機能実装前に商品一覧表示機能を実装する場合、コードレビュー時にこの機能は実装されていなくても良い。しかし、最終課題終了報告時に実装できていない場合、最終課題終了とはみなされない)。

注意事項

  • 機能毎に、commitとpushを行うこと。
  • 配布されたビューファイルに最初からコメントアウトで指示などが記されている場合があるが、それらは機能を実装できた時点で削除すること。
  • このタスクに関係のないアクションやメソッドなどの記述は行わない(プルリクエストにて、適切な差分が表示されない原因となるため)。
  • メンターにコードレビューを依頼すること。
  • コードレビューを依頼する前に、Rubocopを実行すること。
  • 機能の様子はGyazo GIFを用いて撮影し、リンクをプルリクエストへ添付すること。
  • Gyazoのリンクを添付する際は、何を撮影したGyazoのリンクか分かるように、リンクの前に説明を記載すること。
  • プルリクエストには、「What」と「Why」を記述すること(「What」と「Why」の記載されていないレビューは対応しません。実際の開発現場でも同様の対応であるためです)。
  • LGTMが出るまでマージしないこと。
  • LGTMが出る前に他の実装へ着手することは、推奨しない(Gitにおける複雑なコンフリクト等を引き起こす可能性があるためです)。

プルリクエストへ記載するgyazo

  • 商品のデータがない場合は、ダミー商品が表示されている動画
  • 商品のデータがある場合は、商品が一覧で表示されている動画(2つ以上の商品が出品されている状態を撮影してください。表示順を確かめるためです)

参考カリキュラム

  • データの表示
    基礎カリキュラム Lesson7 「保存したデータを取得して表示しよう」
    応用カリキュラム Lesson6 「メッセージ投稿機能を実装しよう」

  • 画像の表示
    応用カリキュラム Lesson6 「画像投稿機能を実装しよう」

  • 条件分けを用いた表示
    応用カリキュラム Lesson2 「投稿者本人のみに編集・削除を許可しよう」

商品詳細表示機能

実装概要

商品詳細表示ページにて、商品の詳細情報を表示する。コードレビューを依頼し、LGTMが出たら完了とする。

実装方針

  • ブランチを作成する。
  • 商品詳細表示機能を実装する。
  • プルリクエストを作成してメンターにレビューを依頼する。
  • LGTMをもらい、マージをする。
  • デプロイをする。

実装条件

  • 商品詳細表示ページは、ログイン状況や商品の販売状況に関係なく、誰でも見ることができること。
  • 商品一覧ページにて商品情報をクリックすると、該当する商品の商品詳細表示ページへ遷移すること。
  • 商品出品時に登録した情報(商品名・商品画像・価格・配送料の負担・商品の説明・出品者名・カテゴリー・商品の状態・発送元の地域・発送日の目安)が、見本アプリと同様の形で表示されること。
  • 画像が表示されており、画像がリンク切れなどにならないこと。
  • ログイン状態且つ、自身が出品した販売中商品の場合にのみ、「商品の編集」「削除」ボタンが表示されること。
  • ログイン状態且つ、自身が出品していない販売中商品の場合にのみ、「購入画面に進む」ボタンが表示されること。
  • ログイン状態の場合でも、売却済みの商品には、「商品の編集」「削除」「購入画面に進む」ボタンが表示されないこと。
  • ログアウト状態の場合は、商品の販売状況に関わらず、「商品の編集」「削除」「購入画面に進む」ボタンが表示されないこと。
  • 売却済みの商品は、画像上に「sold out」の文字が表示されること。

補足情報

  • 「ログイン状態の場合でも、売却済みの商品には、『商品の編集』『削除』『購入画面に進む』ボタンが表示されないこと」「売却済みの商品は、画像上に『sold out』の文字が表示されること」という機能に関しては、商品購入機能実装後に実装すること(商品購入機能実装前に商品詳細表示機能を実装する場合、コードレビュー時にこの機能は実装されていなくても良い。しかし、最終課題終了報告時に実装できていない場合、最終課題終了とはみなされない)。

注意事項

  • 機能毎に、commitとpushを行うこと。
  • 配布されたビューファイルに最初からコメントアウトで指示などが記されている場合があるが、それらは機能を実装できた時点で削除すること。
  • このタスクに関係のないアクションやメソッドなどの記述は行わない(プルリクエストにて、適切な差分が表示されない原因となるため)。
  • コードレビューを依頼する前に、Rubocopを実行すること。
  • メンターにコードレビューを依頼すること。
  • 機能の様子はGyazo GIFを用いて撮影し、リンクをプルリクエストへ添付すること。
  • Gyazoのリンクを添付する際は、何を撮影したGyazoのリンクか分かるように、リンクの前に説明を記載すること。
  • プルリクエストには、「What」と「Why」を記述すること(「What」と「Why」の記載されていないレビューは対応しません。実際の開発現場でも同様の対応であるためです)。
  • LGTMが出るまでマージしないこと。
  • LGTMが出る前に他の実装へ着手することは、推奨しない(Gitにおける複雑なコンフリクト等を引き起こす可能性があるためです)。

プルリクエストへ記載するgyazo

  • ログイン状態且つ、自身が出品した販売中商品の商品詳細ページへ遷移した動画
  • ログイン状態且つ、自身が出品していない販売中商品の商品詳細ページへ遷移した動画
  • ログイン状態で、売却済み商品の商品詳細ページへ遷移した動画(現段階で商品購入機能の実装が済んでいる場合)
  • ログアウト状態で、商品詳細ページへ遷移した動画

参考カリキュラム

  • 画像の表示
    応用カリキュラム Lesson6 「画像投稿機能を実装しよう」

  • 条件分けを用いた表示
    応用カリキュラム Lesson2 「投稿者本人のみに編集・削除を許可しよう」
    応用カリキュラム Lesson6 「画像投稿機能を実装しよう」

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.