フリーマーケットサイトのクローンサイト
TECH::EXPERTのカリキュラムの最終課題として、フリマサイト「メルカリ」のクローンサイトをチームで開発しました。実際のサイトの様子や開発環境などは以下に記載しております。
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で確認できたデータと、本来入っていてほしいデータが、違うことに気がつき、エラーを解決することができました。この経験から、
⑴仮説をより多く立て、実行することで原因を絞っていくこと
⑵検証作業の整理をすること
の大切さを学びました。今回、学んだ経験を活かして、エラー解決に当たる際、また、質問する際には、自身の作業を整理を行うようにしています。