GMOペパボ株式会社 / minne事業部 Webアプリケーションエンジニア
作品の購入オプションの選択を必須化できるようにする
プロジェクト概要:これまで作品に設定できるオプションが任意選択のものしかありませんでしたが、選択を必須に設定できるようにしました。 担当業務: 購入者が作品をカート投入時に必須オプションを選択していなかった場合や、カート投入後~決済までに、作家がその作品に必須オプションを設定した場合、購入させないようにするバリデーションを Ruby on Railsで実装しました。 課題: • 必須オプション未選択時のエラーメッセージ表示やバリデーションエラーを実装するのが困難でした。具体的には、必須オプションを選択していない作品をカート投入した時のエラーメッセージと、 作品をカートに入れてから決済するまでの間に、作品に必須オプションが追加された時のエラーメッ セージを出し分けるために、既存の複雑なカートの実装を改修することの難易度が高かったため、開 発が困難でした。 • モバイルアプリで、購入者が作品をカートに投入してから決済するまでの間に、作家がカート内の作 品に選択必須オプションを設定した場合、注文を止められるようにする処理を実装しましたが、モバ イルアプリからどのエンドポイントがたたかれた時に、Railsに実装した必須オプションのバリデー ションが実行されるかの把握が困難という問題がありました。 実績: • エラーメッセージの出し分けをするために、minneのWebアプリケーションエンジニア全体に向けてレビュー会を実施し、実装方針を固め、controllerに処理を記述することで出し分けられるようにしました。 • モバイルアプリについては、各エンドポイントで意図しない挙動はないか、注文を止められていない箇所は無いかを、スプレッドシートで表を作って粘り強く検証し、バリデーションが実行される全て のエンドポイントにテストを追加し、注文を止めてほしい操作でバリデーションが実行されない場合は、エラーが発生するように、controllerに処理を追加しました。 このように、複雑なカート・決済周辺のコードに、バリデーションを実装することは困難でしたが、PO やモバイルエンジニアと協力して粘り強く検証を行い、レビュー会を開催して実装方針を相談すること で期限内にリリースできました。また、テストも念入りに書くことで、リリース後に障害やバグを発生させませんでした。