SlideShare a Scribd company logo
1 of 56
Download to read offline
HTML 5 で作る
オフラインWebアプリケーション

                      2012/05/28
         第5.5回 GTUG Girls Meetup
   Toru Yoshikawa ( @yoshikawa_t )
Who?
吉川 徹/Toru Yoshikawa
  html5j.org/HTML5とか勉強会スタッフ

  Google API Expert ( Chrome )/Chrome API Developers
  JP

  Sublime Text 2 Japan Users Group

  allWebクリエイター塾/jQuery Mobile担当講師

  Twitter: @yoshikawa_t

  Blog: http://d.hatena.ne.jp/pikotea/
Agenda
オフラインWebアプリケーションとは?

オフラインWebアプリケーションの作り方

オフラインWebアプリケーションの関連する仕様

  1. ファイルのキャッシュ(Application Cache)

  2. データの保存(Web Storage)

  3. データベース(Indexed Database/Web SQL Database)

  4. データの同期、他(Online/Offline events, Network
  Information API, Shared Worker)

  5. ファイルの保存(File APIs)

まとめ
オフラインWebアプリケーションとは?
オフラインWebアプリケーションの特徴

 オフラインで動作させることができる

  地下鉄などネットワークが使えない環境で
  も利用できる

  サーバーが落ちていてもサイトを表示する
  ことができる

 必要なリソースをキャッシュするため、高速
 に動作する
Demo: Angry Birds




    http://chrome.angrybirds.com/
Demo: Financial Times




        http://app.ft.com/
オフラインWebアプリケーションの作り方


1.必要なファイルをキャッシュする

2.ユーザーデータ・設定をローカルに保存する

3.アプリケーションデータをローカルに保存
 する

4.必要があれば適時、データの同期を行う

5.ファイルをローカルに保存する
従来のWebアプリケーションのアーキテクチャ


             Webサーバー   DB




HTML/CSS/                   アプリケーションデータ
JavaScript



             ブラウザ
オフラインWebアプリケーションのアーキテクチャ
              (その1: シンプルな構成)


              Webサーバー



             キャッシュ


HTML/CSS/
JavaScript



              ブラウザ

        アプリケーションデータ     DB
オフラインWebアプリケーションのアーキテクチャ
             (その2: データの同期がある)


              Webサーバー        DB


             キャッシュ


HTML/CSS/                          データの同期
JavaScript



              ブラウザ           バックグラウンド

        アプリケーションデータ     DB
オフラインWebアプリケーションに関連する仕様

 必要なファイルをキャッシュする

   Application Cache

 ユーザーデータ・設定、アプリケーションデータをローカルに保存

   Web Storage

   Indexed Database/Web SQL Database

 必要があれば適時、データの同期を行う、他

   Online/Offline events

   Network Information API

   Web Workers (Shared Worker)

 ファイルをローカルに保存

   File APIs (File API, File API: Directories and System)
オフラインWebアプリケーションのアーキテクチャ



              Webサーバー               DB

                                               XHR2
                                            WebSockets
             AppCache

                                  Online/Offline events
HTML/CSS/                        Network Information API
JavaScript


                                  Shared Worker
               ブラウザ
       アプリケーションデータ      Web Storage
                        IndexedDB/WebSQL
                        File APIs
サンプル: オフラインTODOアプリ

http://dl.dropbox.com/u/18090951/gg5_5_offlineapp_todo.zip
1. 必要なファイルをキャッシュする
   Application Cache
Application Cache とは?

 ファイルをキャッシュする(静的ファイル)

 html/css/javascript/画像などをそのまま
 キャッシュすることができる

 既存のサイトにほとんど手を加えなくてもそのま
 ま適用できる

 既に多くのモバイルデバイスでサポートしている
Application Cache の利用方法

1.マニフェストファイルを作成する

2.<html>要素のmanifest属性でマニフェスト
 ファイルを記述して読み込む

3.(サーバー設定でマニフェストファイルのMIME
 Typeをtext/cache-manifestに設定する)
1. マニフェストファイルを作成する
site.appcache

CACHE MANIFEST
#last update: 2012/05/28

CACHE:
menu.html
css/reset.css
js/javascript.js

FALLBACK:
#index.html index_offline.html

NETWORK:
*
2. <html>要素のmanifest属性でマニフェスト
              ファイルを記述して読み込む
index.html

<!DOCTYPE html>
<html manifest="site.appcache">
...
</html>
3. サーバー設定でマニフェストファイルのMIME
     Typeをtext/cache-manifestに設定する
 ※ 将来的には、不要になります

Example: Apacheの.htaccessでの設定例
.htaccess

AddType text/cache-manifest .appcache


Example: JEEでの設定例
web.xml

<mime-mapping>
  <extension>manifest</extension>
  <mime-type>text/cache-manifest</mime-type>
</mime-mapping>
Application Cacheの注意点

 マニフェストファイルを読み込むhtmlファイルは自動的にキャッ
 シュされる

 ひとつでもエラーがあると全体がキャッシュされない(構文エラー
 や404など)

 ファイルの更新と同時に、マニフェストファイルの更新を忘れずに

 XHRにはキャッシュが適用されない

 メディアファイル(動画や音声)はまだ非サポート(※キャッシュさ
 れるがオフラインで再生できない)

 保存できる容量は20MB∼30MB程度(Chromeはディスクの10%)
Application Cacheの参考情報

 マニフェストファイルの生成ツール(manifestR)

 バリデーター(Cache Manifest Validator)

 A BEGINNER'S GUIDE TO USING THE
 APPLICATION CACHE - HTML5 Rocks

 Application Cacheの削除(Chromeの場合)
 chrome://appcache-internals
2. ユーザーデータ・設定をローカルに保存する
        Web Storage
Web Storage とは?
文字列データをブラウザに保存することができる

連想配列のようにキーと値をセットにして保存する
(KVS型)

ブラウザを閉じると消えるsessionStorageと、ブラ
ウザを閉じても保存されるlocalStorageがある

非常にシンプルなAPI

IE8から使える!
Web Storage の利用方法
データの保存

// fooというキーでbarという値を保存する
// 利用方法は3つの書き方があるが、いずれも同じ結果になる
localStorage.setItem("foo", "bar");
localStorage.foo = "bar";
localStorage[foo] = "bar";


データの取得

// fooというキーで値を取得する
localStorage.getItem("foo");
localStorage.foo;
localStorage[foo];
Web Storage の利用方法
データの削除

// fooというキーのデータを削除する
localStorage.removeItem("foo");

// すべて削除する
localStorage.clear();


データの一覧
//保存されている値をすべて表示する
for ( var i = 0, len = localStorage.length; i < len; i++ ) {
  console.log( localStorage.getItem(localStorage.key(i)) );
}
Web Storage の利用方法
JavaScriptオブジェクトを扱う

// JavaScriptオブジェクトをJSON化して保存する
var data = {
	 foo: bar
};
localStorage.setItem('data', JSON.stringify(data));

// JavaScriptオブジェクトに戻して取得する
var data = JSON.parse( localStorage.getItem('data') );
Web Storageの注意点

オリジン(プロトコル、ドメイン、ポート)ごと
にデータが保存される( Same Origin
Policy)

保存できる容量は、5MB程度

個人情報やパスワードのような機微なデータは保
存しない方が良い
Same Origin Policy
各APIのスコープをオリジンごとに制限する
HTML5共通の仕様

•   オリジンは次の3つで構成される

    •   スキーマ

    •   ドメイン

    •   ポート

http://example.com:80/
3. アプリケーションデータをローカルに保存する
 Indexed Database/Web SQL Database
Indexed Database とは?

 JavaScriptオブジェクトを保存できる

 インデックスによる検索が可能(非SQL)

 トランザクションによる複数のデータ操作が可能

 APIが少し難解で扱いづらい

 Chrome、Firefoxが対応(IEは10から対応)
Web SQL Database とは?

 RDBMS

 SQLでデータを操作することができる

 仕様策定が停止されている

 Chrome、Safari、Operaが対応

 モバイルはAndroid、Safariが対応
Indexed Database の利用方法
データベースの作成
// データベースの作成
var request = indexedDB.open("dbName", 1);

// データベースのスキーマ作成
request.onupgradeneeded = function(event) {
  var db = event.target.result;

  // オブジェクトストアの作成
  var objectStore = db.createObjectStore("objectStoreName", { keyPath: "id" });
  // インデックスの作成
  objectStore.createIndex("indexName", "name", { unique: false });
  // イニシャルデータの保存
  var data = [
     { id: 1, name: "a", email: "a@example.com", tel: "0123" },
      { id: 2, name: "b", email: "b@example.com", tel: "4567" }
   ];
   for (i in data) {
      objectStore.add(data[i]);
   }
};
Indexed Database の利用方法
データベースのオープンとデータの取得
// データベースのオープン
var openRequest = indexedDB.open("dbName");

openRequest.onsuccess = function(event) {
  var db = event.target.result;

     var transaction = db.transaction(["objectStoreName"]);
     var objectStore = transaction.objectStore("objectStoreName");
     var request = objectStore.get(1);
     request.onerror = function(evt) {
       // エラー
     };
     request.onsuccess = function(evt) {
        // console.log( request.result.name );
     };
};
Indexed Database の利用方法
カーソルを利用したデータの取得(イテレート)

var objectStore =
db.transaction("objectStoreName").objectStore("objectStoreName");

objectStore.openCursor().onsuccess = function(event) {
   var cursor = event.target.result;
   if (cursor) {
     // console.log( cursor.value.name);
     cursor.continue();
   }
};



インデックスを検索
var index = objectStore.index("indexName");
index.get("a").onsuccess = function(event) {
   // console.log(event.target.result.id);
};
Indexed Database の利用方法
データの追加
var transaction = db.transaction(["objectStoreName"], IDBTransaction.READ_WRITE);

var objectStore = transaction.objectStore("objectStoreName");
var request = objectStore.add({
	 //...
});
request.onsuccess = function(event) {
  // データ追加成功
}
Indexed Databaseの注意点

 JavaScriptオブジェクト内のfunctionなどは保存できな
 い(Structure Clone Algorithm)

 オブジェクトストアやインデックスの作成は、データベース
 オープン時の特殊なトランザクション中にしか変更できない
 (Chromeでは、setVersionを使う)

 必ずトランザクションを利用してデータの取得、更新を行う

 データをソートするには、ソート用のインデックスを作成す
 る
Structured Clone Algorithm
JavaScriptデータをコピーする際にオブジェクトか
ら関数や循環参照を取り除いてコピーするアルゴ
リズム。Indexed Databaseのデータの保存やWeb
Workersでのメッセージの交換に利用されている
// コピー前
var data = {
  for: "bar",
  test : function(){
	    //...
  }
}
// コピー後
/* data = */ {
  for: "bar"
}
Indexed Databaseの参考情報

 A SIMPLE TODO LIST USING HTML5
 INDEXEDDB -HTML5 Rocks

 Using IndexedDB - MDN

 jdb.js
4. 必要があれば適時、データの同期を行う
    Online/Offline events
   Network Information API
        Shared Worker
Online/Offline eventsとは?


 Demo ( http://html5-
 demos.appspot.com/static/
 navigator.onLine.html )

 オンライン/オフラインの状態を取得できる

 オンラインになったときに同期を開始するなどの
 処理を行うことができる
Online/Offline events の利用方法
オンライン/オフライン状態の取得
if ( navigator.onLine ) {
  console.log('ONLINE');
} else {
  console.log('OFFLINE');
}



オンラインイベント
window.addEventListener('online', function(e) {
  // 同期の開始
}, false);
Online/Offline eventsの注意点


  接続しているネットワークしか見ていないので、
  オンラインになったからといってインターネット
  に繋がっているとは限らない
Network Information APIとは?

  接続しているネットワークの速度、課金の有無な
  どを取得できる

  ネットワークが遅い場合や従量課金で接続してい
  る場合などは、同期を自動で行わないなど処理を
  分けることができる

  Android 2.2+、Firefoxのみで利用可能
Online/Offline events の利用方法
ネットワークの速度を取得する(MB/s)
if ( navigator.connection.bandwidth < 2 ) {
	 // 2MB/s以下の場合
} else {
	 // ブロードバンド接続の場合
}



課金の有無を取得する
if ( navigator.connection.metered == false ) {
  // データ同期処理
}
Shared Workerとは?

バックグラウンドでJavaScriptを動作させるこ
とのできるWeb Workersの仕様のひとつ

複数のウィンドウ(タブ)で共通のひとつのバッ
クグラウンド処理を利用できる

データの同期をバックグラウンドで行う際に便利
Shared Worker の利用方法
ワーカーの作成とメッセージの送受信
var worker = new SharedWorker('worker.js');
worker.addEventListener('message', function(e) {
  console.log('メッセージ受信: ', e.data);
}, false);

worker.postMessage('メッセージ送信');


worker.js
// 受け取ったメッセージをそのまま返信
self.addEventListener('message', function(e) {
  self.postMessage(e.data);
}, false);
Shared Worker の参考情報

 THE BASICS OF WEB WORKERS - HTML5
 Rocks
5. ファイルの保存
 File APIs
File APIs とは?
大きな仕様は、File APIとFile API: Directories and
Systems (File System API)の2つ

File APIでは、ドラッグ&ドロップされたファイルを読み取るFile
Readerなどが定義されている

File System APIでは、Webアプリケーションで利用可能なファイル
システム領域を作成できる

バイナリファイルをそのまま保存しておきたい場合などに利用する

Demo ( http://www.htmlfivewow.com/demos/terminal/
terminal.html )

現状は、Chromeのみでの実装
File System API の利用方法
選択したファイルをコピーして保存する
<input type="file" id="myfile" multiple />



document.querySelector('#myfile').onchange = function(e) {
  var files = this.files;
  window.requestFileSystem(window.TEMPORARY, 1024*1024, function(fs) {
    for (var i = 0, file; file = files[i]; ++i) {

       (function(f) {
         fs.root.getFile(file.name, {create: true, exclusive: true},
function(fileEntry) {
           fileEntry.createWriter(function(fileWriter) {
             fileWriter.write(f);
           }, errorHandler);
         }, errorHandler);
       })(file);
     }
   }, errorHandler);
};
File APIs の参考情報

READING FILES IN JAVASCRIPT USING THE
FILE APIS - HTML5 Rocks

EXPLORING THE FILESYSTEM APIS - HTML5
Rocks

ファイルのクォータを管理するQuota
Management APIも策定中
まとめ
まとめ
Application CacheやWeb Storageなどは、簡単
に利用できるので手軽に導入できる

反面、Indexed Databaseはまだまだ利用できる環
境も少なく、扱いづらいため普及と便利なライブラ
リが待ち望まれる

データの同期を行うWebアプリケーションの場合、
フェールセーフやコリジョンなどを考えるので難易度
が非常に高くなる。コストとの兼ね合いを
Thank you!!
 ( @yoshikawa_t )
Resources

HTML5のオフライン機能( http://gdd11-html5-
offline.googlecode.com/git/japanese.html )

HTML5 Rocks ( http://www.html5rocks.com/ja/ )

Mozilla Developer Network ( https://developer.mozilla.org/
ja/ )

When can i use... ( http://caniuse.com )

Mobile HTML5 ( http://mobilehtml5.org/ )

More Related Content

What's hot

Oracle jdk 20190827 - 今、あらためてOracle提供のJDKを語る
Oracle jdk 20190827 - 今、あらためてOracle提供のJDKを語るOracle jdk 20190827 - 今、あらためてOracle提供のJDKを語る
Oracle jdk 20190827 - 今、あらためてOracle提供のJDKを語るオラクルエンジニア通信
 
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)NTT DATA Technology & Innovation
 
Apache Bigtopによるオープンなビッグデータ処理基盤の構築(オープンデベロッパーズカンファレンス 2021 Online 発表資料)
Apache Bigtopによるオープンなビッグデータ処理基盤の構築(オープンデベロッパーズカンファレンス 2021 Online 発表資料)Apache Bigtopによるオープンなビッグデータ処理基盤の構築(オープンデベロッパーズカンファレンス 2021 Online 発表資料)
Apache Bigtopによるオープンなビッグデータ処理基盤の構築(オープンデベロッパーズカンファレンス 2021 Online 発表資料)NTT DATA Technology & Innovation
 
Modern Authentication -- FIDO2 Web Authentication (WebAuthn) を学ぶ --
Modern Authentication -- FIDO2 Web Authentication (WebAuthn) を学ぶ --Modern Authentication -- FIDO2 Web Authentication (WebAuthn) を学ぶ --
Modern Authentication -- FIDO2 Web Authentication (WebAuthn) を学ぶ --Jun Kurihara
 
【de:code 2020】 Azure Synapse Analytics 技術編 ~ 最新の統合分析プラットフォームによる新しい価値の創出(前編)
【de:code 2020】 Azure Synapse Analytics 技術編 ~ 最新の統合分析プラットフォームによる新しい価値の創出(前編)【de:code 2020】 Azure Synapse Analytics 技術編 ~ 最新の統合分析プラットフォームによる新しい価値の創出(前編)
【de:code 2020】 Azure Synapse Analytics 技術編 ~ 最新の統合分析プラットフォームによる新しい価値の創出(前編)日本マイクロソフト株式会社
 
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編Masahito Zembutsu
 
OPcacheの新機能ファイルベースキャッシュの内部実装を読んでみた
OPcacheの新機能ファイルベースキャッシュの内部実装を読んでみたOPcacheの新機能ファイルベースキャッシュの内部実装を読んでみた
OPcacheの新機能ファイルベースキャッシュの内部実装を読んでみたYoshio Hanawa
 
これからのJDK 何を選ぶ?どう選ぶ? (v1.2) in 熊本
これからのJDK 何を選ぶ?どう選ぶ? (v1.2) in 熊本これからのJDK 何を選ぶ?どう選ぶ? (v1.2) in 熊本
これからのJDK 何を選ぶ?どう選ぶ? (v1.2) in 熊本Takahiro YAMADA
 
2018 builderscon airflowを用いて、 複雑大規模なジョブフロー管理 に立ち向かう
2018 builderscon airflowを用いて、 複雑大規模なジョブフロー管理 に立ち向かう2018 builderscon airflowを用いて、 複雑大規模なジョブフロー管理 に立ち向かう
2018 builderscon airflowを用いて、 複雑大規模なジョブフロー管理 に立ち向かうBrainPad Inc.
 
SQLアンチパターン - ナイーブツリー
SQLアンチパターン - ナイーブツリーSQLアンチパターン - ナイーブツリー
SQLアンチパターン - ナイーブツリーke-m kamekoopa
 
ファイルシステム比較
ファイルシステム比較ファイルシステム比較
ファイルシステム比較NaoyaFukuda
 
Apache BigtopによるHadoopエコシステムのパッケージング(Open Source Conference 2021 Online/Osaka...
Apache BigtopによるHadoopエコシステムのパッケージング(Open Source Conference 2021 Online/Osaka...Apache BigtopによるHadoopエコシステムのパッケージング(Open Source Conference 2021 Online/Osaka...
Apache BigtopによるHadoopエコシステムのパッケージング(Open Source Conference 2021 Online/Osaka...NTT DATA Technology & Innovation
 
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)NTT DATA Technology & Innovation
 
【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発
【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発
【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発日本マイクロソフト株式会社
 
Gradleどうでしょう
GradleどうでしょうGradleどうでしょう
GradleどうでしょうTakuma Watabiki
 
JenkinsとDockerって何が良いの? 〜言うてるオレもわからんわ〜 #jenkinsstudy
JenkinsとDockerって何が良いの? 〜言うてるオレもわからんわ〜 #jenkinsstudyJenkinsとDockerって何が良いの? 〜言うてるオレもわからんわ〜 #jenkinsstudy
JenkinsとDockerって何が良いの? 〜言うてるオレもわからんわ〜 #jenkinsstudyKazuhito Miura
 

What's hot (20)

Oracle jdk 20190827 - 今、あらためてOracle提供のJDKを語る
Oracle jdk 20190827 - 今、あらためてOracle提供のJDKを語るOracle jdk 20190827 - 今、あらためてOracle提供のJDKを語る
Oracle jdk 20190827 - 今、あらためてOracle提供のJDKを語る
 
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
Javaコードが速く実⾏される秘密 - JITコンパイラ⼊⾨(JJUG CCC 2020 Fall講演資料)
 
進化するArt
進化するArt進化するArt
進化するArt
 
Apache Bigtopによるオープンなビッグデータ処理基盤の構築(オープンデベロッパーズカンファレンス 2021 Online 発表資料)
Apache Bigtopによるオープンなビッグデータ処理基盤の構築(オープンデベロッパーズカンファレンス 2021 Online 発表資料)Apache Bigtopによるオープンなビッグデータ処理基盤の構築(オープンデベロッパーズカンファレンス 2021 Online 発表資料)
Apache Bigtopによるオープンなビッグデータ処理基盤の構築(オープンデベロッパーズカンファレンス 2021 Online 発表資料)
 
Modern Authentication -- FIDO2 Web Authentication (WebAuthn) を学ぶ --
Modern Authentication -- FIDO2 Web Authentication (WebAuthn) を学ぶ --Modern Authentication -- FIDO2 Web Authentication (WebAuthn) を学ぶ --
Modern Authentication -- FIDO2 Web Authentication (WebAuthn) を学ぶ --
 
【de:code 2020】 Azure Synapse Analytics 技術編 ~ 最新の統合分析プラットフォームによる新しい価値の創出(前編)
【de:code 2020】 Azure Synapse Analytics 技術編 ~ 最新の統合分析プラットフォームによる新しい価値の創出(前編)【de:code 2020】 Azure Synapse Analytics 技術編 ~ 最新の統合分析プラットフォームによる新しい価値の創出(前編)
【de:code 2020】 Azure Synapse Analytics 技術編 ~ 最新の統合分析プラットフォームによる新しい価値の創出(前編)
 
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編
 
WiredTigerを詳しく説明
WiredTigerを詳しく説明WiredTigerを詳しく説明
WiredTigerを詳しく説明
 
OPcacheの新機能ファイルベースキャッシュの内部実装を読んでみた
OPcacheの新機能ファイルベースキャッシュの内部実装を読んでみたOPcacheの新機能ファイルベースキャッシュの内部実装を読んでみた
OPcacheの新機能ファイルベースキャッシュの内部実装を読んでみた
 
これからのJDK 何を選ぶ?どう選ぶ? (v1.2) in 熊本
これからのJDK 何を選ぶ?どう選ぶ? (v1.2) in 熊本これからのJDK 何を選ぶ?どう選ぶ? (v1.2) in 熊本
これからのJDK 何を選ぶ?どう選ぶ? (v1.2) in 熊本
 
2018 builderscon airflowを用いて、 複雑大規模なジョブフロー管理 に立ち向かう
2018 builderscon airflowを用いて、 複雑大規模なジョブフロー管理 に立ち向かう2018 builderscon airflowを用いて、 複雑大規模なジョブフロー管理 に立ち向かう
2018 builderscon airflowを用いて、 複雑大規模なジョブフロー管理 に立ち向かう
 
Jakarta CDI 4.0
Jakarta CDI 4.0Jakarta CDI 4.0
Jakarta CDI 4.0
 
SQLアンチパターン - ナイーブツリー
SQLアンチパターン - ナイーブツリーSQLアンチパターン - ナイーブツリー
SQLアンチパターン - ナイーブツリー
 
ファイルシステム比較
ファイルシステム比較ファイルシステム比較
ファイルシステム比較
 
Google Cloud で実践する SRE
Google Cloud で実践する SRE  Google Cloud で実践する SRE
Google Cloud で実践する SRE
 
Apache BigtopによるHadoopエコシステムのパッケージング(Open Source Conference 2021 Online/Osaka...
Apache BigtopによるHadoopエコシステムのパッケージング(Open Source Conference 2021 Online/Osaka...Apache BigtopによるHadoopエコシステムのパッケージング(Open Source Conference 2021 Online/Osaka...
Apache BigtopによるHadoopエコシステムのパッケージング(Open Source Conference 2021 Online/Osaka...
 
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
 
【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発
【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発
【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発
 
Gradleどうでしょう
GradleどうでしょうGradleどうでしょう
Gradleどうでしょう
 
JenkinsとDockerって何が良いの? 〜言うてるオレもわからんわ〜 #jenkinsstudy
JenkinsとDockerって何が良いの? 〜言うてるオレもわからんわ〜 #jenkinsstudyJenkinsとDockerって何が良いの? 〜言うてるオレもわからんわ〜 #jenkinsstudy
JenkinsとDockerって何が良いの? 〜言うてるオレもわからんわ〜 #jenkinsstudy
 

Similar to HTML5でオフラインWebアプリケーションを作ろう

Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方linzhixing
 
XAML と C# を使った Windows ストアアプリ(LOB)構築のためのtips Prism 4.5 & Kona project 等のご紹介
XAML と C# を使った Windows ストアアプリ(LOB)構築のためのtips   Prism 4.5 & Kona project 等のご紹介XAML と C# を使った Windows ストアアプリ(LOB)構築のためのtips   Prism 4.5 & Kona project 等のご紹介
XAML と C# を使った Windows ストアアプリ(LOB)構築のためのtips Prism 4.5 & Kona project 等のご紹介Shotaro Suzuki
 
OSS on Azure で構築するウェブアプリケーション
OSS on Azure で構築するウェブアプリケーションOSS on Azure で構築するウェブアプリケーション
OSS on Azure で構築するウェブアプリケーションDaisuke Masubuchi
 
Concentrated HTML5 & Attractive HTML5
Concentrated HTML5 & Attractive HTML5Concentrated HTML5 & Attractive HTML5
Concentrated HTML5 & Attractive HTML5Sho Ito
 
ASP.NET シングル ページ アプリケーション (SPA) 詳説
ASP.NET シングル ページ アプリケーション (SPA) 詳説ASP.NET シングル ページ アプリケーション (SPA) 詳説
ASP.NET シングル ページ アプリケーション (SPA) 詳説Akira Inoue
 
Google Compute EngineとPipe API
Google Compute EngineとPipe APIGoogle Compute EngineとPipe API
Google Compute EngineとPipe APImaruyama097
 
Google Compute EngineとGAE Pipeline API
Google Compute EngineとGAE Pipeline APIGoogle Compute EngineとGAE Pipeline API
Google Compute EngineとGAE Pipeline APImaruyama097
 
Apps for office オンプレミスとクラウド
Apps for office オンプレミスとクラウドApps for office オンプレミスとクラウド
Apps for office オンプレミスとクラウドHirotada Watanabe
 
Webフロントエンド開発の最新トレンド - HTML5, モバイル, オフライン
Webフロントエンド開発の最新トレンド - HTML5, モバイル, オフラインWebフロントエンド開発の最新トレンド - HTML5, モバイル, オフライン
Webフロントエンド開発の最新トレンド - HTML5, モバイル, オフラインShumpei Shiraishi
 
サーバー管理よ、サヨウナラ。サーバーレス アーキテクチャの意義と実践
サーバー管理よ、サヨウナラ。サーバーレス アーキテクチャの意義と実践サーバー管理よ、サヨウナラ。サーバーレス アーキテクチャの意義と実践
サーバー管理よ、サヨウナラ。サーバーレス アーキテクチャの意義と実践真吾 吉田
 
【de:code 2020】 「あつまれ フロントエンドエンジニア」 Azure Static Web Apps がやってきた
【de:code 2020】 「あつまれ フロントエンドエンジニア」 Azure Static Web Apps がやってきた【de:code 2020】 「あつまれ フロントエンドエンジニア」 Azure Static Web Apps がやってきた
【de:code 2020】 「あつまれ フロントエンドエンジニア」 Azure Static Web Apps がやってきた日本マイクロソフト株式会社
 
[AC08] 新世代のアーキテクチャに移行せよ。富士フイルムの事例に学ぶ、クラウドネイティブソリューションのビジョンと設計
[AC08] 新世代のアーキテクチャに移行せよ。富士フイルムの事例に学ぶ、クラウドネイティブソリューションのビジョンと設計[AC08] 新世代のアーキテクチャに移行せよ。富士フイルムの事例に学ぶ、クラウドネイティブソリューションのビジョンと設計
[AC08] 新世代のアーキテクチャに移行せよ。富士フイルムの事例に学ぶ、クラウドネイティブソリューションのビジョンと設計de:code 2017
 
Windows Azure ではじめる Windows ストアアプリ開発
Windows Azure ではじめる Windows ストアアプリ開発Windows Azure ではじめる Windows ストアアプリ開発
Windows Azure ではじめる Windows ストアアプリ開発Shotaro Suzuki
 
Azure Cosmos DB を使った高速分散アプリケーションの設計パターン
Azure Cosmos DB を使った高速分散アプリケーションの設計パターンAzure Cosmos DB を使った高速分散アプリケーションの設計パターン
Azure Cosmos DB を使った高速分散アプリケーションの設計パターンKazuyuki Miyake
 
オフラインファーストの思想と実践
オフラインファーストの思想と実践オフラインファーストの思想と実践
オフラインファーストの思想と実践Shumpei Shiraishi
 
[AC11] サーバー管理よ、サヨウナラ。サーバーレスアーキテクチャの意義と実践
[AC11] サーバー管理よ、サヨウナラ。サーバーレスアーキテクチャの意義と実践[AC11] サーバー管理よ、サヨウナラ。サーバーレスアーキテクチャの意義と実践
[AC11] サーバー管理よ、サヨウナラ。サーバーレスアーキテクチャの意義と実践de:code 2017
 

Similar to HTML5でオフラインWebアプリケーションを作ろう (20)

Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
 
XAML と C# を使った Windows ストアアプリ(LOB)構築のためのtips Prism 4.5 & Kona project 等のご紹介
XAML と C# を使った Windows ストアアプリ(LOB)構築のためのtips   Prism 4.5 & Kona project 等のご紹介XAML と C# を使った Windows ストアアプリ(LOB)構築のためのtips   Prism 4.5 & Kona project 等のご紹介
XAML と C# を使った Windows ストアアプリ(LOB)構築のためのtips Prism 4.5 & Kona project 等のご紹介
 
OSS on Azure で構築するウェブアプリケーション
OSS on Azure で構築するウェブアプリケーションOSS on Azure で構築するウェブアプリケーション
OSS on Azure で構築するウェブアプリケーション
 
Concentrated HTML5 & Attractive HTML5
Concentrated HTML5 & Attractive HTML5Concentrated HTML5 & Attractive HTML5
Concentrated HTML5 & Attractive HTML5
 
HTML5&API総まくり
HTML5&API総まくりHTML5&API総まくり
HTML5&API総まくり
 
ASP.NET シングル ページ アプリケーション (SPA) 詳説
ASP.NET シングル ページ アプリケーション (SPA) 詳説ASP.NET シングル ページ アプリケーション (SPA) 詳説
ASP.NET シングル ページ アプリケーション (SPA) 詳説
 
Google Compute EngineとPipe API
Google Compute EngineとPipe APIGoogle Compute EngineとPipe API
Google Compute EngineとPipe API
 
Google Compute EngineとGAE Pipeline API
Google Compute EngineとGAE Pipeline APIGoogle Compute EngineとGAE Pipeline API
Google Compute EngineとGAE Pipeline API
 
Apps for office オンプレミスとクラウド
Apps for office オンプレミスとクラウドApps for office オンプレミスとクラウド
Apps for office オンプレミスとクラウド
 
Webフロントエンド開発の最新トレンド - HTML5, モバイル, オフライン
Webフロントエンド開発の最新トレンド - HTML5, モバイル, オフラインWebフロントエンド開発の最新トレンド - HTML5, モバイル, オフライン
Webフロントエンド開発の最新トレンド - HTML5, モバイル, オフライン
 
サーバー管理よ、サヨウナラ。サーバーレス アーキテクチャの意義と実践
サーバー管理よ、サヨウナラ。サーバーレス アーキテクチャの意義と実践サーバー管理よ、サヨウナラ。サーバーレス アーキテクチャの意義と実践
サーバー管理よ、サヨウナラ。サーバーレス アーキテクチャの意義と実践
 
【de:code 2020】 「あつまれ フロントエンドエンジニア」 Azure Static Web Apps がやってきた
【de:code 2020】 「あつまれ フロントエンドエンジニア」 Azure Static Web Apps がやってきた【de:code 2020】 「あつまれ フロントエンドエンジニア」 Azure Static Web Apps がやってきた
【de:code 2020】 「あつまれ フロントエンドエンジニア」 Azure Static Web Apps がやってきた
 
HTML5最新動向
HTML5最新動向HTML5最新動向
HTML5最新動向
 
[AC08] 新世代のアーキテクチャに移行せよ。富士フイルムの事例に学ぶ、クラウドネイティブソリューションのビジョンと設計
[AC08] 新世代のアーキテクチャに移行せよ。富士フイルムの事例に学ぶ、クラウドネイティブソリューションのビジョンと設計[AC08] 新世代のアーキテクチャに移行せよ。富士フイルムの事例に学ぶ、クラウドネイティブソリューションのビジョンと設計
[AC08] 新世代のアーキテクチャに移行せよ。富士フイルムの事例に学ぶ、クラウドネイティブソリューションのビジョンと設計
 
Windows Azure ではじめる Windows ストアアプリ開発
Windows Azure ではじめる Windows ストアアプリ開発Windows Azure ではじめる Windows ストアアプリ開発
Windows Azure ではじめる Windows ストアアプリ開発
 
Mvc conf session_5_isami
Mvc conf session_5_isamiMvc conf session_5_isami
Mvc conf session_5_isami
 
Azure Cosmos DB を使った高速分散アプリケーションの設計パターン
Azure Cosmos DB を使った高速分散アプリケーションの設計パターンAzure Cosmos DB を使った高速分散アプリケーションの設計パターン
Azure Cosmos DB を使った高速分散アプリケーションの設計パターン
 
オフラインファーストの思想と実践
オフラインファーストの思想と実践オフラインファーストの思想と実践
オフラインファーストの思想と実践
 
[AC11] サーバー管理よ、サヨウナラ。サーバーレスアーキテクチャの意義と実践
[AC11] サーバー管理よ、サヨウナラ。サーバーレスアーキテクチャの意義と実践[AC11] サーバー管理よ、サヨウナラ。サーバーレスアーキテクチャの意義と実践
[AC11] サーバー管理よ、サヨウナラ。サーバーレスアーキテクチャの意義と実践
 
20080524
2008052420080524
20080524
 

More from yoshikawa_t

Ionicで作るTechfeed
Ionicで作るTechfeedIonicで作るTechfeed
Ionicで作るTechfeedyoshikawa_t
 
困った時のDev toolsの使い方(初心者向け)
困った時のDev toolsの使い方(初心者向け)困った時のDev toolsの使い方(初心者向け)
困った時のDev toolsの使い方(初心者向け)yoshikawa_t
 
TechFeedというテクノロジーキュレーションサービスを作った話
TechFeedというテクノロジーキュレーションサービスを作った話TechFeedというテクノロジーキュレーションサービスを作った話
TechFeedというテクノロジーキュレーションサービスを作った話yoshikawa_t
 
Chrome DevTools Awesome 10 Features +1
Chrome DevTools Awesome 10 Features +1Chrome DevTools Awesome 10 Features +1
Chrome DevTools Awesome 10 Features +1yoshikawa_t
 
これからのモバイルWebと最新動向
これからのモバイルWebと最新動向これからのモバイルWebと最新動向
これからのモバイルWebと最新動向yoshikawa_t
 
いまさら聞けないHTML5概要
いまさら聞けないHTML5概要いまさら聞けないHTML5概要
いまさら聞けないHTML5概要yoshikawa_t
 
オフラインWebアプリの再到来で今、再び注目されるAPIの本命 ーJavaScript SQL-like database
オフラインWebアプリの再到来で今、再び注目されるAPIの本命 ーJavaScript SQL-like databaseオフラインWebアプリの再到来で今、再び注目されるAPIの本命 ーJavaScript SQL-like database
オフラインWebアプリの再到来で今、再び注目されるAPIの本命 ーJavaScript SQL-like databaseyoshikawa_t
 
jQuery Mobile is not dead!
jQuery Mobile is not dead!jQuery Mobile is not dead!
jQuery Mobile is not dead!yoshikawa_t
 
HTML5開発最前線
HTML5開発最前線HTML5開発最前線
HTML5開発最前線yoshikawa_t
 
Chrome Apps のデバイスAPI
Chrome Apps のデバイスAPIChrome Apps のデバイスAPI
Chrome Apps のデバイスAPIyoshikawa_t
 
Chrome Apps & Chromeウェブストア概要
Chrome Apps & Chromeウェブストア概要Chrome Apps & Chromeウェブストア概要
Chrome Apps & Chromeウェブストア概要yoshikawa_t
 
Chrome DevTools for beginners v1.2
Chrome DevTools for beginners v1.2Chrome DevTools for beginners v1.2
Chrome DevTools for beginners v1.2yoshikawa_t
 
モバイル時代のWebパフォーマンス
モバイル時代のWebパフォーマンスモバイル時代のWebパフォーマンス
モバイル時代のWebパフォーマンスyoshikawa_t
 
モバイル時代のWebパフォーマンスTips
モバイル時代のWebパフォーマンスTipsモバイル時代のWebパフォーマンスTips
モバイル時代のWebパフォーマンスTipsyoshikawa_t
 
Chrome apps for mobile 概要
Chrome apps for mobile 概要Chrome apps for mobile 概要
Chrome apps for mobile 概要yoshikawa_t
 
Chrome Apps 概要
Chrome Apps 概要Chrome Apps 概要
Chrome Apps 概要yoshikawa_t
 
Chrome Devtools for beginners (v1.1)
Chrome Devtools for beginners (v1.1)Chrome Devtools for beginners (v1.1)
Chrome Devtools for beginners (v1.1)yoshikawa_t
 
Html5概要 & デモ
Html5概要 & デモHtml5概要 & デモ
Html5概要 & デモyoshikawa_t
 
いまさら聞けないCSSレイアウト入門
いまさら聞けないCSSレイアウト入門いまさら聞けないCSSレイアウト入門
いまさら聞けないCSSレイアウト入門yoshikawa_t
 
Sencha touch vs j query mobile
Sencha touch vs j query mobileSencha touch vs j query mobile
Sencha touch vs j query mobileyoshikawa_t
 

More from yoshikawa_t (20)

Ionicで作るTechfeed
Ionicで作るTechfeedIonicで作るTechfeed
Ionicで作るTechfeed
 
困った時のDev toolsの使い方(初心者向け)
困った時のDev toolsの使い方(初心者向け)困った時のDev toolsの使い方(初心者向け)
困った時のDev toolsの使い方(初心者向け)
 
TechFeedというテクノロジーキュレーションサービスを作った話
TechFeedというテクノロジーキュレーションサービスを作った話TechFeedというテクノロジーキュレーションサービスを作った話
TechFeedというテクノロジーキュレーションサービスを作った話
 
Chrome DevTools Awesome 10 Features +1
Chrome DevTools Awesome 10 Features +1Chrome DevTools Awesome 10 Features +1
Chrome DevTools Awesome 10 Features +1
 
これからのモバイルWebと最新動向
これからのモバイルWebと最新動向これからのモバイルWebと最新動向
これからのモバイルWebと最新動向
 
いまさら聞けないHTML5概要
いまさら聞けないHTML5概要いまさら聞けないHTML5概要
いまさら聞けないHTML5概要
 
オフラインWebアプリの再到来で今、再び注目されるAPIの本命 ーJavaScript SQL-like database
オフラインWebアプリの再到来で今、再び注目されるAPIの本命 ーJavaScript SQL-like databaseオフラインWebアプリの再到来で今、再び注目されるAPIの本命 ーJavaScript SQL-like database
オフラインWebアプリの再到来で今、再び注目されるAPIの本命 ーJavaScript SQL-like database
 
jQuery Mobile is not dead!
jQuery Mobile is not dead!jQuery Mobile is not dead!
jQuery Mobile is not dead!
 
HTML5開発最前線
HTML5開発最前線HTML5開発最前線
HTML5開発最前線
 
Chrome Apps のデバイスAPI
Chrome Apps のデバイスAPIChrome Apps のデバイスAPI
Chrome Apps のデバイスAPI
 
Chrome Apps & Chromeウェブストア概要
Chrome Apps & Chromeウェブストア概要Chrome Apps & Chromeウェブストア概要
Chrome Apps & Chromeウェブストア概要
 
Chrome DevTools for beginners v1.2
Chrome DevTools for beginners v1.2Chrome DevTools for beginners v1.2
Chrome DevTools for beginners v1.2
 
モバイル時代のWebパフォーマンス
モバイル時代のWebパフォーマンスモバイル時代のWebパフォーマンス
モバイル時代のWebパフォーマンス
 
モバイル時代のWebパフォーマンスTips
モバイル時代のWebパフォーマンスTipsモバイル時代のWebパフォーマンスTips
モバイル時代のWebパフォーマンスTips
 
Chrome apps for mobile 概要
Chrome apps for mobile 概要Chrome apps for mobile 概要
Chrome apps for mobile 概要
 
Chrome Apps 概要
Chrome Apps 概要Chrome Apps 概要
Chrome Apps 概要
 
Chrome Devtools for beginners (v1.1)
Chrome Devtools for beginners (v1.1)Chrome Devtools for beginners (v1.1)
Chrome Devtools for beginners (v1.1)
 
Html5概要 & デモ
Html5概要 & デモHtml5概要 & デモ
Html5概要 & デモ
 
いまさら聞けないCSSレイアウト入門
いまさら聞けないCSSレイアウト入門いまさら聞けないCSSレイアウト入門
いまさら聞けないCSSレイアウト入門
 
Sencha touch vs j query mobile
Sencha touch vs j query mobileSencha touch vs j query mobile
Sencha touch vs j query mobile
 

HTML5でオフラインWebアプリケーションを作ろう