Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

SQLiteを手軽に・セキュアに

10,343 views

Published on

第1回 豊橋iPhoneアプリ開発勉強会の発表資料です。
SQLiteを簡単に扱うFMDBの使い方とSQLIteを暗号化するSQLCipherについて記載しております。

Published in: Technology

SQLiteを手軽に・セキュアに

  1. 1. ワンダープラネット株式会社取締役    CTO  村田  知常SQLiteを手軽に・セキュアに第1回 豊橋iPhoneアプリ開発勉強会 2013.4.27
  2. 2. iPhoneアプリ開発勉強会in 豊橋
  3. 3. 豊橋カレーうどんうどんを食べると中からご飯が!
  4. 4. 【自己紹介】 村田  知常プロフィールワンダープラネット株式会社 取締役 CTOCGIゲームに魅了され、ITの世界へ【Facebook】 tomotsune.murata職歴業務システムのソフトウェア開発(.NET、Javaなど)          ↓ワンダープラネット株式会社( 旧:(株)オープンキューブ 名古屋アプリケーション開発センター )とも つね
  5. 5. 【自己紹介】 Ver.豊橋とよはしっ子です( ▽ )/1978年生まれ生まれも育ちも豊橋!最近知った豊橋ニュース豊橋初(?)のコワーキングスペースが出来た!Trial Village (トライアルビレッジ)http://www.trialvillage.com/若松園の「ゆたかおこし」好物です!
  6. 6. 事業内容タブレット・スマートフォン向けアプリーション・ゲームの企画・開発・運営・販売設立 2012年9月3日(10月1日創業)ホームページ http://wonderpla.netFacebookページ https://www.facebook.com/wonderplanet.nagoyaワンダープラネット株式会社
  7. 7. エンジニアブログ 絶賛公開中!http://wonderpla.net/blog/engineer/エンジニア全員で更新しています!実装してみてはまったこと、 分からなくて調査したことなどなど、現場での技術情報熱いキーワードアプリ内課金Cocos2d-xワンダープラネット株式会社
  8. 8. くるるファンタズマプロダクト■iPhone/iPad名古屋コーチンがいく!■iPhonePanic  Farm■iPhone/iPad
  9. 9. 今日は SQLite について
  10. 10. その前にiOSにある主なデータの永続化オブジェクトのシリアライズプロパティリスト(PLIST)NSUserDefaultsCore Data(SQLiteのO/Rマッパー)SQLiteに直接アクセス
  11. 11. SQLiteとはアプリケーションに組み込んで利用される軽量のデータベースサーバーではなくライブラリ主なデータセットの型整数型(INTEGER)、浮動小数点型(REAL)文字列型(TEXT)、バイナリ型(BLOB)トランザクションをサポートストレージまでネイティブコードで直接実行するので非常に高速iOSではSQLiteを使用するためのライブラリ「libsqlite3.0.dylib」を追加することで可能
  12. 12. でも、自分でイチから実装して操作するのは大変
  13. 13. 「FMDB」を使ってSQLiteを簡単に操作しよう!
  14. 14. FMDBとはiOSでSQLiteの操作を簡単にしてくれるライブラリMITライセンスARCのOn/Off 両方に対応GitHubで公開されていますhttps://github.com/ccgus/fmdb
  15. 15. FMDBを使うには「src」フォルダ内のファイルをプロジェクトに追加「libsqlite3.0.dylib」をプロジェクトに追加■ FMDatabase.h■ FMDatabase.h■ FMDatabaseAdditions.h■ FMDatabaseAdditions.m■ FMDatabasePool.h■ FMDatabasePool.m■ FMDatabaseQueue.h■ FMDatabaseQueue.m■ FMResultSet.h■ FMResultSet.m「fmdb.m」はテスト用コードなので追加不要
  16. 16. DBファイルとテーブルの作成FBDMを使うとopen時にファイルが無い場合は作成してくれる!FMDatabase *db = [FMDatabase databaseWithPath:@”ファイルまでのパス”];// testテーブルが無い場合テーブルを生成するSQL文NSString *sql = @"CREATE TABLE IF NOT EXISTS test (user_id INTEGER PRIMARYKEY, user_name TEXT);";// データベースをオープン(ファイルが無い場合はファイルも作成される)[db open];// CREATE TABLE文を実行[db executeUpdate:sql];// データベースをクローズ[db close];
  17. 17. INSERTFMDatabase *db = [FMDatabase databaseWithPath:@”ファイルまでのパス”];NSString *sql = @"INSERT INTO test (user_id,user_name) VALUES (?,?);";[db open];[db executeUpdate:sql,[NSNumber numberWithInteger:1], @”テスト”];[db close];
  18. 18. UPDATEFMDatabase *db = [FMDatabase databaseWithPath:@”ファイルまでのパス”];NSString *sql = @"UPDATE test SET user_name = ? WHERE user_id = ?;";[db open];[db executeUpdate:sql,@”iPhone勉強会”,[NSNumber numberWithInteger:1]];[db close];
  19. 19. DELETEFMDatabase *db = [FMDatabase databaseWithPath:@”ファイルまでのパス”];NSString *sql = @"DELETE FROM test WHERE user_id = ?;";[db open];[db executeUpdate:sql,[NSNumber numberWithInteger:1]];[db close];
  20. 20. SELECTFMDatabase *db = [FMDatabase databaseWithPath:@”ファイルまでのパス”];NSString *sql = @"SELECT user_id,user_name FROM test WHERE user_id = ?;";[db open];FMResultSet *results = [db executeQuery:sql, [NSNumber numberWithInteger:1]];while( [results next] ){NSInteger user_id = [results intForColumnIndex:0];NSString *user_name = [results stringForColumn:@”user_name”];}[db close];
  21. 21. トランザクションFMDatabase *db = [FMDatabase databaseWithPath:@”ファイルまでのパス”];[db open];// トランザクション開始[db beginTransaction];  : 処理  :if (処理成功){// コミット[db commit];} else {// ロールバック[db rollback];}[db close];
  22. 22. 保存したSQLiteのデータツールを使えば簡単に参照・書き換えが可能(((( ;゚Д゚)))ガクガクブルブル
  23. 23. ゲームのユーザー情報覗かれたくない!改ざんされたくない!
  24. 24. 保存するデータ暗号化覗かれたく無い↓どうするの?↓
  25. 25. SQLCipher
  26. 26. SQLCipherとはSQLiteのデータベースファイルを 256-bit AESで暗号化無料のCommunity EditionBSD-styleopen source lisence自分でビルドが必要有料のCommercial Editionビルド済みのライブラリ
  27. 27. SQLCipherの使い方ライブラリをプロジェクトに追加Header Search Pathに、次のパスを追加sqlcipher-static-ios/includeOther C Flagsに、次の値を追加-DSQLITE_HAS_CODECFMDBは「SQLCipher」に対応しているため意識する必要なし!
  28. 28. 使用例open後に「setKey」でパスフレーズを設定FMDatabase *db = [FMDatabase databaseWithPath:@”ファイルまでのパス”];NSString *sql = @"CREATE TABLE IF NOT EXISTS test (user_id INTEGER PRIMARYKEY, user_name TEXT);";[db open];[db setKey:@”パスフレーズ”];[db executeUpdate:sql];[db close];
  29. 29. まとめ業務系出身者としてSQL文を直接叩かせてくれるFMDBってステキODBCやADO.NETと同じ操作感 → 安心感アプリ開発者としてSQLiteが簡単に操作できるってステキSQLCipherとの組み合わせも簡単ってステキ
  30. 30. ワンプラニュースアプリを作る仲間を絶賛募集中!!詳細 会社HP:http://wonderpla.net/jobs/ 
  31. 31. ご清聴ありがとうございました第1回 豊橋iPhoneアプリ開発勉強会 2013.4.27

×