# 目的
自社で持っていない車両を他社から提携してもらい、売れる車両を増やし利益につなげる
# チーム構成等
自分一人、フロントからバックエンドまで全て担当
# 使用技術や開発環境
- 使用技術はJava(SpringBoot)/MyBatis/CentOS/GCP/Nginx/Nuxt.js
- 開発環境は有料IDEのJetbrains社のIntelliJ Ideaを利用(自分で所有しているもの)
# 課題
- リアルタイムのチャットの作成(提携他社との連携等のため)
- 大量の商品情報の登録を行うための処理時間
- 大量の商品写真のアップロードに時間がかかってしまう。
# 技術的なアプローチや工夫した点
- 提携他社との情報連携のため、リアルタイムのチャットができるようにWebSocketを採用。既読通知や返信済みである旨のマーク等の実装まで行い、WhatsAppのような使用感にできた。
- 管理ユーザーでログインすることでお知らせ等を太字等のHTMLタグを利用できるようにしただけでなく、HTMLに精通してない人でもWeb上のお知らせエディタをわかりやすくなるようにボタン等を配置し、XSS対策を行い管理をしている上層部からでも簡単にお知らせを提携会社に掲載できるようにした。
- 大量の商品情報の登録を行うため、1件ずつのコミットでは処理が重くなってしまうので、MyBatisのBatchモードを利用することでBulk Insertを行い、処理時間の最適化を行った。
- 1商品あたり10~30枚ほどの写真があるが、それを1件ずつ処理していては多大な時間がかかってしまうため、並列処理を行いGCPで利用しているCloud Storageにアップロードを行い、処理時間の大幅な短縮をした。
# 成果
今までは商品の仕入れは自社で仕入れたものしかなく、売れなかった場合に維持費で更に費用がかさんでしまっていたが、在庫提携周りを整備し、Webアプリ化することで営業の手入力ではなく、他社が手入力で入れやすくなり、写真の更新も自分のタイミングでできるようになり利便性が向上した。
在庫提携で仕入れた商品の数は実装前は数百程度であったが、今では23,000ほど増え顧客に売れる商品の幅が大幅に増加した。