# 概要
## サービスの概要
商品開発ダッシュボードを作成しました。
商品に対する基本情報と実績を表示するツールです。
ユーザーはダッシュボードを確認することで、問題のある商品の特定から改善に向けた行動をとることができます。
- これまで商品の基本情報と売り上げ実績が別々に表示されていたが、本ダッシュボードでレポートを作成する手間を省ける。
- これまで商品レビューは軽視されてきた状況だが、本ダッシュボードでお客様の声を意識した開発ができるようになった。
## 使用技術
- 利用言語:Python(サーバー側), Javascript(フロントエンド側)
- ライブラリ:Mecab(キーワード抽出), D3.js(ワードクラウド), echart(時系列グラフ)
- フレームワーク:Django,Backbonejs
- その他:Docker, SVN, MySQL
# サービスの運営上での課題と工夫
## dockerによる開発環境構築
- 課題
開発環境と本番環境、他メンバーPC間で環境にズレが生じる可能性があるため、環境構築の手間や環境が壊れた時のリスクが生じる。
- 使用技術
docker使用。
- 工夫
svnの導入と組み合わせることで、ソースの管理と環境の管理を行い、完全管理が可能になっている。
- 成果
環境間の差異をなくし、5分で開発環境を構築することができた。
後にAWS EC2への移行の話が出たが、windowsとlinux間での環境差異を考慮しなくても良い状態になった。
## Webサーバー(フロントエンド) + データ提供APIのアーキテクチャ(バックエンド)
- 課題
複数メンバーでの開発のため、マージの際には競合が発生してしまう可能性がある。
- 使用技術
WebAPI
- 工夫
フロントエンドとバックエンドで開発メンバーを分け、
互いの領域でないソースは編集しないというルールを設ける。
- 成果
コンテナ単位(フォルダー単位)でのソースの管理を行い、マージの際の競合はなくなった。
フロントエンドとバックエンドが明確に分離され、変更に耐えるシステムになった。
# 開発の詳細
## これまでのプロジェクトの流れ
1. プロジェクトキックオフ
2. ダッシュボードテンプレート選定
3. docker+django
4. メンバー追加,SVN導入
5. ダッシュボード第一弾完成
上記達成時点より、以下の本格的な開発サイクルがスタート
1. 商品開発部レビュー
2. レビュー内容優先順位付け
3. APIデータ構造決定+ダミーJSONデータ作成
4. 各担当が各々のローカル環境で各分野を開発
5. コミットを実施&ローカル環境での動作確認
6. 本番環境を更新
上記のサイクルを用いて、以下の3点を実装
1. キーワードクラウドによる商品レビューの頻出単語の可視化
2. 売り上げの時系列グラフ化
3. CSV管理 → MySQLデータベース管理による高速化
### キーワードクラウドによる商品レビューの頻出単語の可視化
- 経緯
商品開発チームより「ユーザーレビューを活かす取り組みを始めるために直感的なユーザーインターフェースにしたい」という要望があったため実装。
星ごとにワードの色を変えることで、レビューのネガポジのキーワードを直感的に拾える工夫をした。
- 使用技術
Python+Mecabでレビューからキーワード+頻度を抽出。
抽出したデータをD3.jsライブラリーを用いてワードクラウド化。
- 工夫
言語分析は「ユーザーレビューを活かしたい」という要件により、再利用性が重要だと予測。
言語分析APIとしてコンテナを作成して対応した。
### CSV管理 → MySQLデータベース管理による高速化
- 経緯
開発チーム内部より「表示速度を早くすることでデモンストレーションにも対応できるようにする」という取り組みが始まった。
- 使用技術
抽出速度のボトルネックがCSVでの探索にあったことから、CSVでの管理からMySQLでの管理に変更。
- 工夫
会社内の基幹データベースと直接繋げると様々なリスクが発生するため、CSV連携の方式を採用。
「基幹DB→CSV→ダッシュボードDB」という連携方式になった。
CSVとダッシュボードDBではSQLLoaderを使用してデータの洗い替えを行い、
上記を実施するスクリプトを作成することでデータの鮮度を保つように工夫した。