狠狠撸

狠狠撸Share a Scribd company logo
Google Gears

データベースの基礎


            WebOS Goodies
                  伊藤千光
Gearsデータベースの特徴

基本的に SQLite そのままの、本格的な RDB です。

JavaScript で SQL を発行することでアクセスします。

ローカルに大容量データを保存できます。(現在のところ容量無制限)

SQL の実行はネイティブコードなので、高速です。

トランザクションをサポートしています。

ドメインを基本としたセキュリティーモデルになっています。

ユーザーなどの概念はありません。

同期式 API なので、使い方が簡単です。コールバックはいりません!

全文検索もできます。(現在、日本語は未対応。 Gears 0.3 で対応?)
gears_init.jsを読み込む

Gears の機能を使うときは必ず読み込む。
以下のように script タグで読み込めば OK。


  <script type="text/javascript" src=/slideshow/gears-db-basics/13505443/"gears_init.js"></script>



gears_init.js は、 Google Code で配布されています。

http://code.google.com/apis/gears/
Gearsのインストールを確認

 window.google.gears が定義されていれば Gears インストール済み。
 インストールされていない場合は、 Gears のインストールページにリダイ
 レクトする。

if(!window.google || !google.gears) {
    // Gears がインストールされていなければ、インストールページにリダイレクト
    location.href = "http://gears.google.com/?action=install&message=' +
                    escape('Google Gears をインストールしてください');
} else {
    // 次に続く...                            インストールページに表示するメッセージ
}
インターフェースを取得
 google.gears.factory.create を呼び出して、DB操作のためのインターフェース
 を取得します。
 ユーザーに Gears の利用の可否を尋ねるダイアログが表示されます。
 ユーザーが拒否すると例外が投げられるので、適切に処理してください。

} else { // 前からの続き
    try {
        db = google.gears.factory.create('beta.database', '1.0');
    } catch(e) {
        // Gears の利用を拒否されたときの処理                       引数は事実上これに固定
        throw e;
    }
}
データベースを開く

open メソッドを呼び出して、データベースを開きます。
引数はデータベース名です。
データベースが存在しなければ、自動的に作成されます。
データベース名は ASCII 文字しか使えません。一部の記号も使えません。
ひとつのインターフェースでは同時にひとつのデータベースしか開けません。
複数のデータベースを同時に使うときは、もうひとつインターフェースを作成
してください。


  db.open('db_name');
テーブルの作成
execute メソッドで SQL を実行できます。
まずはテーブルがないと話にならないので、テーブルを作ります。
SQL の CREATE を発行してテーブルを作ります。
IF NOT EXISTS を指定して、毎回実行するのが楽です。
データ型は事実上 INTEGER, REAL, TEXT だけです。(BLOBは?)
他のデータ型はこれらのいずれかにマップされます。
“INTEGER PRIMARY KEY” のフィールドには自動で連番がふられます。

  db.execute('CREATE TABLE IF NOT EXISTS tbl_name (' +
             '   id    INTEGER PRIMARY KEY,' +
             '   title TEXT,' +
             '   url   TEXT )');
SQLの実行(結果なし)
execute メソッドで SQL を実行します。(既出)
結果を返さないコマンドなら、単にメソッドを実行するだけです。
SQL 内の '?' は第2引数の配列の対応する要素で置換されます。
必要ならエスケープも自動で行われます。
可変パラメータは必ず上記の置換機能を利用しましょう。
(SQLインジェクション対策)


db.execute('INSERT INTO tbl_name (title, url) VALUES (?, ?)',
           ['WebOS Goodies',
            'http://webos-goodies.jp']);
                                            対応する文字列に置換されます
SQLの実行(結果あり)
execute メソッドで select 文などを実行すると、その結果を格納した
ResultSet オブジェクトが返ります。
以下のようにしてハッシュ配列に落としてしまうのが楽です。
ResultSet は、使い終わったら必ず close してください。


var qr = db.execute('select * from tbl_name');
var rows = [];
try {
    while(qr.isValidRow()) { 行がなくなると false を返します
        var cols = {};
        for(var i = 0 ; i < qr.fieldsCount() ; ++i)
            cols[qr.fieldName(i)] = qr.field(i);
        rows[result.length] = cols;
        qr.next();
    }                   次の行に移る
} finally {
    qr.close(); 必ずクローズしてください
}
トランザクション
トランザクションを使うことで、複数の行をアトミックに挿入できます。
途中でエラーが起こったときは、すべてをロールバックできます。
多数の行を挿入する際は、パフォーマンス的にも有利です。
トランザクションの閉じ忘れに注意してください。
トランザクションのネストはできないので、自分でロックカウンタを実装
して管理しましょう。

db.execute('BEGIN IMMEDIATE'); トランザクション開始!
try {
    // 挿入などの処理
    db.execute('COMMIT');      正常終了なら変更を確定
} catch(e) {
    db.execute('ROLLBACK');    エラーが起こったらロールバック
    throw e;
}
Tips...
Gears のデータベースファイルは SQLite と互換性があります。
SQLite 用のツールがそのまま利用可能です。
IE では API を call や apply で呼び出すことはできません。
該当する行が存在すれば UPDATE 、なければ INSERT として機能する
REPLACE という SQL コマンドがあります。
“select last_insert_rowid() from tbl_name” で最後に挿入した行の
rowid が取得できます。(プライマリキーが整数のとき、 rowid はプライマリ
キーのエイリアスです)
ほとんどの API は例外を投げる可能性があります。例外のハンドリングを
忘れないようにしてください。
トランザクションが開始できないと長時間ブロックする可能性があります。
ライブラリ?ツール
Gearshift
http://code.m.ac.nz/gearshift/
Gears In Motion
http://code.google.com/p/gearsinmotion/
Google Gears ORM
http://www.urielkatz.com/archive/detail/google-gears-orm-v02/
HTML5Wrapper for Gears
http://glazkov.com/blog/html5-gears-wrapper/
SQLAdmin for Google Gears
http://coenraets.org/blog/2007/05/flex-based-sqladmin-for-google-gears/
TrimJunction
http://code.google.com/p/trimpath/wiki/TrimJunction
vortex.offline
http://geekycodestuff.blogspot.com/2007/09/announcing-vortexoffline-library-v01.html
ご質問は?
mailto:hokousya@webos-goodies.jp
     http://webos-goodies.jp/

More Related Content

What's hot (20)

200k/sec
200k/sec200k/sec
200k/sec
Sugawara Genki
?
LINQ 概要 + 結構便利な LINQ to XML
LINQ 概要 + 結構便利な LINQ to XMLLINQ 概要 + 結構便利な LINQ to XML
LINQ 概要 + 結構便利な LINQ to XML
ShinichiAoyagi
?
奥别产讲座 第9回
奥别产讲座 第9回奥别产讲座 第9回
奥别产讲座 第9回
nanametown
?
PowerShell 紹介
PowerShell 紹介PowerShell 紹介
PowerShell 紹介
tsudaa
?
TreeFrog Frameworkの紹介
TreeFrog Frameworkの紹介TreeFrog Frameworkの紹介
TreeFrog Frameworkの紹介
ao27
?
Deep dive into oss written in swift
Deep dive into oss written in swiftDeep dive into oss written in swift
Deep dive into oss written in swift
Yuki Asai
?
Python/Bottle for Kubo Semi 2014
Python/Bottle for Kubo Semi 2014Python/Bottle for Kubo Semi 2014
Python/Bottle for Kubo Semi 2014
Toshiki NOGUCHI
?
これからの闯补惫补厂肠谤颈辫迟ー関数型プログラミングと贰颁惭础厂肠谤颈辫迟6
これからの闯补惫补厂肠谤颈辫迟ー関数型プログラミングと贰颁惭础厂肠谤颈辫迟6これからの闯补惫补厂肠谤颈辫迟ー関数型プログラミングと贰颁惭础厂肠谤颈辫迟6
これからの闯补惫补厂肠谤颈辫迟ー関数型プログラミングと贰颁惭础厂肠谤颈辫迟6
TanUkkii
?
第2回鹿児岛苍辞诲别.箩蝉の会资料_内村
第2回鹿児岛苍辞诲别.箩蝉の会资料_内村第2回鹿児岛苍辞诲别.箩蝉の会资料_内村
第2回鹿児岛苍辞诲别.箩蝉の会资料_内村
Koichi Uchimura
?
MlnagoyaRx02
MlnagoyaRx02MlnagoyaRx02
MlnagoyaRx02
mega80b
?
Serverside ES6@Livesense technight
Serverside ES6@Livesense technightServerside ES6@Livesense technight
Serverside ES6@Livesense technight
Seiji Takahashi
?
Riot.js と戦った話 (8月26日 oRo LT 会)
Riot.js と戦った話 (8月26日 oRo LT 会)Riot.js と戦った話 (8月26日 oRo LT 会)
Riot.js と戦った話 (8月26日 oRo LT 会)
kata shin
?
20140930 anything as_code
20140930 anything as_code20140930 anything as_code
20140930 anything as_code
Sugawara Genki
?
どきっ!三行で作るランダムダンジョン!?~WEBもあるよ!~ - 2010/8/21 群馬Web研究会(勉強会)
どきっ!三行で作るランダムダンジョン!?~WEBもあるよ!~ - 2010/8/21 群馬Web研究会(勉強会)どきっ!三行で作るランダムダンジョン!?~WEBもあるよ!~ - 2010/8/21 群馬Web研究会(勉強会)
どきっ!三行で作るランダムダンジョン!?~WEBもあるよ!~ - 2010/8/21 群馬Web研究会(勉強会)
parrotstudio
?
第8回碍笔贵発表资料
第8回碍笔贵発表资料第8回碍笔贵発表资料
第8回碍笔贵発表资料
cryks
?
松江Ruby会議05 dxruby
松江Ruby会議05 dxruby松江Ruby会議05 dxruby
松江Ruby会議05 dxruby
mirichi_
?
别濒补蝉迟颈肠蝉别补谤肠丑ソースコードを読みはじめてみた
别濒补蝉迟颈肠蝉别补谤肠丑ソースコードを読みはじめてみた别濒补蝉迟颈肠蝉别补谤肠丑ソースコードを読みはじめてみた
别濒补蝉迟颈肠蝉别补谤肠丑ソースコードを読みはじめてみた
furandon_pig
?
LINQ 概要 + 結構便利な LINQ to XML
LINQ 概要 + 結構便利な LINQ to XMLLINQ 概要 + 結構便利な LINQ to XML
LINQ 概要 + 結構便利な LINQ to XML
ShinichiAoyagi
?
奥别产讲座 第9回
奥别产讲座 第9回奥别产讲座 第9回
奥别产讲座 第9回
nanametown
?
PowerShell 紹介
PowerShell 紹介PowerShell 紹介
PowerShell 紹介
tsudaa
?
TreeFrog Frameworkの紹介
TreeFrog Frameworkの紹介TreeFrog Frameworkの紹介
TreeFrog Frameworkの紹介
ao27
?
Deep dive into oss written in swift
Deep dive into oss written in swiftDeep dive into oss written in swift
Deep dive into oss written in swift
Yuki Asai
?
Python/Bottle for Kubo Semi 2014
Python/Bottle for Kubo Semi 2014Python/Bottle for Kubo Semi 2014
Python/Bottle for Kubo Semi 2014
Toshiki NOGUCHI
?
これからの闯补惫补厂肠谤颈辫迟ー関数型プログラミングと贰颁惭础厂肠谤颈辫迟6
これからの闯补惫补厂肠谤颈辫迟ー関数型プログラミングと贰颁惭础厂肠谤颈辫迟6これからの闯补惫补厂肠谤颈辫迟ー関数型プログラミングと贰颁惭础厂肠谤颈辫迟6
これからの闯补惫补厂肠谤颈辫迟ー関数型プログラミングと贰颁惭础厂肠谤颈辫迟6
TanUkkii
?
第2回鹿児岛苍辞诲别.箩蝉の会资料_内村
第2回鹿児岛苍辞诲别.箩蝉の会资料_内村第2回鹿児岛苍辞诲别.箩蝉の会资料_内村
第2回鹿児岛苍辞诲别.箩蝉の会资料_内村
Koichi Uchimura
?
MlnagoyaRx02
MlnagoyaRx02MlnagoyaRx02
MlnagoyaRx02
mega80b
?
Serverside ES6@Livesense technight
Serverside ES6@Livesense technightServerside ES6@Livesense technight
Serverside ES6@Livesense technight
Seiji Takahashi
?
Riot.js と戦った話 (8月26日 oRo LT 会)
Riot.js と戦った話 (8月26日 oRo LT 会)Riot.js と戦った話 (8月26日 oRo LT 会)
Riot.js と戦った話 (8月26日 oRo LT 会)
kata shin
?
20140930 anything as_code
20140930 anything as_code20140930 anything as_code
20140930 anything as_code
Sugawara Genki
?
どきっ!三行で作るランダムダンジョン!?~WEBもあるよ!~ - 2010/8/21 群馬Web研究会(勉強会)
どきっ!三行で作るランダムダンジョン!?~WEBもあるよ!~ - 2010/8/21 群馬Web研究会(勉強会)どきっ!三行で作るランダムダンジョン!?~WEBもあるよ!~ - 2010/8/21 群馬Web研究会(勉強会)
どきっ!三行で作るランダムダンジョン!?~WEBもあるよ!~ - 2010/8/21 群馬Web研究会(勉強会)
parrotstudio
?
第8回碍笔贵発表资料
第8回碍笔贵発表资料第8回碍笔贵発表资料
第8回碍笔贵発表资料
cryks
?
松江Ruby会議05 dxruby
松江Ruby会議05 dxruby松江Ruby会議05 dxruby
松江Ruby会議05 dxruby
mirichi_
?
别濒补蝉迟颈肠蝉别补谤肠丑ソースコードを読みはじめてみた
别濒补蝉迟颈肠蝉别补谤肠丑ソースコードを読みはじめてみた别濒补蝉迟颈肠蝉别补谤肠丑ソースコードを読みはじめてみた
别濒补蝉迟颈肠蝉别补谤肠丑ソースコードを読みはじめてみた
furandon_pig
?

Viewers also liked (6)

搁顿叠ってなに?
搁顿叠ってなに?搁顿叠ってなに?
搁顿叠ってなに?
Soudai Sone
?
超入门データベース基础の基础
超入门データベース基础の基础超入门データベース基础の基础
超入门データベース基础の基础
Matsuzawa Fumiaki
?
0からのフ?ロク?ラミンク?研修
0からのフ?ロク?ラミンク?研修0からのフ?ロク?ラミンク?研修
0からのフ?ロク?ラミンク?研修
Jun Chiba
?
2015年GMOペパボ新卒エンジニア研修 Web開発研修イントロダクション
2015年GMOペパボ新卒エンジニア研修 Web開発研修イントロダクション2015年GMOペパボ新卒エンジニア研修 Web開発研修イントロダクション
2015年GMOペパボ新卒エンジニア研修 Web開発研修イントロダクション
Takahiro Okumura
?
要注意!?効果の出ない技术研修に共通する3つのこと
要注意!?効果の出ない技术研修に共通する3つのこと要注意!?効果の出ない技术研修に共通する3つのこと
要注意!?効果の出ない技术研修に共通する3つのこと
codecampJP
?
新入社员の技术研修に関してありがちな问题を解决するためにやったことやるべきこと
新入社员の技术研修に関してありがちな问题を解决するためにやったことやるべきこと新入社员の技术研修に関してありがちな问题を解决するためにやったことやるべきこと
新入社员の技术研修に関してありがちな问题を解决するためにやったことやるべきこと
pupupopo88
?
搁顿叠ってなに?
搁顿叠ってなに?搁顿叠ってなに?
搁顿叠ってなに?
Soudai Sone
?
超入门データベース基础の基础
超入门データベース基础の基础超入门データベース基础の基础
超入门データベース基础の基础
Matsuzawa Fumiaki
?
0からのフ?ロク?ラミンク?研修
0からのフ?ロク?ラミンク?研修0からのフ?ロク?ラミンク?研修
0からのフ?ロク?ラミンク?研修
Jun Chiba
?
2015年GMOペパボ新卒エンジニア研修 Web開発研修イントロダクション
2015年GMOペパボ新卒エンジニア研修 Web開発研修イントロダクション2015年GMOペパボ新卒エンジニア研修 Web開発研修イントロダクション
2015年GMOペパボ新卒エンジニア研修 Web開発研修イントロダクション
Takahiro Okumura
?
要注意!?効果の出ない技术研修に共通する3つのこと
要注意!?効果の出ない技术研修に共通する3つのこと要注意!?効果の出ない技术研修に共通する3つのこと
要注意!?効果の出ない技术研修に共通する3つのこと
codecampJP
?
新入社员の技术研修に関してありがちな问题を解决するためにやったことやるべきこと
新入社员の技术研修に関してありがちな问题を解决するためにやったことやるべきこと新入社员の技术研修に関してありがちな问题を解决するためにやったことやるべきこと
新入社员の技术研修に関してありがちな问题を解决するためにやったことやるべきこと
pupupopo88
?

Similar to Google Gears データベースの基礎 (20)

Let s database_testing
Let s database_testingLet s database_testing
Let s database_testing
Yuji Shimada
?
夏だから闯补惫补再入门
夏だから闯补惫补再入门夏だから闯补惫补再入门
夏だから闯补惫补再入门
Katsumi Honda
?
Ruby on Rails 入門
Ruby on Rails 入門Ruby on Rails 入門
Ruby on Rails 入門
Yasuko Ohba
?
Lisp Tutorial for Pythonista : Day 3
Lisp Tutorial for Pythonista : Day 3Lisp Tutorial for Pythonista : Day 3
Lisp Tutorial for Pythonista : Day 3
Ransui Iso
?
笔别谤濒と厂蚕尝のいろいろ
笔别谤濒と厂蚕尝のいろいろ笔别谤濒と厂蚕尝のいろいろ
笔别谤濒と厂蚕尝のいろいろ
Takuya Tsuchida
?
TypeScript と Visual Studio Code
TypeScript と Visual Studio CodeTypeScript と Visual Studio Code
TypeScript と Visual Studio Code
Akira Inoue
?
開発者の方向けの Sql server(db) t sql 振り返り
開発者の方向けの Sql server(db) t sql 振り返り開発者の方向けの Sql server(db) t sql 振り返り
開発者の方向けの Sql server(db) t sql 振り返り
Oda Shinsuke
?
AWS SDK for Haskell開発
AWS SDK for Haskell開発AWS SDK for Haskell開発
AWS SDK for Haskell開発
Nomura Yusuke
?
贵濒耻迟迟别谤を体験してみませんか
贵濒耻迟迟别谤を体験してみませんか贵濒耻迟迟别谤を体験してみませんか
贵濒耻迟迟别谤を体験してみませんか
cch-robo
?
Mongodb
MongodbMongodb
Mongodb
Satoru Mikami
?
Html5 Web Applications
Html5  Web ApplicationsHtml5  Web Applications
Html5 Web Applications
totty jp
?
迟谤补肠别耻谤-肠辞尘辫颈濒别谤で未来の闯补惫补厂肠谤颈辫迟を体験
迟谤补肠别耻谤-肠辞尘辫颈濒别谤で未来の闯补惫补厂肠谤颈辫迟を体験迟谤补肠别耻谤-肠辞尘辫颈濒别谤で未来の闯补惫补厂肠谤颈辫迟を体験
迟谤补肠别耻谤-肠辞尘辫颈濒别谤で未来の闯补惫补厂肠谤颈辫迟を体験
Toshio Ehara
?
APASEC 2013 - ROP/JIT を使わずに DEP/ASLR を回避する手法を見てみた。
APASEC 2013 - ROP/JIT を使わずに DEP/ASLR を回避する手法を見てみた。APASEC 2013 - ROP/JIT を使わずに DEP/ASLR を回避する手法を見てみた。
APASEC 2013 - ROP/JIT を使わずに DEP/ASLR を回避する手法を見てみた。
Satoshi Mimura
?
【ウェブ セミナー】AI / アナリティクスを支えるビッグデータ基盤 Azure Data Lake [実践編]
【ウェブ セミナー】AI / アナリティクスを支えるビッグデータ基盤 Azure Data Lake [実践編]【ウェブ セミナー】AI / アナリティクスを支えるビッグデータ基盤 Azure Data Lake [実践編]
【ウェブ セミナー】AI / アナリティクスを支えるビッグデータ基盤 Azure Data Lake [実践編]
Hideo Takagi
?
DEV-010_エンプラ系業務 Web アプリ開発に効く! 実践的 SPA 型モダン Web アプリ開発の選択手法
DEV-010_エンプラ系業務 Web アプリ開発に効く! 実践的 SPA 型モダン Web アプリ開発の選択手法DEV-010_エンプラ系業務 Web アプリ開発に効く! 実践的 SPA 型モダン Web アプリ開発の選択手法
DEV-010_エンプラ系業務 Web アプリ開発に効く! 実践的 SPA 型モダン Web アプリ開発の選択手法
decode2016
?
BPStudy32 CouchDB 再入門
BPStudy32 CouchDB 再入門BPStudy32 CouchDB 再入門
BPStudy32 CouchDB 再入門
Yohei Sasaki
?
Java x Groovy: improve your java development life
Java x Groovy: improve your java development lifeJava x Groovy: improve your java development life
Java x Groovy: improve your java development life
Uehara Junji
?
TypeScript 1.0 オーバービュー
TypeScript 1.0 オーバービューTypeScript 1.0 オーバービュー
TypeScript 1.0 オーバービュー
Akira Inoue
?
Project lambda
Project lambdaProject lambda
Project lambda
Appresso Engineering Team
?
Let s database_testing
Let s database_testingLet s database_testing
Let s database_testing
Yuji Shimada
?
夏だから闯补惫补再入门
夏だから闯补惫补再入门夏だから闯补惫补再入门
夏だから闯补惫补再入门
Katsumi Honda
?
Ruby on Rails 入門
Ruby on Rails 入門Ruby on Rails 入門
Ruby on Rails 入門
Yasuko Ohba
?
Lisp Tutorial for Pythonista : Day 3
Lisp Tutorial for Pythonista : Day 3Lisp Tutorial for Pythonista : Day 3
Lisp Tutorial for Pythonista : Day 3
Ransui Iso
?
笔别谤濒と厂蚕尝のいろいろ
笔别谤濒と厂蚕尝のいろいろ笔别谤濒と厂蚕尝のいろいろ
笔别谤濒と厂蚕尝のいろいろ
Takuya Tsuchida
?
TypeScript と Visual Studio Code
TypeScript と Visual Studio CodeTypeScript と Visual Studio Code
TypeScript と Visual Studio Code
Akira Inoue
?
開発者の方向けの Sql server(db) t sql 振り返り
開発者の方向けの Sql server(db) t sql 振り返り開発者の方向けの Sql server(db) t sql 振り返り
開発者の方向けの Sql server(db) t sql 振り返り
Oda Shinsuke
?
AWS SDK for Haskell開発
AWS SDK for Haskell開発AWS SDK for Haskell開発
AWS SDK for Haskell開発
Nomura Yusuke
?
贵濒耻迟迟别谤を体験してみませんか
贵濒耻迟迟别谤を体験してみませんか贵濒耻迟迟别谤を体験してみませんか
贵濒耻迟迟别谤を体験してみませんか
cch-robo
?
Html5 Web Applications
Html5  Web ApplicationsHtml5  Web Applications
Html5 Web Applications
totty jp
?
迟谤补肠别耻谤-肠辞尘辫颈濒别谤で未来の闯补惫补厂肠谤颈辫迟を体験
迟谤补肠别耻谤-肠辞尘辫颈濒别谤で未来の闯补惫补厂肠谤颈辫迟を体験迟谤补肠别耻谤-肠辞尘辫颈濒别谤で未来の闯补惫补厂肠谤颈辫迟を体験
迟谤补肠别耻谤-肠辞尘辫颈濒别谤で未来の闯补惫补厂肠谤颈辫迟を体験
Toshio Ehara
?
APASEC 2013 - ROP/JIT を使わずに DEP/ASLR を回避する手法を見てみた。
APASEC 2013 - ROP/JIT を使わずに DEP/ASLR を回避する手法を見てみた。APASEC 2013 - ROP/JIT を使わずに DEP/ASLR を回避する手法を見てみた。
APASEC 2013 - ROP/JIT を使わずに DEP/ASLR を回避する手法を見てみた。
Satoshi Mimura
?
【ウェブ セミナー】AI / アナリティクスを支えるビッグデータ基盤 Azure Data Lake [実践編]
【ウェブ セミナー】AI / アナリティクスを支えるビッグデータ基盤 Azure Data Lake [実践編]【ウェブ セミナー】AI / アナリティクスを支えるビッグデータ基盤 Azure Data Lake [実践編]
【ウェブ セミナー】AI / アナリティクスを支えるビッグデータ基盤 Azure Data Lake [実践編]
Hideo Takagi
?
DEV-010_エンプラ系業務 Web アプリ開発に効く! 実践的 SPA 型モダン Web アプリ開発の選択手法
DEV-010_エンプラ系業務 Web アプリ開発に効く! 実践的 SPA 型モダン Web アプリ開発の選択手法DEV-010_エンプラ系業務 Web アプリ開発に効く! 実践的 SPA 型モダン Web アプリ開発の選択手法
DEV-010_エンプラ系業務 Web アプリ開発に効く! 実践的 SPA 型モダン Web アプリ開発の選択手法
decode2016
?
BPStudy32 CouchDB 再入門
BPStudy32 CouchDB 再入門BPStudy32 CouchDB 再入門
BPStudy32 CouchDB 再入門
Yohei Sasaki
?
Java x Groovy: improve your java development life
Java x Groovy: improve your java development lifeJava x Groovy: improve your java development life
Java x Groovy: improve your java development life
Uehara Junji
?
TypeScript 1.0 オーバービュー
TypeScript 1.0 オーバービューTypeScript 1.0 オーバービュー
TypeScript 1.0 オーバービュー
Akira Inoue
?

Google Gears データベースの基礎