Submit Search
Upload
地に足をつけたフロントエンドの改善
•
6 likes
•
6,807 views
Recruit Lifestyle Co., Ltd.
Follow
Meetup#9での発表資料です。 リクルートライフスタイル 手塚 亮
Read less
Read more
Engineering
Report
Share
Report
Share
1 of 44
Download now
Download to read offline
Recommended
【横浜型リビングラボ】子育てママ☆リビングラボの事例紹介
【横浜型リビングラボ】子育てママ☆リビングラボの事例紹介
Takashi Fujimoto
2016/11/16セキビズ ビジネスブログ講座(ポエジー・オカビズ水野)
2016/11/16セキビズ ビジネスブログ講座(ポエジー・オカビズ水野)
Keysuke Mizuno
現場のプロが教えるディレクターのための見積作成 v.1.01
現場のプロが教えるディレクターのための見積作成 v.1.01
Yusuke Kojima
Drupalと大企業 at DrupalCamp Kyoto 2014
Drupalと大企業 at DrupalCamp Kyoto 2014
Yoshiyuki Ueda
サイボウズ_営業キャリアBAR(パートナー営業編)_190615
サイボウズ_営業キャリアBAR(パートナー営業編)_190615
Cybozu, Inc.
0からのwebディレクション講座 制作編5.1
0からのwebディレクション講座 制作編5.1
Kazuki Iwai
0からのウェブディレクション講座:制作・開発編 V02.01
0からのウェブディレクション講座:制作・開発編 V02.01
Yusuke Kojima
エンタープライズでもできるアジャイル開発
エンタープライズでもできるアジャイル開発
Yoshiyuki Ueda
Recommended
【横浜型リビングラボ】子育てママ☆リビングラボの事例紹介
【横浜型リビングラボ】子育てママ☆リビングラボの事例紹介
Takashi Fujimoto
2016/11/16セキビズ ビジネスブログ講座(ポエジー・オカビズ水野)
2016/11/16セキビズ ビジネスブログ講座(ポエジー・オカビズ水野)
Keysuke Mizuno
現場のプロが教えるディレクターのための見積作成 v.1.01
現場のプロが教えるディレクターのための見積作成 v.1.01
Yusuke Kojima
Drupalと大企業 at DrupalCamp Kyoto 2014
Drupalと大企業 at DrupalCamp Kyoto 2014
Yoshiyuki Ueda
サイボウズ_営業キャリアBAR(パートナー営業編)_190615
サイボウズ_営業キャリアBAR(パートナー営業編)_190615
Cybozu, Inc.
0からのwebディレクション講座 制作編5.1
0からのwebディレクション講座 制作編5.1
Kazuki Iwai
0からのウェブディレクション講座:制作・開発編 V02.01
0からのウェブディレクション講座:制作・開発編 V02.01
Yusuke Kojima
エンタープライズでもできるアジャイル開発
エンタープライズでもできるアジャイル開発
Yoshiyuki Ueda
マーケティングオートメーションの実装のコツ
マーケティングオートメーションの実装のコツ
Tsuyoshi Miyashita
コンサルビジネス成功のロードマップ【コンサル起業実践講座】
コンサルビジネス成功のロードマップ【コンサル起業実践講座】
伊藤 剛志
Pivotの極意
Pivotの極意
Masa Tadokoro
ワンカレ|フリーランスWebディレクターから見た”クリエイティブ”と”ビジネス”の使いドコロ・落としドコロ
ワンカレ|フリーランスWebディレクターから見た”クリエイティブ”と”ビジネス”の使いドコロ・落としドコロ
Yoshiaki Kaneda
Webサービスの育て方抜粋版 20140702
Webサービスの育て方抜粋版 20140702
株式会社ジェイティップス
0からのwebディレクション講座 製作・開発編5.0
0からのwebディレクション講座 製作・開発編5.0
Kazuki Iwai
【F8報告会】LiveRailとFacebook SDKのNative Ad対応の意味/株式会社トーチライト 三原 敬太様
【F8報告会】LiveRailとFacebook SDKのNative Ad対応の意味/株式会社トーチライト 三原 敬太様
Adinnovation Inc.
Webサイトの分析と改善の方法(前編) | ナイル株式会社
Webサイトの分析と改善の方法(前編) | ナイル株式会社
ナイル株式会社
Z会のマーケティング戦略を実現させるウェブリニューアル
Z会のマーケティング戦略を実現させるウェブリニューアル
loftwork
Bcu30 keimaejima final
Bcu30 keimaejima final
Kei Maejima
Zarcコンサルメンバー
Zarcコンサルメンバー
Taiga Ishii
魅力を伝えて成果を上げる!Webサイトの「伝え方」とは
魅力を伝えて成果を上げる!Webサイトの「伝え方」とは
ニフティ株式会社
オープンセミナー2016@広島プレゼン資料
オープンセミナー2016@広島プレゼン資料
Kakigi Katuyuki
ポジティブ・ライティング講座 / 第4回オウンドメディア勉強会
ポジティブ・ライティング講座 / 第4回オウンドメディア勉強会
鈴木 健介
Sales & Marketing report
Sales & Marketing report
Chat Perf
case-studies-list.pdf
case-studies-list.pdf
KazumaKANAZAWA
株式会社patmeサービス紹介資料.pdf
株式会社patmeサービス紹介資料.pdf
ssuser30dd29
【株式会社PIGNUS】会社概要資料.pdf
【株式会社PIGNUS】会社概要資料.pdf
contact890866
【株式会社PIGNUS】会社概要資料
【株式会社PIGNUS】会社概要資料
contact890866
【トラックドライバー採用】採用市場を勝ち抜くポイント トラック協会江戸川支部 採用セミナー150529
【トラックドライバー採用】採用市場を勝ち抜くポイント トラック協会江戸川支部 採用セミナー150529
Keisuke Muto
業務と消費者の体験を同時にデザインするリクルートの価値検証のリアル ー 「Airレジ ハンディ」セルフオーダーのブレない「価値」の確かめ方 ー
業務と消費者の体験を同時にデザインするリクルートの価値検証のリアル ー 「Airレジ ハンディ」セルフオーダーのブレない「価値」の確かめ方 ー
Recruit Lifestyle Co., Ltd.
分散トレーシングAWS:X-Rayとの上手い付き合い方
分散トレーシングAWS:X-Rayとの上手い付き合い方
Recruit Lifestyle Co., Ltd.
More Related Content
Similar to 地に足をつけたフロントエンドの改善
マーケティングオートメーションの実装のコツ
マーケティングオートメーションの実装のコツ
Tsuyoshi Miyashita
コンサルビジネス成功のロードマップ【コンサル起業実践講座】
コンサルビジネス成功のロードマップ【コンサル起業実践講座】
伊藤 剛志
Pivotの極意
Pivotの極意
Masa Tadokoro
ワンカレ|フリーランスWebディレクターから見た”クリエイティブ”と”ビジネス”の使いドコロ・落としドコロ
ワンカレ|フリーランスWebディレクターから見た”クリエイティブ”と”ビジネス”の使いドコロ・落としドコロ
Yoshiaki Kaneda
Webサービスの育て方抜粋版 20140702
Webサービスの育て方抜粋版 20140702
株式会社ジェイティップス
0からのwebディレクション講座 製作・開発編5.0
0からのwebディレクション講座 製作・開発編5.0
Kazuki Iwai
【F8報告会】LiveRailとFacebook SDKのNative Ad対応の意味/株式会社トーチライト 三原 敬太様
【F8報告会】LiveRailとFacebook SDKのNative Ad対応の意味/株式会社トーチライト 三原 敬太様
Adinnovation Inc.
Webサイトの分析と改善の方法(前編) | ナイル株式会社
Webサイトの分析と改善の方法(前編) | ナイル株式会社
ナイル株式会社
Z会のマーケティング戦略を実現させるウェブリニューアル
Z会のマーケティング戦略を実現させるウェブリニューアル
loftwork
Bcu30 keimaejima final
Bcu30 keimaejima final
Kei Maejima
Zarcコンサルメンバー
Zarcコンサルメンバー
Taiga Ishii
魅力を伝えて成果を上げる!Webサイトの「伝え方」とは
魅力を伝えて成果を上げる!Webサイトの「伝え方」とは
ニフティ株式会社
オープンセミナー2016@広島プレゼン資料
オープンセミナー2016@広島プレゼン資料
Kakigi Katuyuki
ポジティブ・ライティング講座 / 第4回オウンドメディア勉強会
ポジティブ・ライティング講座 / 第4回オウンドメディア勉強会
鈴木 健介
Sales & Marketing report
Sales & Marketing report
Chat Perf
case-studies-list.pdf
case-studies-list.pdf
KazumaKANAZAWA
株式会社patmeサービス紹介資料.pdf
株式会社patmeサービス紹介資料.pdf
ssuser30dd29
【株式会社PIGNUS】会社概要資料.pdf
【株式会社PIGNUS】会社概要資料.pdf
contact890866
【株式会社PIGNUS】会社概要資料
【株式会社PIGNUS】会社概要資料
contact890866
【トラックドライバー採用】採用市場を勝ち抜くポイント トラック協会江戸川支部 採用セミナー150529
【トラックドライバー採用】採用市場を勝ち抜くポイント トラック協会江戸川支部 採用セミナー150529
Keisuke Muto
Similar to 地に足をつけたフロントエンドの改善
(20)
マーケティングオートメーションの実装のコツ
マーケティングオートメーションの実装のコツ
コンサルビジネス成功のロードマップ【コンサル起業実践講座】
コンサルビジネス成功のロードマップ【コンサル起業実践講座】
Pivotの極意
Pivotの極意
ワンカレ|フリーランスWebディレクターから見た”クリエイティブ”と”ビジネス”の使いドコロ・落としドコロ
ワンカレ|フリーランスWebディレクターから見た”クリエイティブ”と”ビジネス”の使いドコロ・落としドコロ
Webサービスの育て方抜粋版 20140702
Webサービスの育て方抜粋版 20140702
0からのwebディレクション講座 製作・開発編5.0
0からのwebディレクション講座 製作・開発編5.0
【F8報告会】LiveRailとFacebook SDKのNative Ad対応の意味/株式会社トーチライト 三原 敬太様
【F8報告会】LiveRailとFacebook SDKのNative Ad対応の意味/株式会社トーチライト 三原 敬太様
Webサイトの分析と改善の方法(前編) | ナイル株式会社
Webサイトの分析と改善の方法(前編) | ナイル株式会社
Z会のマーケティング戦略を実現させるウェブリニューアル
Z会のマーケティング戦略を実現させるウェブリニューアル
Bcu30 keimaejima final
Bcu30 keimaejima final
Zarcコンサルメンバー
Zarcコンサルメンバー
魅力を伝えて成果を上げる!Webサイトの「伝え方」とは
魅力を伝えて成果を上げる!Webサイトの「伝え方」とは
オープンセミナー2016@広島プレゼン資料
オープンセミナー2016@広島プレゼン資料
ポジティブ・ライティング講座 / 第4回オウンドメディア勉強会
ポジティブ・ライティング講座 / 第4回オウンドメディア勉強会
Sales & Marketing report
Sales & Marketing report
case-studies-list.pdf
case-studies-list.pdf
株式会社patmeサービス紹介資料.pdf
株式会社patmeサービス紹介資料.pdf
【株式会社PIGNUS】会社概要資料.pdf
【株式会社PIGNUS】会社概要資料.pdf
【株式会社PIGNUS】会社概要資料
【株式会社PIGNUS】会社概要資料
【トラックドライバー採用】採用市場を勝ち抜くポイント トラック協会江戸川支部 採用セミナー150529
【トラックドライバー採用】採用市場を勝ち抜くポイント トラック協会江戸川支部 採用セミナー150529
More from Recruit Lifestyle Co., Ltd.
業務と消費者の体験を同時にデザインするリクルートの価値検証のリアル ー 「Airレジ ハンディ」セルフオーダーのブレない「価値」の確かめ方 ー
業務と消費者の体験を同時にデザインするリクルートの価値検証のリアル ー 「Airレジ ハンディ」セルフオーダーのブレない「価値」の確かめ方 ー
Recruit Lifestyle Co., Ltd.
分散トレーシングAWS:X-Rayとの上手い付き合い方
分散トレーシングAWS:X-Rayとの上手い付き合い方
Recruit Lifestyle Co., Ltd.
OOUIを実践してわかった、9つの大切なこと
OOUIを実践してわかった、9つの大切なこと
Recruit Lifestyle Co., Ltd.
Flutter移行の苦労と、乗り越えた先に得られたもの
Flutter移行の苦労と、乗り越えた先に得られたもの
Recruit Lifestyle Co., Ltd.
CTIサービスを支える裏側 〜物理デバイスとの戦い〜 | iOSDC Japan 2020
CTIサービスを支える裏側 〜物理デバイスとの戦い〜 | iOSDC Japan 2020
Recruit Lifestyle Co., Ltd.
「進化し続けるインフラ」のためのマルチアカウント管理
「進化し続けるインフラ」のためのマルチアカウント管理
Recruit Lifestyle Co., Ltd.
Air事業のデザイン組織とデザイナー
Air事業のデザイン組織とデザイナー
Recruit Lifestyle Co., Ltd.
リクルートライフスタイル AirシリーズでのUXリサーチ
リクルートライフスタイル AirシリーズでのUXリサーチ
Recruit Lifestyle Co., Ltd.
ホットペッパービューティーにおけるモバイルアプリ向けAPIのBFF/Backend分割
ホットペッパービューティーにおけるモバイルアプリ向けAPIのBFF/Backend分割
Recruit Lifestyle Co., Ltd.
データサイエンティストが力を発揮できるアジャイルデータ活用基盤
データサイエンティストが力を発揮できるアジャイルデータ活用基盤
Recruit Lifestyle Co., Ltd.
Real-time personalized recommendation using embedding
Real-time personalized recommendation using embedding
Recruit Lifestyle Co., Ltd.
データから価値を生み続けるには
データから価値を生み続けるには
Recruit Lifestyle Co., Ltd.
データプロダクト開発を成功に導くには
データプロダクト開発を成功に導くには
Recruit Lifestyle Co., Ltd.
Jupyter だけで機械学習を実サービス展開できる基盤
Jupyter だけで機械学習を実サービス展開できる基盤
Recruit Lifestyle Co., Ltd.
SQLを書くだけでAPIが作れる基盤
SQLを書くだけでAPIが作れる基盤
Recruit Lifestyle Co., Ltd.
BtoBサービスならではの顧客目線の取り入れ方
BtoBサービスならではの顧客目線の取り入れ方
Recruit Lifestyle Co., Ltd.
The Design for Serverless ETL Pipeline データ分析基盤のレガシーなデータロードをサーバレスでフルリプレースするまで道のり
The Design for Serverless ETL Pipeline データ分析基盤のレガシーなデータロードをサーバレスでフルリプレースするまで道のり
Recruit Lifestyle Co., Ltd.
リクルートライフスタイルにおける深層学習の活用とGCPでの実現方法
リクルートライフスタイルにおける深層学習の活用とGCPでの実現方法
Recruit Lifestyle Co., Ltd.
ビックデータ分析基盤の成⻑の軌跡
ビックデータ分析基盤の成⻑の軌跡
Recruit Lifestyle Co., Ltd.
Refactoring point of Kotlin application
Refactoring point of Kotlin application
Recruit Lifestyle Co., Ltd.
More from Recruit Lifestyle Co., Ltd.
(20)
業務と消費者の体験を同時にデザインするリクルートの価値検証のリアル ー 「Airレジ ハンディ」セルフオーダーのブレない「価値」の確かめ方 ー
業務と消費者の体験を同時にデザインするリクルートの価値検証のリアル ー 「Airレジ ハンディ」セルフオーダーのブレない「価値」の確かめ方 ー
分散トレーシングAWS:X-Rayとの上手い付き合い方
分散トレーシングAWS:X-Rayとの上手い付き合い方
OOUIを実践してわかった、9つの大切なこと
OOUIを実践してわかった、9つの大切なこと
Flutter移行の苦労と、乗り越えた先に得られたもの
Flutter移行の苦労と、乗り越えた先に得られたもの
CTIサービスを支える裏側 〜物理デバイスとの戦い〜 | iOSDC Japan 2020
CTIサービスを支える裏側 〜物理デバイスとの戦い〜 | iOSDC Japan 2020
「進化し続けるインフラ」のためのマルチアカウント管理
「進化し続けるインフラ」のためのマルチアカウント管理
Air事業のデザイン組織とデザイナー
Air事業のデザイン組織とデザイナー
リクルートライフスタイル AirシリーズでのUXリサーチ
リクルートライフスタイル AirシリーズでのUXリサーチ
ホットペッパービューティーにおけるモバイルアプリ向けAPIのBFF/Backend分割
ホットペッパービューティーにおけるモバイルアプリ向けAPIのBFF/Backend分割
データサイエンティストが力を発揮できるアジャイルデータ活用基盤
データサイエンティストが力を発揮できるアジャイルデータ活用基盤
Real-time personalized recommendation using embedding
Real-time personalized recommendation using embedding
データから価値を生み続けるには
データから価値を生み続けるには
データプロダクト開発を成功に導くには
データプロダクト開発を成功に導くには
Jupyter だけで機械学習を実サービス展開できる基盤
Jupyter だけで機械学習を実サービス展開できる基盤
SQLを書くだけでAPIが作れる基盤
SQLを書くだけでAPIが作れる基盤
BtoBサービスならではの顧客目線の取り入れ方
BtoBサービスならではの顧客目線の取り入れ方
The Design for Serverless ETL Pipeline データ分析基盤のレガシーなデータロードをサーバレスでフルリプレースするまで道のり
The Design for Serverless ETL Pipeline データ分析基盤のレガシーなデータロードをサーバレスでフルリプレースするまで道のり
リクルートライフスタイルにおける深層学習の活用とGCPでの実現方法
リクルートライフスタイルにおける深層学習の活用とGCPでの実現方法
ビックデータ分析基盤の成⻑の軌跡
ビックデータ分析基盤の成⻑の軌跡
Refactoring point of Kotlin application
Refactoring point of Kotlin application
地に足をつけたフロントエンドの改善
1.
地に足をつけた フロントエンドの改善 RLS Meetup#9 リクルートライフスタイルのフロントエンドのいまとこれから May 24,
2018 @inureo
2.
Ryo Tezuka @inureo 来歴 ❑ 2009年04月
デザイナーとしてWeb制作会社に入社 ❑ 2013年10月 エンジニアとしてnanapiに入社 ❑ 2015年09月 リクルートライフスタイルに入社 ❑ 新規事業開発チームで開発責任者担当 ❑ 美容事業配属後、カスタマサポートや事業部を巻 き込んだ生産性向上プロジェクトの立ち上げ ❑ 現在リプレイスプロジェクト担当
3.
ホットペッパービューティーとは 国内最大級のヘアサロン リラク&ビューティーサロン検索予約サイト
4.
今日話すこと・話(さ|せ)ないこと ❑ 話すこと ❑ 大規模な事業・組織で仕事する上での観点 ❑
改善をなぜやるか/どうやるか/なにをやるか ❑ 話(さ|せ)ないこと ❑ 具体的な技術のこと ❑ 改善にどういう効果があったか
5.
早速ですが
6.
美容事業領域 フロントエンド イケてないです
7.
グローバル汚染 common.cssと global.cssの共存 minifyされていないコード 異なるバージョンの jQueryが共存 /DEVから始まる 謎のパス 内部仕様が 記載されたコメント 最適化されていない 大量の画像ボタン 中途半端な sprite image 納品されたHTML/CSSを エンジニアがマージするフロー HTML4 懐かしのShift-JIS DOMとJSの密結合 HTML/CSSの 密結合
8.
グローバル汚染 common.cssと global.cssの共存 minifyされていないコード 異なるバージョンの jQueryが共存 /DEVから始まる 謎のパス 内部仕様が 記載されたコメント 最適化されていない 大量の画像ボタン 中途半端な sprite image 納品されたHTML/CSSを エンジニアがマージするフロー HTML4 懐かしのShift-JIS DOMとJSが密結合 HTML/CSSも 密結合 10年もの負債
9.
しかし事業は成長し続けている 株式会社リクルートホールディングス 2018年03月期 決算資料より引用 ❑
事業成長が著しいため、機能開発要望がどんどんでる ❑ なんとか早くリリースしたい企画者 ❑ それを叶えようとしつづけた開発者 ❑ みんなが事業成長のために開発をした結果、、
10.
Quality Cost Delivery ❑
Delivery優先で負債が残るような形での開発 ❑ 負債を返済する間もなく、次の機能開発へ ❑ このままだと負債により開発速度が鈍化してしまう Delivery > Quality
11.
❑ アプリ・Webアプリケーションリプレイスや 開発業務プロセスを改善する基盤チームなど 様々なプロジェクトが進行中 … 続く成長を見越し、負債の解消が必要
12.
フロントエンドも負債が表面化 ❑ Extensionの影響で予期せぬ挙動 ❑ とある案件でHTMLタグ数がボトルネック となりブラウザのレンダリング時間が増加。 リフロー・リペイントが重すぎて操作が難 しくなり、QA前に急遽リファクタリングが 必要となったり…
13.
フロントエンドも負債が表面化 IE Chrome Safari
Firefox 改善前 4,300ms 1,400ms 2,600ms 2,400ms 改善後 1,200ms 630ms 1,200ms 1,000ms ❑ Extensionの影響で予期せぬ挙動 (RequireJS起因) ❑ HTMLタグ数がボトルネックとなりブラウザの レンダリング時間増加、リフロー・リペイント が重すぎて操作が不可能な状況 => 急遽リファクタリングが必要となった 改善前 改善後 Google Calendar HTMLタグ数 9,432個 2,343個 1,135個 フロントエンドも 改善せねば…
14.
フロントエンドの改善 ❑ なぜやるのか
15.
フロントエンドの改善 ❑ なぜやるのか ❑ 更なる事業成長を実現するため
16.
フロントエンドの改善 ❑ なぜやるのか ❑ 更なる事業成長を実現するため ❑
どうやるのか
17.
フロントエンドの改善 ❑ なぜやるのか ❑ 更なる事業成長を実現するため ❑
どうやるのか ❑ コーディングルール/ガイドラインを整備して コード品質を安定化 ❑ 新しい技術の恩恵を受けられる ❑ 保守・運用・拡張しやすいコード
18.
フロントエンドの現状 ❑ コーディングルール/ガイドラインを整備して コード品質を安定化 ❑ 特にルールのない無秩序なコード ❑
静的解析ツールやフォーマッタを使っていない ❑ 新しい技術の恩恵を受けられる ❑ ES5、生CSS、jspテンプレートの運用 ❑ トランスパイル以前にminifyすらされていない ❑ 保守・運用・拡張しやすいコード ❑ CSS内に!importantが1,590個存在している リプレイスを進めているアプリケーションではあてはまらないものもあります
19.
改善するためになにをやるのか
20.
改善するためになにをやるのか ❑ minifyと静的コンテンツリリースのJob化 ❑ JS/CSSのminify対応 ❑
静的コンテンツリリースをJob化する ❑ DOM構造リニューアルの設計 ❑ コンポーネント設計・実装 ❑ ルール整備・静的解析・フォーマッタ導入 ❑ HTML/CSS/JS取り込みフローの改善 ❑ 本番装着のための運用設計
21.
改善するためになにをやるのか ❑ minifyと静的コンテンツリリースのJob化 ❑ JS/CSSのminify対応 ❑
静的コンテンツリリースをJob化する ❑ DOM構造リニューアルの設計 ❑ コンポーネント設計・実装 ❑ ルール整備・静的解析・フォーマッタ導入 ❑ HTML/CSS/JS取り込みフローの改善 ❑ 本番装着のための運用設計 ビルドフローを整備し 後々手を加えやすく 現状、静的解析や 品質管理が難しい ので整備する
22.
ただハレーションが起きるので地道に ❑ minifyと静的コンテンツリリースのJob化 ❑ JS/CSSのminify対応 ❑
静的コンテンツリリースをJob化する ❑ DOM構造リニューアルの設計 ❑ コンポーネント設計・実装 ❑ ルール整備・静的解析・フォーマッタ導入 ❑ HTML/CSS/JS取り込みフローの改善 ❑ 本番装着のための運用設計 コンポーネント化したとして、 プロダクトの装着はどうする? コンポーネントが更新された時の 影響・反映フローは? 既存フローの変更影響は? minifyすることでNewRelic BrowserでのJS Error検知が できなくなるが?
23.
技術的難度より仕事難度が高い 事業規模小 サービス レベル低い 事業規模大 サービス レベル高い ホットペッパー ビューティー ❑ 数百億の売上をあげて いるため要求されるサー ビスレベルが高い ❑ 数百人規模の開発組織 なので運用を変えるハー ドルが高い 数百億の売上 開発者だけで百数十人
24.
技術的難度より仕事難度が高い 事業規模小 サービス レベル低い 事業規模大 サービス レベル高い ホットペッパー ビューティー 数百億の売上 開発者だけで百数十人 ❑ 数百億の売上をあげて いるため要求されるサー ビスレベルが高い ❑ 数百人規模の開発組織 なので運用を変えるハー ドルが高い _人人人人人人人人人人人_ > 大規模ゆえの難しさ < ‾Y^Y^Y^Y^Y^Y^Y^Y^Y^Y‾
25.
minifyと静的コンテンツリリースのJob化
26.
minifyと静的コンテンツリリースのJob化 開発T GhE Webサーバ 👉👉👉👉
👉👉 3.rsync プライベートクラウド As-Is 2.git pull1.git push 作業サーバ 運用Tが作業用サーバに ログインして手作業でリリース
27.
minifyと静的コンテンツリリースのJob化 開発T GhE Webサーバ 👉👉👉👉
👉👉 3.rsync プライベートクラウド 2.git pull1.git push As-Is 運用Tが作業用サーバに ログインして手作業でリリース 作業サーバ RHEL5(現状) Java6
28.
開発T GhE 作業サーバ
Webサーバ 👉👉👉👉 👉👉 3.rsync プライベートクラウド 開発T GhE Jenkinsサーバ Webサーバ 👉👉👉👉 👉👉 プライベートクラウド 2.git pull1.git push 1.git push 2.git pull 3.minify ( Java6で ) 5.rsync minifyと静的コンテンツリリースのJob化 As-Is To-Be 開発者 Jobポチー 運用Tが作業用サーバに ログインして手作業でリリース RHEL5(現状) Java6
29.
開発T GhE Webサーバ 👉👉👉👉
👉👉 3.rsync2.git pull1.git push プライベートクラウド 開発T GhE Webサーバ 👉👉👉👉 👉👉 1.git push プライベートクラウド 2.git pull 4. source map 紐付け To-Be minifyされたコードで エラーを追うため 3.minify ( Java6で ) 5.rsync minifyと静的コンテンツリリースのJob化 As-Is 作業サーバ Jenkinsサーバ 開発者 Jobポチー 運用Tが作業用サーバに ログインして手作業でリリース RHEL5(現状) Java6
30.
開発T GhE サーバ
Webサーバ 運用Tが手作業でリリース 👉👉👉👉 👉👉 3.rsync2.git pull1.git push プライベートクラウド 開発T GhE サーバ Webサーバ 👉👉👉👉 👉👉 1.git push プライベートクラウド 2.git pull 4. source map 紐付け Before After RHEL5, Java6 といった縛り minifyされても エラーを追うため 3.minify ( Java6で ) 5.rsync minifyと静的コンテンツリリースのJob化NewRelic Browserに SourceMapを連携すると、こんな感じになります
31.
プライベートクラウド 開発T GhE Webサーバ 👉👉👉👉
👉👉 3.minify ( Java6で ) 5.rsync1.git push 2.git pull 4. source map 紐付け ❑ 既に存在しているJava6を利用したminify方法を選択 (google-closure-compiler) ❑ 既存と同じレベルのエラートラッキングを継続するた めにSourceMapを連携させる ❑ 風呂敷を広げすぎず、必要な範囲の変更をやりきる minifyされたコードで エラーを追うため minifyと静的コンテンツリリースのJob化 まとめ Jenkinsサーバ 開発者 Jobポチー
32.
DOM構造リニューアルの設計
33.
DOM構造リニューアルの設計 ❑ コンポーネントの設計と実装 ❑ ルール整備・静的解析・フォーマッタ導入 ❑
HTML/CSS/JS取り込みフローの改善 ❑ 本番装着のための運用設計
34.
DOM構造リニューアルの設計 ❑ コンポーネントの設計と実装 ❑ ルール整備・静的解析・フォーマッタ導入 ❑
HTML/CSS/JS取り込みフローの改善 ❑ 本番装着のための運用設計 - コンポーネント洗い出し - 仕様の整理と把握 - 粛々と実装 - コーダーからHTMLなどを受け 取って開発者がマージ - 組み込み時に考慮漏れがあり手戻りが ある場合もあるので、改善する - 人間がやらなくていい仕事を減らし てコード品質の下限を底上げ - レビューは本質に注力できるように
35.
DOM構造リニューアルの設計 ❑ コンポーネントの設計と実装 ❑ ルール整備・静的解析・フォーマッタ導入 ❑
HTML/CSS/JS取り込みフローの改善 ❑ 本番装着のための運用設計 - コンポーネント洗い出し - 仕様の整理と把握 - 粛々と実装 - コーダーからHTMLなどを受け 取って開発者がマージ - 組み込み時に考慮漏れがあり手戻りが ある場合もあるので、改善する - 人間がやらなくていい仕事を減らし てコード品質の下限を底上げ - レビューは本質に注力できるように
36.
本番装着のための運用設計 ホットペッパービューティー ヘアサロン ページ ヘアカタログ 予約導線 SEO向け ページ … ❑ アプリケーション大規模リプレイスの影響で機能ごとにモ ジュールが分割される予定 ❑
そのためデプロイなどのモジュール単位になってしまう
37.
本番装着のための運用設計 ホットペッパービューティー v2 v1 v1
v1 ヘアサロン ページ ヘアカタログ 予約導線 SEO向け ページ … ❑ アプリケーション大規模リプレイスの影響で機能ごとにモ ジュールが分割される予定 ❑ そのためデプロイなどのモジュール単位になってしまう ❑ ファイルについてはRailsやSpringはmanifestファイルで解決 できそうだが、DOMの反映はどうするか… リリースタイミン グによっては1つだけ v2ということも
38.
本番装着のための運用設計 ホットペッパービューティー v2 v1 v1
v1 ヘアサロン ページ ヘアカタログ 予約導線 SEO向け ページ … ❑ アプリケーション大規模リプレイスの影響で機能ごとにモ ジュールが分割される予定 ❑ そのためデプロイなどのモジュール単位になってしまう ❑ ファイルについてはRailsやSpringはmanifestファイルで解決 できそうだが、DOMの反映はどうするか… ❑ 具体的な方法は検討中 リリースタイミン グによっては1つだけ v2ということも
39.
Rails/Springを理解できる人材 HTML/CSS/JSの密結合 リプレイスしない場合の事業影響言語化 技術・組織課題が混ざって難しい フロントエンドの負債 HTML納品フローによるマージコスト !importantが1,590回 CSSアーキテクチャを理解できる人材 FWの教育コスト モジュールごとのバージョニング方法 ントエンドの守備範囲 静的解析ツールが入ってない Webpackの装着方法 他案件とのコンフリクトは? 事業価値にどれだけ貢献できるか 既存開発フローの影響範囲 スコープはどこまで 自走できる人材
40.
Rails/Springを理解できる人材 HTML/CSS/JSの密結合 !importantが1,590回 CSSアーキテクチャを理解できる人材 FWの教育コスト モジュールごとのバージョニング方法 フロントエンドの守備範囲 静的解析ツールが入ってない Webpackの装着方法 自走できる人材 他案件とのコンフリクトは? 既存開発フローの影響範囲 スコープはどこまで? 整理して1つずつ向き合っていく フロントエンドの負債 HTML納品フローによるマージコスト 事業価値にどれだけ貢献できるか リプレイスしない場合の事業影響言語化
41.
Rails/Springを理解できる人材 HTML/CSS/JSの密結合 事業価値にどれだけ貢献できるか !importantが1,590回 CSSアーキテクチャを理解できる人材 FWの教育コスト モジュールごとのバージョニング方法 フロントエンドの守備範囲 静的解析ツールが入ってない Webpackの装着方法 自走できる人材 他案件とのコンフリクトは? リプレイスしない場合の事業影響言語化 既存開発フローの影響範囲 スコープはどこまで? 更に課題が見つかるので向き合い続ける フルリプレイス一択 どのレベルがあればいい? パートナー会社に温度感 聞いてみる? 静的解析ツールCIで回したい Webpackの装着って どのレイヤーまで? 静的解析ツールCIで回したい Webpackの装着ってどこま で? 定義がないから 定義から 今期走る案件確認、大きい 案件あったらマージどうするか リプレイスTにも調整しよ フロントエンドの負債 HTML納品フローによるマージコスト HTML4…
42.
地味で長期的な取り組み しかし近道はないので 地に足をつけて向き合う .💪💪
43.
❑ 美容事業は成長しつづけている、そのため 事業成長を続けるために改善を行う ❑ 事業規模が大きいゆえに技術的な課題だけ ではなく組織的な課題とも向き合う必要が あり、仕事の難度が高い ❑
逆に自分の推進するプロジェクトが数百億 規模の事業に影響するのでやりがいがある . まとめ 😽😽
44.
ご清聴ありがとうございました
Download now