エフスタ 春のIt祭り

81
業務アプリケーションにおける これからのWeb開発 ~ HTML5は簡単か ~

description

 

Transcript of エフスタ 春のIt祭り

Page 1: エフスタ 春のIt祭り

業務アプリケーションにおける これからのWeb開発

!

~ HTML5は簡単か ~

Page 2: エフスタ 春のIt祭り

Profile:

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

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

佐川 夫美雄

Page 3: エフスタ 春のIt祭り

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

Page 4: エフスタ 春のIt祭り

はい!その通り!

Page 5: エフスタ 春のIt祭り

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

Page 6: エフスタ 春のIt祭り

はい!その通り!

Page 7: エフスタ 春のIt祭り

簡単です!

Page 8: エフスタ 春のIt祭り

ほんと?

Page 9: エフスタ 春のIt祭り

HTML CSS

JavaScript

image

HTML5は簡単?

Page 10: エフスタ 春のIt祭り

HTML CSS

JavaScript

Sass Compass

image

HTML5は簡単?

Page 11: エフスタ 春のIt祭り

HTML CSS

JavaScript

Sass

CoffeeScript

Compass

image

HTML5は簡単?

Page 12: エフスタ 春のIt祭り

HTML CSS

JavaScript

Sass

CoffeeScript

backboneunderscore

jQueryrequire

Compass

image

HTML5は簡単?

Page 13: エフスタ 春のIt祭り

HTML CSS

JavaScript

Sass

CoffeeScript

backboneunderscore

jQueryrequire

Compass

image

Yuidoc

HTML5は簡単?

Page 14: エフスタ 春のIt祭り

HTML CSS

JavaScript

Sass

CoffeeScript

backboneunderscore

jQueryrequire

Compass

image imagemin

htmlmincssmin

jsmin

Yuidoc

HTML5は簡単?

Page 15: エフスタ 春のIt祭り

HTML CSS

JavaScript

Sass

CoffeeScript

backboneunderscore

jQueryrequire

Compass

image imagemin

htmlmincssmin

jsmin

mocha chaiテスト

Yuidoc

HTML5は簡単?

Page 16: エフスタ 春のIt祭り

HTML CSS

JavaScript

Sass

CoffeeScript

backboneunderscore

jQueryrequire

Compass

image imagemin

htmlmincssmin

jsmin

mocha chaiテスト

Yuidoc

HTML5は簡単?

easymock

Page 17: エフスタ 春のIt祭り

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

Page 18: エフスタ 春のIt祭り

どこがCSSでしょうか?

Page 19: エフスタ 春のIt祭り

どこがCSSでしょうか?

この色

Page 20: エフスタ 春のIt祭り

どこがCSSでしょうか?

この色

フォントサイズ

Page 21: エフスタ 春のIt祭り

どこがCSSでしょうか?

この色

フォントサイズ

フォントの色

Page 22: エフスタ 春のIt祭り

どこがCSSでしょうか?

この色丸まってるところ

フォントサイズ

フォントの色

Page 23: エフスタ 春のIt祭り

どこがCSSでしょうか?

この色丸まってるところ

フォントサイズ

フォントの色

丸まってるところ

Page 24: エフスタ 春のIt祭り

どこがCSSでしょうか?

この色丸まってるところ

フォントサイズ

このメニュー

フォントの色

丸まってるところ

Page 25: エフスタ 春のIt祭り

こんな風にもなる

縮めてみた

なにこれ・・

Page 26: エフスタ 春のIt祭り

こんな風にもなる

縮めてみた

なにこれ・・

メニューだったりします

Page 27: エフスタ 春のIt祭り

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: エフスタ 春のIt祭り

CSSの中身を覗いてみる

-webkit -moz -ms -o !

って何???

Page 29: エフスタ 春のIt祭り

CSSの中身を覗いてみる

-webkit -moz -ms -o !

って何???

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

Page 30: エフスタ 春のIt祭り

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

Page 31: エフスタ 春のIt祭り

まだ考えることがあります

Page 32: エフスタ 春のIt祭り

WebStorage

Indexed Database API

ブラウザ

Geolocation

Application CacheWebWorker

Web標準技術

Page 33: エフスタ 春のIt祭り

まだまだ考えることがあります

Page 34: エフスタ 春のIt祭り

JavaScriptフレームワークは何を使いますか?

Page 35: エフスタ 春のIt祭り

Single-page Applicationですか?

Page 36: エフスタ 春のIt祭り

altJSは何を使いますか?

Page 37: エフスタ 春のIt祭り

ユニットテストツールは何を使いますか?

Page 38: エフスタ 春のIt祭り

Pre Processorは何を使いますか?

Page 39: エフスタ 春のIt祭り

セキュリティは考えてますか?

Page 40: エフスタ 春のIt祭り

JavaScriptでビジネスロジック書けますか?

Page 41: エフスタ 春のIt祭り

OOCSSでカスケードスタイルシート書けますか?

Page 42: エフスタ 春のIt祭り

レスポンシブデザインを理解してますか?

Page 43: エフスタ 春のIt祭り

UI/UXを理解してますか?

Page 44: エフスタ 春のIt祭り

開発ツールは何を使いますか?

Page 45: エフスタ 春のIt祭り

いまの要員でSingle-page Application作れますか?

Page 46: エフスタ 春のIt祭り

以上を考慮して業務アプリケーションを作ります

Page 47: エフスタ 春のIt祭り

これでもHTML5で業務アプリケーションを作る 技術要素の一部分にすぎません

Page 48: エフスタ 春のIt祭り

開発環境のお話です

Page 49: エフスタ 春のIt祭り

開発環境のおはなし

http://yeoman.io/

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

Page 50: エフスタ 春のIt祭り

Yeoman とは

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

yo(雛形作成ツール)

grunt(タスクランナー)

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

MODERN WORKFLOWS FOR MODERN WEBAPPS

Page 51: エフスタ 春のIt祭り

開発の大まかな流れ

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

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

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

http://yeoman.io/

Page 52: エフスタ 春のIt祭り

これはですね。。

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

Page 53: エフスタ 春のIt祭り

インストールは簡単

使ってみる

$ npm install -g yo

Page 54: エフスタ 春のIt祭り

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

yo雛形作成ツール

Page 55: エフスタ 春のIt祭り

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

!

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

View

ejs Collection Model

HTML

Page 56: エフスタ 春のIt祭り

Single-page Application(SPA)

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

events

renderchange

AjaxStorage

get

setModel

TemplateViewDOM

Page 57: エフスタ 春のIt祭り

$ yo backbone

yo雛形作成ツール

Page 58: エフスタ 春のIt祭り

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

yo

Page 59: エフスタ 春のIt祭り

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

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

Page 60: エフスタ 春のIt祭り

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

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

Page 61: エフスタ 春のIt祭り

bower

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

bower.jsonとは?

Page 62: エフスタ 春のIt祭り

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 63: エフスタ 春のIt祭り

bower

$ bower install !

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

使い方

Page 64: エフスタ 春のIt祭り

bower

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

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

使い方

Page 65: エフスタ 春のIt祭り

gruntタスクランナー

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

Page 66: エフスタ 春のIt祭り

gruntタスクランナー

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

Page 67: エフスタ 春のIt祭り

gruntpackage.jsonとは?

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

Page 68: エフスタ 春のIt祭り

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 69: エフスタ 春のIt祭り

grunt使い方は

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

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

Page 70: エフスタ 春のIt祭り

gruntGruntfile.jsとは?

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

Page 71: エフスタ 春のIt祭り

gruntGruntfile.jsとは?

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

Page 72: エフスタ 春のIt祭り

モック開発で効率よく

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

Page 73: エフスタ 春のIt祭り

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 74: エフスタ 春のIt祭り

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 75: エフスタ 春のIt祭り

grunt-easymockの構築

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

期待するURLは

/mockapi/users/1

です。

Page 76: エフスタ 春のIt祭り

grunt-easymockの構築

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

Page 77: エフスタ 春のIt祭り

grunt-easymockの構築

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

Page 78: エフスタ 春のIt祭り

簡単Single-page Application開発!

Page 79: エフスタ 春のIt祭り

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

Page 80: エフスタ 春のIt祭り

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

結構大変だけどね。。

Page 81: エフスタ 春のIt祭り

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