57
DMMで新規サービス作ったら フロントエンドエンジニアの重要性が 浮き彫りになった話 石橋啓太 2015.11.26 DMM.Study Night

DMMで新規サービス作ったらフロントエンドエンジニアの重要性が浮き彫りになった話 - DMM Study night

  • Upload
    -

  • View
    19.350

  • Download
    1

Embed Size (px)

Citation preview

Page 1: DMMで新規サービス作ったらフロントエンドエンジニアの重要性が浮き彫りになった話 - DMM Study night

DMMで新規サービス作ったら フロントエンドエンジニアの重要性が

浮き彫りになった話石橋啓太

2015.11.26DMM.Study Night

Page 2: DMMで新規サービス作ったらフロントエンドエンジニアの重要性が浮き彫りになった話 - DMM Study night

自己紹介

DMM.com Labo

2014 / 05 ~

UIデザイナー / フロントエンドエンジニア

石橋 啓太

Page 3: DMMで新規サービス作ったらフロントエンドエンジニアの重要性が浮き彫りになった話 - DMM Study night

過去のDMMのサービス構築とは

Page 4: DMMで新規サービス作ったらフロントエンドエンジニアの重要性が浮き彫りになった話 - DMM Study night

過去のDMMのサービス構築とは

旧来のWebサービス

||

サービス全体に対して高度なJavaScriptが必要無い

Page 5: DMMで新規サービス作ったらフロントエンドエンジニアの重要性が浮き彫りになった話 - DMM Study night

過去のDMMのサービス構築とは

旧来のWebサービス

||

サービス全体に対して高度なJavaScriptが必要無い

フロントエンドエンジニア という職種が存在しなかった

Page 6: DMMで新規サービス作ったらフロントエンドエンジニアの重要性が浮き彫りになった話 - DMM Study night

デザイナーがなんとかしないと…

Page 7: DMMで新規サービス作ったらフロントエンドエンジニアの重要性が浮き彫りになった話 - DMM Study night

問題だらけ!!

知識差による品質低下 リファクタリングしない・できない

放置されるバグ JS実装どっちがやる問題

メンテナンス性の低下

Page 8: DMMで新規サービス作ったらフロントエンドエンジニアの重要性が浮き彫りになった話 - DMM Study night

「とりあえず実装」が 溢れかえっていた!!

そもそも”設計”をする文化が無い…

Page 9: DMMで新規サービス作ったらフロントエンドエンジニアの重要性が浮き彫りになった話 - DMM Study night

(((((((( ;゚Д゚))))))))ガクガクブルブルガタガタブルブル

Page 10: DMMで新規サービス作ったらフロントエンドエンジニアの重要性が浮き彫りになった話 - DMM Study night

新規サービス立ち上げ…。 1から構築するチャンス!

要件定義と体制づくり

Page 11: DMMで新規サービス作ったらフロントエンドエンジニアの重要性が浮き彫りになった話 - DMM Study night

要件定義

Page 12: DMMで新規サービス作ったらフロントエンドエンジニアの重要性が浮き彫りになった話 - DMM Study night

最終的なサービス規模は未知数

保守対応者のスキル感は不明

リリース日は厳守

前提条件

Page 13: DMMで新規サービス作ったらフロントエンドエンジニアの重要性が浮き彫りになった話 - DMM Study night

拡張のしやすさ

品質の保持

開発スピード

サービス規模

対応者のスキル感

リリース厳守

前提条件 必要要件

Page 14: DMMで新規サービス作ったらフロントエンドエンジニアの重要性が浮き彫りになった話 - DMM Study night

体制づくり

Page 15: DMMで新規サービス作ったらフロントエンドエンジニアの重要性が浮き彫りになった話 - DMM Study night

フロントエンドエンジニアHTML/CSS/JavaScript

デザイナーPSD作成/コンセプト/レギュレーション

バックエンドエンジニアPHP

デザイナーとバックエンドの間に入る

Page 16: DMMで新規サービス作ったらフロントエンドエンジニアの重要性が浮き彫りになった話 - DMM Study night

リードデザイナー

デザイナー

リードエンジニア

エンジニア

リードエンジニア

エンジニア

デザインセクション フロントエンドセクション バックエンドセクション

ディレクター

PL・PM

Page 17: DMMで新規サービス作ったらフロントエンドエンジニアの重要性が浮き彫りになった話 - DMM Study night

要件を満たすものをつくるために(拡張+品質+スピード)

Page 18: DMMで新規サービス作ったらフロントエンドエンジニアの重要性が浮き彫りになった話 - DMM Study night

コーディングルール

ドキュメンテーション

開発環境

Page 19: DMMで新規サービス作ったらフロントエンドエンジニアの重要性が浮き彫りになった話 - DMM Study night

全体ルール

HTMLルール

CSSルール

JavaScriptルール

画像ルール

Page 20: DMMで新規サービス作ったらフロントエンドエンジニアの重要性が浮き彫りになった話 - DMM Study night

全体ルール

HTMLルール

CSSルール

JavaScriptルール

画像ルール

重要度

Page 21: DMMで新規サービス作ったらフロントエンドエンジニアの重要性が浮き彫りになった話 - DMM Study night

全体ルール

HTMLルール

画像ルール

JavaScriptルール

CSSルール

重要度

大事な話は最後にします!!!

Page 22: DMMで新規サービス作ったらフロントエンドエンジニアの重要性が浮き彫りになった話 - DMM Study night

全体ルール

・触るファイルの明確化(source/destination)

・ワークフロー定義(GitFlow/GitHubFlow)

・書式定義(editorconfig)

・緊急対応時のフロー

・注意事項など

Page 23: DMMで新規サービス作ったらフロントエンドエンジニアの重要性が浮き彫りになった話 - DMM Study night

HTMLルール

・命名規則(ハイフン・アンダーバーなど)

・判断に困りそうなタグのみ使い方を定義

 <h1>~<h6>、<section>、<nav>、<span>、など

・基準が曖昧なタグはあえて非推奨

 <aside>、<article>、<i>、など

・基本はweb標準に準拠

Page 24: DMMで新規サービス作ったらフロントエンドエンジニアの重要性が浮き彫りになった話 - DMM Study night

画像ルール

・png / jpg / svg 使い分け基準

・命名規則(接頭辞・接尾辞)

・必ず圧縮すること

Page 25: DMMで新規サービス作ったらフロントエンドエンジニアの重要性が浮き彫りになった話 - DMM Study night

JavaScriptルール

・jQuery(UI上の表現にとどめる)

・書式はLinterで制御

・bowerでライブラリ管理

・モジュール単位で作成し、webpackで管理

Page 26: DMMで新規サービス作ったらフロントエンドエンジニアの重要性が浮き彫りになった話 - DMM Study night

JavaScriptルール

JavaScript部分の重要度が 中 な理由

・モジュール管理されていれば、リファクタリングはしやすい

・アサインされる人員は、一定のスキルが期待できる

Page 27: DMMで新規サービス作ったらフロントエンドエンジニアの重要性が浮き彫りになった話 - DMM Study night

ふぅ…ε-ヾ(´ε`;)ゝ

Page 28: DMMで新規サービス作ったらフロントエンドエンジニアの重要性が浮き彫りになった話 - DMM Study night

CSSルール

・Sassを採用

・設計はFLOCSSを採用

・覚えづらいルールは極力排除

・書式はLinterで制御

・命名規則はBEM

・スタイルガイドの作成

Page 29: DMMで新規サービス作ったらフロントエンドエンジニアの重要性が浮き彫りになった話 - DMM Study night

Sass

Page 30: DMMで新規サービス作ったらフロントエンドエンジニアの重要性が浮き彫りになった話 - DMM Study night

CSSルール / Sass

◯ ×

知識をそれほど必要としないもののみ使用

変数 ネスト 親セレクタの継承 コメント

関数 mixin/extend プレースホルダー 条件分岐 繰り返し 四則演算

Page 31: DMMで新規サービス作ったらフロントエンドエンジニアの重要性が浮き彫りになった話 - DMM Study night

設計:FLOCSShttps://github.com/hiloki/flocss

Page 32: DMMで新規サービス作ったらフロントエンドエンジニアの重要性が浮き彫りになった話 - DMM Study night

はじめに…

FLOCSSの特徴を少し説明します

Page 33: DMMで新規サービス作ったらフロントエンドエンジニアの重要性が浮き彫りになった話 - DMM Study night

CSSルール / 設計:FLOCSS

大きく3つのレイヤーに分かれている

・Foundation

・Layout

・Object

初期化などのベース

大枠・フレーム部分

コンテンツエリア

Page 34: DMMで新規サービス作ったらフロントエンドエンジニアの重要性が浮き彫りになった話 - DMM Study night

CSSルール / 設計:FLOCSS

さらに、Objectの下に3つの子レイヤー

・Object

 ・Component

 ・Project

 ・Utility

再利用できるパーツ

パーツの集合体

汎用クラス

Page 35: DMMで新規サービス作ったらフロントエンドエンジニアの重要性が浮き彫りになった話 - DMM Study night

CSSルール / 設計:FLOCSS

Foundation + Layoutで作った下地に

Objectを配置していくイメージ

Componentを作って、Utility・Projectを

うまく使って要素づくり

Page 36: DMMで新規サービス作ったらフロントエンドエンジニアの重要性が浮き彫りになった話 - DMM Study night

CSSルール / 設計:FLOCSS

Foundation

Layout

Component UtilityProject

Object

Page 37: DMMで新規サービス作ったらフロントエンドエンジニアの重要性が浮き彫りになった話 - DMM Study night

CSSルール / 設計

すべての作業者に、FLOCSSの概念をキチンと理解し

運用してもらうのは難しい

Page 38: DMMで新規サービス作ったらフロントエンドエンジニアの重要性が浮き彫りになった話 - DMM Study night

CSSルール / 設計

すべての作業者に、FLOCSSの概念をキチンと理解し

運用してもらうのは難しい

でもComponentベースの設計思想は活用したい

Page 39: DMMで新規サービス作ったらフロントエンドエンジニアの重要性が浮き彫りになった話 - DMM Study night

CSSルール / 設計

作業者に対するルールをスケールダウン

・Foundation

・Layout

・Object

・Component

・Utility

・Project

設計者が触る範囲 作業者が触る範囲

Page 40: DMMで新規サービス作ったらフロントエンドエンジニアの重要性が浮き彫りになった話 - DMM Study night

CSSルール / 設計

作業者に対するルールをスケールダウン

・Component

・Utility

・Project

パーツはすべてココ

設計者が用意・作業者は使うだけ

パーツとは無関係な独立ページ用

Page 41: DMMで新規サービス作ったらフロントエンドエンジニアの重要性が浮き彫りになった話 - DMM Study night

CSSルール / 設計

作業者に対するルールをスケールダウン

・Component

・Utility

・Project

パーツはすべてココ

設計者が用意・作業者は使うだけ

パーツとは無関係な独立ページ用

Page 42: DMMで新規サービス作ったらフロントエンドエンジニアの重要性が浮き彫りになった話 - DMM Study night

CSSルール / 設計

作業者に対するルールをスケールダウン

Component + Utility で基本全てをまかなう

・Component

・Utility

・Project

パーツはすべてココ

設計者が用意・作業者は使うだけ

パーツとは無関係な独立ページ用

Page 43: DMMで新規サービス作ったらフロントエンドエンジニアの重要性が浮き彫りになった話 - DMM Study night

CSSルール / 設計

作業者に対するルールをスケールダウン

Component + Utility で基本全てをまかなう

・Component

・Utility

・Project

パーツはすべてココ

設計者が用意・作業者は使うだけ

パーツとは無関係な独立ページ用

わかりやすい!

Page 44: DMMで新規サービス作ったらフロントエンドエンジニアの重要性が浮き彫りになった話 - DMM Study night

CSSルール / 設計

CSS設計は、運用/保守の開発スピードの要

Page 45: DMMで新規サービス作ったらフロントエンドエンジニアの重要性が浮き彫りになった話 - DMM Study night

CSSルール / 設計

CSS設計は、運用/保守の開発スピードの要

正確なComponent化には、 デザイナーとの密なコミュニケーションが必須

Page 46: DMMで新規サービス作ったらフロントエンドエンジニアの重要性が浮き彫りになった話 - DMM Study night

CSSルール / 設計

CSS設計は、運用/保守の開発スピードの要

デザイナー フロントエンド バックエンド

正確なComponent化には、 デザイナーとの密なコミュニケーションが必須

Page 47: DMMで新規サービス作ったらフロントエンドエンジニアの重要性が浮き彫りになった話 - DMM Study night

スタイルガイド

Page 48: DMMで新規サービス作ったらフロントエンドエンジニアの重要性が浮き彫りになった話 - DMM Study night

CSSルール / スタイルガイド

.scssファイルから直接スタイルガイドを自動生成するように Gulpを使って開発環境を構築

src/*.scss

dest/*.css styleguide/*.html

結合・圧縮などをした CSSファイル

スタイルガイド (Component一覧)

Page 49: DMMで新規サービス作ったらフロントエンドエンジニアの重要性が浮き彫りになった話 - DMM Study night

実際のフロント開発環境

Page 50: DMMで新規サービス作ったらフロントエンドエンジニアの重要性が浮き彫りになった話 - DMM Study night

*.js

JS (modules)

*.js

JS (library)

*.html

スタイル ガイド

*.scss

CSS (source)

*.min.css

CSS (dest)

*.min.js

JS (entry point)

lib.min.js

JS (library minify)

hologram sass webpack Gulp

controller(php)Viewファイル

*.volt(php)

Page 51: DMMで新規サービス作ったらフロントエンドエンジニアの重要性が浮き彫りになった話 - DMM Study night

*.js

JS (modules)

*.js

JS(library

*.html

スタイル ガイド

*.scss

CSS (source)

*.min.css

CSS (dest)

*.min.js

JS (entry point)

lib.min.js

JS (library minify)

hologram sass webpack Gulp

controller(phpViewファイル

*.volt(php)

作業者が触るファイル

Page 52: DMMで新規サービス作ったらフロントエンドエンジニアの重要性が浮き彫りになった話 - DMM Study night

設計者(フロントエンドエンジニア)が管理をするために

・CSS import

・Webpack EntryPoint

・webpack.config.js

・package.json

・bower.json

管理用ファイルをキチンと作っておく ←結構大事だった

Page 53: DMMで新規サービス作ったらフロントエンドエンジニアの重要性が浮き彫りになった話 - DMM Study night

フロントエンドエンジニアの重要性とは!?

まとめ

Page 54: DMMで新規サービス作ったらフロントエンドエンジニアの重要性が浮き彫りになった話 - DMM Study night

とにかくクソコードが減る!!!

Page 55: DMMで新規サービス作ったらフロントエンドエンジニアの重要性が浮き彫りになった話 - DMM Study night

とにかくクソコードが減る!!!

・メンテしやすい

・パフォーマンス高い

・バグが出にくい

・気持ちいい

・楽しい

Page 56: DMMで新規サービス作ったらフロントエンドエンジニアの重要性が浮き彫りになった話 - DMM Study night

メリットだらけ

Page 57: DMMで新規サービス作ったらフロントエンドエンジニアの重要性が浮き彫りになった話 - DMM Study night

Thank You !!

2015.11.26DMM.Study Night