SlideShare a Scribd company logo
Single Page Application勉強会
2017.12.26 IVP神戸
本日のアジェンダ
• SPAとは
• SPAの基本構成
• SPAのメリット・デメリット
• SPAを実現する技術
• ERSにおけるSPA
• 会員登録フォームの例
• APIについて
• セキュリティあれこれ
• TMHのデモ
• Q&A
想定対象者
• SPAの概要を理解したい人
• SPAの検証をやる人
SPAとは?
・Single Page Applicationの略
DB
サーバー
ユーザー
HTML
CSS・js
画像
①リクエスト
②レスポンス
③HTML内部からAPIをコール
④APIがDB接続して処理
⑤APIレスポンス取得
⑥描画処理
基本構成図
• ①と②は最初の1回のみ
• ③~⑥は処理に応じて何度も発生する
• ページ遷移をした場合でも、③~⑥のみの処理になる
・Single Page Applicationの略
• CSSやjsファイルの取得が1回で済む
• サーバー側処理と分離がしやすい
•ページ遷移が早い
•ネイティブアプリに近い動きができる
•初期読み込み時のデータ量が多くなる
•ビジネスロジックの一部をフロントエ
ンドで実装しないといけない
•実績が少ない(=ノウハウが少ない)
•SEO対策が怪しい
•チケットの登録先を悩みそう
•APIの動きを理解しないといけないかも
•APIの検証は自動化しやすい気がする
•VEX設定にテクニックがいりそう
※個人の感想です
SPAを実現する技術
Javascriptフレームワーク
DB
サーバー
ユーザー
HTML
CSS・js
画像
①リクエスト
②レスポンス
③HTML内部からAPIをコール
④APIがDB接続して処理
⑤APIレスポンス取得
⑥描画処理
基本構成図
Javascriptフレームワーク担当範囲
API担当範囲
ちょっと技術的な話
Javascriptフレームワーク
MVCとの違い
MVCとの違い
Viewの構成(コンポーネント)
ERSにおけるSPA
ERSにおけるSPA
•ERSが提供するのは基本APIだけ
•HTMLは全てVue.jsで作成される
•ERSのルーティングは通る
会員登録の例
入力画面
確認画面
完了画面
HTML サーバー処理
画面表示
Token発行要求
Token返却
入力チェック処理
入力チェック結果返却
「次へ」を押下
「次へ」を押下 Token発行要求
Token返却
入力チェック処理
入力チェック結果返却
完了画面用Token発行要求
完了画面用Token返却
登録処理
登録結果返却
エラーの場合は
同画面でエラー
表示
エラーの場合は
同画面でエラー
表示
エラーの場合は
全画面エラー表
示
画面表示
APIについて
APIについて(ERS仕様)
•クロスドメインからも呼び出し可能(CORS)
•サイト用のキーをリクエストヘッダに持っている
•パラメータはJSONで渡す
•Methodによって挙動が変わる
•結果によってhttpレスポンスコードが変わる
セキュリティのあれこれ
•APIへのDDos攻撃は現時点で対症療法しかない
•CSRF対策はアプリの仕組みで可能
•SQLインジェクションはAPIを防げばOK
•XSSはフロント側の実装方法によって発生する
可能性がある
TMHのデモ

More Related Content

What's hot

WebフレームワークXSS対策の自動化
WebフレームワークXSS対策の自動化WebフレームワークXSS対策の自動化
WebフレームワークXSS対策の自動化
Yoshihiro Ura
 
Azure Functionsでサーバーレスアプリケーション構築
Azure Functionsでサーバーレスアプリケーション構築Azure Functionsでサーバーレスアプリケーション構築
Azure Functionsでサーバーレスアプリケーション構築
ryosuke matsumura
 
軽量フレームワークNancy
軽量フレームワークNancy軽量フレームワークNancy
軽量フレームワークNancy
Narami Kiyokura
 
WordPress JSON REST API 〜さらばPHP、さらばWordPressテーマ
WordPress JSON REST API 〜さらばPHP、さらばWordPressテーマWordPress JSON REST API 〜さらばPHP、さらばWordPressテーマ
WordPress JSON REST API 〜さらばPHP、さらばWordPressテーマ
Kazue Igarashi
 
PowerShellでFunction Appしよう!
PowerShellでFunction Appしよう!PowerShellでFunction Appしよう!
PowerShellでFunction Appしよう!
Tsubasa Yoshino
 
Node.js+MongoDB in SPA
Node.js+MongoDB in SPANode.js+MongoDB in SPA
Node.js+MongoDB in SPA
Naoki Sasaki
 
OSC北海道 2016 コーポレートサイトにちょうどいい、国産 CMS 「baserCMS」の紹介
OSC北海道 2016 コーポレートサイトにちょうどいい、国産 CMS 「baserCMS」の紹介OSC北海道 2016 コーポレートサイトにちょうどいい、国産 CMS 「baserCMS」の紹介
OSC北海道 2016 コーポレートサイトにちょうどいい、国産 CMS 「baserCMS」の紹介
Hiromasa Tanaka
 
ビズリーチの新サービスをScalaで作ってみた 〜マイクロサービスの裏側 #jissenscala
ビズリーチの新サービスをScalaで作ってみた 〜マイクロサービスの裏側 #jissenscalaビズリーチの新サービスをScalaで作ってみた 〜マイクロサービスの裏側 #jissenscala
ビズリーチの新サービスをScalaで作ってみた 〜マイクロサービスの裏側 #jissenscala
takezoe
 
Web業務アプリの新しい潮流
Web業務アプリの新しい潮流Web業務アプリの新しい潮流
Web業務アプリの新しい潮流
久司 中村
 
[jaws days 2014]ELB/AutoScaling
[jaws days 2014]ELB/AutoScaling[jaws days 2014]ELB/AutoScaling
[jaws days 2014]ELB/AutoScaling
Tomohiro Motoki
 
さくらとWeb×マーケティングの夕べ #1
さくらとWeb×マーケティングの夕べ #1さくらとWeb×マーケティングの夕べ #1
さくらとWeb×マーケティングの夕べ #1
Hidenori Matsuki
 
Media Assembly Kit
Media Assembly KitMedia Assembly Kit
Media Assembly Kit
Hiromichi Koga
 
JAX-RS(LT)
JAX-RS(LT)JAX-RS(LT)
JAX-RS(LT)
winplus
 
Cognitive serviceのすゝめ
Cognitive serviceのすゝめCognitive serviceのすゝめ
Cognitive serviceのすゝめ
Tsubasa Yoshino
 
RESTful #とは RailsスタイルからRESTを学ぼう
RESTful #とは RailsスタイルからRESTを学ぼうRESTful #とは RailsスタイルからRESTを学ぼう
RESTful #とは RailsスタイルからRESTを学ぼう
Toru Kawamura
 
WordPress開発の最新事情
WordPress開発の最新事情WordPress開発の最新事情
WordPress開発の最新事情
Takayuki Miyauchi
 
Scala + Finagleの魅力
Scala + Finagleの魅力Scala + Finagleの魅力
Scala + Finagleの魅力Kota Mizushima
 
React es2015
React es2015React es2015
React es2015
t-onizawa
 

What's hot (20)

WebフレームワークXSS対策の自動化
WebフレームワークXSS対策の自動化WebフレームワークXSS対策の自動化
WebフレームワークXSS対策の自動化
 
Azure Functionsでサーバーレスアプリケーション構築
Azure Functionsでサーバーレスアプリケーション構築Azure Functionsでサーバーレスアプリケーション構築
Azure Functionsでサーバーレスアプリケーション構築
 
20120128
2012012820120128
20120128
 
軽量フレームワークNancy
軽量フレームワークNancy軽量フレームワークNancy
軽量フレームワークNancy
 
WordPress JSON REST API 〜さらばPHP、さらばWordPressテーマ
WordPress JSON REST API 〜さらばPHP、さらばWordPressテーマWordPress JSON REST API 〜さらばPHP、さらばWordPressテーマ
WordPress JSON REST API 〜さらばPHP、さらばWordPressテーマ
 
PowerShellでFunction Appしよう!
PowerShellでFunction Appしよう!PowerShellでFunction Appしよう!
PowerShellでFunction Appしよう!
 
Node.js+MongoDB in SPA
Node.js+MongoDB in SPANode.js+MongoDB in SPA
Node.js+MongoDB in SPA
 
OSC北海道 2016 コーポレートサイトにちょうどいい、国産 CMS 「baserCMS」の紹介
OSC北海道 2016 コーポレートサイトにちょうどいい、国産 CMS 「baserCMS」の紹介OSC北海道 2016 コーポレートサイトにちょうどいい、国産 CMS 「baserCMS」の紹介
OSC北海道 2016 コーポレートサイトにちょうどいい、国産 CMS 「baserCMS」の紹介
 
ビズリーチの新サービスをScalaで作ってみた 〜マイクロサービスの裏側 #jissenscala
ビズリーチの新サービスをScalaで作ってみた 〜マイクロサービスの裏側 #jissenscalaビズリーチの新サービスをScalaで作ってみた 〜マイクロサービスの裏側 #jissenscala
ビズリーチの新サービスをScalaで作ってみた 〜マイクロサービスの裏側 #jissenscala
 
Web業務アプリの新しい潮流
Web業務アプリの新しい潮流Web業務アプリの新しい潮流
Web業務アプリの新しい潮流
 
[jaws days 2014]ELB/AutoScaling
[jaws days 2014]ELB/AutoScaling[jaws days 2014]ELB/AutoScaling
[jaws days 2014]ELB/AutoScaling
 
さくらとWeb×マーケティングの夕べ #1
さくらとWeb×マーケティングの夕べ #1さくらとWeb×マーケティングの夕べ #1
さくらとWeb×マーケティングの夕べ #1
 
Media Assembly Kit
Media Assembly KitMedia Assembly Kit
Media Assembly Kit
 
JAX-RS(LT)
JAX-RS(LT)JAX-RS(LT)
JAX-RS(LT)
 
Cognitive serviceのすゝめ
Cognitive serviceのすゝめCognitive serviceのすゝめ
Cognitive serviceのすゝめ
 
RESTful #とは RailsスタイルからRESTを学ぼう
RESTful #とは RailsスタイルからRESTを学ぼうRESTful #とは RailsスタイルからRESTを学ぼう
RESTful #とは RailsスタイルからRESTを学ぼう
 
WordPress開発の最新事情
WordPress開発の最新事情WordPress開発の最新事情
WordPress開発の最新事情
 
20120609
2012060920120609
20120609
 
Scala + Finagleの魅力
Scala + Finagleの魅力Scala + Finagleの魅力
Scala + Finagleの魅力
 
React es2015
React es2015React es2015
React es2015
 

Similar to SPA勉強会

Rdbms起点で考えると見えない世界 okuyama勉強会
Rdbms起点で考えると見えない世界 okuyama勉強会Rdbms起点で考えると見えない世界 okuyama勉強会
Rdbms起点で考えると見えない世界 okuyama勉強会Masakazu Muraoka
 
技術者として抑えておきたい Power BI アーキテクチャ
技術者として抑えておきたい Power BI アーキテクチャ技術者として抑えておきたい Power BI アーキテクチャ
技術者として抑えておきたい Power BI アーキテクチャ
Yugo Shimizu
 
【提案】(それぐらい)運用側で保守してもらえませんか?
【提案】(それぐらい)運用側で保守してもらえませんか?【提案】(それぐらい)運用側で保守してもらえませんか?
【提案】(それぐらい)運用側で保守してもらえませんか?
ごろう 野村
 
API Academy:マイクロサービス化へのファーストステップ
API Academy:マイクロサービス化へのファーストステップAPI Academy:マイクロサービス化へのファーストステップ
API Academy:マイクロサービス化へのファーストステップ
CA Technologies
 
SQLWorld★大阪#8
SQLWorld★大阪#8SQLWorld★大阪#8
SQLWorld★大阪#8
Atsuo Yamasaki
 
松本克彦 ピグにおけるリアルタイムランキングの導入
松本克彦 ピグにおけるリアルタイムランキングの導入松本克彦 ピグにおけるリアルタイムランキングの導入
松本克彦 ピグにおけるリアルタイムランキングの導入
matsumoto_katsuhiko
 
マイクロサービス運用の所感 #m3dev
マイクロサービス運用の所感 #m3devマイクロサービス運用の所感 #m3dev
マイクロサービス運用の所感 #m3dev
Kazuhiro Sera
 
ML Opsのススメ
ML OpsのススメML Opsのススメ
ML Opsのススメ
紀彦 中林
 
20120407 ASP.NET+C#で開発する大規模ソーシャルゲーム
20120407 ASP.NET+C#で開発する大規模ソーシャルゲーム20120407 ASP.NET+C#で開発する大規模ソーシャルゲーム
20120407 ASP.NET+C#で開発する大規模ソーシャルゲーム
hideyuki ikeda
 
Web API をデバックするときに必要なたったひとつのこと
Web API をデバックするときに必要なたったひとつのことWeb API をデバックするときに必要なたったひとつのこと
Web API をデバックするときに必要なたったひとつのこと
Tomokazu Kiyohara
 
Db2をAWS上に構築する際のヒント&TIPS 2020年6月版
Db2をAWS上に構築する際のヒント&TIPS 2020年6月版Db2をAWS上に構築する際のヒント&TIPS 2020年6月版
Db2をAWS上に構築する際のヒント&TIPS 2020年6月版
Akira Shimosako
 
ASP.NET Core 概要(2017年3月時点)
ASP.NET Core 概要(2017年3月時点)ASP.NET Core 概要(2017年3月時点)
ASP.NET Core 概要(2017年3月時点)
Atsushi Yokohama (BEACHSIDE)
 
Concurrent Programming in JavaScript
Concurrent Programming in JavaScriptConcurrent Programming in JavaScript
Concurrent Programming in JavaScript
yjono Seino
 
Concurrent Programm in JavaScript
Concurrent Programm in JavaScriptConcurrent Programm in JavaScript
Concurrent Programm in JavaScript
yjono Seino
 
サーバーレスでアンケートフォームを作ってみた
サーバーレスでアンケートフォームを作ってみたサーバーレスでアンケートフォームを作ってみた
サーバーレスでアンケートフォームを作ってみた
ryutakatori
 
オフラインファーストの思想と実践
オフラインファーストの思想と実践オフラインファーストの思想と実践
オフラインファーストの思想と実践Shumpei Shiraishi
 
Cockatoo
CockatooCockatoo
Cockatoo
Hiroaki Kubota
 
Workshop1-01
Workshop1-01Workshop1-01
Workshop1-01
mashimonator
 
楽ちんユーザー認証付Spa
楽ちんユーザー認証付Spa楽ちんユーザー認証付Spa
楽ちんユーザー認証付Spa
Takahiro Tsuchiya
 
サーバサイドエンジニアが 1年間まじめにSPAやってみた
サーバサイドエンジニアが 1年間まじめにSPAやってみたサーバサイドエンジニアが 1年間まじめにSPAやってみた
サーバサイドエンジニアが 1年間まじめにSPAやってみた
Itaru Kitagawa
 

Similar to SPA勉強会 (20)

Rdbms起点で考えると見えない世界 okuyama勉強会
Rdbms起点で考えると見えない世界 okuyama勉強会Rdbms起点で考えると見えない世界 okuyama勉強会
Rdbms起点で考えると見えない世界 okuyama勉強会
 
技術者として抑えておきたい Power BI アーキテクチャ
技術者として抑えておきたい Power BI アーキテクチャ技術者として抑えておきたい Power BI アーキテクチャ
技術者として抑えておきたい Power BI アーキテクチャ
 
【提案】(それぐらい)運用側で保守してもらえませんか?
【提案】(それぐらい)運用側で保守してもらえませんか?【提案】(それぐらい)運用側で保守してもらえませんか?
【提案】(それぐらい)運用側で保守してもらえませんか?
 
API Academy:マイクロサービス化へのファーストステップ
API Academy:マイクロサービス化へのファーストステップAPI Academy:マイクロサービス化へのファーストステップ
API Academy:マイクロサービス化へのファーストステップ
 
SQLWorld★大阪#8
SQLWorld★大阪#8SQLWorld★大阪#8
SQLWorld★大阪#8
 
松本克彦 ピグにおけるリアルタイムランキングの導入
松本克彦 ピグにおけるリアルタイムランキングの導入松本克彦 ピグにおけるリアルタイムランキングの導入
松本克彦 ピグにおけるリアルタイムランキングの導入
 
マイクロサービス運用の所感 #m3dev
マイクロサービス運用の所感 #m3devマイクロサービス運用の所感 #m3dev
マイクロサービス運用の所感 #m3dev
 
ML Opsのススメ
ML OpsのススメML Opsのススメ
ML Opsのススメ
 
20120407 ASP.NET+C#で開発する大規模ソーシャルゲーム
20120407 ASP.NET+C#で開発する大規模ソーシャルゲーム20120407 ASP.NET+C#で開発する大規模ソーシャルゲーム
20120407 ASP.NET+C#で開発する大規模ソーシャルゲーム
 
Web API をデバックするときに必要なたったひとつのこと
Web API をデバックするときに必要なたったひとつのことWeb API をデバックするときに必要なたったひとつのこと
Web API をデバックするときに必要なたったひとつのこと
 
Db2をAWS上に構築する際のヒント&TIPS 2020年6月版
Db2をAWS上に構築する際のヒント&TIPS 2020年6月版Db2をAWS上に構築する際のヒント&TIPS 2020年6月版
Db2をAWS上に構築する際のヒント&TIPS 2020年6月版
 
ASP.NET Core 概要(2017年3月時点)
ASP.NET Core 概要(2017年3月時点)ASP.NET Core 概要(2017年3月時点)
ASP.NET Core 概要(2017年3月時点)
 
Concurrent Programming in JavaScript
Concurrent Programming in JavaScriptConcurrent Programming in JavaScript
Concurrent Programming in JavaScript
 
Concurrent Programm in JavaScript
Concurrent Programm in JavaScriptConcurrent Programm in JavaScript
Concurrent Programm in JavaScript
 
サーバーレスでアンケートフォームを作ってみた
サーバーレスでアンケートフォームを作ってみたサーバーレスでアンケートフォームを作ってみた
サーバーレスでアンケートフォームを作ってみた
 
オフラインファーストの思想と実践
オフラインファーストの思想と実践オフラインファーストの思想と実践
オフラインファーストの思想と実践
 
Cockatoo
CockatooCockatoo
Cockatoo
 
Workshop1-01
Workshop1-01Workshop1-01
Workshop1-01
 
楽ちんユーザー認証付Spa
楽ちんユーザー認証付Spa楽ちんユーザー認証付Spa
楽ちんユーザー認証付Spa
 
サーバサイドエンジニアが 1年間まじめにSPAやってみた
サーバサイドエンジニアが 1年間まじめにSPAやってみたサーバサイドエンジニアが 1年間まじめにSPAやってみた
サーバサイドエンジニアが 1年間まじめにSPAやってみた
 

SPA勉強会