## 【プロジェクト目的】
飲食店のリピーター促進企画。
スマホで表示されたWEB画面をスタンプカードとして電子スタンプが押された回数によって特典が得られる仕組みを持つサイトの作成。
電子スタンプを開発している外部企業と連携し、設計~運用を行った。
(電子スタンプとは、スマホの画面上に物理的なアイテムでスタンプすると画面上にスタンプ押下されたアニメーション画像が表示されるものです。現在では音楽系ライブのチケットもぎりの代替えとして使われていたりします。)
## 【担当】
設計(DBのテーブル設計含む)、実装、テストケース作成、テスト実施、リリース、運用。
主にサーバサイド(PHP)での開発だが、テストについてはフロントも含め全体的に担当。
(フロント側開発:HTML,CSS,jsは基本担当外、電子スタンプ押下を検知する部分とサーバにアクセスするAjax部分は担当)
## 【苦労したこと】
このプロジェクトは社会人として初めての仕事でした。
スタンプが押下された判定はJavascriptでデータ取得しAjax通信でPHP側に送信、PHP側ではAPI通信を行ってその結果を返却という流れで行いました。
Ajax通信ははじめて実装したので、最初はうまく通信が行えずに返却値が空になるなど苦戦し、最終的にはJavascriptの知識がある同期に相談しながらなんとか実装することができました。
電子スタンプを開発している外部企業にAPIの利用方法や正しい返却値、エラー系返却値などもメールで問い合わせを行いながら開発を進めました。ビジネスメールも初めてでしたので、何度も上司や先輩にレビューしてもらってからメールを送信していました。
実際の運用をしてみると使われるスマホが多岐にわたり、例えばうまく動かない機種、ブラウザによる挙動の違い、画面割れがある端末など、考慮すべき問題がかなり多く、スマホ向けのサービス作成の難しさを体感しました。
加えて、リリース後になって修正が必要だと気がついてブラウザバックされないようにしたり、何秒かたったら自動的に画面遷移するようにしたりするなど、作ったら終わりではなくサービスをもっとよくしようという考えが出てきて、自らどんどんアップデートしていきました。いまでも、言われたものを作ったら終わりではなくて、サービスを使ってもらうにはどんな工夫をしたらいいか考えながら実装をすすめるようにしています。
また、運用が始まったあとスタンプが押された数を集計するクエリを作成することを考えないまま
DB設計をしてしまい、クエリの作成に苦労しました。これによってサブクエリ等の少し複雑なSQLについて知識を深めることができました。加えて、DB設計の大切さを知りました。