シリコンバレーのマーケター日記

東京、シンガポールを経てシリコンバレーで働く、マーケター。英語、プログラミング、データ分析は次世代マーケターの必須スキルだと信じて進む。

SQLite

前回のエントリーでの課題のひとつ、libsqlite3.0.dylibとは? について。

 

1) libsqlite3.0.dylibってなんのため?

これを理解するためには、まずdata base implementation(データベースの実装)を理解する必要があります。

例えばアドレス帳、予定表アプリのように、アプリにおいてデータを保存するニーズに応えるため、iOS 8 SDKは、SQLiteベースのデータベースを使えるために必要なものをすべて網羅しています。そして、以下に説明するSQLiteを使えるようにするためのライブラリーが、libsqlite3.0というわけです!

SQLite

"Embedded(埋め込まれた)" relational database management system (RDBMS)と呼ばれる。例えばOracleや、MySQLに代表される所謂Relational databaseは、スタンドアローンのサーバープロセスであり、独立して走る。SQLiteは、アプリに紐付いたライブラリーとして提供され、アプリ内で走るため"embedded"と表現される。

SQLiteを使うためには、自分で頑張ってコードを書くか、SQLiteとswiftの間のレイヤーとして提供されている、SQLiteのwrapper (オブジェクトとまとめたもの)を使う。様々なwrapperが公開されているようだが、"FMDB"が一般的なよう。

FMDB

FMDBは、MITライセンスのオープンソースプロジェクトであり、誰でも使うことができる。以下の3つのクラスが最もよく使われる。

FMDatabase: 唯一のSQLiteデータベースをrepresentするために使われる

FMResultSet: SQLクオリの結果を保持するために使われる

FMDatabaseQueue: 様々なスレッドからクオリが使われるためのFMDatabaseの仕様

使うときの流れをまとめました。(このままではもちろん走りません。)

 

2) libsqlite3.0 と libsqlite3 の違いは見られなかった

Google Analyticsに、それぞれ入れてみたが、ともに正しく走りました。気にしなくて良い?

f:id:yuyutata:20150524011451p:plain

 

雑感

つまり、Google Analyticsは、なにか(恐らく計測ログ)をローカルに一時的に保存しておくために、SQLiteを使っていたということですね。ネットに繋がっていない状態のときのログもちゃんと測定できるよにということでしょうか。

明日は、CoreData.frameworkを攻めようと思います。