業務アプリケーションにおけるモダンweb開発の現状ーhtml5開発って簡単なの?...

65

Upload: fumio-sagawa

Post on 15-Jan-2015

20.288 views

Category:

Technology


5 download

DESCRIPTION

 

TRANSCRIPT

Page 1: 業務アプリケーションにおけるモダンWeb開発の現状ーHTML5開発って簡単なの?
Page 2: 業務アプリケーションにおけるモダンWeb開発の現状ーHTML5開発って簡単なの?

Profile: !

佐川 夫美雄

HTML5Expert.jpコントリビュータ html5jエンタープライズ部 副部長 Angularユーザ会 スタッフ Sencha UG CO-ORGANIZER

@albatrosary http://albatrosary.hateblo.jp/ http://html5experts.jp/albatrosary/

Page 3: 業務アプリケーションにおけるモダンWeb開発の現状ーHTML5開発って簡単なの?

HTML5はただのテキストファイル

Page 4: 業務アプリケーションにおけるモダンWeb開発の現状ーHTML5開発って簡単なの?

はい!その通り!

Page 5: 業務アプリケーションにおけるモダンWeb開発の現状ーHTML5開発って簡単なの?

エディターがあれば何でもできる!

Page 6: 業務アプリケーションにおけるモダンWeb開発の現状ーHTML5開発って簡単なの?

はい!その通り!

Page 7: 業務アプリケーションにおけるモダンWeb開発の現状ーHTML5開発って簡単なの?

簡単です!

Page 8: 業務アプリケーションにおけるモダンWeb開発の現状ーHTML5開発って簡単なの?

ほんと?

Page 9: 業務アプリケーションにおけるモダンWeb開発の現状ーHTML5開発って簡単なの?

HTML CSS

JavaScript

image

HTML5は簡単?

Page 10: 業務アプリケーションにおけるモダンWeb開発の現状ーHTML5開発って簡単なの?

HTML CSS

JavaScript

Sass Compass

image

HTML5は簡単?

Page 11: 業務アプリケーションにおけるモダンWeb開発の現状ーHTML5開発って簡単なの?

HTML CSS

JavaScript

Sass

CoffeeScript

Compass

image

HTML5は簡単?

Page 12: 業務アプリケーションにおけるモダンWeb開発の現状ーHTML5開発って簡単なの?

HTML CSS

JavaScript

Sass

CoffeeScript

backboneunderscore

jQueryrequire

Compass

image

HTML5は簡単?

Page 13: 業務アプリケーションにおけるモダンWeb開発の現状ーHTML5開発って簡単なの?

HTML CSS

JavaScript

Sass

CoffeeScript

backboneunderscore

jQueryrequire

Compass

image

Yuidoc

HTML5は簡単?

Page 14: 業務アプリケーションにおけるモダンWeb開発の現状ーHTML5開発って簡単なの?

HTML CSS

JavaScript

Sass

CoffeeScript

backboneunderscore

jQueryrequire

Compass

image imagemin

htmlmincssmin

jsmin

Yuidoc

HTML5は簡単?

Page 15: 業務アプリケーションにおけるモダンWeb開発の現状ーHTML5開発って簡単なの?

HTML CSS

JavaScript

Sass

CoffeeScript

backboneunderscore

jQueryrequire

Compass

image imagemin

htmlmincssmin

jsmin

mocha chaiテスト

Yuidoc

HTML5は簡単?

Page 16: 業務アプリケーションにおけるモダンWeb開発の現状ーHTML5開発って簡単なの?

HTML CSS

JavaScript

Sass

CoffeeScript

backboneunderscore

jQueryrequire

Compass

image imagemin

htmlmincssmin

jsmin

mocha chaiテスト

Yuidoc

HTML5は簡単?

easymock

Page 17: 業務アプリケーションにおけるモダンWeb開発の現状ーHTML5開発って簡単なの?

想像以上に技術要素ないですか?

Page 18: 業務アプリケーションにおけるモダンWeb開発の現状ーHTML5開発って簡単なの?

どこがCSSでしょうか?

Page 19: 業務アプリケーションにおけるモダンWeb開発の現状ーHTML5開発って簡単なの?

どこがCSSでしょうか?

この色

Page 20: 業務アプリケーションにおけるモダンWeb開発の現状ーHTML5開発って簡単なの?

どこがCSSでしょうか?

この色

フォントサイズ

Page 21: 業務アプリケーションにおけるモダンWeb開発の現状ーHTML5開発って簡単なの?

どこがCSSでしょうか?

この色

フォントサイズ

フォントの色

Page 22: 業務アプリケーションにおけるモダンWeb開発の現状ーHTML5開発って簡単なの?

どこがCSSでしょうか?

この色丸まってるところ

フォントサイズ

フォントの色

Page 23: 業務アプリケーションにおけるモダンWeb開発の現状ーHTML5開発って簡単なの?

どこがCSSでしょうか?

この色丸まってるところ

フォントサイズ

フォントの色

丸まってるところ

Page 24: 業務アプリケーションにおけるモダンWeb開発の現状ーHTML5開発って簡単なの?

どこがCSSでしょうか?

この色丸まってるところ

フォントサイズ

このメニュー

フォントの色

丸まってるところ

Page 25: 業務アプリケーションにおけるモダンWeb開発の現状ーHTML5開発って簡単なの?

こんな風にもなる

縮めてみた

なにこれ・・

Page 26: 業務アプリケーションにおけるモダンWeb開発の現状ーHTML5開発って簡単なの?

こんな風にもなる

縮めてみた

なにこれ・・

メニューだったりします

Page 27: 業務アプリケーションにおけるモダンWeb開発の現状ーHTML5開発って簡単なの?

CSSの中身を覗いてみる

.modal-dialog { -webkit-transform: translate(0, -25%); -ms-transform: translate(0, -25%); transform: translate(0, -25%); -webkit-transition: -webkit-transform 0.3s ease-out; -moz-transition: -moz-transform 0.3s ease-out; -o-transition: -o-transform 0.3s ease-out; transition: transform 0.3s ease-out; }

Page 28: 業務アプリケーションにおけるモダンWeb開発の現状ーHTML5開発って簡単なの?

CSSの中身を覗いてみる

-webkit -moz -ms -o !

って何???

Page 29: 業務アプリケーションにおけるモダンWeb開発の現状ーHTML5開発って簡単なの?

CSSの中身を覗いてみる

-webkit -moz -ms -o !

って何???

ベンダープレフィックスっす!

Page 30: 業務アプリケーションにおけるモダンWeb開発の現状ーHTML5開発って簡単なの?

ちょっと大変じゃない。。。

Page 31: 業務アプリケーションにおけるモダンWeb開発の現状ーHTML5開発って簡単なの?

開発環境のおはなし

http://yeoman.io/

多くのアーキテクチャをどうやって開発するか

Page 32: 業務アプリケーションにおけるモダンWeb開発の現状ーHTML5開発って簡単なの?

Yeoman とは

Google社が作成した総合開発ツール群

yo(雛形作成ツール)

grunt(タスクランナー)

bower(フロントエンドパッケージマネージャ)

MODERN WORKFLOWS FOR MODERN WEBAPPS

Page 33: 業務アプリケーションにおけるモダンWeb開発の現状ーHTML5開発って簡単なの?

開発の大まかな流れ

1. yo [generator] によるひな形

2. grunt server を使用しアプリケーション開発

3. grunt build によるリリースビルド

http://yeoman.io/

Page 34: 業務アプリケーションにおけるモダンWeb開発の現状ーHTML5開発って簡単なの?

これはですね。。

Javaのmavenみたいなもんです もうちょっと高機能かも

Page 35: 業務アプリケーションにおけるモダンWeb開発の現状ーHTML5開発って簡単なの?

インストールは簡単

使ってみる

$ npm install -g yo

Page 36: 業務アプリケーションにおけるモダンWeb開発の現状ーHTML5開発って簡単なの?

generator はどのくらいある? http://yeoman.io/community-generators.html

yo雛形作成ツール

Page 37: 業務アプリケーションにおけるモダンWeb開発の現状ーHTML5開発って簡単なの?

カスタムイベントを備えた Model Model のイテレーションである Collection イベントをハンドリングする View !

!

サーバサイドのアプリケーションと連動するための RESTful JSON など

View

ejs Collection Model

HTML

Page 38: 業務アプリケーションにおけるモダンWeb開発の現状ーHTML5開発って簡単なの?

Single-page Application(SPA)

単一ページによるWebアプリケーション ページはDOMの操作により切り替える サーバとのやりとりはAjaxやWebSocket等を利用

events

renderchange

AjaxStorage

get

setModel

TemplateViewDOM

Page 39: 業務アプリケーションにおけるモダンWeb開発の現状ーHTML5開発って簡単なの?

$ yo backbone

yo雛形作成ツール

Page 40: 業務アプリケーションにおけるモダンWeb開発の現状ーHTML5開発って簡単なの?

これだけで概ねの環境ができてしまう!

yo

Page 41: 業務アプリケーションにおけるモダンWeb開発の現状ーHTML5開発って簡単なの?

$ yo backbone:view view名 --coffee $ yo backbone:model model名 --coffee $ yo backbone:collection collection名 --coffee $ yo backbone:router router名 --coffee

yoテンプレートを作成する

Page 42: 業務アプリケーションにおけるモダンWeb開発の現状ーHTML5開発って簡単なの?

bowerTwitter社が作ったパッケージマネージャ

bower components はどのくらいあるか? http://bower.io/search/

Page 43: 業務アプリケーションにおけるモダンWeb開発の現状ーHTML5開発って簡単なの?

bower

依存関係およびライブラリの情報を管理するためのファイル

bower.jsonとは?

Page 44: 業務アプリケーションにおけるモダンWeb開発の現状ーHTML5開発って簡単なの?

bowerbackbonejsを作るときに必要なコンポーネント

{ "name": "backbone-app", "version": "0.0.0", "dependencies": { "sass-bootstrap": "~3.0.0", "jquery": "~1.9.0", "underscore": "~1.4.3", "backbone": "~1.0.0", "requirejs": "~2.1.5", "requirejs-text": "~2.0.5", "modernizr": "~2.6.2", "backbone.localStorage": "~1.1.7" }, "devDependencies": {} }

Page 45: 業務アプリケーションにおけるモダンWeb開発の現状ーHTML5開発って簡単なの?

bower

$ bower install !

このコマンドでbower.jsonに定義しているコンポーネントをダウンロードします

使い方

Page 46: 業務アプリケーションにおけるモダンWeb開発の現状ーHTML5開発って簡単なの?

bower

$ bower install --save-dev [パッケージ名] !

新しいコンポーネントをダウンロードしbower.jsonにその情報を書き込みます

使い方

Page 47: 業務アプリケーションにおけるモダンWeb開発の現状ーHTML5開発って簡単なの?

gruntタスクランナー

grunt で登録されているプラグインは? http://gruntjs.com/plugins

Page 48: 業務アプリケーションにおけるモダンWeb開発の現状ーHTML5開発って簡単なの?

gruntタスクランナー

gruntにはpackage.jsonとGruntfile.jsが必要

Page 49: 業務アプリケーションにおけるモダンWeb開発の現状ーHTML5開発って簡単なの?

gruntpackage.jsonとは?

必要なタスクプラグインを管理するためのファイル

Page 50: 業務アプリケーションにおけるモダンWeb開発の現状ーHTML5開発って簡単なの?

gruntpackage.jsonとは?

{ "name": "backbone-app", "version": "0.0.0", "dependencies": {}, "devDependencies": { "grunt": "~0.4.1", "grunt-contrib-copy": "~0.4.0", "grunt-contrib-concat": "~0.3.0", "grunt-contrib-coffee": "~0.7.0", "grunt-contrib-jst": "~0.5.0", "grunt-contrib-uglify": "~0.2.0", "grunt-contrib-compass": "~0.5.0", "grunt-contrib-jshint": "~0.6.3", "grunt-contrib-cssmin": "~0.6.0", "grunt-contrib-connect": "~0.3.0", "grunt-contrib-clean": "~0.5.0", "grunt-contrib-htmlmin": "~0.1.3", "grunt-contrib-imagemin": "~0.2.0", "grunt-contrib-watch": "~0.5.2", "grunt-mocha": "~0.4.1", "grunt-usemin": "~0.1.10", "grunt-bower-requirejs": "~0.7.0", "grunt-requirejs": "~0.4.0", "grunt-rev": "~0.1.0", "grunt-open": "~0.2.0", "load-grunt-tasks": "~0.1.0", "connect-livereload": "~0.2.0", "time-grunt": "~0.2.1", "jshint-stylish": "~0.1.3" }, "engines": { "node": ">=0.8.0" } }

Page 51: 業務アプリケーションにおけるモダンWeb開発の現状ーHTML5開発って簡単なの?

grunt使い方は

$ npm install --save-dev [プラグイン名] !

新しいプラグインをダウンロードしpackage.jsonにその情報を書き込みます

Page 52: 業務アプリケーションにおけるモダンWeb開発の現状ーHTML5開発って簡単なの?

gruntGruntfile.jsとは?

タスクを定義したファイルです

Page 53: 業務アプリケーションにおけるモダンWeb開発の現状ーHTML5開発って簡単なの?

gruntGruntfile.jsとは?

コマンドがいろいろ定義していますが $ grunt serve $ grunt build $ grunt test これにモックアップ開発用に $ grunt mock

Page 54: 業務アプリケーションにおけるモダンWeb開発の現状ーHTML5開発って簡単なの?

モック開発で効率よく

http://albatrosary.hateblo.jp/entry/2014/02/06/155004

Page 55: 業務アプリケーションにおけるモダンWeb開発の現状ーHTML5開発って簡単なの?

grunt-connect-proxyの構築

$ npm install grunt-connect-proxy --save-dev

connect: { options: { port: SERVER_PORT, hostname: 'localhost' }, livereload: { ・・・ }, /* プロキシサーバの設定 */ proxies: [{ context: '/mockapi', host: 'localhost', port: '3000', https: false, changeOrigin: false }],

Gruntfile.js

Page 56: 業務アプリケーションにおけるモダンWeb開発の現状ーHTML5開発って簡単なの?

grunt-easymockの構築

$ npm install grunt-easymock --save-dev

grunt.initConfig({ yeoman: yeomanConfig, /* easymockの設定 */ easymock: { mockapi: { options: { port: 3000, path: 'server/api-server', config: { routes: [ '/users/:id' ] }, }, }, },

Gruntfile.js

Page 57: 業務アプリケーションにおけるモダンWeb開発の現状ーHTML5開発って簡単なの?

grunt-easymockの構築

ここで「easymock」の次の「mockapi」キーワードが重要 これとproxyで定義したcontextを一致させる !

期待するURLは

/mockapi/users/1

です。

Page 58: 業務アプリケーションにおけるモダンWeb開発の現状ーHTML5開発って簡単なの?

grunt-easymockの構築

easymockをタスクに登録 grunt.task.run([ 'clean:server', 'coffee:dist', 'createDefaultTemplate', 'handlebars', 'compass:server', 'configureProxies', 'connect:livereload', 'open', 'easymock', 'watch' ]);

Page 59: 業務アプリケーションにおけるモダンWeb開発の現状ーHTML5開発って簡単なの?

grunt-easymockの構築

モックサーバを構築するとめんどうなAPIサーバを構築しなくていい

Page 60: 業務アプリケーションにおけるモダンWeb開発の現状ーHTML5開発って簡単なの?

簡単Single-page Application開発!

Page 61: 業務アプリケーションにおけるモダンWeb開発の現状ーHTML5開発って簡単なの?

なるべく簡単Single-page Application開発!

Page 62: 業務アプリケーションにおけるモダンWeb開発の現状ーHTML5開発って簡単なの?

Yeomanを使って効率良くHTML5を作ろう

結構大変だけどね。。

Page 63: 業務アプリケーションにおけるモダンWeb開発の現状ーHTML5開発って簡単なの?

続きはWebで!

Page 64: 業務アプリケーションにおけるモダンWeb開発の現状ーHTML5開発って簡単なの?

続きはWeb306教室で!

Page 65: 業務アプリケーションにおけるモダンWeb開発の現状ーHTML5開発って簡単なの?

ご清聴ありがとうございました