Business.vue〜企業でのVue.js導入事例勉強会〜
https://gyazo.com/e9c14b787afe808396dd70530441d445
https://istyle.connpass.com/event/141816/
Vue.jsを採用している企業がどのようにVue.jsを利用しているのか、なぜ採用しているのか、どんなところがいいのかを共有
大手キャリアサービスにVue.jsを使った話
株式会社mediba
auサービス開発部
部長 土方 哲雄
FE 川上 竜太郎
https://twitter.com/kwkm2000
KDDI 株式会社の auスマートパスを中心としたau関連サービス運営の他、国内外にてカルチャー・ゲーム・子育て等、幅広い分野でサービスを展開し、ユーザーがインターネットを通じて必要な時に必要な情報にアクセスできる環境づくりのためのサービスを提供しています。
サービス
auスマートパス
auWebポータル
au天気
ポイント貯める
auスマートパスにおけるVue.js
過去の話
画面は2種類
phpで作られている動的画面
管理画面から登録したデータ・会員種別を元に動的表示
静的HTMLの表示するLP向け画面
訴求ページ
アクセス数をさばくことに特化
サーバーサイドロジックなし
HTMLを高速に返す
定期的な管理は想定していなかった
どうしても運用が発生する
更新内容をExcelで依頼、都度マークアップしていた
Excel関数をJSオブジェクトに代入して出力するようにしていた
データとビューが分離されていなかった
それを解決するためにVue.js
構造とデータを分離することができる
問題点
Android2系の対応
0.11.5ではshimができない
polyfillで対応
es-shims
ES5.shim.js
ES5.sham.js
フロントエンドの技術刷新
auスマートパスのリニューアル
SmartyからVue.js&Nuxt.js
困ったこと
技術選定
Nuxt.js
TypeScript
静的型付け言語の経験がない
スピードがでない懸念
メリットが分からなかった
TypeScript再入門「がんばらないTypeScript」で、JavaScriptを“柔らかい”静的型付き言語に(gfx執筆) - エンジニアHub|若手Webエンジニアのキャリアを考える!
anyで握りつぶしつつ
型システムは徐々に構築
分かってくると楽しいし安心感をもって開発できる
ゆるいTypeScriptでもJavaScriptより厳格
Atomic Design
要件がどんどん変わって段階的に完成していく
断片的だとmolculesとorganismsの定義がむずかしいい
解決策
いったん考えない
PagesにAtomsを並べていく
デザインが揃ってきたらmolculesとorganismsの定義をしていく
コンポーネント分離の基準
molculesとorganismsをどう分けるか
再利用性はmolcules
マージンをつけるのはorganismsに
storeへのアクセスルールがないと運用がしんどい
pagesのみ
デザイナーがゆるく関わるVue.js〜導入や管理、開発の流れなど
合同会社DMM.com / 動画配信事業部(デザイナー) 中田 裕美子
SVODとPPV型の動画配信
舞台のライブ配信やVRコンテンツ
運用20年間
2010年当時の開発
デザイナーがコーディング
使い回せるように実装
修正する時にエンジニアの手を借りていた
システムがプログラミング・共通化
影響範囲があいまいになって検証ができなかった
Vue.jsを触った経緯
体制が変更されて改善チームに
開発の課題だしをすることに
同じパーツが複数ある
どこに影響があるか
もっと身軽になれないか
部品をフロントで管理しよう
技術選定
React.js VS Vue.js
Vue.jsになった
肥大化して一気に変えるのは厳しい
チュートリアルが分かりやすい
API・モデルが分かりやすい学習コスト
シンプル
開発の流れ
要件定義
Vue.jsが絡む
モック
お互いの状況を共有しつつ作成(デザイン・機能)
開発
フロントエンドが手厚くサポートしてくれる
環境構築のフォローをしてくれる
Node.jsのエラーもフォロー
.vueの自動生成
lintの導入
Vue.jsの解説
デザイナーが弄れる利点
実際のデザインのイメージをもって実装できる
デザインデータとブラウザとの差異
管理方法
Storybook
デバッグ
まとめ
template, script, styleが分かれているので分担しやすい
実装に関わることで構造を知った上でデザインできる
同時開発で余裕が生まれる
アイスタイル特設サイトにおけるVue.js導入事例(再演)
https://www.slideshare.net/KenjiroKubota/vuejs-169513347
株式会社アイスタイル /R&D部 技術開発グループ チーフエンジニア 久保田 賢二朗
https://twitter.com/kubotak_public
@cosmeの開発・運営
Beauty × IT
@cosume Beauty Day 2018でVue.jsを導入
国内最大
1900ブランド
35000アイテム
20%ポイント還元
1日限りのキャンペーン
CM放送もやっていた
要件
CMによるスパイクアクセス
AWSで高負荷に耐えられるように
11/1からティザー公開
19からは予約が可能
それ移行はアイテムが変化
数時間おきにアイテムが変化
PC・SPは別テンプレート
Why Vue.js
導入実績があった
Vue-cliでの開発環境構築がDX良い
社内的に横断しているコンポーネントがあった
動的じゃないページがある・各ページの公開日が違う
静的なページを時限式に出し分ける方法
privateに日時別のディレクトリに置いておく
時間ごとに似たようなデータが重複
EJS => GitLab CI => S3
何時に配信されるJSONかを生成
JSONに基づいてディレクトリに格納
時間が来たらpublicにlambdaで格納
配信するのはpubilcディレクトリのみ
コンポーネント単位でVue.jsを使う
商品詳細
カートに入れるボタンを生成
ロジックのあるボタンをVue.jsで楽にコンポーネント化
商品検索
ページネーションあり
コンポーネント単位でインスタンス化
ロジックをmixinにして共通化
各デバイスへの書き出し
vue-cli-service buildで
HTMLでは別途runtimeを読まなければいけない
コンポーネントのテスト
APIレスポンス内容によって表示文言を変える
@vue/test-utilsを利用する
Jest Mockでレスポンスをモック
VuexがAPIをフェッチ
モックレスポンスを取得