57
フロント & サーバ同時開発のメリット ~ Amebaの開発現場から ~ サイバーエージェント 原 一成 12/18/2013 @DeNA Kazunari Hara

front_server20131218

Embed Size (px)

Citation preview

Page 1: front_server20131218

フロント & サーバ同時開発のメリット~ Amebaの開発現場から ~サイバーエージェント 原 一成

12/18/2013 @DeNAKazunari Hara

Page 2: front_server20131218
Page 3: front_server20131218
Page 4: front_server20131218
Page 5: front_server20131218
Page 6: front_server20131218
Page 7: front_server20131218
Page 8: front_server20131218

原 一成 Hara Kazunari@herablogWeb Developer

Page 9: front_server20131218

原 一成 Hara Kazunari@herablogWeb Developer

2008年

Page 10: front_server20131218
Page 11: front_server20131218
Page 12: front_server20131218
Page 13: front_server20131218
Page 14: front_server20131218
Page 15: front_server20131218
Page 16: front_server20131218

原 一成 Hara Kazunari@herablogWeb Developer

Page 17: front_server20131218

原 一成 Hara Kazunari@herablogWeb Developer

HTML/CSS/JavaScript

Page 19: front_server20131218

background-­‐color:  #6cf;background-­‐image:    linear-­‐gradient(        to  right,        #ff9  50%,        transparent  50%    );background-­‐size:  1em;

Repeat

1em

Page 20: front_server20131218
Page 21: front_server20131218
Page 22: front_server20131218
Page 23: front_server20131218

セレクタ flexboxリストタグ・パンくず図形フォーム・ 表・グラフ設計パフォーマンスプリプロセッサスタイルガイドなど 全81項目のサンプル集

Page 24: front_server20131218

Designer Front Server

Page 25: front_server20131218

Webサイト制作あるある

Page 26: front_server20131218

コーダーとエンジニアが分かれていて時間がかかる・確認が大変だ

Page 27: front_server20131218

エンジニアの書いたマークアップがひどい

Page 28: front_server20131218

コーダーの書いた条件分岐が効率悪い

Page 29: front_server20131218

Front Server

Page 30: front_server20131218

Front Server

Page 31: front_server20131218

・一貫性のある開発・クオリティ向上・開発スピード向上

Front Server

Page 32: front_server20131218

Amebaでの実現方法

Page 33: front_server20131218
Page 34: front_server20131218

AJAX

Page 35: front_server20131218

複数リクエストをひとつにまとめて返す

複数のAPIにアクセス通信を少なくする (できれば1本)

Page 36: front_server20131218

データ周りは専門家が担当する

Page 37: front_server20131218

サーバーエンジニアフロントエンドエンジニア

Page 38: front_server20131218

リリースまでの流れ

Page 39: front_server20131218
Page 40: front_server20131218

Idea

Idea

IdeaDesign

ServerFront FrontDataData

Page 41: front_server20131218

UIを作る (CSS3)

Page 42: front_server20131218

UIを作る (CSS3)

Page 43: front_server20131218

ページを作る (JavaScript)

chikuwa.js

Page 44: front_server20131218

0

10

20

30

40

jqMobi Chikuwa jQuery

6KB5KB

31KB

ページを作る (JavaScript)

Page 45: front_server20131218

ページを作る (JavaScript)

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 46: front_server20131218

ページを作る (JavaScript)

$.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

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

}

Page 47: front_server20131218

データのやり取りをする

Page 48: front_server20131218

node.js (中継サーバ)

app.get(‘/api/:userId’, function(req, res) { var userId = req.param(‘userId’); api.get(‘/’ + userId, function(err, result) { if (err) { res.send(err); } else { res.json(result); } });});

リクエストを受けて、複数のAPIからデータを取得し、ひとつにまとめて返すだけの役割

Page 49: front_server20131218

Git

Page 50: front_server20131218

Release

Page 51: front_server20131218

デメリット

Page 52: front_server20131218

・サーバーリソースの扱い方に不慣れだった・メモリ、キャッシュなど

Page 53: front_server20131218

・コードそのものの品質へのこだわり・テスト不十分

Page 54: front_server20131218

・サーバーリソースの扱い方に不慣れだった・コードそのものの品質へのこだわり→ 今後の改善ポイント

Page 55: front_server20131218

・サーバーリソースの扱い方に不慣れだった・コードそのものの品質へのこだわり→ 今後の改善ポイント

Page 56: front_server20131218
Page 57: front_server20131218

フロント & サーバ同時開発のメリット~ 終 ~

12/18/2013 @DeNAKazunari Hara@herablog