フリーマーケットサイトのクローンサイト

OVERVIEW

TECH::EXPERTのカリキュラムの最終課題として、フリマサイト「メルカリ」のクローンサイトをチームで開発しました。実際のサイトの様子や開発環境などは以下に記載しております。

YEAR 2019 - 2020

GitHub

GitHubを確認する


開発状況

開発環境・使用言語

Ruby/Ruby on Rails/MySQL/Github/AWS/Visual Studio Code

開発期間と平均作業時間

  • 開発期間:約2ヶ月半
  • 1日あたりの平均作業時間:約6時間

開発体制

  • 人数:3名
  • アジャイル型開発(スクラム)
  • Trelloによるタスク管理

担当箇所

DB設計(チームメンバー3人で設計)

【フロントエンド】

  • 商品出品ページ 
  • ユーザープロフィール編集ページ
  • ユーザークレジットカード登録ページ
  • クレジットカード情報確認ページ
  • ユーザーログアウトページ

【バックエンド】

  • パンくず機能
  • 商品一覧表示機能
  • 商品購入機能

開発を通して

----工夫した点----

1.チームとして工夫を行った点

私たちのチームは、開発を進める上で特に以下の2点を工夫して行いました。

①作業分担をする前に、サイトマップを作成した

 サイトマップを作成することで、サイト構造の流れを把握でき、どの作業から進めるのが効率が良いかがわかりました。その結果、作業分担をや作業の進め方を非常にスムーズに決めることができました。

②Slackを使用し、作業の開始報告と終了報告を行なった

 作業の開始報告をすることで、メンバー間で相談できるタイミングがわかるようにしました。また、終了報告では、その日の作業内容・エラーなどのトラブル・明日の作業予定内容・チームに相談したい内容などを記入し、日報として提出するようにしました。

 その結果、メンバー全員が、各メンバーの進捗状況や、トラブルの内容を把握することができ、トラブル解決の際などの、チームの協力体制の維持につながりました。


2.個人として工夫を行った点

 私、個人として行なった工夫は、以下の3点です。

①週・日・時間ごとに作業終了の目標を付箋に書き、PCに貼って作業を行なった

 週・日毎に、自分がするべきことを整理でき、目に見える場所に貼ることで、時間意識を保ちながら、効率よく作業ができるようにしました。

②自分だけではなく、チームメンバー全員の作業期日を考え、伝えた

 開発全体の目標スケジュールをメンバーに伝えることができ、各メンバーの期日設定の参考にしていただくことができました。

③商品購入機能の実装の際、フラッシュアラートを作成した

 アラートを作成することで、少しでもユーザーが分かりやすく、使いやすいようにしました。この実装で、ユーザー目線で機能を実装することの大切さを学びました。


----苦労した点---- 

①決めた期日に実装が間に合わなかった場合の対応

 バックエンドの開発の作業に入り、エラー解決に時間がかかってくると、各メンバーが自身の設定した期日に間に合わないことがありました。開発当初、スケジュールが押した際の対応を決めておらず、このままでは、開発期日に間に合わないと思い、「Trelloにエラー内容のカードを作成し、1人で解決にあたる期日を設定。期日を過ぎた場合は、他のメンバーも協力して、エラー解決にあたる」というルールを提案し、採用されました。

その結果、各メンバーのエラー解決するスピードが上がり、開発期日までに、サイトの開発を終えることができました。この経験を活かし、

⑴開発におけるトラブルを想定しておくこと

⑵余裕を持って作業を進めること

を今後の開発では行いたいと思っています。


②マイグレーションファイルエラー

 今回、開発途中で、メンバーの一人が作成したマイグレーションファイルを他のメンバーが読み込めず、一時開発がストップしてしまうことがありました。ロールバックもできず、エラー原因のマイグレーションファイルを削除し、rails db:migrate:resetコマンドでDBの再構築を行うことで、解決しました。この経験を活かし、チームルールとして「マイグレーションファイルを作成した際、railsdb:migrate:redoコマンド等でロールバックができるかどうか確認する」というチームルールを提案し、採用されました。

 その後、マイグレーションファイルに関するエラーはなくなりました。この経験を活かし、今後のチーム開発でも特に、マイグレーションファイルの作成には気をつけようと思います。


③商品購入機能

 私が、担当した実装で最も作業量が多く、APIなど初めて使用する機能に挑戦して実装したため、開発期間が一番かかりました。その中でも特に、「DBにクレジットカードの情報の値が入らない」というエラーの解決に最も苦戦しました。解決に向けて、私は以下の3つの仮説を立てました。

 仮説1:createアクションが呼ばれてない、Payjp.api_keyやトークンの中身がない

 仮説2:ストロングパラメーターを設定していないため

 仮説3:コントローラーの記述ミス

作成した仮説を元に、binding.pryやconsole.logなどを使用し、エラー文の表示や、データの中身が入っているかなどの検証を行いました。検証作業やその結果、エラー内容などを整理することで、binding.pryで確認できたデータと、本来入っていてほしいデータが、違うことに気がつき、エラーを解決することができました。この経験から、

⑴仮説をより多く立て、実行することで原因を絞っていくこと

⑵検証作業の整理をすること

の大切さを学びました。今回、学んだ経験を活かして、エラー解決に当たる際、また、質問する際には、自身の作業を整理を行うようにしています。





WEBSITE