SlideShare a Scribd company logo
1 of 24
Download to read offline
@mainyaa
モダンブラウザ
ストレージ
Who is me
@mainyaa
Kazuyuki Mori
Topgate, Inc.
Front/Server/Network/Machine Learning
Engineer
Agenda
1. モダンブラウザストレージ
2. どれを使ったらいいの?
3. Tips
モダンブラウザストレージ
01localStorage, sessionStorage
KVS with Index and
Transaction
RDB for Web
Old session manager
Web Storage
IndexedDB
Web SQL
Database
Cookie
02
03 04
Web Storage
localStorage,
sessionStorage
01
■ Web Storageは、localStorageとsessionStorageという
2種類のKVSです
■ localStorage.foo = "bar"を使用して値を設定し、後で
localStorage.fooとして値を取得できます。(ブラウザー
を閉じて再度開いても)
■ sessionStorageも操作は同一ですが、ウィンドウが閉じ
られるとクリアされます。
Web Storage
Web Storage
・すべての最新ブラウザで
サポートされる
・シンプルで同期的
・他のタブ・ウィンドウとも同
期が取れる
・同期APIでパフォーマンスが悪
い
・サイズ制限が厳しい
・オブジェクトの格納にシリアライ
ズが必要
Pros Cons
Web SQL
Database
RDB for Web
02
■ Web SQL Databaseは、一般的なSQLベースのリレー
ショナルデータベース
■ フィールドにインデックスを付ける機能もあるため、Web
Storageよりも検索がはるかに高速
■ 非推奨。IEやFireFoxでサポートされておらず、段階的
に廃止予定
Web SQL Database
Web SQL Database
・主要なモバイルブラウザ
と、いくつかのデスクトップ
ブラウザでサポート
・非同期APIであるため、
良好なパフォーマンス
・検索・トランザクション・厳
密なデータ構造
・非推奨。IEやFireFoxでサポー
トされておらず、段階的に廃止
予定
・DBスキーマの定義やマイグ
レーションなどでコードが複雑化
する
Pros Cons
IndexedDB
KVS with Index and
Transaction
03
■ IndexedDBはWeb StorageとWeb SQL Databaseの両方の良いところを
取り入れたもの
■ IndexedDBは、オブジェクトを格納できる「オブジェクトストア」のコレクショ
ン
■ オブジェクト構造に制約はないため、テーブル定義がない
■ Web Storageに似ているが、非同期APIでパフォーマンスが非常に改善さ
れている
■ インデックスを作成して、検索速度を向上させることができる
IndexedDB
IndexedDB
・モダンブラウザの本命の
データベース
・非同期APIであるため、
良好なパフォーマンス
・インデックス・トランザク
ション・シンプルなAPI
・まだすべてのブラウザがサポート
されているわけではない
・Pollyfillの提供はある
Pros Cons
Cookie
Old session
manager
04
■ 古くからあるHTTP通信のストレージ
■ 文字列しか格納できない
■ サイズ制限非常に厳しい(Safariでは1クッキーあたり
600MB)
■ 使い方を間違えると安全ではない
■ HTTPSにしてSecure属性とHttpOnly属性をつけよ
う
Cookie
Cookie
・適切な属性をつけ
ることでJavaScript
からアクセスできな
いストレージ
・サイズが小さく、スト
レージ用途には向かな
い
Pros Cons
どれをつかったらいいの?
■ APIトークンの保存:
■ Cookie
■ パフォーマンスが気にならない:
■ WebStorage(localStorage)
■ SPAでローカルでアプリケーションを構築する:
■ IndexedDB
どれをつかったらいいの?
■ API Tokenの保存に最適なストレージ
■ HttpOnly属性
■ JavaScriptからCookieにアクセス出来ないようにす
る。XSSでAPI Tokenが取れないため安全
■ Secure属性
■ HTTPSのURLからHTTPのURLにCookieを送信しな
い
■ https://developer.mozilla.org/ja/docs/Web/HTTP/Co
okies
Cookie
■ シンプルなKVSストレージ
■ シンプルなWebアプリなら使っても良い
■ サイズ容量とパフォーマンスに注意
WebStorage(localStorage)
■ 新しく始めるプロジェクトでは使うな。
Web SQL Storage
■ これからいろんなブラウザに広まっていくStorage
■ 良いパフォーマンス。シンプルなAPI
■ 容量も多いし、Quota Management APIで、ユーザーに
同意を取ることで更に容量が使える
■ Polyfillもあるけど、どこまでサポートしているかはまだ
不明。
■ 今後に期待
IndexedDB
■ ストレージのサポートや、サイズリミットや、サイズオー
バー時のエラー発生についてはHTML5 RocksのEiji
Kitamuraさんの記事を見てください
■ https://www.html5rocks.com/ja/tutorials/offline/quota
-research/
Tips: エラーハンドリング
@mainyaa
Thanks you!

More Related Content

What's hot

Postgresqlのワーキングセットが大きくなる現象について
Postgresqlのワーキングセットが大きくなる現象についてPostgresqlのワーキングセットが大きくなる現象について
Postgresqlのワーキングセットが大きくなる現象について拓也 岸本
 
WordPress基礎講座1 CMSの概要
WordPress基礎講座1 CMSの概要WordPress基礎講座1 CMSの概要
WordPress基礎講座1 CMSの概要Akinori Kawamitsu
 
WebSocketでリアルタイム通信 (第13回学生LT資料)
WebSocketでリアルタイム通信 (第13回学生LT資料)WebSocketでリアルタイム通信 (第13回学生LT資料)
WebSocketでリアルタイム通信 (第13回学生LT資料)stmkza
 
はじめてのクラウドサーバー AWSとGCEを使い比べてみた
はじめてのクラウドサーバー AWSとGCEを使い比べてみたはじめてのクラウドサーバー AWSとGCEを使い比べてみた
はじめてのクラウドサーバー AWSとGCEを使い比べてみたEigoro Yamamura
 
Voltdb - wikipedia
Voltdb - wikipediaVoltdb - wikipedia
Voltdb - wikipediaHiroshi Ono
 
私たちは何を Web っぽいと感じているのか
私たちは何を Web っぽいと感じているのか 私たちは何を Web っぽいと感じているのか
私たちは何を Web っぽいと感じているのか Kenta Yamamoto
 
BtoCでバインド変数
BtoCでバインド変数BtoCでバインド変数
BtoCでバインド変数Yoshito Ueki
 
20110622 haruyama webso]cket
20110622 haruyama webso]cket20110622 haruyama webso]cket
20110622 haruyama webso]cketMakoto Haruyama
 
ラベレコ 出荷管理
ラベレコ 出荷管理ラベレコ 出荷管理
ラベレコ 出荷管理Takashi Noboru
 
Enterprise Manager 3.0
Enterprise Manager 3.0Enterprise Manager 3.0
Enterprise Manager 3.0Yuji Fujita
 
OSC2017 Hokkaido. MySQL今こそインストールを極めよう~改めて考える環境構築~
OSC2017 Hokkaido. MySQL今こそインストールを極めよう~改めて考える環境構築~OSC2017 Hokkaido. MySQL今こそインストールを極めよう~改めて考える環境構築~
OSC2017 Hokkaido. MySQL今こそインストールを極めよう~改めて考える環境構築~sakaik
 
第1回Webサーバ勉強会 - 212-223 ブラウザマッチ処理
第1回Webサーバ勉強会 - 212-223 ブラウザマッチ処理第1回Webサーバ勉強会 - 212-223 ブラウザマッチ処理
第1回Webサーバ勉強会 - 212-223 ブラウザマッチ処理Seiichiro Ishida
 
Indexed DBについて(書きかけ)
Indexed DBについて(書きかけ)Indexed DBについて(書きかけ)
Indexed DBについて(書きかけ)iPride Co., Ltd.
 
商用VPSのここだけの話
商用VPSのここだけの話商用VPSのここだけの話
商用VPSのここだけの話joeswebhosting
 
後期第二回ネットワークチーム講座資料
後期第二回ネットワークチーム講座資料後期第二回ネットワークチーム講座資料
後期第二回ネットワークチーム講座資料densan_teacher
 
IT管理者と新しいIE
IT管理者と新しいIEIT管理者と新しいIE
IT管理者と新しいIE彰 村地
 
Movable typeseminar 20120925
Movable typeseminar 20120925Movable typeseminar 20120925
Movable typeseminar 20120925Six Apart
 

What's hot (20)

Postgresqlのワーキングセットが大きくなる現象について
Postgresqlのワーキングセットが大きくなる現象についてPostgresqlのワーキングセットが大きくなる現象について
Postgresqlのワーキングセットが大きくなる現象について
 
WordPress基礎講座1 CMSの概要
WordPress基礎講座1 CMSの概要WordPress基礎講座1 CMSの概要
WordPress基礎講座1 CMSの概要
 
WebSocketでリアルタイム通信 (第13回学生LT資料)
WebSocketでリアルタイム通信 (第13回学生LT資料)WebSocketでリアルタイム通信 (第13回学生LT資料)
WebSocketでリアルタイム通信 (第13回学生LT資料)
 
MySQL-Docker
MySQL-DockerMySQL-Docker
MySQL-Docker
 
はじめてのクラウドサーバー AWSとGCEを使い比べてみた
はじめてのクラウドサーバー AWSとGCEを使い比べてみたはじめてのクラウドサーバー AWSとGCEを使い比べてみた
はじめてのクラウドサーバー AWSとGCEを使い比べてみた
 
Voltdb - wikipedia
Voltdb - wikipediaVoltdb - wikipedia
Voltdb - wikipedia
 
私たちは何を Web っぽいと感じているのか
私たちは何を Web っぽいと感じているのか 私たちは何を Web っぽいと感じているのか
私たちは何を Web っぽいと感じているのか
 
BtoCでバインド変数
BtoCでバインド変数BtoCでバインド変数
BtoCでバインド変数
 
20110622 haruyama webso]cket
20110622 haruyama webso]cket20110622 haruyama webso]cket
20110622 haruyama webso]cket
 
ラベレコ 出荷管理
ラベレコ 出荷管理ラベレコ 出荷管理
ラベレコ 出荷管理
 
Enterprise Manager 3.0
Enterprise Manager 3.0Enterprise Manager 3.0
Enterprise Manager 3.0
 
OSC2017 Hokkaido. MySQL今こそインストールを極めよう~改めて考える環境構築~
OSC2017 Hokkaido. MySQL今こそインストールを極めよう~改めて考える環境構築~OSC2017 Hokkaido. MySQL今こそインストールを極めよう~改めて考える環境構築~
OSC2017 Hokkaido. MySQL今こそインストールを極めよう~改めて考える環境構築~
 
第1回Webサーバ勉強会 - 212-223 ブラウザマッチ処理
第1回Webサーバ勉強会 - 212-223 ブラウザマッチ処理第1回Webサーバ勉強会 - 212-223 ブラウザマッチ処理
第1回Webサーバ勉強会 - 212-223 ブラウザマッチ処理
 
Indexed DBについて(書きかけ)
Indexed DBについて(書きかけ)Indexed DBについて(書きかけ)
Indexed DBについて(書きかけ)
 
商用VPSのここだけの話
商用VPSのここだけの話商用VPSのここだけの話
商用VPSのここだけの話
 
後期第二回ネットワークチーム講座資料
後期第二回ネットワークチーム講座資料後期第二回ネットワークチーム講座資料
後期第二回ネットワークチーム講座資料
 
10回目nodejs
10回目nodejs10回目nodejs
10回目nodejs
 
IT管理者と新しいIE
IT管理者と新しいIEIT管理者と新しいIE
IT管理者と新しいIE
 
仮想環境によるLinux
仮想環境によるLinux仮想環境によるLinux
仮想環境によるLinux
 
Movable typeseminar 20120925
Movable typeseminar 20120925Movable typeseminar 20120925
Movable typeseminar 20120925
 

Similar to モダンブラウザストレージ

Windows azureを知ろう ロール&ストレージ編
Windows azureを知ろう ロール&ストレージ編Windows azureを知ろう ロール&ストレージ編
Windows azureを知ろう ロール&ストレージ編Chiho Otonashi
 
Moot2013 moca ver0.3
Moot2013 moca ver0.3Moot2013 moca ver0.3
Moot2013 moca ver0.3科 黄
 
JBoss AS7 rev3
JBoss AS7 rev3JBoss AS7 rev3
JBoss AS7 rev3nekop
 
JBoss AS7 rev2
JBoss AS7 rev2JBoss AS7 rev2
JBoss AS7 rev2nekop
 
msal.js v2を触る
msal.js v2を触るmsal.js v2を触る
msal.js v2を触るDevTakas
 
MySQL 初めてのチューニング
MySQL 初めてのチューニングMySQL 初めてのチューニング
MySQL 初めてのチューニングCraft works
 
20121205 nosql(okuyama fs)セミナー資料
20121205 nosql(okuyama fs)セミナー資料20121205 nosql(okuyama fs)セミナー資料
20121205 nosql(okuyama fs)セミナー資料Takahiro Iwase
 
過去事例から学ぶ SharePoint パフォーマンス問題とその対策
過去事例から学ぶ SharePoint パフォーマンス問題とその対策過去事例から学ぶ SharePoint パフォーマンス問題とその対策
過去事例から学ぶ SharePoint パフォーマンス問題とその対策Atsuo Yamasaki
 
Windows Azure 概要
Windows Azure 概要Windows Azure 概要
Windows Azure 概要fumios
 
初心者向け負荷軽減のはなし
初心者向け負荷軽減のはなし初心者向け負荷軽減のはなし
初心者向け負荷軽減のはなしOonishi Takaaki
 
Amazon ElastiCache - AWSマイスターシリーズ
Amazon ElastiCache - AWSマイスターシリーズAmazon ElastiCache - AWSマイスターシリーズ
Amazon ElastiCache - AWSマイスターシリーズSORACOM, INC
 
Sql server よく聞く設定とその効果
Sql server よく聞く設定とその効果Sql server よく聞く設定とその効果
Sql server よく聞く設定とその効果Masayuki Ozawa
 
Awsのクラウドデザインパターンをwindows azureに持ってきてみた
Awsのクラウドデザインパターンをwindows azureに持ってきてみたAwsのクラウドデザインパターンをwindows azureに持ってきてみた
Awsのクラウドデザインパターンをwindows azureに持ってきてみたSunao Tomita
 
Linux/DB Tuning (DevSumi2010, Japanese)
Linux/DB Tuning (DevSumi2010, Japanese)Linux/DB Tuning (DevSumi2010, Japanese)
Linux/DB Tuning (DevSumi2010, Japanese)Yoshinori Matsunobu
 
Azure Synapse Analytics 専用SQL Poolベストプラクティス
Azure Synapse Analytics 専用SQL PoolベストプラクティスAzure Synapse Analytics 専用SQL Poolベストプラクティス
Azure Synapse Analytics 専用SQL PoolベストプラクティスMicrosoft
 
フロントエンド開発環境
フロントエンド開発環境フロントエンド開発環境
フロントエンド開発環境Masaki Kawaguchi
 
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニックinfinite_loop
 
[INSIGHT OUT 2011] B27 SQL Anywhereの先進のセルフヒーリング技術について(glenn paulley)
[INSIGHT OUT 2011] B27 SQL Anywhereの先進のセルフヒーリング技術について(glenn paulley)[INSIGHT OUT 2011] B27 SQL Anywhereの先進のセルフヒーリング技術について(glenn paulley)
[INSIGHT OUT 2011] B27 SQL Anywhereの先進のセルフヒーリング技術について(glenn paulley)Insight Technology, Inc.
 
A 1-3 awsのクラウドデザインパターンをwindows-azureに持ってきてみた
A 1-3 awsのクラウドデザインパターンをwindows-azureに持ってきてみたA 1-3 awsのクラウドデザインパターンをwindows-azureに持ってきてみた
A 1-3 awsのクラウドデザインパターンをwindows-azureに持ってきてみたGoAzure
 

Similar to モダンブラウザストレージ (20)

Windows azureを知ろう ロール&ストレージ編
Windows azureを知ろう ロール&ストレージ編Windows azureを知ろう ロール&ストレージ編
Windows azureを知ろう ロール&ストレージ編
 
Moot2013 moca ver0.3
Moot2013 moca ver0.3Moot2013 moca ver0.3
Moot2013 moca ver0.3
 
JBoss AS7 rev3
JBoss AS7 rev3JBoss AS7 rev3
JBoss AS7 rev3
 
JBoss AS7 rev2
JBoss AS7 rev2JBoss AS7 rev2
JBoss AS7 rev2
 
msal.js v2を触る
msal.js v2を触るmsal.js v2を触る
msal.js v2を触る
 
MySQL 初めてのチューニング
MySQL 初めてのチューニングMySQL 初めてのチューニング
MySQL 初めてのチューニング
 
20121205 nosql(okuyama fs)セミナー資料
20121205 nosql(okuyama fs)セミナー資料20121205 nosql(okuyama fs)セミナー資料
20121205 nosql(okuyama fs)セミナー資料
 
過去事例から学ぶ SharePoint パフォーマンス問題とその対策
過去事例から学ぶ SharePoint パフォーマンス問題とその対策過去事例から学ぶ SharePoint パフォーマンス問題とその対策
過去事例から学ぶ SharePoint パフォーマンス問題とその対策
 
Windows Azure 概要
Windows Azure 概要Windows Azure 概要
Windows Azure 概要
 
初心者向け負荷軽減のはなし
初心者向け負荷軽減のはなし初心者向け負荷軽減のはなし
初心者向け負荷軽減のはなし
 
Amazon ElastiCache - AWSマイスターシリーズ
Amazon ElastiCache - AWSマイスターシリーズAmazon ElastiCache - AWSマイスターシリーズ
Amazon ElastiCache - AWSマイスターシリーズ
 
Sql server よく聞く設定とその効果
Sql server よく聞く設定とその効果Sql server よく聞く設定とその効果
Sql server よく聞く設定とその効果
 
20120117 13 meister-elasti_cache-public
20120117 13 meister-elasti_cache-public20120117 13 meister-elasti_cache-public
20120117 13 meister-elasti_cache-public
 
Awsのクラウドデザインパターンをwindows azureに持ってきてみた
Awsのクラウドデザインパターンをwindows azureに持ってきてみたAwsのクラウドデザインパターンをwindows azureに持ってきてみた
Awsのクラウドデザインパターンをwindows azureに持ってきてみた
 
Linux/DB Tuning (DevSumi2010, Japanese)
Linux/DB Tuning (DevSumi2010, Japanese)Linux/DB Tuning (DevSumi2010, Japanese)
Linux/DB Tuning (DevSumi2010, Japanese)
 
Azure Synapse Analytics 専用SQL Poolベストプラクティス
Azure Synapse Analytics 専用SQL PoolベストプラクティスAzure Synapse Analytics 専用SQL Poolベストプラクティス
Azure Synapse Analytics 専用SQL Poolベストプラクティス
 
フロントエンド開発環境
フロントエンド開発環境フロントエンド開発環境
フロントエンド開発環境
 
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック
 
[INSIGHT OUT 2011] B27 SQL Anywhereの先進のセルフヒーリング技術について(glenn paulley)
[INSIGHT OUT 2011] B27 SQL Anywhereの先進のセルフヒーリング技術について(glenn paulley)[INSIGHT OUT 2011] B27 SQL Anywhereの先進のセルフヒーリング技術について(glenn paulley)
[INSIGHT OUT 2011] B27 SQL Anywhereの先進のセルフヒーリング技術について(glenn paulley)
 
A 1-3 awsのクラウドデザインパターンをwindows-azureに持ってきてみた
A 1-3 awsのクラウドデザインパターンをwindows-azureに持ってきてみたA 1-3 awsのクラウドデザインパターンをwindows-azureに持ってきてみた
A 1-3 awsのクラウドデザインパターンをwindows-azureに持ってきてみた
 

More from Kazuyuki Mori

BitMech 探索的 トレーディングシステム fin-py study #1
BitMech 探索的 トレーディングシステム  fin-py study #1BitMech 探索的 トレーディングシステム  fin-py study #1
BitMech 探索的 トレーディングシステム fin-py study #1Kazuyuki Mori
 
GoPiGo2で遊んでみた
GoPiGo2で遊んでみたGoPiGo2で遊んでみた
GoPiGo2で遊んでみたKazuyuki Mori
 
Electron(旧atom shell)基礎+入門
Electron(旧atom shell)基礎+入門Electron(旧atom shell)基礎+入門
Electron(旧atom shell)基礎+入門Kazuyuki Mori
 
Dive into dockerネットワーク
Dive into dockerネットワークDive into dockerネットワーク
Dive into dockerネットワークKazuyuki Mori
 
Dockerハンズオン
DockerハンズオンDockerハンズオン
DockerハンズオンKazuyuki Mori
 
Docker基礎+docker0.9, 0.10概要
Docker基礎+docker0.9, 0.10概要Docker基礎+docker0.9, 0.10概要
Docker基礎+docker0.9, 0.10概要Kazuyuki Mori
 

More from Kazuyuki Mori (6)

BitMech 探索的 トレーディングシステム fin-py study #1
BitMech 探索的 トレーディングシステム  fin-py study #1BitMech 探索的 トレーディングシステム  fin-py study #1
BitMech 探索的 トレーディングシステム fin-py study #1
 
GoPiGo2で遊んでみた
GoPiGo2で遊んでみたGoPiGo2で遊んでみた
GoPiGo2で遊んでみた
 
Electron(旧atom shell)基礎+入門
Electron(旧atom shell)基礎+入門Electron(旧atom shell)基礎+入門
Electron(旧atom shell)基礎+入門
 
Dive into dockerネットワーク
Dive into dockerネットワークDive into dockerネットワーク
Dive into dockerネットワーク
 
Dockerハンズオン
DockerハンズオンDockerハンズオン
Dockerハンズオン
 
Docker基礎+docker0.9, 0.10概要
Docker基礎+docker0.9, 0.10概要Docker基礎+docker0.9, 0.10概要
Docker基礎+docker0.9, 0.10概要
 

モダンブラウザストレージ