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

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

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.

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

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

Avatar for icchiman

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の理解からしてもらう必要がある