Se ha denunciado esta presentación.
Utilizamos tu perfil de LinkedIn y tus datos de actividad para personalizar los anuncios y mostrarte publicidad más relevante. Puedes cambiar tus preferencias de publicidad en cualquier momento.

SQLiteを手軽に・セキュアに

10.339 visualizaciones

Publicado el

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

Publicado en: Tecnología
  • Sé el primero en comentar

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

×