(続) 
Effective SQLite 
For 
Android
について 
話そうと 
思ったんですが
Android 
Engineer?
About Me 
Shinobu Okano ( 岡野 忍 ) 
SERAKU Co.,Ltd. 
@operandoOS 
Android / Ruby on Rails 
Dart / Firefox OS / Play Framework 
Twenty one years old 
http://osyyare.blogspot.jp/
SQLite Home Page 
http:// 
www.sqlite.org/
軽量なRDB
軽量なRDB 
Public Domain
軽量なRDB 
Public Domain 
早い!
さまざまな 
Platformで活躍
Android 
iOS 
Ruby on Rails 
などなど
SQLite3 
+ 
Android
DBHelper 
SQLiteOpenHelp 
er 
SQLiteStatement 
DatabaseHelper 
SQLiteDatabase 
Cursor
Create Databases 
SQLiteDatabase 
openOrCreateDatabase
SQLiteDatabase 
openOrCreateDatabase
SQLiteDatabase 
openOrCreateDatabase 
DBのPermissionが644になるOS Versionが存在す 
る 
DBのVersion UPが柔軟にできない
SQLiteDatabase 
openOrCreateDatabase 
Bad 
DBのPermissionが644になるOS Versionが存在す 
Implementation 
る 
DBのVersion UPが柔軟にできない
Create Databases 
Context 
openOrCreateDatabase
Context 
openOrCreateDatabase
Context 
openOrCreateDatabase 
MODEを間違えるとやばい! 
DBのVersion UPが柔軟にできない 
値説明 
Context.MODE_PRIVATE 呼び出し元のアプリケーションのみ読み書 
Context.MODE_WORLD_READABLE き他の可アプリケーションも読み込み可 
Context.MODE_WORLD_WRITEABLE 他のアプリケーションも書き込み可
SQLiteDatabase 
openOrCreateDatabase 
Bad 
MODEを間違えるとやばい! 
Implementation 
DBのVersion UPが柔軟にできない 
値説明 
Context.MODE_PRIVATE 呼び出し元のアプリケーションのみ読み書 
Context.MODE_WORLD_READABLE き他の可アプリケーションも読み込み可 
Context.MODE_WORLD_WRITEABLE 他のアプリケーションも書き込み可
Create Databases 
SQLiteOpenHelper
SQLiteOpenHelper
SQLiteOpenHelper 
DBのVersion UPに柔軟に対応できる 
Downgradeも可能 
Permissionも適切に設定される
SQLiteOpenHelper 
Permissionも適切に設定されるGood! 
DBのVersion UPに柔軟に対応できる 
Downgradeも可能
Create Databases 
SQLiteDatabase 
openOrCreateDatabase 
Context 
openOrCreateDatabase 
SQLiteOpenHelper
SQLiteを早く使う三原則
SQLiteを早く使う三原則 
Transaction
SQLiteを早く使う三原則 
Transaction 
Prepare Statement
SQLiteを早く使う三原則 
Transaction 
Prepare Statement 
In Memory
Versionごと機能を利用 
SQLite 3.8.4.3: 
Lollipop + L Developer Preview 
SQLite 3.7.11: 
KitKat + Jelly Bean 
SQLite 3.7.4: 
Ice Cream Sandwich
FTSを使って全文検索 
full-text searches
FTSを使って全文検索 
full-text searches 
CREATE VIRTUAL TABLE sessions_search 
USING fts3( 
body TEXT NOT NULL, 
tokenize=porter 
) 
INSERT INTO sessions_search ( body ) 
VALUES( "potato tips" )
FTSを使って全文検索 
Select search module: 
FST3 or FST4(API 11から)
FTSを使って全文検索 
Select search module: 
FST3 or FST4(API 11から) 
Tokenizers: 
simple or porter
FTSを使って全文検索 
Select search module: 
FST3 or FST4(API 11から) 
Tokenizers: 
simple or porter 
LIKEで検索するより全然早い!
FTSを使って全文検索 
Select search module: 
FST3 or FST4(API 11から) 
Tokenizers: 
simple or porter 
LIKEで検索するより全然早い! 
iOSでも使えるらしい!
Thank you

(続) Effective SQLite for Android