統合開発yeoman

33
統合開発ツール YEOMAN 佐川 夫美雄 @albatrosary 株式会社ゼノフィ

Upload: fumio-sagawa

Post on 10-May-2015

1.060 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: 統合開発Yeoman

統合開発ツール YEOMAN

佐川 夫美雄 @albatrosary 株式会社ゼノフィ

Page 2: 統合開発Yeoman

佐川 夫美雄

HTML5Expert.jpコントリビュータ HTML5 fun !html5jエンタープライズ部 副部長 html5j Web Platform部 knockoutjs Japan UG(仮) Sencha UG CO-ORGANIZER AngularJS Japan User Group

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

(Fumio SAGAWA)

Page 3: 統合開発Yeoman

開発環境のおはなし

http://yeoman.io/

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

Page 4: 統合開発Yeoman

Yeoman とは

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

yo(雛形作成ツール)

grunt(タスクランナー)

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

MODERN WORKFLOWS FOR MODERN WEBAPPS

Page 5: 統合開発Yeoman

開発の大まかな流れ

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

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

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

http://yeoman.io/

Page 6: 統合開発Yeoman

これはですね。。

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

Page 7: 統合開発Yeoman

インストールは簡単

使ってみる

$ npm install -g yo

Page 8: 統合開発Yeoman

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

yo雛形作成ツール

Page 9: 統合開発Yeoman

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

!

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

View

ejs Collection Model

HTML

Page 10: 統合開発Yeoman

Single-page Application(SPA)

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

events

renderchange

AjaxStorage

get

setModel

TemplateViewDOM

Page 11: 統合開発Yeoman

$ yo backbone

yo雛形作成ツール

Page 12: 統合開発Yeoman

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

yo

Page 13: 統合開発Yeoman

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

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

Page 14: 統合開発Yeoman

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

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

Page 15: 統合開発Yeoman

bower

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

bower.jsonとは?

Page 16: 統合開発Yeoman

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 17: 統合開発Yeoman

bower

$ bower install !

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

使い方

Page 18: 統合開発Yeoman

bower

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

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

使い方

Page 19: 統合開発Yeoman

gruntタスクランナー

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

Page 20: 統合開発Yeoman

gruntタスクランナー

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

Page 21: 統合開発Yeoman

gruntpackage.jsonとは?

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

Page 22: 統合開発Yeoman

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 23: 統合開発Yeoman

grunt使い方は

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

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

Page 24: 統合開発Yeoman

gruntGruntfile.jsとは?

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

Page 25: 統合開発Yeoman

gruntGruntfile.jsとは?

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

Page 26: 統合開発Yeoman

モック開発で効率よく

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

Page 27: 統合開発Yeoman

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 28: 統合開発Yeoman

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 29: 統合開発Yeoman

grunt-easymockの構築

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

期待するURLは

/mockapi/users/1

です。

Page 30: 統合開発Yeoman

grunt-easymockの構築

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

Page 31: 統合開発Yeoman

grunt-easymockの構築

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

Page 32: 統合開発Yeoman

簡単Single-page Application開発!

Page 33: 統合開発Yeoman

Thanks.