プロジェクトの背景と開発方針

店舗売買のマッチングサイトを新規構築したいとのご依頼を受けました。

やりたいこととしては、

  • 売り手はユーザー登録し、管理画面から売りたい店舗の情報(案件情報)を登録できる
  • 登録された案件情報はサイトに掲載され、エリアや希望金額などで絞り込み検索できる
  • 買い手は気になる案件についてフォームから問い合わせると、システム側から売り手の連絡先を教えてもらうことができる
  • システムの直案件も掲載したい
  • 提携サイトから案件情報を転載する仕組みもほしい

とのことでした。またまだ事業になるかどうか分からないため、スモールスタートしたいとのことでした。

機能的にはWebアプリとバッチで実現可能なため、サイトはPHPとMySQL、バッチはAWS Lambdaという標準的な構成で構築することになりました。

開発のポイント

性能を考慮したテーブル設計

エリアや価格などで絞り込み検索するため、テーブルのインデックスやカラム型を以下の点を考慮しながら慎重に設計しました。

  • 検索時のゼロ値(未選択時の値)をどのように扱うか(NULL許容にするかしないか)
  • 性能要件を満たせるか
  • 将来のデータ追加や仕様変更に耐えられるか

性能については将来データが増えた場合も含めて性能要件が確保される必要があります。
そのため、20万件のレコードでもクエリ実行時間が20msec以内になることをテスト検証しました。

提携案件の取り込み

提携サイトからの案件取り込みは弊社のスクレイピングシステムを利用し、組み込みました。またこれをAWS Lambdaで定期実行できるようにしました。

外部デザイナーとの共同作業

サイトのデザイン部分については外部のデザイナー様にご担当いただくこととなりました。
デザイナー様とソースコードを共有し、適宜コミュニケーションを取りながら作業を進めました。

振り返り

案件情報の項目をどうするか、並び順やソートをどうするかなどクライアント様と相談しながら進められました。
案件取り込みについては弊社のシステムを流用することで工数を大幅に削減することができました。

プロジェクトデータ

開発期間
2ヶ月
開発人数
2人

使用技術

言語
PHP
Framework
CodeIgniter
データベース
MySQL
画像アップロード
AWS S3
ホスティング
VPS
バッチ
AWS Lambda
メール送信
SendGrid