Movatterモバイル変換


[0]ホーム

URL:


Yoshie Kaneno, profile picture
Uploaded byYoshie Kaneno
PDF, PPTX334,083 views

食べログのフロントエンドエンジニアってめっちゃ大変やねん・・・

2017/11/30「【エンジニア交流会】食 Tech 〜 食系サービスにおけるテクノロジーの裏側 〜」での発表資料

Embed presentation

Download as PDF, PPTX
食べログのフロントエンドエンジニアってめっちゃ大変やねん...株式会社カカクコム食べログシステム本部 システム開発1部 FEチーム金野 淑恵
Copyright © Kakaku.com Inc. All Rights Reserved.今日話すことフロントエンドの開発体制作りにおける苦労
Copyright © Kakaku.com Inc. All Rights Reserved.今日ほとんど話さないこと技術的なノウハウ
お話の流れ自己紹介食べログの紹介食べログのフロントエンドエンジニアって?具体的にやっていることまとめ
Copyright © Kakaku.com Inc. All Rights Reserved.自己紹介金野 淑恵(かねの よしえ)@empitsu88ProfileCareer食べログシステム本部FEチームリーダー食べログのフロントエンド領域の設計・開発などを担当2009~2015年 某印刷会社入社Flasher/フロントエンジニアとして受託Web制作2015~2017年 株式会社カカクコム入社食べログのフロントエンドエンジニア
お話の流れ自己紹介食べログの紹介食べログのフロントエンドエンジニアって?具体的にやっていることまとめ
Copyright © Kakaku.com Inc. All Rights Reserved.はお店選びで失敗したくない人のためのグルメサイトです
Copyright © Kakaku.com Inc. All Rights Reserved.食べログってどんなサービス?ネットで飲食店を探すときに起こりがちな「想像とは違うお店だった」というような失敗をなくすためにユーザーの口コミと共に全国のレストラン情報を掲載
Copyright © Kakaku.com Inc. All Rights Reserved.基本データ1億450万人 約2,200万件 約86万件…という大規模なグルメサイト月間利用者数 口コミ数 掲載店舗※2017年12月現在のデータ
Copyright © Kakaku.com Inc. All Rights Reserved.カカクコム社のミッションユーザー本位サービスの原点は生活者が感じる不便や社会的課題を解決すること
Copyright © Kakaku.com Inc. All Rights Reserved.派生サイト
Copyright © Kakaku.com Inc. All Rights Reserved.Ruby on Rails unicorn MySQL使用技術プロジェクト・タスク管理(REDMINE)ソースコード・バージョン管理(GitHub)
Copyright © Kakaku.com Inc. All Rights Reserved.HTML5 CSS3jQuery + Backbone.JS ECMAScrip2015Sass使用技術 - フロントエンドGulp + webpack+SMACSS+BEM+FLOCSS compassCSS3
Copyright © Kakaku.com Inc. All Rights Reserved.アプリ構成20以上のRailsアプリが存在appliAappliBappliCappliDappliEappliFappliGappliHappliIappliJappliKappliLmain_servicehogefugafegahagabase_apifagamicro_service
Copyright © Kakaku.com Inc. All Rights Reserved.お察しの通り・・・とにかく規模が大きくソースコードもカオス
お話の流れ自己紹介食べログの紹介食べログのフロントエンドエンジニアって?具体的にやっていることまとめ
Copyright © Kakaku.com Inc. All Rights Reserved.従来の食べログの開発体制
Copyright © Kakaku.com Inc. All Rights Reserved.デザイナーUI設計者&デザイナー&マークアップエンジニア約20名体制
Copyright © Kakaku.com Inc. All Rights Reserved.エンジニアRubyエンジニア&インフラエンジニア&ネイティブアプリエンジニア約70名体制
Copyright © Kakaku.com Inc. All Rights Reserved.エンジニア デザイナー業務分担インフラ JSDB CSSRuby HTMLバックエンド (server-side)UI/VSフロントエンド (client-side)
Copyright © Kakaku.com Inc. All Rights Reserved.エンジニア+デザイナーで約100名の開発部隊HTML/CSS/JS を俯瞰したスキルを持った人が少ない1週間でデプロイされる Redmine のチケットの数は約80件
Copyright © Kakaku.com Inc. All Rights Reserved.結果・・・場当たり的な実装が繰り返され カオス に
Copyright © Kakaku.com Inc. All Rights Reserved.そこで・・・2016年フロントエンドエンジニア爆誕
Copyright © Kakaku.com Inc. All Rights Reserved.エンジニア デザイナー担当領域Server JSDB CSSRuby HTMLバックエンド (server-side)UI/VSフロントエンド (client-side)フロントエンドエンジニア
Copyright © Kakaku.com Inc. All Rights Reserved.フロントエンドエンジニアFEチーム今は約6名体制
Copyright © Kakaku.com Inc. All Rights Reserved.「フロントエンドはFEが全部つくれば安心だね!」
Copyright © Kakaku.com Inc. All Rights Reserved.「フロントエンドはFEが全部つくれば安心だね!」
Copyright © Kakaku.com Inc. All Rights Reserved.エンジニア デザイナー担当領域Server JSDB CSSRuby HTMLバックエンド (server-side)UI/VSフロントエンド (client-side)フロントエンドエンジニア開発の主体はエンジニア・デザイナーのまま
Copyright © Kakaku.com Inc. All Rights Reserved.あくまで食べログのFEは監督者・サポーターの立場
Copyright © Kakaku.com Inc. All Rights Reserved.なんで?完全分業にしないの?チーム・人員間で意識や目的の共有が難しくなりがちチーム間の利害の対立や局所最適化が発生しやすい特定のチームしか実装しない・できない状態だとそのチームが詰まったときに案件が進められなくなってしまう事業会社ではデメリットも多い・・・職能別組織の一般的な課題として・・・
Copyright © Kakaku.com Inc. All Rights Reserved.あくまで目的は事業の成功制作者一丸となることが必要FEの存在意義は食べログのフロントエンドに秩序をもたらし正しい方向に導いていくこと
Copyright © Kakaku.com Inc. All Rights Reserved.正直、ただ開発するよりめっちゃ大変
お話の流れ自己紹介食べログの紹介食べログのフロントエンドエンジニアって?具体的にやっていることまとめ
Copyright © Kakaku.com Inc. All Rights Reserved.やってること開発案件での方針策定・設計・サポートフロントエンドの環境整備
Copyright © Kakaku.com Inc. All Rights Reserved.1.開発案件での方針策定・設計・サポート
Copyright © Kakaku.com Inc. All Rights Reserved.まず「キレイなコード」を考える「キレイさ」とはPREDICTABLE 予測しやすいMAINTAINABLE 保守しやすいREUSABLE 再利用しやすいSCALABLE 拡張しやすいGoogleエンジニア フィリップ・ウォルトン氏のブログより
Copyright © Kakaku.com Inc. All Rights Reserved.具体的に?ready イベントの callback は1つの Entry point につき1つだけModule ファイルは Entry point から初期化する
Copyright © Kakaku.com Inc. All Rights Reserved.ready イベントの callback は 1entry point につき1つだけ<html><head><script src=“smartphone/sidemenu.js”></script><script src=“smartphone/top_mainvisual.js”></script>• smartphone/top.html• smartphone/sidemenu.js$(function(){// ハンバーガーメニュークリックでサイドメニューを表示する処理});$(function(){// メインビジュアルをカルーセル化する処理});• smartphone/top_mainvisual.js
Copyright © Kakaku.com Inc. All Rights Reserved.<html><head><script src=“smartphone/sidemenu.js”></script><script src=“smartphone/top_mainvisual.js”></script>• smartphone/top.html• smartphone/sidemenu.js$(function(){// ハンバーガーメニュークリックでサイドメニューを表示する処理});$(function(){// メインビジュアルをカルーセル化する処理});• smartphone/top_mainvisual.jsready イベントの callback は 1entry point につき1つだけ
Copyright © Kakaku.com Inc. All Rights Reserved.<html><head><script src=“smartphone/top.js”></script>• smartphone/top.html• smartphone/top.js$(()=>{// ハンバーガーメニュークリックでサイドメニューを表示する処理// メインビジュアルをカルーセル化する処理});ready イベントの callback は 1entry point につき1つだけ
Copyright © Kakaku.com Inc. All Rights Reserved.Moduleファイルは Entry point から初期化する<html><head><script src=“smartphone/top.js”></script>• smartphone/top.html• smartphone/top.jsimport Sidemenu from “modules/smartphone/sidemenu.js”;import TopMainvisual from “modules/smartphone/top-mainvisual.js”;$(()=> {Sidemenu.ready();TopMainvisual.ready();});
Copyright © Kakaku.com Inc. All Rights Reserved.const Sidemenu = {ready() {// ready 時に必要な処理}}export default Sidemenu;• modules/smartphone/sidemenu.jsmoduleファイル側では、呼び出した途端に初期化が始まらないようにModuleファイルは Entry point から初期化する
Copyright © Kakaku.com Inc. All Rights Reserved.設計のときに考えるべきこと食べログの実態に即しているか費用対効果は適切か優先度は適切か= 回せるか= コスト= 納期
Copyright © Kakaku.com Inc. All Rights Reserved.例)見た目に関わる制御はなるべくCSSファイルに$(window).on('scroll', (e) => {if ($(window).scrollTop() >= 500 ){// js で行うのは is-scroll の付け替えのみ$('.js-header').addClass('is-scroll');} else {$('.js-header').removeClass('is-scroll');}});• JS• CSS.header.is-scroll {position: fixed;top: 0;width: 100%;}
Copyright © Kakaku.com Inc. All Rights Reserved.納期を最優先に考えた上で「キレイさ」「回せるか」「コスト」のバランスを考えて設計する
Copyright © Kakaku.com Inc. All Rights Reserved.他には・・・設計書の粒度に気をつけたり・・・「なぜこの方針?」「なぜこうする必要があるの?」を口頭で説明したり・・・依頼する実装者によって説明の仕方を変えたり・・・
Copyright © Kakaku.com Inc. All Rights Reserved.手を動かすのはあくまで他部署のエンジニア綿密なコミュニケーションとサポートを心がける
Copyright © Kakaku.com Inc. All Rights Reserved.正直、めっちゃめんどうくさい
Copyright © Kakaku.com Inc. All Rights Reserved.悩みは多い・・・どうしたら他部署であるエンジニア・デザイナーと密な連携が取れるだろうか?どうしたら気軽にJSやフロントエンドについて質問しにきてくれるだろうか?エンジニアが片手間で手がけているJSの経験値を効率よく積んでもらえるには・・・?
Copyright © Kakaku.com Inc. All Rights Reserved.エンジニアBチームエンジニアAチームFEチームエンジニアCチームこうした部署ごとに窓口となるメンバーを決めたエンジニア内にも兼任フロントエンジニアを作ったAチーム担当Bチーム担当Cチーム担当兼任FE兼任FE兼任FE
Copyright © Kakaku.com Inc. All Rights Reserved.こうなった!各部署の案件や仕様について誰が一番把握しているか明確に!エンジニア・デザイナーも窓口が明確なら気軽に聞きやすく!リーダーがぜんぶ問い合わせを請け負ってるとボトルネックになりやすかったがそれも解消!
Copyright © Kakaku.com Inc. All Rights Reserved.2.フロントエンドの環境整備
Copyright © Kakaku.com Inc. All Rights Reserved.フロントエンドコーディング規約
Copyright © Kakaku.com Inc. All Rights Reserved.食べログスタイルガイド
Copyright © Kakaku.com Inc. All Rights Reserved.コンパイル機構の整備+Rails 5.1 + Webpacker+
Copyright © Kakaku.com Inc. All Rights Reserved.ソースコードのリファクタリングECMAScript5 → ECMAScript6 化CSS module の FLOCSS化Pure module化 – entryPoint から全部呼び出す
Copyright © Kakaku.com Inc. All Rights Reserved.正直、めっちゃ地道
お話の流れ自己紹介食べログの紹介食べログのフロントエンドエンジニアって?具体的にやっていることまとめ
Copyright © Kakaku.com Inc. All Rights Reserved.まとめ食べログのFEは開発というよりサポートに注力しているがめっちゃ大変「納期」「キレイさ」「回せるか」「コスト」のバランスを考えて設計するのは めっちゃめんどうくさいリファクタリングとか めっちゃ地道
Copyright © Kakaku.com Inc. All Rights Reserved.でも・・・地道ながんばりの結果すこしずつ成果はでてきている
Copyright © Kakaku.com Inc. All Rights Reserved.だから・・・食べログを盛り上げるために\ がんばる/
Copyright © Kakaku.com Inc. All Rights Reserved.大変なことにも立ち向かえるフロントエンドエンジニア\ 絶賛募集中! /
ご清聴ありがとうございました

Recommended

PDF
いつやるの?Git入門 v1.1.0
PDF
AWS Black Belt Online Seminar 2016 Amazon EC2 Container Service
PPTX
Qiita Night 足場固めからやるマイクロサービス
PDF
AWSではじめるMLOps
PDF
[AWS EXpert Online for JAWS-UG 18] 見せてやるよ、Step Functions の本気ってやつをな
PDF
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PPTX
DockerコンテナでGitを使う
PDF
こわくない Git
PDF
Redmineの画面をあなた好みにカスタマイズ - View customize pluginの紹介 - Redmine Japan 2020
PDF
View customize plugin for Redmineの紹介 (2019年版)
PPTX
MLOps入門
ODP
Guide To AGPL
PDF
Head First Inception Deck
PDF
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24
PDF
VPCのアウトバウンド通信を制御するためにおさえておきたい設計ポイント
PDF
AWSでDockerを扱うためのベストプラクティス
PDF
アプリ開発者、DB 管理者視点での Cloud Spanner 活用方法 | 第 10 回 Google Cloud INSIDE Games & App...
PDF
情報共有は、なぜGoogle Docsじゃなく、 Confluenceなのか。
PDF
45分間で「ユーザー中心のものづくり」ができるまで詰め込む
PPTX
世界一わかりやすいClean Architecture
PDF
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
PDF
Google Cloud で実践する SRE
PDF
フロー効率性とリソース効率性、再入門 #devlove #devkan
PDF
AWSのログ管理ベストプラクティス
PDF
Amazon Pinpoint を中心としたカスタマーエンゲージメントの全体像 / Customer Engagement On Amazon Pinpoint
PDF
マルチテナント化で知っておきたいデータベースのこと
PDF
開発速度が速い #とは(LayerX社内資料)
PDF
フロー効率性とリソース効率性について #xpjug
PPTX
食べログのフロントエンドリプレース戦略
PDF
20130412 titanium meetupvol7

More Related Content

PDF
いつやるの?Git入門 v1.1.0
PDF
AWS Black Belt Online Seminar 2016 Amazon EC2 Container Service
PPTX
Qiita Night 足場固めからやるマイクロサービス
PDF
AWSではじめるMLOps
PDF
[AWS EXpert Online for JAWS-UG 18] 見せてやるよ、Step Functions の本気ってやつをな
PDF
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PPTX
DockerコンテナでGitを使う
PDF
こわくない Git
いつやるの?Git入門 v1.1.0
AWS Black Belt Online Seminar 2016 Amazon EC2 Container Service
Qiita Night 足場固めからやるマイクロサービス
AWSではじめるMLOps
[AWS EXpert Online for JAWS-UG 18] 見せてやるよ、Step Functions の本気ってやつをな
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
DockerコンテナでGitを使う
こわくない Git

What's hot

PDF
Redmineの画面をあなた好みにカスタマイズ - View customize pluginの紹介 - Redmine Japan 2020
PDF
View customize plugin for Redmineの紹介 (2019年版)
PPTX
MLOps入門
ODP
Guide To AGPL
PDF
Head First Inception Deck
PDF
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24
PDF
VPCのアウトバウンド通信を制御するためにおさえておきたい設計ポイント
PDF
AWSでDockerを扱うためのベストプラクティス
PDF
アプリ開発者、DB 管理者視点での Cloud Spanner 活用方法 | 第 10 回 Google Cloud INSIDE Games & App...
PDF
情報共有は、なぜGoogle Docsじゃなく、 Confluenceなのか。
PDF
45分間で「ユーザー中心のものづくり」ができるまで詰め込む
PPTX
世界一わかりやすいClean Architecture
PDF
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
PDF
Google Cloud で実践する SRE
PDF
フロー効率性とリソース効率性、再入門 #devlove #devkan
PDF
AWSのログ管理ベストプラクティス
PDF
Amazon Pinpoint を中心としたカスタマーエンゲージメントの全体像 / Customer Engagement On Amazon Pinpoint
PDF
マルチテナント化で知っておきたいデータベースのこと
PDF
開発速度が速い #とは(LayerX社内資料)
PDF
フロー効率性とリソース効率性について #xpjug
Redmineの画面をあなた好みにカスタマイズ - View customize pluginの紹介 - Redmine Japan 2020
View customize plugin for Redmineの紹介 (2019年版)
MLOps入門
Guide To AGPL
Head First Inception Deck
Mercari JPのモノリスサービスをKubernetesに移行した話 PHP Conference 2022 9/24
VPCのアウトバウンド通信を制御するためにおさえておきたい設計ポイント
AWSでDockerを扱うためのベストプラクティス
アプリ開発者、DB 管理者視点での Cloud Spanner 活用方法 | 第 10 回 Google Cloud INSIDE Games & App...
情報共有は、なぜGoogle Docsじゃなく、 Confluenceなのか。
45分間で「ユーザー中心のものづくり」ができるまで詰め込む
世界一わかりやすいClean Architecture
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
Google Cloud で実践する SRE
フロー効率性とリソース効率性、再入門 #devlove #devkan
AWSのログ管理ベストプラクティス
Amazon Pinpoint を中心としたカスタマーエンゲージメントの全体像 / Customer Engagement On Amazon Pinpoint
マルチテナント化で知っておきたいデータベースのこと
開発速度が速い #とは(LayerX社内資料)
フロー効率性とリソース効率性について #xpjug

Similar to 食べログのフロントエンドエンジニアってめっちゃ大変やねん・・・

PPTX
食べログのフロントエンドリプレース戦略
PDF
20130412 titanium meetupvol7
PDF
自作node.jsフレームワークとnginxを使ってラジオサイトを作ってみた
PDF
DEV-010_エンプラ系業務 Web アプリ開発に効く! 実践的 SPA 型モダン Web アプリ開発の選択手法
PPTX
UnicastWS vol.2
PDF
小規模案件で作られた秘伝のタレ
PDF
Facebook対応と大規模サイト移転のトライ&エラー
PDF
node.jsによる お手軽画像uploader実装
PDF
できる!スマホアプリ:Webからはじまるアプリ for CMU16
PDF
Spine入門
PDF
2013 Ignite UI 最新情報 in 岡山
PDF
Knockout_エンジニア勉強会20131120
PDF
HTML5でオフラインWebアプリケーションを作ろう
PDF
Reco choku tech night #09 -reinvent2018報告会-
食べログのフロントエンドリプレース戦略
20130412 titanium meetupvol7
自作node.jsフレームワークとnginxを使ってラジオサイトを作ってみた
DEV-010_エンプラ系業務 Web アプリ開発に効く! 実践的 SPA 型モダン Web アプリ開発の選択手法
UnicastWS vol.2
小規模案件で作られた秘伝のタレ
Facebook対応と大規模サイト移転のトライ&エラー
node.jsによる お手軽画像uploader実装
できる!スマホアプリ:Webからはじまるアプリ for CMU16
Spine入門
2013 Ignite UI 最新情報 in 岡山
Knockout_エンジニア勉強会20131120
HTML5でオフラインWebアプリケーションを作ろう
Reco choku tech night #09 -reinvent2018報告会-

食べログのフロントエンドエンジニアってめっちゃ大変やねん・・・

  • 1.
  • 2.
    Copyright © Kakaku.comInc. All Rights Reserved.今日話すことフロントエンドの開発体制作りにおける苦労
  • 3.
    Copyright © Kakaku.comInc. All Rights Reserved.今日ほとんど話さないこと技術的なノウハウ
  • 4.
  • 5.
    Copyright © Kakaku.comInc. All Rights Reserved.自己紹介金野 淑恵(かねの よしえ)@empitsu88ProfileCareer食べログシステム本部FEチームリーダー食べログのフロントエンド領域の設計・開発などを担当2009~2015年 某印刷会社入社Flasher/フロントエンジニアとして受託Web制作2015~2017年 株式会社カカクコム入社食べログのフロントエンドエンジニア
  • 6.
  • 7.
    Copyright © Kakaku.comInc. All Rights Reserved.はお店選びで失敗したくない人のためのグルメサイトです
  • 8.
    Copyright © Kakaku.comInc. All Rights Reserved.食べログってどんなサービス?ネットで飲食店を探すときに起こりがちな「想像とは違うお店だった」というような失敗をなくすためにユーザーの口コミと共に全国のレストラン情報を掲載
  • 9.
    Copyright © Kakaku.comInc. All Rights Reserved.基本データ1億450万人 約2,200万件 約86万件…という大規模なグルメサイト月間利用者数 口コミ数 掲載店舗※2017年12月現在のデータ
  • 10.
    Copyright © Kakaku.comInc. All Rights Reserved.カカクコム社のミッションユーザー本位サービスの原点は生活者が感じる不便や社会的課題を解決すること
  • 11.
    Copyright © Kakaku.comInc. All Rights Reserved.派生サイト
  • 12.
    Copyright © Kakaku.comInc. All Rights Reserved.Ruby on Rails unicorn MySQL使用技術プロジェクト・タスク管理(REDMINE)ソースコード・バージョン管理(GitHub)
  • 13.
    Copyright © Kakaku.comInc. All Rights Reserved.HTML5 CSS3jQuery + Backbone.JS ECMAScrip2015Sass使用技術 - フロントエンドGulp + webpack+SMACSS+BEM+FLOCSS compassCSS3
  • 14.
    Copyright © Kakaku.comInc. All Rights Reserved.アプリ構成20以上のRailsアプリが存在appliAappliBappliCappliDappliEappliFappliGappliHappliIappliJappliKappliLmain_servicehogefugafegahagabase_apifagamicro_service
  • 15.
    Copyright © Kakaku.comInc. All Rights Reserved.お察しの通り・・・とにかく規模が大きくソースコードもカオス
  • 16.
  • 17.
    Copyright © Kakaku.comInc. All Rights Reserved.従来の食べログの開発体制
  • 18.
    Copyright © Kakaku.comInc. All Rights Reserved.デザイナーUI設計者&デザイナー&マークアップエンジニア約20名体制
  • 19.
    Copyright © Kakaku.comInc. All Rights Reserved.エンジニアRubyエンジニア&インフラエンジニア&ネイティブアプリエンジニア約70名体制
  • 20.
    Copyright © Kakaku.comInc. All Rights Reserved.エンジニア デザイナー業務分担インフラ JSDB CSSRuby HTMLバックエンド (server-side)UI/VSフロントエンド (client-side)
  • 21.
    Copyright © Kakaku.comInc. All Rights Reserved.エンジニア+デザイナーで約100名の開発部隊HTML/CSS/JS を俯瞰したスキルを持った人が少ない1週間でデプロイされる Redmine のチケットの数は約80件
  • 22.
    Copyright © Kakaku.comInc. All Rights Reserved.結果・・・場当たり的な実装が繰り返され カオス に
  • 23.
    Copyright © Kakaku.comInc. All Rights Reserved.そこで・・・2016年フロントエンドエンジニア爆誕
  • 24.
    Copyright © Kakaku.comInc. All Rights Reserved.エンジニア デザイナー担当領域Server JSDB CSSRuby HTMLバックエンド (server-side)UI/VSフロントエンド (client-side)フロントエンドエンジニア
  • 25.
    Copyright © Kakaku.comInc. All Rights Reserved.フロントエンドエンジニアFEチーム今は約6名体制
  • 26.
    Copyright © Kakaku.comInc. All Rights Reserved.「フロントエンドはFEが全部つくれば安心だね!」
  • 27.
    Copyright © Kakaku.comInc. All Rights Reserved.「フロントエンドはFEが全部つくれば安心だね!」
  • 28.
    Copyright © Kakaku.comInc. All Rights Reserved.エンジニア デザイナー担当領域Server JSDB CSSRuby HTMLバックエンド (server-side)UI/VSフロントエンド (client-side)フロントエンドエンジニア開発の主体はエンジニア・デザイナーのまま
  • 29.
    Copyright © Kakaku.comInc. All Rights Reserved.あくまで食べログのFEは監督者・サポーターの立場
  • 30.
    Copyright © Kakaku.comInc. All Rights Reserved.なんで?完全分業にしないの?チーム・人員間で意識や目的の共有が難しくなりがちチーム間の利害の対立や局所最適化が発生しやすい特定のチームしか実装しない・できない状態だとそのチームが詰まったときに案件が進められなくなってしまう事業会社ではデメリットも多い・・・職能別組織の一般的な課題として・・・
  • 31.
    Copyright © Kakaku.comInc. All Rights Reserved.あくまで目的は事業の成功制作者一丸となることが必要FEの存在意義は食べログのフロントエンドに秩序をもたらし正しい方向に導いていくこと
  • 32.
    Copyright © Kakaku.comInc. All Rights Reserved.正直、ただ開発するよりめっちゃ大変
  • 33.
  • 34.
    Copyright © Kakaku.comInc. All Rights Reserved.やってること開発案件での方針策定・設計・サポートフロントエンドの環境整備
  • 35.
    Copyright © Kakaku.comInc. All Rights Reserved.1.開発案件での方針策定・設計・サポート
  • 36.
    Copyright © Kakaku.comInc. All Rights Reserved.まず「キレイなコード」を考える「キレイさ」とはPREDICTABLE 予測しやすいMAINTAINABLE 保守しやすいREUSABLE 再利用しやすいSCALABLE 拡張しやすいGoogleエンジニア フィリップ・ウォルトン氏のブログより
  • 37.
    Copyright © Kakaku.comInc. All Rights Reserved.具体的に?ready イベントの callback は1つの Entry point につき1つだけModule ファイルは Entry point から初期化する
  • 38.
    Copyright © Kakaku.comInc. All Rights Reserved.ready イベントの callback は 1entry point につき1つだけ<html><head><script src=“smartphone/sidemenu.js”></script><script src=“smartphone/top_mainvisual.js”></script>• smartphone/top.html• smartphone/sidemenu.js$(function(){// ハンバーガーメニュークリックでサイドメニューを表示する処理});$(function(){// メインビジュアルをカルーセル化する処理});• smartphone/top_mainvisual.js
  • 39.
    Copyright © Kakaku.comInc. All Rights Reserved.<html><head><script src=“smartphone/sidemenu.js”></script><script src=“smartphone/top_mainvisual.js”></script>• smartphone/top.html• smartphone/sidemenu.js$(function(){// ハンバーガーメニュークリックでサイドメニューを表示する処理});$(function(){// メインビジュアルをカルーセル化する処理});• smartphone/top_mainvisual.jsready イベントの callback は 1entry point につき1つだけ
  • 40.
    Copyright © Kakaku.comInc. All Rights Reserved.<html><head><script src=“smartphone/top.js”></script>• smartphone/top.html• smartphone/top.js$(()=>{// ハンバーガーメニュークリックでサイドメニューを表示する処理// メインビジュアルをカルーセル化する処理});ready イベントの callback は 1entry point につき1つだけ
  • 41.
    Copyright © Kakaku.comInc. All Rights Reserved.Moduleファイルは Entry point から初期化する<html><head><script src=“smartphone/top.js”></script>• smartphone/top.html• smartphone/top.jsimport Sidemenu from “modules/smartphone/sidemenu.js”;import TopMainvisual from “modules/smartphone/top-mainvisual.js”;$(()=> {Sidemenu.ready();TopMainvisual.ready();});
  • 42.
    Copyright © Kakaku.comInc. All Rights Reserved.const Sidemenu = {ready() {// ready 時に必要な処理}}export default Sidemenu;• modules/smartphone/sidemenu.jsmoduleファイル側では、呼び出した途端に初期化が始まらないようにModuleファイルは Entry point から初期化する
  • 43.
    Copyright © Kakaku.comInc. All Rights Reserved.設計のときに考えるべきこと食べログの実態に即しているか費用対効果は適切か優先度は適切か= 回せるか= コスト= 納期
  • 44.
    Copyright © Kakaku.comInc. All Rights Reserved.例)見た目に関わる制御はなるべくCSSファイルに$(window).on('scroll', (e) => {if ($(window).scrollTop() >= 500 ){// js で行うのは is-scroll の付け替えのみ$('.js-header').addClass('is-scroll');} else {$('.js-header').removeClass('is-scroll');}});• JS• CSS.header.is-scroll {position: fixed;top: 0;width: 100%;}
  • 45.
    Copyright © Kakaku.comInc. All Rights Reserved.納期を最優先に考えた上で「キレイさ」「回せるか」「コスト」のバランスを考えて設計する
  • 46.
    Copyright © Kakaku.comInc. All Rights Reserved.他には・・・設計書の粒度に気をつけたり・・・「なぜこの方針?」「なぜこうする必要があるの?」を口頭で説明したり・・・依頼する実装者によって説明の仕方を変えたり・・・
  • 47.
    Copyright © Kakaku.comInc. All Rights Reserved.手を動かすのはあくまで他部署のエンジニア綿密なコミュニケーションとサポートを心がける
  • 48.
    Copyright © Kakaku.comInc. All Rights Reserved.正直、めっちゃめんどうくさい
  • 49.
    Copyright © Kakaku.comInc. All Rights Reserved.悩みは多い・・・どうしたら他部署であるエンジニア・デザイナーと密な連携が取れるだろうか?どうしたら気軽にJSやフロントエンドについて質問しにきてくれるだろうか?エンジニアが片手間で手がけているJSの経験値を効率よく積んでもらえるには・・・?
  • 50.
    Copyright © Kakaku.comInc. All Rights Reserved.エンジニアBチームエンジニアAチームFEチームエンジニアCチームこうした部署ごとに窓口となるメンバーを決めたエンジニア内にも兼任フロントエンジニアを作ったAチーム担当Bチーム担当Cチーム担当兼任FE兼任FE兼任FE
  • 51.
    Copyright © Kakaku.comInc. All Rights Reserved.こうなった!各部署の案件や仕様について誰が一番把握しているか明確に!エンジニア・デザイナーも窓口が明確なら気軽に聞きやすく!リーダーがぜんぶ問い合わせを請け負ってるとボトルネックになりやすかったがそれも解消!
  • 52.
    Copyright © Kakaku.comInc. All Rights Reserved.2.フロントエンドの環境整備
  • 53.
    Copyright © Kakaku.comInc. All Rights Reserved.フロントエンドコーディング規約
  • 54.
    Copyright © Kakaku.comInc. All Rights Reserved.食べログスタイルガイド
  • 55.
    Copyright © Kakaku.comInc. All Rights Reserved.コンパイル機構の整備+Rails 5.1 + Webpacker+
  • 56.
    Copyright © Kakaku.comInc. All Rights Reserved.ソースコードのリファクタリングECMAScript5 → ECMAScript6 化CSS module の FLOCSS化Pure module化 – entryPoint から全部呼び出す
  • 57.
    Copyright © Kakaku.comInc. All Rights Reserved.正直、めっちゃ地道
  • 58.
  • 59.
    Copyright © Kakaku.comInc. All Rights Reserved.まとめ食べログのFEは開発というよりサポートに注力しているがめっちゃ大変「納期」「キレイさ」「回せるか」「コスト」のバランスを考えて設計するのは めっちゃめんどうくさいリファクタリングとか めっちゃ地道
  • 60.
    Copyright © Kakaku.comInc. All Rights Reserved.でも・・・地道ながんばりの結果すこしずつ成果はでてきている
  • 61.
    Copyright © Kakaku.comInc. All Rights Reserved.だから・・・食べログを盛り上げるために\ がんばる/
  • 62.
    Copyright © Kakaku.comInc. All Rights Reserved.大変なことにも立ち向かえるフロントエンドエンジニア\ 絶賛募集中! /
  • 63.

[8]ページ先頭

©2009-2025 Movatter.jp