Transcript

Single-page Application

Single-page Application

本日のテーマ

なぜSingle-page Application(SPA)なのか

SPAの通信技術は?

バックエンドは?

JavaScriptフレームワークは?

Single-page Application

Name: !

佐川 夫美雄 @albatrosary

http://albatrosary.hateblo.jp/

html5jエンタープライズ部 副部長 HTML5Expert.jpコントリビュータ Sencha UG

Single-page Application

Single-page Application(SPA)とは

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

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

サーバとのやりとりはRESTやWebSocket等を利用

Single-page Application

RIA(Rich Internet Application)に求められたもの

表現力の高さ:動画や音声などマルチディアの活用が可能で高いデザイン性を持った画面要素の再生機能

を備える デスクトップアプケーションと同等なUI:画面をリフレッシュすることなく、バック

エンドでサーバーとデータの送受信が可能 ユーザーエクスペリエンス:ユーザーの操作が即座にレスポンスされ、表示される画面の情報が

操作に応じて随時変化するようなインタラクティブな操作性を実現

Single-page Application

RIAの衰退

2010年にSteve JobsがFlashを激しく批判

プロプライエタリよりオープン性のあるHTML5を推進!

2011年MicrosoftはWeb開発者に対するSilverlight戦略を後退

AdobeもモバイルFlashの開発を中止

2014年HTML5正式勧告

Single-page Application

HTML5を使えばRIAと同等のユーザビリティが可能

Single-page Application

RIAからSPAへ

Single-page Application

待った無しです

Single-page Application

何をすれば良いのか?

JavaScriptフレームワークの導入?

開発環境は?

通信は?

バックエンドは?

HTML5と関係する?

etc

Single-page Application

その答えを今日は出します

Single-page Application

SPAに必要な技術

JavaScriptフレームワーク altJS CSS Preprocessor 開発環境 通信技術 Webアプリケーションなどのバックエンド技術 そしてHTML5

Single-page Application

SPAに必要な技術

JavaScriptフレームワーク altJS CSS Preprocessor 開発環境 通信技術 Webアプリケーションなどのバックエンド技術 そしてHTML5

Single-page Application

SPAに必要なフロントエンド技術

Single-page Application

SPAに必要なフロントエンド技術

Single-page Application

Single-page Application(SPA)の基本的な構造

events

renderchange

REST

Storage

get

set Model Collection

TemplateViewDOM

Single-page Application

jQueryだけの開発はカオス

Single-page Application

JavaScriptフレームワーク

backbone.JS(http://backbonejs.org/)

Angular(http://angularjs.org/)

Sencha(http://www.sencha.com/)

すでにJavaScriptフレームワークは数十種類ある 自分のプロジェクトにあったものを選ぶ

Single-page Application

JavaScriptは危ない言語

Single-page Application

altJS

CoffeeScript

TypeScript

altJSの言語の多くはクラス機構のサポート JavaScriptの抱える問題の多くを解決

Single-page Application

膨大なCSSをどう整理するか

Single-page Application

CSS Preproccessor

Sass + Compass

Less

Stylus

膨大なCSSをどう整理するか

Single-page Application

どうやって開発するの?

Single-page Application

開発環境

Yeoman

Sencha cmd

Single-page Application

SPAに必要なフロントエンド技術(まとめ)

Single-page Application

SPAを開発するには強固なバックエンド技術が必要

Single-page Application

SPAに必要なバックエンド技術

通信

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

Single-page Application

通信技術

REST

WebSocket

SPDY

Single-page Application

Javaで対応

次世代型:クライアントとサーバ間をデータのみで通信し,画面の生

成から表示までをクライアントで行う方式

従来型:サーバ側でデータを埋め込んだ画面を生成し,クライアント

では表示のみを行う方式

基本的にはJavaScriptで多くの処理を行い,以下のような通信技術を利用して,データのみをサーバとやり取りします !JSON 1.0 JAX-RS 2.0 WebSocket 1.0

Single-page Application

SPAのメリット

ページを遷移させてもJavaScriptのグローバル環境が変わらない

WebSocketが有効に使える

Single-page Application

これで安心?

Single-page Application

SPAの懸念

パフォーマンス メモリリーク セキュリティ フレームワークロックイン 設計思想の転換 フロントエンジニア不足

Single-page Application

パフォーマンス

Sencha Touchの開発チームがHTML5で高速に動作するfacebookを開発したことは有名な話

DOMツリーを分離して小さく

TaskQueueで不必要なレイアウト処理を停止

入出力処理はWebWorkersで止めない

Single-page Application

メモリリーク

アプリケーションを使い続けた結果メモリーリークが原因で画面がフリーズするという問題は発生 !

地道に残っている参照にnullを入れがベージコレクションの対象にします

Single-page Application

セキュリティ

業務Webアプリケーションの場合のすべてをhttpsで動かす。

セキュアな環境はSSL-VPNなどを使用し比較的簡単に手に入

れることができる。

Single-page Application

フレームワークロックイン

使わざる終えない

オレオレフレームワークは使わない

そのとき選んだフレームワークが最適だとしても未来永

劫最適ではない

Single-page Application

設計思想の転換

アーキテクチャを理解し重順に対応

Single-page Application

フロントエンジニア不足

JavaScriptエンジニアというよりjQueryエンジニアがほとんど

altJSを使って知識不足を補う

Single-page Application

冷静に対応すれば道は開ける

Single-page Application

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

Single-page Application

参考文献

http://codebrief.com/2012/01/the-top-10-javascript-mvc-frameworks-reviewed/ http://gihyo.jp/news/report/2013/09/1901?page=2 http://new.takyam.com/entry/2012/12/30/2013%E5%B9%B4%E3%81%AFSPA%E3%81%AE%E5%B9%B4%E3%83%BB%E3%83%BB%E3%83%BB%E3%81%AB%E3%81%AA%E3%82%8B%E3%81%A8%E3%81%84%E3%81%84%E3%81%AA%E3%81%81 http://www.johnpapa.net/spa/ http://singlepageappbook.com/index.html

top related