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

  • Login to see the comments

Sqlite

  1. 1. iOSでデータベース(SQLite)を   使おう 榊原防犯(株)代表取締役   榊原 洋平
  2. 2. だれ? •  榊原防犯(株)という株式会社を一人でやって ます   – 事業は今はアプリ受託開発メイン   •  iOSもandroidも   – 自社アプリも作ってます   •  Simple  Photo  Album   •  ふせん手帳   •  超速300連写   •  などなど…  
  3. 3. この発表のテーマ •  iOSで使えるデータベース、SQLiteを(外部ライ ブラリに頼らず)使えるようになろう!   •  使えると何がうれしいの?   – アプリ内でたくさんのデータを保存したり読み込 んだりできるようになります!   •  住所録とか、メモ帳とか、閲覧履歴とか…   – 大量の辞書データを用意するのにも便利   •  顔文字アプリとか、まあいろいろ…  
  4. 4. 目次 •  とりあえずサンプルを触ってみよう   •  アプリ内にデータを保存する方法あれこれ   •  SQLiteってなんだろう?   – RDBMSとは   – SQLとは   •  iOSでSQLiteを使うための手順   •  私はこんな風に工夫してます   •  気をつけておくべきポイント  
  5. 5. とりあえずサンプルを触ってみよう •  サンプルプロジェクトをダウンロードしてね   h?p://www.ysakaki.net/sample/   •  ダウンロードできたら、動かしてみよう!  
  6. 6. アプリ内にデータを保存する方法あれこれ •  NSUserDefaults   –  お手軽   –  多数・大容量のファイルを扱うには遅い   –  設定などちょっとした値の保存に便利   •  SQLite   –  ちょっと手間   –  速い   –  SQLをそのまま使えるので、SQLがわかる人は習得が早い   •  わからない人は覚えることが増える…   •  CoreData   –  内部でSQLiteを使っているらしい   –  Objectをそのまま保存できるとか   –  速いらしい   –  iCloudとの連携がしやすいらしい   –  なんだか難しいので使ってません   •  iCloud以外はSQLiteのみで十分対応可能   •  自分でファイルを作って保存   –  うまくやれば多分一番速い   –  複雑なデータの保存は非常に面倒   –  画像や動画の場合は、SQLiteにはパスだけ保存とか  
  7. 7. SQLiteってなんだろう? •  SQLiteとはRDBMSのひとつ   – 手軽に扱えるRDBMS   •  型とかゆるい   – データベースを単一のファイルとして扱う   – 機能は少なめ、速度は遅め   •  とはいえ、アプリでは充分すぎるくらい  
  8. 8. RDBMS?? •  リレーショナルデータベースマネジメントシス テム   – RDBを扱うシステム   – RDBでは、データを表のような感じで扱います   •  一つの表をテーブルと呼びます   •  一つの行をレコードと呼びます   – テーブル同士のリレーション(関係)を定義して テーブル同士を連結できます   – データをSQLという言語を用いて操作します  
  9. 9. データベース カラム1 カラム2 カラム3 カラム4 値 値 値 値 テーブル1 ID 名前 性別 年齢 1 ジョン 男 13 2 マイケル 男   24 3 キャシー 女 19 テーブル2 レコード
  10. 10. SQL?? •  RDBMSにおいてデータの操作や定義をする ための言語   •  とりあえず4つ覚えましょう   –  挿入:INSERT  INTO  [表名]  VALUES  ([値1],  [値2])   –  更新:UPDATE  [表名]  SET  [列名2]=[値2],  [列名3]=[値3]  WHERE  [列名1]=[値1]     –  削除:DELETE  FROM  [表名]  WHERE  [列名1]=[値1]   –  検索:SELECT  *  FROM  [表名]  WHERE  [列名1]=[値1]   •  アプリならこの4つだけでも大抵なんとかなり ます   – サンプルもこの4つのみを使ってます
  11. 11. iOSでSQLiteを使うための手順   (下準備) 1.  SQLiteのデータベースファイルを作成する – ツール等を使って事前に作成しておく •  私はFirefoxアドオンのSQLite Managerを使ってます – テーブルや初期データはこの時に設定しておく – 作ったデータベースファイルはプロジェクトへコ ピーしておく •  ターゲットの指定を忘れずに 2.  libsqlite3.0.dylibをBuild  PhasesからLinkする  
  12. 12. iOSでSQLiteを使うための手順   (仕込み) 1.  ファイルをバンドルからワークディレクトリへ コピーする   – バンドルのファイルは変更不可のため   2.  コピーしたデータベースを開く  
  13. 13. iOSでSQLiteを使うための手順   (実行) 1.  SQL文を用意する   2.  SQL文を評価する   3.  必要であれば、値をバインドする   4.  SQL文を実行する  
  14. 14. 私はこんな風に工夫してます •  DBを扱う専用のクラスを用意する   •  DBを扱うクラスはシングルトン   •  テーブル毎のモデルクラスを用意する   •  NSStringやNSDataを扱いやすいような関数を 用意する
  15. 15. 気をつけておくべきポイント •  アップデートのときは要注意   –  データベースファイルを入れ替えても、古いデータベースは残ったま ま!   –  構造を変えたときは、その変更を反映させる必要がある   •  古いデータベースを消して上書きする   –  それまでのデータが消えてしまう   –  簡単   –  開発中の変更はとりあえずこっちで   •  SQLでデータベースの構造を書き換える   –  ALTER  TABLEなどをiOS上で実行   –  めんどくさい   –  他にどうしようもないならやるしかない   –  辞書データだけ変えたい場合   •  辞書データ用のデータベースとユーザーデータ用のデータベースの2つを 別々に持っていると便利   •  辞書データのみアップデート時に上書き   •  2つのデータベースを連結(ATTACH)して使えばOK  
  16. 16. おしまい 質疑応答       懇親会でもよろしくね  

×