フロントエンドエンジニア(仮)...

91
13-D-3 #devsumiD ~え、ちょっとフロントやること多すぎじゃない!?~ アメーバ事業本部ゲーム部門コアグループ 石本 光司 フロントエンドエンジニア(仮)

Upload: koji-ishimoto

Post on 21-Apr-2017

33.515 views

Category:

Design


0 download

TRANSCRIPT

Page 1: フロントエンドエンジニア(仮) 〜え、ちょっとフロントやること多すぎじゃない!?〜

13-D-3 #devsumiD

~え、ちょっとフロントやること多すぎじゃない!?~

アメーバ事業本部ゲーム部門コアグループ石本 光司

フロントエンドエンジニア(仮)

Page 2: フロントエンドエンジニア(仮) 〜え、ちょっとフロントやること多すぎじゃない!?〜

@t32k

Page 3: フロントエンドエンジニア(仮) 〜え、ちょっとフロントやること多すぎじゃない!?〜

Web Designer2008 - 2011

Page 4: フロントエンドエンジニア(仮) 〜え、ちょっとフロントやること多すぎじゃない!?〜

Web Director2011 - 2012

Page 5: フロントエンドエンジニア(仮) 〜え、ちょっとフロントやること多すぎじゃない!?〜

2012 -

Web Developer

Page 6: フロントエンドエンジニア(仮) 〜え、ちょっとフロントやること多すぎじゃない!?〜

Sass & Compass徹底入門 ~CSS のベストプラクティスを効率よく実現するために~

Page 7: フロントエンドエンジニア(仮) 〜え、ちょっとフロントやること多すぎじゃない!?〜

• フロントエンドエンジニアとは?• ツールを管理する• スピードを追跡する• まとめ

Agenda

Page 8: フロントエンドエンジニア(仮) 〜え、ちょっとフロントやること多すぎじゃない!?〜

フロントエンドエンジニアとは?

Page 10: フロントエンドエンジニア(仮) 〜え、ちょっとフロントやること多すぎじゃない!?〜

A Baseline for Front-end

JavaScriptGit(and a GitHub account)Modularity, dependency management,and production buildsIn-Browser Developer ToolsThe command lineClient-side templatingCSS preprocessorsTestingProcess automation (rake/make/grunt/etc.)Code qualityThe fine manual

1.2.3.

4.5.6.7.8.9.

10.11.

Page 11: フロントエンドエンジニア(仮) 〜え、ちょっとフロントやること多すぎじゃない!?〜

+288C�

0B,%_[Z^@.������MJN/4���;-��\�@�>MJN= ��DRI

QJ����,����49@�=�3EY8=?#"��4�6:7@MJNWWW

&('&)! $$GPK@ ��A]

1F<*SUVNHVO,���85*]

Page 12: フロントエンドエンジニア(仮) 〜え、ちょっとフロントやること多すぎじゃない!?〜

DeveloperHTML/CSS Coder, JavaScripter, Flash Creator

Page 14: フロントエンドエンジニア(仮) 〜え、ちょっとフロントやること多すぎじゃない!?〜
Page 15: フロントエンドエンジニア(仮) 〜え、ちょっとフロントやること多すぎじゃない!?〜

ツールを管理する

Page 16: フロントエンドエンジニア(仮) 〜え、ちょっとフロントやること多すぎじゃない!?〜
Page 17: フロントエンドエンジニア(仮) 〜え、ちょっとフロントやること多すぎじゃない!?〜

Front-end Tooling Landscape

HTML5 Boilerplate,

Twitter Bootstrap, Backbone

Boilerplate, Angular seed,Ember starter,

Zurb Foundation

Boilerplate Abstractions

CoffeeScript, Sass, Less, Compass,

Jade, Haml, Zen coding, Markdown, Handlebars, Iced Coffee, TypeScript,

Traceur

Frameworks

Backbone, Angular,

Ember, YUI, Agility, CanJS, Dojo, Meteor, Derby, Spine, Batman, Cujo,

Knockout, Knockback,

jQuery Mobile,

jQuery UI, Closure, ExtJS,

Montage

Workflow

Chrome DevTools,

LiveReload, Codekit, Brunch,

WebStorm IDE, watch,

Testing, Tincr, JSHint,

BrowserStack, Selenium, WebGL Inpector

Performance

JavaScript, CSS and

Heap profiling,

GPU, memory, tracing,

PageSpeed

Build

Grunt, Rake, Marven,

Concat, r.js, Miification,

Image optimization, Compression,

Module loading,

mod_pagespeed

Page 18: フロントエンドエンジニア(仮) 〜え、ちょっとフロントやること多すぎじゃない!?〜

+288C�

0B,%_[Z^@.������MJN/4���;-��\�@�>MJN= ��DRI

QJ����,����49@�=�3EY8=?#"��4�6:7@MJNWWW

&('&)! $$GPK@ ��A]

1F<*SUVNHVO,LXT�85*]

Page 19: フロントエンドエンジニア(仮) 〜え、ちょっとフロントやること多すぎじゃない!?〜

UI Designer

JavaScript

HTML/CSS

Producer

iOS/AndroidEngineer

System Engineer

System Engineer

System Engineer

Community App Team

Page 20: フロントエンドエンジニア(仮) 〜え、ちょっとフロントやること多すぎじゃない!?〜

CSS preprocessors

Page 22: フロントエンドエンジニア(仮) 〜え、ちょっとフロントやること多すぎじゃない!?〜

http://livereload.com/

$9.99

Page 24: フロントエンドエンジニア(仮) 〜え、ちょっとフロントやること多すぎじゃない!?〜

\(^o^)/

/(^o^)\

Page 25: フロントエンドエンジニア(仮) 〜え、ちょっとフロントやること多すぎじゃない!?〜
Page 26: フロントエンドエンジニア(仮) 〜え、ちょっとフロントやること多すぎじゃない!?〜
Page 27: フロントエンドエンジニア(仮) 〜え、ちょっとフロントやること多すぎじゃない!?〜
Page 28: フロントエンドエンジニア(仮) 〜え、ちょっとフロントやること多すぎじゃない!?〜
Page 30: フロントエンドエンジニア(仮) 〜え、ちょっとフロントやること多すぎじゃない!?〜

Installation

Page 33: フロントエンドエンジニア(仮) 〜え、ちょっとフロントやること多すぎじゃない!?〜

$ npm install grunt-cli -g

grunt-cliをインストール

`-g`はグローバル環境にインストール

Page 34: フロントエンドエンジニア(仮) 〜え、ちょっとフロントやること多すぎじゃない!?〜

Package.json

Gruntfile.js(.coffee)

Page 35: フロントエンドエンジニア(仮) 〜え、ちょっとフロントやること多すぎじゃない!?〜

Package.json

Page 36: フロントエンドエンジニア(仮) 〜え、ちょっとフロントやること多すぎじゃない!?〜

$ npm initThis utility will walk you through creating a package.json file.It only covers the most common items, and tries to guess sane defaults.

See `npm help json` for definitive documentation on these fieldsand exactly what they do.

Use `npm install <pkg> --save` afterwards to install a package andsave it as a dependency in the package.json file.

package.jsonを作成する

対話形式でいろいろ聞かれるけどENTER!!

Page 37: フロントエンドエンジニア(仮) 〜え、ちょっとフロントやること多すぎじゃない!?〜
Page 38: フロントエンドエンジニア(仮) 〜え、ちょっとフロントやること多すぎじゃない!?〜

$ npm install grunt --save-dev$ npm install grunt-csso --save-dev

gruntをインストール

grunt-<plugin_name> をインストール

`--save-dev`はdevDependenciesに記録

Page 39: フロントエンドエンジニア(仮) 〜え、ちょっとフロントやること多すぎじゃない!?〜
Page 40: フロントエンドエンジニア(仮) 〜え、ちょっとフロントやること多すぎじゃない!?〜

Gruntfile.js(.coffee)

Page 41: フロントエンドエンジニア(仮) 〜え、ちょっとフロントやること多すぎじゃない!?〜

$ npm install grunt-init -g$ git clone https://github.com/gruntjs/grunt-init-gruntfile.git ~/.grunt-init/gruntfile

$ grunt-init gruntfile

grunt-initをインストール

GitHubからテンプレートをクローン

対話形式でいろいろ聞かれるけどENTER!!

Page 42: フロントエンドエンジニア(仮) 〜え、ちょっとフロントやること多すぎじゃない!?〜
Page 43: フロントエンドエンジニア(仮) 〜え、ちょっとフロントやること多すぎじゃない!?〜
Page 44: フロントエンドエンジニア(仮) 〜え、ちょっとフロントやること多すぎじゃない!?〜

• grunt.initConfig

• grunt.loadNpmTasks

• grunt.registerTask

Anatomy of a Gruntfile

Page 45: フロントエンドエンジニア(仮) 〜え、ちょっとフロントやること多すぎじゃない!?〜

module.exports = function(grunt) { // プロジェクト設定 grunt.initConfig({ // タスク設定 csso: { files: { 'output.css': ['input.css'] } } }); // タスクで必要なプラグインを読み込む grunt.loadNpmTasks('grunt-csso'); // カスタムタスクを登録 grunt.registerTask('default', ['csso']);};

Page 46: フロントエンドエンジニア(仮) 〜え、ちょっとフロントやること多すぎじゃない!?〜

• grunt.initConfig

• grunt.loadNpmTasks

• grunt.registerTask

Anatomy of a Gruntfile

Page 47: フロントエンドエンジニア(仮) 〜え、ちょっとフロントやること多すぎじゃない!?〜

grunt.initConfig({ // タスクの設定 csso: {    // タスク dev: {    // ターゲット files: { // ファイルディレクトリ  // アウトプット:インプット 'output.css': 'input.css',       }, prod: {・・・} }, task-foo: {・・・}}

Page 48: フロントエンドエンジニア(仮) 〜え、ちょっとフロントやること多すぎじゃない!?〜

• grunt.initConfig

• grunt.loadNpmTasks

• grunt.registerTask

Anatomy of a Gruntfile

Page 49: フロントエンドエンジニア(仮) 〜え、ちょっとフロントやること多すぎじゃない!?〜

grunt.loadNpmTasks('grunt-csso');

npm installしたプラグインを使用する

Page 51: フロントエンドエンジニア(仮) 〜え、ちょっとフロントやること多すぎじゃない!?〜

284 plugins2294 plugins

VS.

2014.02.13

Page 52: フロントエンドエンジニア(仮) 〜え、ちょっとフロントやること多すぎじゃない!?〜
Page 53: フロントエンドエンジニア(仮) 〜え、ちょっとフロントやること多すぎじゃない!?〜

MapleRealistic preprocessors-based CSS framework for mobile.

Page 55: フロントエンドエンジニア(仮) 〜え、ちょっとフロントやること多すぎじゃない!?〜
Page 56: フロントエンドエンジニア(仮) 〜え、ちょっとフロントやること多すぎじゃない!?〜
Page 57: フロントエンドエンジニア(仮) 〜え、ちょっとフロントやること多すぎじゃない!?〜

grunt-contrib-connect/watch

Page 58: フロントエンドエンジニア(仮) 〜え、ちょっとフロントやること多すぎじゃない!?〜

grunt-sass

Page 59: フロントエンドエンジニア(仮) 〜え、ちょっとフロントやること多すぎじゃない!?〜

grunt-autoprefixer

.flexbox { display: flex;}

.flexbox {  display: -moz-flex;  display: -webkit-flex;  display: flex;}

Before

After

Page 60: フロントエンドエンジニア(仮) 〜え、ちょっとフロントやること多すぎじゃない!?〜

grunt-spritesmith

$fork_offset_x = 0px;$fork_offset_y = 0px;$fork_width = 32px;$fork_height = 32px;...$github_offset_x = -32px;$github_offset_y = 0px;$github_width = 32px;$github_height = 32px;...

Page 61: フロントエンドエンジニア(仮) 〜え、ちょっとフロントやること多すぎじゃない!?〜

grunt-contrib-csslint

Page 62: フロントエンドエンジニア(仮) 〜え、ちょっとフロントやること多すぎじゃない!?〜

grunt-kss

Page 63: フロントエンドエンジニア(仮) 〜え、ちょっとフロントやること多すぎじゃない!?〜

• grunt.initConfig

• grunt.loadNpmTasks

• grunt.registerTask

Anatomy of a Gruntfile

Page 66: フロントエンドエンジニア(仮) 〜え、ちょっとフロントやること多すぎじゃない!?〜

$ npm install yo -g$ npm install generator-maple -g

Yeomanをインストール

generator-<name> をインストール

Page 67: フロントエンドエンジニア(仮) 〜え、ちょっとフロントやること多すぎじゃない!?〜

$ mkdir your_proj && cd $_$ yo maple$ grunt

ワーキングディレクトリを作成・移動

yoコマンドでmapleを実行

gruntデフォルトタスクを実行

Page 68: フロントエンドエンジニア(仮) 〜え、ちょっとフロントやること多すぎじゃない!?〜

generator-maple

Page 69: フロントエンドエンジニア(仮) 〜え、ちょっとフロントやること多すぎじゃない!?〜

スピードを追跡する

Page 71: フロントエンドエンジニア(仮) 〜え、ちょっとフロントやること多すぎじゃない!?〜

“It doesn’t matter how many features you have or how sexy your features are if they aren’t delivered to the user quickly, with ease, and then heavily monitored.

― Alex Sexton

Page 72: フロントエンドエンジニア(仮) 〜え、ちょっとフロントやること多すぎじゃない!?〜
Page 73: フロントエンドエンジニア(仮) 〜え、ちょっとフロントやること多すぎじゃない!?〜

80 20:

Page 75: フロントエンドエンジニア(仮) 〜え、ちょっとフロントやること多すぎじゃない!?〜
Page 76: フロントエンドエンジニア(仮) 〜え、ちょっとフロントやること多すぎじゃない!?〜

• Start Render

• Speed Index

Beyond Onload

Page 77: フロントエンドエンジニア(仮) 〜え、ちょっとフロントやること多すぎじゃない!?〜

Private Instance for Ameba

Page 78: フロントエンドエンジニア(仮) 〜え、ちょっとフロントやること多すぎじゃない!?〜

https://github.com/marcelduran/webpagetest-api

$ npm install webpagetest -g

Page 79: フロントエンドエンジニア(仮) 〜え、ちょっとフロントやること多すぎじゃない!?〜
Page 80: フロントエンドエンジニア(仮) 〜え、ちょっとフロントやること多すぎじゃない!?〜

Performance Test

Page 81: フロントエンドエンジニア(仮) 〜え、ちょっとフロントやること多すぎじゃない!?〜

Users

Monitor

BuildTest

Deploy

Page 82: フロントエンドエンジニア(仮) 〜え、ちょっとフロントやること多すぎじゃない!?〜

Users

Monitor

Perf

Test

Deploy

Build

Page 83: フロントエンドエンジニア(仮) 〜え、ちょっとフロントやること多すぎじゃない!?〜

まとめ

Page 84: フロントエンドエンジニア(仮) 〜え、ちょっとフロントやること多すぎじゃない!?〜

HTML5 Boilerplate,

Twitter Bootstrap, Backbone

Boilerplate, Angular seed,Ember starter,

Zurb Foundation

Boilerplate Abstractions

CoffeeScript, Sass, Less, Compass,

Jade, Haml, Zen coding, Markdown, Handlebars, Iced Coffee, TypeScript,

Traceur

Frameworks

Backbone, Angular,

Ember, YUI, Agility, CanJS, Dojo, Meteor, Derby, Spine, Batman, Cujo,

Knockout, Knockback,

jQuery Mobile,

jQuery UI, Closure, ExtJS,

Montage

Workflow

Chrome DevTools,

LiveReload, Codekit, Brunch,

WebStorm IDE, watch,

Testing, Tincr, JSHint,

BrowserStack, Selenium, WebGL Inpector

Performance

JavaScript, CSS and

Heap profiling,

GPU, memory, tracing,

PageSpeed

Build

Grunt, Rake, Marven,

Concat, r.js, Miification,

Image optimization, Compression,

Module loading,

mod_pagespeed

Travis

Front-end Tooling Landscape

Page 85: フロントエンドエンジニア(仮) 〜え、ちょっとフロントやること多すぎじゃない!?〜

HTML5 Boilerplate,

Twitter Bootstrap, Backbone

Boilerplate, Angular seed,Ember starter,

Zurb Foundation

Boilerplate Abstractions

CoffeeScript, Sass, Less, Compass,

Jade, Haml, Zen coding, Markdown, Handlebars, Iced Coffee, TypeScript,

Traceur

Frameworks

Backbone, Angular,

Ember, YUI, Agility, CanJS, Dojo, Meteor, Derby, Spine, Batman, Cujo,

Knockout, Knockback,

jQuery Mobile,

jQuery UI, Closure, ExtJS,

Montage

Workflow

Chrome DevTools,

LiveReload, Codekit, Brunch,

WebStorm IDE, watch,

Testing, Tincr, JSHint,

BrowserStack, Selenium, WebGL Inpector

Performance

JavaScript, CSS and

Heap profiling,

GPU, memory, tracing,

PageSpeed

Build

Grunt, Rake, Marven,

Concat, r.js, Miification,

Image optimization, Compression,

Module loading,

mod_pagespeed

Travis

Front-end Tooling Landscape

Page 86: フロントエンドエンジニア(仮) 〜え、ちょっとフロントやること多すぎじゃない!?〜

HTML5 Boilerplate,

Twitter Bootstrap, Backbone

Boilerplate, Angular seed,Ember starter,

Zurb Foundation

Boilerplate Abstractions

CoffeeScript, Sass, Less, Compass,

Jade, Haml, Zen coding, Markdown, Handlebars, Iced Coffee, TypeScript,

Traceur

Frameworks

Backbone, Angular,

Ember, YUI, Agility, CanJS, Dojo, Meteor, Derby, Spine, Batman, Cujo,

Knockout, Knockback,

jQuery Mobile,

jQuery UI, Closure, ExtJS,

Montage

Workflow

Chrome DevTools,

LiveReload, Codekit, Brunch,

WebStorm IDE, watch,

Testing, Tincr, JSHint,

BrowserStack, Selenium, WebGL Inpector

Performance

JavaScript, CSS and

Heap profiling,

GPU, memory, tracing,

PageSpeed

Build

Grunt, Rake, Marven,

Concat, r.js, Miification,

Image optimization, Compression,

Module loading,

mod_pagespeed

Travis

Front-end Tooling Landscape

Page 87: フロントエンドエンジニア(仮) 〜え、ちょっとフロントやること多すぎじゃない!?〜

HTML5 Boilerplate,

Twitter Bootstrap, Backbone

Boilerplate, Angular seed,Ember starter,

Zurb Foundation

Boilerplate Abstractions

CoffeeScript, Sass, Less, Compass,

Jade, Haml, Zen coding, Markdown, Handlebars, Iced Coffee, TypeScript,

Traceur

Frameworks

Backbone, Angular,

Ember, YUI, Agility, CanJS, Dojo, Meteor, Derby, Spine, Batman, Cujo,

Knockout, Knockback,

jQuery Mobile,

jQuery UI, Closure, ExtJS,

Montage

Workflow

Chrome DevTools,

LiveReload, Codekit, Brunch,

WebStorm IDE, watch,

Testing, Tincr, JSHint,

BrowserStack, Selenium, WebGL Inpector

Performance

JavaScript, CSS and

Heap profiling,

GPU, memory, tracing,

PageSpeed

Build

Grunt, Rake, Marven,

Concat, r.js, Miification,

Image optimization, Compression,

Module loading,

mod_pagespeed

Travis

Front-end Tooling Landscape

Page 88: フロントエンドエンジニア(仮) 〜え、ちょっとフロントやること多すぎじゃない!?〜

•Client? Server?•Dev? Ops?

Page 89: フロントエンドエンジニア(仮) 〜え、ちょっとフロントやること多すぎじゃない!?〜

by Developers Summit 2008越境しよう!

Page 91: フロントエンドエンジニア(仮) 〜え、ちょっとフロントやること多すぎじゃない!?〜

• http://www.flickr.com/photos/wwworks/1384954600/

• http://www.flickr.com/photos/trippchicago/1076657776/

• http://www.flickr.com/photos/knitorious/3298975640/

• http://www.flickr.com/photos/culturadotabacoii/6086024124/

• http://www.flickr.com/photos/mah_aaah/3660470519/

• http://jigokuno.com/?eid=306

Photo Credit