業務アプリケーションにおけるこれからのweb開発@osc.京都

71
佐川 夫美雄@albatrosary 2014/8/2(土) オープンソースカンファレンス@京都

Upload: fumio-sagawa

Post on 15-Jan-2015

622 views

Category:

Technology


8 download

DESCRIPTION

 

TRANSCRIPT

Page 1: 業務アプリケーションにおけるこれからのWeb開発@osc.京都

佐川 夫美雄@albatrosary 2014/8/2(土) オープンソースカンファレンス@京都

Page 2: 業務アプリケーションにおけるこれからのWeb開発@osc.京都

佐川 夫美雄

HTML5 Experts.jp エキスパート html5jエンタープライズ部(副部長) html5j Web Platform部(メンバー) AngularJS Japan User Group(メンバー) Sencha UG(CO-ORGANIZER)

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

(Fumio SAGAWA)

Page 3: 業務アプリケーションにおけるこれからのWeb開発@osc.京都

HTML5 Experts

http://html5exprts.jp/

Page 4: 業務アプリケーションにおけるこれからのWeb開発@osc.京都

業務Webアプリケーション

http://html5experts.jp/albatrosary/3191/

Page 5: 業務アプリケーションにおけるこれからのWeb開発@osc.京都

アジェンダ

HTML5の歩みと方向性 Web開発の現状 YEOMAN JavaScriptフレームワーク ちょっと将来 Web標準(Web Components/Oo()) 未来 Webプラットフォーム(ハイブリットの役割) FirefoxOS

Page 6: 業務アプリケーションにおけるこれからのWeb開発@osc.京都

アジェンダ

HTML5の歩みと方向性 Web開発の現状 YEOMAN JavaScriptフレームワーク ちょっと将来 Web標準(Web Components/Oo()) 未来 Webプラットフォーム(ハイブリットの役割) FirefoxOS

Page 7: 業務アプリケーションにおけるこれからのWeb開発@osc.京都

HTML5が2014年に正式勧告

Page 8: 業務アプリケーションにおけるこれからのWeb開発@osc.京都

歴史SGML(standard Generalized Markup Language) 1986年

HTML(HyperText Markup Language) 1989年

HTML 4.0(HyperText Markup Language) 1997年

XML(eXtensible Markup Language) 1998年

XHTML(eXtensible HyperText Markup Language) 2000年

HTML 5.0(HyperText Markup Language) 2012年

CSS 1 1996年

CSS 2 1998年

CSS 2.1 2004年

CSS 3 2011年

HTTP 1.1 1999年

HTTP 1.0 1996年

HTTP 0.9 1993年

SPDY 2011年

XHTML 2.0(eXtensible HyperText Markup Language) 2010年

HTTP 2(draft) 2012年

Page 9: 業務アプリケーションにおけるこれからのWeb開発@osc.京都

Rich Internet Application

Adobe Air Adobe Flash Microsoft Silverlight DHTML

Page 10: 業務アプリケーションにおけるこれからのWeb開発@osc.京都

特徴

表現力の高さ

デスクトップアプケーションと同等なUI

ユーザーエクスペリエンス

Page 11: 業務アプリケーションにおけるこれからのWeb開発@osc.京都

2010年 Steve JobsがFlashを批判

2011年 Silverlight後退/

モバイルFlash開発中止

Page 12: 業務アプリケーションにおけるこれからのWeb開発@osc.京都

Web標準

プロプライエタリより

オープン性のあるHTML5

Page 13: 業務アプリケーションにおけるこれからのWeb開発@osc.京都

HTML5の方向性

Webのプラットフォーム化

Elements Offline Web Application

Application Cache Web Strage Indexed Database File API

Network WebSocket SPDY

Web Workers

マルチメディア対応 video audio canvas SVG WebGL

Page 14: 業務アプリケーションにおけるこれからのWeb開発@osc.京都

elementsHTML4 HTML5

Page 15: 業務アプリケーションにおけるこれからのWeb開発@osc.京都

マルチメディア

プラグイン無し

Page 16: 業務アプリケーションにおけるこれからのWeb開発@osc.京都

audio オーディオを再生する controls オーディオコントロールの表示 autoplay 自動再生 loop 繰り返し実行

source メディアリソース src リソース type メディア型

Page 17: 業務アプリケーションにおけるこれからのWeb開発@osc.京都

SVGScalable Vector Graphics

SVGはHTML5とは独自企画

HTML5普及と共にサポート

Page 18: 業務アプリケーションにおけるこれからのWeb開発@osc.京都

D3.jsData Driven Decument

http://d3js.org/

Page 19: 業務アプリケーションにおけるこれからのWeb開発@osc.京都

Canvas

グラフを書く

写真を合成する

アニメーション

Page 20: 業務アプリケーションにおけるこれからのWeb開発@osc.京都

WebGL

3DCGプログラミングを実現

Page 21: 業務アプリケーションにおけるこれからのWeb開発@osc.京都

WebGLは難しい

WebGLを利用するための手順

3DCGプログラミングの基礎知識

行列やベクトルといった知識

学習コストが高い

Page 22: 業務アプリケーションにおけるこれからのWeb開発@osc.京都

重要な要素

シーン 作成する3Dの世界

カメラ シーンの状態を撮影する

光源 光の当て方

物体 撮影するもの

Page 23: 業務アプリケーションにおけるこれからのWeb開発@osc.京都

シーン

Page 24: 業務アプリケーションにおけるこれからのWeb開発@osc.京都

カメラ

fov 画角 aspect 撮影結果の縦横比 near ニアークリップ:nearより近い領域は表示されない far ファークリップ:farより遠い領域は表示されない

Page 25: 業務アプリケーションにおけるこれからのWeb開発@osc.京都

光源

Page 26: 業務アプリケーションにおけるこれからのWeb開発@osc.京都

物体

ジオメトリー(形状)とマテリアル(表面素材)を用意した上で、メッシュ(物体)を作成

Page 27: 業務アプリケーションにおけるこれからのWeb開発@osc.京都

完成

Page 28: 業務アプリケーションにおけるこれからのWeb開発@osc.京都

Three.jsWebGLのラッパーライブラリ

http://threejs.org/

Page 29: 業務アプリケーションにおけるこれからのWeb開発@osc.京都

WebGLプログラミング

http://html5experts.jp/yomotsu/5225/

Page 30: 業務アプリケーションにおけるこれからのWeb開発@osc.京都

アジェンダ

HTML5の歩みと方向性 Web開発の現状 YEOMAN JavaScriptフレームワーク ちょっと将来 Web標準(Web Components/Oo()) 未来 Webプラットフォーム(ハイブリットの役割) FirefoxOS

Page 31: 業務アプリケーションにおけるこれからのWeb開発@osc.京都

技術要素

JavaScriptフレームワーク

altJS

CSS Preprocessor

開発環境

通信技術

バックエンド

Page 32: 業務アプリケーションにおけるこれからのWeb開発@osc.京都

モダンWebアプリケーションアーキテクチャ

Controller

Browser

HTML JavaScript

アプリケーションサーバ RDBMS

Business Logic O/RPOJO

1. HTMLで作成された画面を表示 2. 必要な情報をAjaxにおいてXMLHttpRequestで非同期にJSONでサーバへ送信

3. サーバでは受け取った情報(JSON)をPOJOへ変換し登録・更新などの処理を行う

4. 表示データはJSONでクライアントへ画面へ表示

Page 33: 業務アプリケーションにおけるこれからのWeb開発@osc.京都

Old Web vs Multi-Deviace Architectures

Page Display

Page Generation

Logic & State

Data

Integration

User Interface

Interface Management

Logic & State

Data

Integration

APIs

Native & HTML5

Browser

App Server

Page 34: 業務アプリケーションにおけるこれからのWeb開発@osc.京都

Single-page Application

単一ページによるWebアプリケーション

ページはDOMの操作による切替え

サーバとのやりとりはRESTやWebSocket等

Page 35: 業務アプリケーションにおけるこれからのWeb開発@osc.京都

HTML CSS

JavaScript

image

Page 36: 業務アプリケーションにおけるこれからのWeb開発@osc.京都

HTML CSS

JavaScript

Sass Compass

image

Page 37: 業務アプリケーションにおけるこれからのWeb開発@osc.京都

HTML CSS

JavaScript

Sass

CoffeeScript

Compass

image

Page 38: 業務アプリケーションにおけるこれからのWeb開発@osc.京都

HTML CSS

JavaScript

Sass

CoffeeScript

backboneunderscore

jQueryrequire

Compass

image

Page 39: 業務アプリケーションにおけるこれからのWeb開発@osc.京都

HTML CSS

JavaScript

Sass

CoffeeScript

backboneunderscore

jQueryrequire

Compass

image

Yuidoc

Page 40: 業務アプリケーションにおけるこれからのWeb開発@osc.京都

HTML CSS

JavaScript

Sass

CoffeeScript

backboneunderscore

jQueryrequire

Compass

image imagemin

htmlmincssmin

jsmin

Yuidoc

Page 41: 業務アプリケーションにおけるこれからのWeb開発@osc.京都

HTML CSS

JavaScript

Sass

CoffeeScript

backboneunderscore

jQueryrequire

Compass

image imagemin

htmlmincssmin

jsmin

mocha chaiテスト

Yuidoc

Page 42: 業務アプリケーションにおけるこれからのWeb開発@osc.京都

HTML CSS

JavaScript

Sass

CoffeeScript

backboneunderscore

jQueryrequire

Compass

image imagemin

htmlmincssmin

jsmin

mocha chaiテスト

Yuidoc

easymock

Page 43: 業務アプリケーションにおけるこれからのWeb開発@osc.京都

http://yeoman.io/

Page 44: 業務アプリケーションにおけるこれからのWeb開発@osc.京都

YEOMAN

http://yeoman.io/

Page 45: 業務アプリケーションにおけるこれからのWeb開発@osc.京都

Web開発のscaffolding

Page 46: 業務アプリケーションにおけるこれからのWeb開発@osc.京都

YEOMANワークフロー

yo 雛形作成ツール bower フロントエンドパッケージマネージャ grunt タスクランナー

Page 47: 業務アプリケーションにおけるこれからのWeb開発@osc.京都

特徴

テンプレートがそろってる

Web開発に必要なツールがたくさんある

lint,hint,ビルド,テストが行える

html,css,js,画像をminifyしてくれる

まだまだ色々あります

Page 48: 業務アプリケーションにおけるこれからのWeb開発@osc.京都

OFFICIAL GENERATORS 20

COMMUNITY GENERATORS 782

Page 49: 業務アプリケーションにおけるこれからのWeb開発@osc.京都

パッケージマネージャ

Twitter, opne-source community

bower.jsonで設定管理

Page 50: 業務アプリケーションにおけるこれからのWeb開発@osc.京都

Bower Packages 13,178

Page 51: 業務アプリケーションにおけるこれからのWeb開発@osc.京都

JavaScriptラスクランナー

package.jsonで設定管理

Gruntfile.jsでタスクを定義

Page 52: 業務アプリケーションにおけるこれからのWeb開発@osc.京都

Grunt plugin 2,990

Page 53: 業務アプリケーションにおけるこれからのWeb開発@osc.京都

使い始めるのは簡単

1. nodejsをインストール

2. npm install -g yo

git、ruby、compassを入れておくといいよ

Page 54: 業務アプリケーションにおけるこれからのWeb開発@osc.京都

これだけ覚える

$ npm install -g generator-hoge $ mkdir my-hoge-app && cd $_ $ yo hoge $ grunt serve $ grunt build

Page 55: 業務アプリケーションにおけるこれからのWeb開発@osc.京都

AngularJS

https://angularjs.org/

Page 56: 業務アプリケーションにおけるこれからのWeb開発@osc.京都

特徴

・双方向バインディング ・テンプレートとしてのHTML ・再利用可能なコンポーネント ・ビューとルーティング ・テストとテストのしやすさ

Page 57: 業務アプリケーションにおけるこれからのWeb開発@osc.京都

得意なところ

・CRUD系のアプリケーション ・管理画面、マイページ ・1ページで完結するアプリケーション

Page 58: 業務アプリケーションにおけるこれからのWeb開発@osc.京都

不得意なところ

・モバイル向けアプリケーション ・ゲームなどで使うグラフィック系、エフェクト系

Page 59: 業務アプリケーションにおけるこれからのWeb開発@osc.京都

Model View Whatever

Page 60: 業務アプリケーションにおけるこれからのWeb開発@osc.京都

アジェンダ

HTML5の歩みと方向性 Web開発の現状 YEOMAN JavaScriptフレームワーク ちょっと将来 Web標準(Web Components/Oo()) 未来 Webプラットフォーム(ハイブリットの役割) FirefoxOS

Page 61: 業務アプリケーションにおけるこれからのWeb開発@osc.京都

Web Components

Custom Elements Template Import Shadow DOM

HTMLをコンポーネント化するための仕組み

Page 62: 業務アプリケーションにおけるこれからのWeb開発@osc.京都

Custom Elements

独自要素(タグ)を定義 !

<x-component></x-component>

Page 63: 業務アプリケーションにおけるこれからのWeb開発@osc.京都

Template

HTMLをテンプレート化する !

<template> <div>Template used</div> <div>hoge</div> <style> div { font-size: 20px; } </style> </template>

Page 64: 業務アプリケーションにおけるこれからのWeb開発@osc.京都

Import

外部Templasteを取り込む !

<link rel="import" href="x-component.html">

Page 65: 業務アプリケーションにおけるこれからのWeb開発@osc.京都

Shadow DOM

DOMツリーのカプセル化問題を解決

Page 66: 業務アプリケーションにおけるこれからのWeb開発@osc.京都

AngularJSとCustum Elements

Custom Elements Directive(ng-) Template Template Import $routeProvider Shadow DOM -

Page 67: 業務アプリケーションにおけるこれからのWeb開発@osc.京都

Object.observe()

JavaScriptオブジェクトの変更を監視

ECMAScript 標準

Page 68: 業務アプリケーションにおけるこれからのWeb開発@osc.京都

AngularJSとObject.observe()

$watch !

監視(Observe)したいオブジェクトやプロパティが変化するのを監視し実行する(リスナー)

Page 69: 業務アプリケーションにおけるこれからのWeb開発@osc.京都

アジェンダ

HTML5の歩みと方向性 Web開発の現状 YEOMAN JavaScriptフレームワーク ちょっと将来 Web標準(Web Components/Oo()) 未来 Webプラットフォーム(ハイブリットの役割) FirefoxOS

Page 70: 業務アプリケーションにおけるこれからのWeb開発@osc.京都

続きは展示会場で!

Page 71: 業務アプリケーションにおけるこれからのWeb開発@osc.京都

Thanks