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

1,493 views

Published on

  • Be the first to comment

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. おしまい 質疑応答       懇親会でもよろしくね  

×