Upgrade to Pro — share decks privately, control downloads, hide ads and more …

大規模サービスをNuxt.jsで作り変えた話

 大規模サービスをNuxt.jsで作り変えた話

Nuxt.js, Vue.jsにおけるTENTIAL ECのお話

icchiman

May 27, 2020
Tweet

More Decks by icchiman

Other Decks in Technology

Transcript

  1. # 自己紹介
 
 市來晟弥 (いちきせいや) @hey_icchiman
 
 ・経歴
  ・ プログラミング歴10年ぐらいの25歳

    
  ・ Far Connection - CEO 
  ・ 元 ZEALS - CTO 
  ・ 元 3minute(現GREEグループ) - フロントエンド/アプリエンジニア 
  ・ WARC - フロントエンド 
  ・ TENTIAL - CTO 
  ・ 他にもスタートアップ数社に技術顧問として参画中 
 
 ・インフラ、サーバーからフロントまで 
  ・ Meteor.js / express.js / react / react native / vue.js(nuxt.js) 

  2. # 自己紹介
 
 市來晟弥 (いちきせいや) @hey_icchiman
 
 ・経歴
  ・ プログラミング歴10年ぐらいの25歳

    
  ・ Far Connection - CEO 
  ・ 元 ZEALS - CTO 
  ・ 元 3minute(現GREEグループ) - フロントエンド/アプリエンジニア 
  ・ WARC - フロントエンド 
  ・ TENTIAL - CTO → 今日はテンシャルでのお話
  ・ 他にもスタートアップ数社に技術顧問として参画中 
 
 ・インフラ、サーバーからフロントまで 
  ・ Meteor.js / express.js / react / react native / vue.js(nuxt.js) 

  3. ・商品管理 ・SKU(商品サイズ,タイプ)管理 ・注文履歴 ・在庫履歴管理 ・ユーザー管理(会員ユーザー、未会員ユーザー) ・クーポン発行/使用履歴管理 ・LP管理 ・広告管理(ASP、トラッキングログ) # 大規模の定義

    > 大規模を作るに至った理由 
 
 ・記事管理、記事用監修者(一般的なニュースだけでなくEC内メ ディアも) ・診断管理 ・お問い合わせ管理 ・その他設定(税率や手数料、送料) ・管理者管理(配送担当者やCS,CXの担当者、広告運用担当者、メ ディア担当者など管理者も多いため管理体制もしっかりする) ・分析用CSV/スプレ連動(GAS組み込み) 今回は機能ベースで定義
  4. ・Nuxt.js (SSR)   ・Vue.js   ・express.js (api server)   ・MongoDB ・インフラ   ・elastic beanstalk

    (docker)   ・S3   ・codepipeline   ・github actions(eslint, prettier) # システム構成 > 大規模を作るに至った理由 
 

  5. ・Nuxt.js (SSR) → 今日はここのお話   ・Vue.js   ・express.js (api server)   ・MongoDB ・インフラ

      ・elastic beanstalk (docker)   ・S3   ・codepipeline   ・github actions(eslint, prettier) # システム構成 > 大規模を作るに至った理由 
 

  6. # メソッド/関数の設計、共通化 > Nuxt.jsにおける注意点 
 
 ページが増える / 機能が増える ↓

    共通関数/コンポーネントの設計をしていく(随時) 無闇に実装に走らない
  7. # pages, storeの設計 > Nuxt.jsにおける注意点 
 
 ◦意識したこと 各ページのSSR(asyncData)やmountedにて 必要な時に必要なデータを取得する

    ような設計 なんでもかんでも/store/index.jsや 関係が薄いページでも storeにぶち込んでview管理するな
  8. # pages, storeの設計 > Nuxt.jsにおける注意点 
 
 Aというページで使った&&加工したstoreが 遷移してBというページでも使われる(引き継がれる) ただ、Bというページをリロードしたら

    store値が違う みたいなこと避けよう(データ整合の不一致) storeでゴリゴリview管理するあるある 画面遷移 Page - A Page - B
  9. # pages, storeの設計 > Nuxt.jsにおける注意点 
 
 storeの設計が出来ていない / 肥大化すると

    ↓ ・どこで何をしているかわからなくなる ・確かにレンダリングが楽かもしれないが 楽=正しい設計かどうかは精査する Nuxt.jsのstore/dispatchのディレクトリ構造素晴らしい
  10. # pages, storeの設計 > Nuxt.jsにおける注意点 
 
 これらマーケター絶対困ってます ↓ ・タグ設置やCV計測方法などが通常の

    MPAとは設置,計測方法が違う ・ちゃんとマーケターと MTG入れて  gtmタグやトリガーの設計を共有 /理解し合う ・SPAの理解からしてもらう必要がある