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

74
佐川 夫美雄@albatrosary 2014/7/5(土) オープンソースカンファレンス@名古屋

Upload: fumio-sagawa

Post on 15-Jan-2015

6.696 views

Category:

Technology


10 download

DESCRIPTION

 

TRANSCRIPT

Page 1: 業務アプリケーションにおけるこれからのWeb開発@OSC.名古屋

佐川 夫美雄@albatrosary 2014/7/5(土) オープンソースカンファレンス@名古屋

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.名古屋

業務Webアプリケーション

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

Page 4: 業務アプリケーションにおけるこれからのWeb開発@OSC.名古屋

HTML5が2014年に正式勧告

Page 5: 業務アプリケーションにおけるこれからの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 6: 業務アプリケーションにおけるこれからのWeb開発@OSC.名古屋

空白の時代

Webアプリケーションを

リッチにしてきたもの

Page 7: 業務アプリケーションにおけるこれからのWeb開発@OSC.名古屋

Rich Internet Application

Page 8: 業務アプリケーションにおけるこれからのWeb開発@OSC.名古屋

Rich Internet Application

表現力の高さ

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

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

Page 9: 業務アプリケーションにおけるこれからのWeb開発@OSC.名古屋

2010年 Steve JobsがFlashを批判

2011年 Silverlight後退/

モバイルFlash開発中止

Page 10: 業務アプリケーションにおけるこれからのWeb開発@OSC.名古屋

プロプライエタリより

オープン性のあるHTML5

Page 11: 業務アプリケーションにおけるこれからのWeb開発@OSC.名古屋

Webのプラットフォーム化

Page 12: 業務アプリケーションにおけるこれからの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 13: 業務アプリケーションにおけるこれからのWeb開発@OSC.名古屋

elementsHTML4 HTML5

Page 14: 業務アプリケーションにおけるこれからのWeb開発@OSC.名古屋

inputタイプの種類

カレンダーやデートピッカー 月の入力 週の入力 時刻の入力 詳細な日時や時刻の入力 自分のいる地域の日付と時刻

検索ボックス スピンボックス スライダ カラーピッカー 電話番号 Webページのアドレス メールアドレス

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.名古屋

Webなのに

Offline Web Application

Page 31: 業務アプリケーションにおけるこれからのWeb開発@OSC.名古屋

Application Cache

Web Storage

Indexed Database API

File API

Page 32: 業務アプリケーションにおけるこれからのWeb開発@OSC.名古屋

ここまでのまとめ

Webを標準化することで

難しい技術が扱いやすくなる

Page 33: 業務アプリケーションにおけるこれからのWeb開発@OSC.名古屋

業務アプリケーションの開発は?

Page 34: 業務アプリケーションにおけるこれからのWeb開発@OSC.名古屋

技術要素

JavaScriptフレームワーク

altJS

CSS Preprocessor

開発環境

通信技術

バックエンド

Page 35: 業務アプリケーションにおけるこれからのWeb開発@OSC.名古屋

モダンWebアプリケーション

Controller

Browser

HTML JavaScript

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

Business Logic O/RPOJO

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

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

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

Page 36: 業務アプリケーションにおけるこれからの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 37: 業務アプリケーションにおけるこれからのWeb開発@OSC.名古屋

Interface Elements

Server I/O

Logic & Data

View System

Basic Widgets buttons, bars, test fields…

Containers panels, cards, modals…

Layout Manager absolute, flexible

Templationg iterations, conditionals

Compound Widgets trees, grids, gauges…

Themes

Visualizations charts, infographics

Styles

Visual Effects animations, filters…

Localization RTL, local libraries

Accessibility focus manager, ARIA…

Interactions gestures, drag & drop

Drawing vector, bitmap

Theming computed styles

State Manager history, undo, routes

Data Objects queues, hoshtables

Data Models & Stores group, sort, validate

Persistent Data cache & sync

Mulitimedia 3D, audio, video

Data Binding 1-way, 2-way

Modularity components, modules

Testing IOC, test hooks

Server Calls asynch, conversion

Server Method Invocation 2-Way Data Server Notifications

Page 38: 業務アプリケーションにおけるこれからのWeb開発@OSC.名古屋

Single-page Application

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

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

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

Page 39: 業務アプリケーションにおけるこれからのWeb開発@OSC.名古屋

HTML CSS

JavaScript

image

Page 40: 業務アプリケーションにおけるこれからのWeb開発@OSC.名古屋

HTML CSS

JavaScript

Sass Compass

image

Page 41: 業務アプリケーションにおけるこれからのWeb開発@OSC.名古屋

HTML CSS

JavaScript

Sass

CoffeeScript

Compass

image

Page 42: 業務アプリケーションにおけるこれからのWeb開発@OSC.名古屋

HTML CSS

JavaScript

Sass

CoffeeScript

backboneunderscore

jQueryrequire

Compass

image

Page 43: 業務アプリケーションにおけるこれからのWeb開発@OSC.名古屋

HTML CSS

JavaScript

Sass

CoffeeScript

backboneunderscore

jQueryrequire

Compass

image

Yuidoc

Page 44: 業務アプリケーションにおけるこれからのWeb開発@OSC.名古屋

HTML CSS

JavaScript

Sass

CoffeeScript

backboneunderscore

jQueryrequire

Compass

image imagemin

htmlmincssmin

jsmin

Yuidoc

Page 45: 業務アプリケーションにおけるこれからのWeb開発@OSC.名古屋

HTML CSS

JavaScript

Sass

CoffeeScript

backboneunderscore

jQueryrequire

Compass

image imagemin

htmlmincssmin

jsmin

mocha chaiテスト

Yuidoc

Page 46: 業務アプリケーションにおけるこれからのWeb開発@OSC.名古屋

HTML CSS

JavaScript

Sass

CoffeeScript

backboneunderscore

jQueryrequire

Compass

image imagemin

htmlmincssmin

jsmin

mocha chaiテスト

Yuidoc

easymock

Page 47: 業務アプリケーションにおけるこれからのWeb開発@OSC.名古屋

http://yeoman.io/

Page 48: 業務アプリケーションにおけるこれからのWeb開発@OSC.名古屋

YEOMAN

http://yeoman.io/

Page 49: 業務アプリケーションにおけるこれからのWeb開発@OSC.名古屋

YEOMANワークフロー

Page 50: 業務アプリケーションにおけるこれからのWeb開発@OSC.名古屋

いいところ

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

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

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

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

まだまだ色々あります

Page 51: 業務アプリケーションにおけるこれからのWeb開発@OSC.名古屋

yo 雛形作成ツール

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

grunt タスクランナー

Page 52: 業務アプリケーションにおけるこれからのWeb開発@OSC.名古屋

つまりYEOMANというのは

Web開発のscaffolding

scaffoldingとは、1(建築現場などの)足場/2[集合的に] 足場材料

Page 53: 業務アプリケーションにおけるこれからのWeb開発@OSC.名古屋

使い始めるのは簡単!

1. nodejsをインストール

2. npm install -g yo

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

Page 54: 業務アプリケーションにおけるこれからのWeb開発@OSC.名古屋

scaffoldingツール

多くのgenerator

Page 55: 業務アプリケーションにおけるこれからのWeb開発@OSC.名古屋

OFFICIAL GENERATORS 20

COMMUNITY GENERATORS 782

Page 56: 業務アプリケーションにおけるこれからのWeb開発@OSC.名古屋

パッケージマネージャ

Twitter, opne-source community

bower.jsonで設定管理

Page 57: 業務アプリケーションにおけるこれからのWeb開発@OSC.名古屋

Bower Packages 13,178

Page 58: 業務アプリケーションにおけるこれからのWeb開発@OSC.名古屋

JavaScriptラスクランナー

package.jsonで設定管理

Gruntfile.jsでタスクを定義

Page 59: 業務アプリケーションにおけるこれからのWeb開発@OSC.名古屋

Grunt plugin 2,990

Page 60: 業務アプリケーションにおけるこれからのWeb開発@OSC.名古屋

generator

bower.jsonGruntfile.json

package.json

Node Packager Managergithub

Page 61: 業務アプリケーションにおけるこれからのWeb開発@OSC.名古屋

これだけ覚える

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

Page 62: 業務アプリケーションにおけるこれからのWeb開発@OSC.名古屋

イカしてるだろ?

Page 63: 業務アプリケーションにおけるこれからのWeb開発@OSC.名古屋

AngularJS

https://angularjs.org/

Page 64: 業務アプリケーションにおけるこれからのWeb開発@OSC.名古屋

特徴

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

Page 65: 業務アプリケーションにおけるこれからのWeb開発@OSC.名古屋

得意なところ

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

Page 66: 業務アプリケーションにおけるこれからのWeb開発@OSC.名古屋

不得意なところ

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

Page 67: 業務アプリケーションにおけるこれからのWeb開発@OSC.名古屋

Model View Whatever

Page 68: 業務アプリケーションにおけるこれからのWeb開発@OSC.名古屋

Angular UI

http://angular-ui.github.io/

Page 69: 業務アプリケーションにおけるこれからのWeb開発@OSC.名古屋

Onsen UI

http://onsenui.io/

Page 70: 業務アプリケーションにおけるこれからのWeb開発@OSC.名古屋

html5jエンタープライズ部AngularJS+bootstrap+Application Cache

http://www.html5biz.org/

Page 71: 業務アプリケーションにおけるこれからのWeb開発@OSC.名古屋

と、色々お話しましたが

Page 72: 業務アプリケーションにおけるこれからのWeb開発@OSC.名古屋

どうでもいいから

とにかく触ってみようぜ!

by Angularな人たち

Page 73: 業務アプリケーションにおけるこれからのWeb開発@OSC.名古屋

続きは展示会場で!

Page 74: 業務アプリケーションにおけるこれからのWeb開発@OSC.名古屋

Thanks