開業会員・法人社員名簿...開業会員・法人社員名簿 H27.1.31付 登録番号 名称 事務所名称 事務所郵便番号事務所所在地 事務所Tel 13970271
業務アプリケーションにおけるこれからのWeb開発
-
Upload
fumio-sagawa -
Category
Technology
-
view
883 -
download
3
description
Transcript of 業務アプリケーションにおけるこれからのWeb開発
![Page 1: 業務アプリケーションにおけるこれからのWeb開発](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b74f764a79596e388b473a/html5/thumbnails/1.jpg)
業務アプリケーションにおける これからのWeb開発
2014/5/24 オープンソースカンファレンス・沖縄Fumio SAGAWA@albatrosary
![Page 2: 業務アプリケーションにおけるこれからのWeb開発](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b74f764a79596e388b473a/html5/thumbnails/2.jpg)
佐川 夫美雄
HTML5Expert.jpコントリビュータ HTML5 fun !html5jエンタープライズ部 副部長 html5j Web Platform部 KnockoutJS Japan User Group Sencha UG CO-ORGANIZER AngularJS Japan User Group
http://albatrosary.hateblo.jp/ http://html5experts.jp/albatrosary/
(Fumio SAGAWA)
![Page 3: 業務アプリケーションにおけるこれからのWeb開発](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b74f764a79596e388b473a/html5/thumbnails/3.jpg)
HTML5が2014年に正式勧告
![Page 4: 業務アプリケーションにおけるこれからのWeb開発](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b74f764a79596e388b473a/html5/thumbnails/4.jpg)
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年
Webの歴史
![Page 5: 業務アプリケーションにおけるこれからのWeb開発](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b74f764a79596e388b473a/html5/thumbnails/5.jpg)
タグの話
![Page 6: 業務アプリケーションにおけるこれからのWeb開発](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b74f764a79596e388b473a/html5/thumbnails/6.jpg)
HTML4 HTML5
どう変わるか
![Page 7: 業務アプリケーションにおけるこれからのWeb開発](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b74f764a79596e388b473a/html5/thumbnails/7.jpg)
カレンダーやデートピッカー 月の入力 週の入力 時刻の入力 詳細な日時や時刻の入力 自分のいる地域の日付と時刻
inputタイプの種類
検索ボックス スピンボックス スライダ カラーピッカー 電話番号 Webページのアドレス メールアドレス
![Page 8: 業務アプリケーションにおけるこれからのWeb開発](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b74f764a79596e388b473a/html5/thumbnails/8.jpg)
ブラウザはどうなっているか
![Page 9: 業務アプリケーションにおけるこれからのWeb開発](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b74f764a79596e388b473a/html5/thumbnails/9.jpg)
http://html5test.com/
ブラウザ
![Page 10: 業務アプリケーションにおけるこれからのWeb開発](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b74f764a79596e388b473a/html5/thumbnails/10.jpg)
HTML5と通信
![Page 11: 業務アプリケーションにおけるこれからのWeb開発](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b74f764a79596e388b473a/html5/thumbnails/11.jpg)
より早く双方向に
![Page 12: 業務アプリケーションにおけるこれからのWeb開発](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b74f764a79596e388b473a/html5/thumbnails/12.jpg)
クライアントとサーバが接続し続ける 双方向通信
WebSocket
![Page 13: 業務アプリケーションにおけるこれからのWeb開発](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b74f764a79596e388b473a/html5/thumbnails/13.jpg)
既存のHTTPを拡張 複数のリクエストを送受信することが可能
![Page 14: 業務アプリケーションにおけるこれからのWeb開発](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b74f764a79596e388b473a/html5/thumbnails/14.jpg)
Geolocation
![Page 15: 業務アプリケーションにおけるこれからのWeb開発](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b74f764a79596e388b473a/html5/thumbnails/15.jpg)
Geolocation
Geolocation APIによる位置情報通知
![Page 16: 業務アプリケーションにおけるこれからのWeb開発](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b74f764a79596e388b473a/html5/thumbnails/16.jpg)
Geolocation
https://developers.google.com/maps/documentation/javascript/examples/map-geolocation?hl=ja
![Page 17: 業務アプリケーションにおけるこれからのWeb開発](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b74f764a79596e388b473a/html5/thumbnails/17.jpg)
Webなのに Offline Web Application
![Page 18: 業務アプリケーションにおけるこれからのWeb開発](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b74f764a79596e388b473a/html5/thumbnails/18.jpg)
Application Cache Web Strage Indexed Databace API File API
![Page 19: 業務アプリケーションにおけるこれからのWeb開発](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b74f764a79596e388b473a/html5/thumbnails/19.jpg)
キーと値でブラウザにデータを保持 するデータベース
Indexed Database API
![Page 20: 業務アプリケーションにおけるこれからのWeb開発](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b74f764a79596e388b473a/html5/thumbnails/20.jpg)
クッキーを巨大にしたkey/Valueの入れ物
WebStorage
![Page 21: 業務アプリケーションにおけるこれからのWeb開発](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b74f764a79596e388b473a/html5/thumbnails/21.jpg)
Application Cache
ユーザーがオフラインのときでもサイトにアクセス
![Page 22: 業務アプリケーションにおけるこれからのWeb開発](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b74f764a79596e388b473a/html5/thumbnails/22.jpg)
HTML5が注目される訳
![Page 23: 業務アプリケーションにおけるこれからのWeb開発](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b74f764a79596e388b473a/html5/thumbnails/23.jpg)
Rich Internet Applicationの衰退
2010年 Steve JobsがFlashを激しく批判
プロプライエタリよりオープン性のあるHTML5を推進!
2011年 MicrosoftはWeb開発者に対するSilverlight戦略を後退
AdobeもモバイルFlashの開発を中止
2014年 HTML5正式勧告
![Page 24: 業務アプリケーションにおけるこれからのWeb開発](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b74f764a79596e388b473a/html5/thumbnails/24.jpg)
Rich Internet Applicationに求められたもの
表現力の高さ:動画や音声などマルチディアの活用が可能で高いデザイン性を持った画面要素の再生機能
を備える デスクトップアプケーションと同等なUI:画面をリフレッシュすることなく、バック
エンドでサーバーとデータの送受信が可能 ユーザーエクスペリエンス:ユーザーの操作が即座にレスポンスされ、表示される画面の情報が
操作に応じて随時変化するようなインタラクティブな操作性を実現
![Page 25: 業務アプリケーションにおけるこれからのWeb開発](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b74f764a79596e388b473a/html5/thumbnails/25.jpg)
HTML5を使えばRIAと同等のユーザビリティが可能
![Page 26: 業務アプリケーションにおけるこれからのWeb開発](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b74f764a79596e388b473a/html5/thumbnails/26.jpg)
Javaで対応
次世代型のWebアプリケーションでは、基本的にはJavaScriptで多くの処理を行い、次のような通信技術を利用して、データのみをサーバとやり取りします。 !
JSON 1.0 JAX-RS 2.0 WebSocket 1.0
![Page 27: 業務アプリケーションにおけるこれからのWeb開発](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b74f764a79596e388b473a/html5/thumbnails/27.jpg)
Controller
JSP
Browser
HTML JavaScript
アプリケーションサーバ RDBMS
Business Logic O/RPOJO
従来型のWebアプリケーション
1. リクエストをサーバへ送りControllerへ 2. Controllerは必要な情報を POJO → Business Logic →O/Rマッパー → Database で取得(登録・更新) 3. ページをjspで生成しController経由でクライアントへ返却 4. 各ページではAjaxにより部分的な情報の取得
![Page 28: 業務アプリケーションにおけるこれからのWeb開発](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b74f764a79596e388b473a/html5/thumbnails/28.jpg)
次世代型のWebアプリケーション
1. HTMLで作成された画面を表示 2. 必要な情報をAjaxにおいてXMLHttpRequestで非同期にJSONでサーバへ送信
3. サーバでは受け取った情報(JSON)をPOJOへ変換し登録・更新などの処理を行う
4. 表示データはJSONでクライアントへ画面へ表示
Controller
Browser
HTML JavaScript
アプリケーションサーバ RDBMS
Business Logic O/RPOJO
![Page 29: 業務アプリケーションにおけるこれからのWeb開発](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b74f764a79596e388b473a/html5/thumbnails/29.jpg)
Java
RIASingle-page Application
![Page 30: 業務アプリケーションにおけるこれからのWeb開発](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b74f764a79596e388b473a/html5/thumbnails/30.jpg)
Single-page Application(SPA)
単一ページによるWebアプリケーション ページはDOMの操作により切り替える サーバとのやりとりはAjaxやWebSocket等を利用
events
renderchange
Ajax
get
setModel
TemplateViewDOM
![Page 31: 業務アプリケーションにおけるこれからのWeb開発](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b74f764a79596e388b473a/html5/thumbnails/31.jpg)
HTML5をどう利用するか
![Page 32: 業務アプリケーションにおけるこれからのWeb開発](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b74f764a79596e388b473a/html5/thumbnails/32.jpg)
SPAに必要な技術
JavaScriptフレームワーク altJS CSS Preprocessor 開発環境 通信技術 Webアプリケーションなどのバックエンド技術
![Page 33: 業務アプリケーションにおけるこれからのWeb開発](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b74f764a79596e388b473a/html5/thumbnails/33.jpg)
JavaScriptフレームワーク
http://backbonejs.org/
http://angularjs.org/
http://www.sencha.com/
すでにJavaScriptフレームワークは数十種類ある 自分のプロジェクトにあったものを選ぶ
http://knockoutjs.com/
![Page 34: 業務アプリケーションにおけるこれからのWeb開発](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b74f764a79596e388b473a/html5/thumbnails/34.jpg)
altJS
http://coffeescript.org/2009年
http://www.typescriptlang.org/2012年
http://html5experts.jp/clockmaker/2183/
altJSの言語の多くはクラス機構のサポート JavaScriptの抱える問題の多くを解決
![Page 35: 業務アプリケーションにおけるこれからのWeb開発](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b74f764a79596e388b473a/html5/thumbnails/35.jpg)
CSS Preprocessor
http://sass-lang.com/http://compass-style.org/
http://lesscss.org/
http://learnboost.github.io/stylus/
膨大なCSSをどう整理するか
![Page 36: 業務アプリケーションにおけるこれからのWeb開発](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b74f764a79596e388b473a/html5/thumbnails/36.jpg)
開発環境
http://yeoman.io/
http://www.sencha.com/products/sencha-cmd/download
多くのアーキテクチャをどうやって開発するか
https://www.microsoft.com/ja-jp/dev/default.aspx
![Page 37: 業務アプリケーションにおけるこれからのWeb開発](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b74f764a79596e388b473a/html5/thumbnails/37.jpg)
SPAに必要なフロントエンド技術
![Page 38: 業務アプリケーションにおけるこれからのWeb開発](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b74f764a79596e388b473a/html5/thumbnails/38.jpg)
具体的な実例
![Page 40: 業務アプリケーションにおけるこれからのWeb開発](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b74f764a79596e388b473a/html5/thumbnails/40.jpg)
これで安心?
![Page 41: 業務アプリケーションにおけるこれからのWeb開発](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b74f764a79596e388b473a/html5/thumbnails/41.jpg)
開発環境のおはなし - YEOMAN
http://yeoman.io/
多くのアーキテクチャをどうやって開発するか
![Page 42: 業務アプリケーションにおけるこれからのWeb開発](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b74f764a79596e388b473a/html5/thumbnails/42.jpg)
Yeoman とは
Webアプリケーションのための総合開発ツール群
yo(雛形作成ツール)
grunt(タスクランナー)
bower(フロントエンドパッケージマネージャ)
MODERN WORKFLOWS FOR MODERN WEBAPPS
![Page 43: 業務アプリケーションにおけるこれからのWeb開発](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b74f764a79596e388b473a/html5/thumbnails/43.jpg)
開発の大まかな流れ
1. yo [generator] によるひな形
2. grunt server を使用しアプリケーション開発
3. grunt build によるリリースビルド
![Page 44: 業務アプリケーションにおけるこれからのWeb開発](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b74f764a79596e388b473a/html5/thumbnails/44.jpg)
これはですね。。
Javaのmavenみたいなもんです もうちょっと高機能かも
![Page 45: 業務アプリケーションにおけるこれからのWeb開発](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b74f764a79596e388b473a/html5/thumbnails/45.jpg)
インストールは簡単
使ってみる
$ npm install -g yo
![Page 46: 業務アプリケーションにおけるこれからのWeb開発](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b74f764a79596e388b473a/html5/thumbnails/46.jpg)
generator はどのくらいある? http://yeoman.io/community-generators.html
yo雛形作成ツール
![Page 47: 業務アプリケーションにおけるこれからのWeb開発](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b74f764a79596e388b473a/html5/thumbnails/47.jpg)
カスタムイベントを備えた Model Model のイテレーションである Collection イベントをハンドリングする View !
!
サーバサイドのアプリケーションと連動するための RESTful JSON など
View
ejs Collection Model
HTML
![Page 48: 業務アプリケーションにおけるこれからのWeb開発](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b74f764a79596e388b473a/html5/thumbnails/48.jpg)
$ yo backbone
yo雛形作成ツール
![Page 49: 業務アプリケーションにおけるこれからのWeb開発](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b74f764a79596e388b473a/html5/thumbnails/49.jpg)
これだけで概ねの環境ができてしまう!
yo
![Page 50: 業務アプリケーションにおけるこれからのWeb開発](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b74f764a79596e388b473a/html5/thumbnails/50.jpg)
$ yo backbone:view view名 --coffee $ yo backbone:model model名 --coffee $ yo backbone:collection collection名 --coffee $ yo backbone:router router名 --coffee
yoテンプレートを作成する
![Page 51: 業務アプリケーションにおけるこれからのWeb開発](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b74f764a79596e388b473a/html5/thumbnails/51.jpg)
bowerTwitter社が作ったパッケージマネージャ
bower components はどのくらいあるか? http://bower.io/search/
![Page 52: 業務アプリケーションにおけるこれからのWeb開発](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b74f764a79596e388b473a/html5/thumbnails/52.jpg)
bower
依存関係およびライブラリの情報を 管理するためのファイル
bower.jsonとは?
![Page 53: 業務アプリケーションにおけるこれからのWeb開発](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b74f764a79596e388b473a/html5/thumbnails/53.jpg)
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 54: 業務アプリケーションにおけるこれからのWeb開発](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b74f764a79596e388b473a/html5/thumbnails/54.jpg)
bower
$ bower install !
このコマンドでbower.jsonに定義しているコンポーネントをダウンロードします
使い方
![Page 55: 業務アプリケーションにおけるこれからのWeb開発](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b74f764a79596e388b473a/html5/thumbnails/55.jpg)
bower
$ bower install --save-dev [パッケージ名] !
新しいコンポーネントをダウンロードしbower.jsonにその情報を書き込みます
使い方
![Page 56: 業務アプリケーションにおけるこれからのWeb開発](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b74f764a79596e388b473a/html5/thumbnails/56.jpg)
gruntタスクランナー
grunt で登録されているプラグインは? http://gruntjs.com/plugins
![Page 57: 業務アプリケーションにおけるこれからのWeb開発](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b74f764a79596e388b473a/html5/thumbnails/57.jpg)
gruntタスクランナー
gruntにはpackage.jsonとGruntfile.jsが必要
![Page 58: 業務アプリケーションにおけるこれからのWeb開発](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b74f764a79596e388b473a/html5/thumbnails/58.jpg)
gruntpackage.jsonとは?
必要なタスクプラグインを管理するためのファイル
![Page 59: 業務アプリケーションにおけるこれからのWeb開発](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b74f764a79596e388b473a/html5/thumbnails/59.jpg)
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 60: 業務アプリケーションにおけるこれからのWeb開発](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b74f764a79596e388b473a/html5/thumbnails/60.jpg)
grunt使い方は
$ npm install --save-dev [プラグイン名] !
新しいプラグインをダウンロードしpackage.jsonにその情報を書き込みます
![Page 61: 業務アプリケーションにおけるこれからのWeb開発](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b74f764a79596e388b473a/html5/thumbnails/61.jpg)
gruntGruntfile.jsとは?
タスクを定義したファイルです
![Page 62: 業務アプリケーションにおけるこれからのWeb開発](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b74f764a79596e388b473a/html5/thumbnails/62.jpg)
gruntGruntfile.jsとは?
コマンドがいろいろ定義していますが $ grunt serve $ grunt build $ grunt test これにモックアップ開発用に $ grunt mock
![Page 63: 業務アプリケーションにおけるこれからのWeb開発](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b74f764a79596e388b473a/html5/thumbnails/63.jpg)
モック開発で効率よく
![Page 64: 業務アプリケーションにおけるこれからのWeb開発](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b74f764a79596e388b473a/html5/thumbnails/64.jpg)
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 65: 業務アプリケーションにおけるこれからのWeb開発](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b74f764a79596e388b473a/html5/thumbnails/65.jpg)
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 66: 業務アプリケーションにおけるこれからのWeb開発](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b74f764a79596e388b473a/html5/thumbnails/66.jpg)
grunt-easymockの構築
ここで「easymock」の次の「mockapi」キーワードが重要 これとproxyで定義したcontextを一致させる !
期待するURLは
/mockapi/users/1
です。
![Page 67: 業務アプリケーションにおけるこれからのWeb開発](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b74f764a79596e388b473a/html5/thumbnails/67.jpg)
grunt-easymockの構築
easymockをタスクに登録 grunt.task.run([ 'clean:server', 'coffee:dist', 'createDefaultTemplate', 'handlebars', 'compass:server', 'configureProxies', 'connect:livereload', 'open', 'easymock', 'watch' ]);
![Page 68: 業務アプリケーションにおけるこれからのWeb開発](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b74f764a79596e388b473a/html5/thumbnails/68.jpg)
モックサーバを構築すると 面倒なAPIサーバを構築しなくていい
![Page 69: 業務アプリケーションにおけるこれからのWeb開発](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b74f764a79596e388b473a/html5/thumbnails/69.jpg)
色々と便利!
![Page 70: 業務アプリケーションにおけるこれからのWeb開発](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b74f764a79596e388b473a/html5/thumbnails/70.jpg)
SPAの難しいところ
パフォーマンス メモリリーク セキュリティ フレームワークロックイン 設計思想の転換 フロントエンジニア不足
![Page 71: 業務アプリケーションにおけるこれからのWeb開発](https://reader031.fdocuments.net/reader031/viewer/2022020306/54b74f764a79596e388b473a/html5/thumbnails/71.jpg)
Thanks.