66
スマートフォン時代のWeb制作術 Vol.2 2013年2月12日 DeNA渋谷 原 一成 @herablog

スマートフォン時代のWeb制作術 Vol.2

Embed Size (px)

DESCRIPTION

http://t.co/IGKeFAmd こちらのイベントの内容です。

Citation preview

Page 1: スマートフォン時代のWeb制作術 Vol.2

スマートフォン時代のWeb制作術 Vol.2

2013年2月12日DeNA渋谷原 一成 @herablog

Page 2: スマートフォン時代のWeb制作術 Vol.2

まずは運だめし!

Page 3: スマートフォン時代のWeb制作術 Vol.2

まずは運だめし!http://goo.gl/VZrbd

・WebKit系でお願いします・ニックネームを入力してください

Page 4: スマートフォン時代のWeb制作術 Vol.2
Page 5: スマートフォン時代のWeb制作術 Vol.2
Page 6: スマートフォン時代のWeb制作術 Vol.2

プレゼントがあります!おめでとうございます。

Page 7: スマートフォン時代のWeb制作術 Vol.2
Page 8: スマートフォン時代のWeb制作術 Vol.2

そこで、問題です

Page 9: スマートフォン時代のWeb制作術 Vol.2

まゆまろは?1 2

3 4

Page 10: スマートフォン時代のWeb制作術 Vol.2
Page 11: スマートフォン時代のWeb制作術 Vol.2

まゆまろは?1 2

3 4

Page 12: スマートフォン時代のWeb制作術 Vol.2

まゆまろの特徴で正しくないものは?1 2

3 4

3歳 まんまるおめめ

乱暴者が苦手

階段が苦手

Page 13: スマートフォン時代のWeb制作術 Vol.2
Page 14: スマートフォン時代のWeb制作術 Vol.2

まゆまろの特徴で正しくないものは?1 2

3 4

3歳 まんまるおめめ

乱暴者が苦手

階段が苦手

Page 15: スマートフォン時代のWeb制作術 Vol.2

100万円が欲しい1 2

3 4

欲しい! 欲しくない!

Page 16: スマートフォン時代のWeb制作術 Vol.2
Page 17: スマートフォン時代のWeb制作術 Vol.2

100万円が欲しい1 2

3 4

欲しい! 欲しくない!

Page 18: スマートフォン時代のWeb制作術 Vol.2

原 一成 Hara KazunariWeb DeveloperCyberAgent, Inc.

Page 19: スマートフォン時代のWeb制作術 Vol.2

@herablog

HTML/CSS/JavaScript

Page 20: スマートフォン時代のWeb制作術 Vol.2

@herablog

@herablog

Page 21: スマートフォン時代のWeb制作術 Vol.2

スマートフォン

Page 22: スマートフォン時代のWeb制作術 Vol.2

0

50

100

150

10.1011 12 11.1 2 3 4 5 6 7 8 9 10 11 12 12.1 2 3 4 5 6 7 8 9 10 11 12 13.1

133

120

109103104

9991

85

76

6761

4745

353028

21201713119975332

PV数 (億PV)

Page 23: スマートフォン時代のWeb制作術 Vol.2

0

50

100

150

10.1011 12 11.1 2 3 4 5 6 7 8 9 10 11 12 12.1 2 3 4 5 6 7 8 9 10 11 12 13.1

133

120

109103104

9991

85

76

6761

4745

353028

21201713119975332

PV数 (億PV)

Page 24: スマートフォン時代のWeb制作術 Vol.2

役割の変化

Designer FrontEngineer

ServerEngineer

Page 25: スマートフォン時代のWeb制作術 Vol.2

役割の変化

Designer FrontEngineer

ServerEngineer

Page 26: スマートフォン時代のWeb制作術 Vol.2

役割の変化

・レイアウト・高度なWebデザイン・イラストレーションが専門化・インタラクションに関与

Designer

Page 27: スマートフォン時代のWeb制作術 Vol.2

役割の変化

Designer FrontEngineer

ServerEngineer

Page 28: スマートフォン時代のWeb制作術 Vol.2

役割の変化

Front Engineer

・HTML/CSS + JavaScript・プログラム知識(モジュール化)・サーバー知識・コマンドライン操作

Page 29: スマートフォン時代のWeb制作術 Vol.2

役割の変化

Designer FrontEngineer

ServerEngineer

Page 30: スマートフォン時代のWeb制作術 Vol.2

役割の変化

・プログラム、サーバー知識・API作成知識 (REST, Status Code)・最適なインフラ構成構築・JavaScriptなどHTML5関連

Server Engineer

Page 31: スマートフォン時代のWeb制作術 Vol.2

役割の変化

・Front/Severをつなぐ必要あり・デザイン, インフラはより専門化

スマホ時代には

Page 32: スマートフォン時代のWeb制作術 Vol.2

スマートフォン

Page 33: スマートフォン時代のWeb制作術 Vol.2

スマートフォン

HTML5/CSS3

JavaScript

パフォーマンス

Page 34: スマートフォン時代のWeb制作術 Vol.2

スマートフォン

HTML5/CSS3

JavaScript

パフォーマンス

Page 35: スマートフォン時代のWeb制作術 Vol.2

node.js

スケーラブル

非同期

JavaScriptである

Page 36: スマートフォン時代のWeb制作術 Vol.2

node.js

スケーラブル

非同期

JavaScriptである

Page 37: スマートフォン時代のWeb制作術 Vol.2

役割の変化

Designer FrontEngineer

ServerEngineer

Page 38: スマートフォン時代のWeb制作術 Vol.2

node.js

スケーラブル

非同期

JavaScriptである

Page 39: スマートフォン時代のWeb制作術 Vol.2

アーキテクチャ

Page 40: スマートフォン時代のWeb制作術 Vol.2

Ameba

Page 41: スマートフォン時代のWeb制作術 Vol.2

アーキテクチャ

Page 42: スマートフォン時代のWeb制作術 Vol.2

アーキテクチャ

ServerEngineer

FrontEngineer

Page 43: スマートフォン時代のWeb制作術 Vol.2

アーキテクチャ

ServerEngineer

FrontEngineer

Page 44: スマートフォン時代のWeb制作術 Vol.2

アーキテクチャ

ServerEngineer

FrontEngineer

Page 45: スマートフォン時代のWeb制作術 Vol.2

jade

・テンプレートエンジン・インデント形式で閉じタグいらず・変数や分岐、include・テンプレート継承が便利

Page 46: スマートフォン時代のWeb制作術 Vol.2

jade

!!! 5

html

head

block title

title Event 20130212

body

block header

block contents

//- load scripts

block scripts

script(src='/js/main.js')

base.jade index.jadeextends ./base

block contents

div#contents

block append scripts

script(src=‘js/core.js’)

Page 47: スマートフォン時代のWeb制作術 Vol.2

express

・よく使われているフレームワーク・Connectというミドルウェアを使っている・簡単にWebアプリを作れる

Page 48: スマートフォン時代のWeb制作術 Vol.2

express

// create web server

var express = require('express');

var app = express();

app.configure(function() {

// jade setting

app.set('view engine','jade');

app.set('views', path.join(basedir, '/template/

jade'));

// static server setting

app.use(express['static'](path.join(basedir, '/

public')));

});

Page 49: スマートフォン時代のWeb制作術 Vol.2

express

// routing

app.get('/', function(req, res){

res.render('index');

});

// start server

var server = http.createServer(app).listen(port,

function(){

console.log('server started port on ' + port);

});

Page 50: スマートフォン時代のWeb制作術 Vol.2

socket.io

・リアルタイム通信を実現・ブラウザごとに最適な方式を選択 WebSocket/XHR Polling/Flashなど

・もうすぐ1.0リリース

Page 51: スマートフォン時代のWeb制作術 Vol.2

クラウド

・システム運用をアウトソース・思い立ったらすぐリリースできる・大体最初は無料・たくさんのサービスから選択できる AWS/Google App Engine/dotCloudなど

Page 52: スマートフォン時代のWeb制作術 Vol.2

Heroku

heroku login

heroku create

git push heroku master

・gitと連携・デフォルトは無料・Add-onで課金・多くの言語に対応Ruby/Node/Python/Scalaなど

Page 53: スマートフォン時代のWeb制作術 Vol.2

JSライブラリ

Page 54: スマートフォン時代のWeb制作術 Vol.2

JSライブラリ

Page 55: スマートフォン時代のWeb制作術 Vol.2

軽量

MVCフレームワーク

JSライブラリ

Page 56: スマートフォン時代のWeb制作術 Vol.2

chikuwa.jschikuwa-view.jschikuwa-dispatcher.js

JS独自ライブラリ

https://github.com/ameba-proteus/chikuwa.js

Page 57: スマートフォン時代のWeb制作術 Vol.2

chikuwa.js

0

10

20

30

40

chikuwa zepto jQuery

10KB7KB

32KB

Page 58: スマートフォン時代のWeb制作術 Vol.2

テンプレートエンジン

var notiCount = getNotiCount();tag(‘header’).tag(‘button.menu’).gat().tag(‘h1’).text(‘Ameba’).gat().tag(‘button.noti’).tag(‘span.counter’).text(notiCount).gat()

.gat();

<header><button class=”menu”></button><h1>Ameba</h1><button class=”noti”><span class=”counter”>1</span>

</button></header>

Chikuwa HTML

Page 59: スマートフォン時代のWeb制作術 Vol.2

View & Routing

$.views({‘group.top’ : {init: function(data) {this.data = data || {};

},render: function() {return tag(‘div’);

}}

});

$.routes(‘group’, {‘/’: {name: ‘top’, action: ‘top’},‘/:groupId/info’: {name: ‘info’, action: ‘info’}

});

View Routing

function top(vars) {var view = $.view(‘group.top’);page.replace(view);

}

Action

Page 60: スマートフォン時代のWeb制作術 Vol.2

モジュール別開発

メッセージmessage.jsmessage.css

サークルcircle.jscircle.css

プロフィールprofile.jsprofile.css

掲示板board.jsboard.css

Page 61: スマートフォン時代のWeb制作術 Vol.2

スマートフォン

HTML5/CSS3

JavaScript

パフォーマンス

Page 62: スマートフォン時代のWeb制作術 Vol.2

Canvas

<canvas id=”canvas”></canvas>

HTML

var canvas = document.getElementById(‘canvas’);var ctx = canvas.getContext('2d');ctx.beginPath();ctx.moveTo(10, 10);ctx.lineTo(100, 10);ctx.closePath();

JavaScript

Page 63: スマートフォン時代のWeb制作術 Vol.2

CSS: transform

<div data-parts=”f_body” style=”-webkit-transform: matrix(0.1, 0, 0, 0.1, 1.8, -43.7);”> <img src=”data:~~”></div>

<div data-parts=”f_body” style=”-webkit-transform: matrix(0.99, 0, 0, 0.99, 0.75, -40.5);”> <img src=”data:~~”></div>

Page 64: スマートフォン時代のWeb制作術 Vol.2

Audio

Page 65: スマートフォン時代のWeb制作術 Vol.2

Web Font

Page 66: スマートフォン時代のWeb制作術 Vol.2

スマートフォン時代のWeb制作術 Vol.1

http://www.slideshare.net/herablog

Selectors API / Canvas / CSS TransformAudio / Local Storage / Web Font

パフォーマンス改善