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

Contenu connexe

Similaire à Sqlite

WebAPIと連携してみよう(1)
WebAPIと連携してみよう(1)WebAPIと連携してみよう(1)
WebAPIと連携してみよう(1)Yohei Sakakibara
 
オープンデータ利活用への道のり@未来型不動産サービス「IESHIL(イエシル)」の事例
オープンデータ利活用への道のり@未来型不動産サービス「IESHIL(イエシル)」の事例オープンデータ利活用への道のり@未来型不動産サービス「IESHIL(イエシル)」の事例
オープンデータ利活用への道のり@未来型不動産サービス「IESHIL(イエシル)」の事例Tsutomu Chikuba
 
DevOpsが引き金となるインフラエンジニアの進撃
DevOpsが引き金となるインフラエンジニアの進撃DevOpsが引き金となるインフラエンジニアの進撃
DevOpsが引き金となるインフラエンジニアの進撃Teruo Adachi
 
20131214 cocoa関西勉強会
20131214 cocoa関西勉強会20131214 cocoa関西勉強会
20131214 cocoa関西勉強会Yosuke Uno
 
構造化データをツールで簡単に分析
構造化データをツールで簡単に分析構造化データをツールで簡単に分析
構造化データをツールで簡単に分析Yoshitaka Seo
 
非エンジニアのSQL活用が加速させる事業成長
非エンジニアのSQL活用が加速させる事業成長非エンジニアのSQL活用が加速させる事業成長
非エンジニアのSQL活用が加速させる事業成長Keiko Inagaki
 
シラサギ紹介20161119
シラサギ紹介20161119シラサギ紹介20161119
シラサギ紹介20161119Naokazu Nohara
 
あなたも出来る!webエンジニアがSwiftでリリースするためにやったこと
あなたも出来る!webエンジニアがSwiftでリリースするためにやったことあなたも出来る!webエンジニアがSwiftでリリースするためにやったこと
あなたも出来る!webエンジニアがSwiftでリリースするためにやったことMasaru Gushiken
 
ビジネスマネージャとデータ分析
ビジネスマネージャとデータ分析ビジネスマネージャとデータ分析
ビジネスマネージャとデータ分析TOSHI STATS Co.,Ltd.
 
モバイルWebアプリケーションを複数端末で動かすために注意すること
モバイルWebアプリケーションを複数端末で動かすために注意することモバイルWebアプリケーションを複数端末で動かすために注意すること
モバイルWebアプリケーションを複数端末で動かすために注意することdsuke Takaoka
 
1時間でITの流行を理解する
1時間でITの流行を理解する1時間でITの流行を理解する
1時間でITの流行を理解するKenichi Inoue
 
AssetBundle と TextureCompression のおはなし
AssetBundle と TextureCompression のおはなしAssetBundle と TextureCompression のおはなし
AssetBundle と TextureCompression のおはなしMori Tetsuya
 
Love swift 20200709
Love swift 20200709Love swift 20200709
Love swift 20200709RyoyaIto
 
データベースを使おう
データベースを使おうデータベースを使おう
データベースを使おうShuhei Iitsuka
 
「Onedrive for Business」をチョットだけカスタマイズしてみる
「Onedrive for Business」をチョットだけカスタマイズしてみる「Onedrive for Business」をチョットだけカスタマイズしてみる
「Onedrive for Business」をチョットだけカスタマイズしてみるKosuke Kuromiya
 
20140713 ハッカソン基調講演
20140713 ハッカソン基調講演20140713 ハッカソン基調講演
20140713 ハッカソン基調講演Code_for_Sakai
 
20130921 技術ひろばの勉強会
20130921 技術ひろばの勉強会20130921 技術ひろばの勉強会
20130921 技術ひろばの勉強会Seiji Noro
 
Shirasagi20190222(OSC TOKYO)
Shirasagi20190222(OSC TOKYO)Shirasagi20190222(OSC TOKYO)
Shirasagi20190222(OSC TOKYO)Naokazu Nohara
 
ビジネスサイドが知っておくべきアプリケーションのデータ分析の話
ビジネスサイドが知っておくべきアプリケーションのデータ分析の話ビジネスサイドが知っておくべきアプリケーションのデータ分析の話
ビジネスサイドが知っておくべきアプリケーションのデータ分析の話Koyo 松本
 

Similaire à Sqlite (20)

WebAPIと連携してみよう(1)
WebAPIと連携してみよう(1)WebAPIと連携してみよう(1)
WebAPIと連携してみよう(1)
 
オープンデータ利活用への道のり@未来型不動産サービス「IESHIL(イエシル)」の事例
オープンデータ利活用への道のり@未来型不動産サービス「IESHIL(イエシル)」の事例オープンデータ利活用への道のり@未来型不動産サービス「IESHIL(イエシル)」の事例
オープンデータ利活用への道のり@未来型不動産サービス「IESHIL(イエシル)」の事例
 
DevOpsが引き金となるインフラエンジニアの進撃
DevOpsが引き金となるインフラエンジニアの進撃DevOpsが引き金となるインフラエンジニアの進撃
DevOpsが引き金となるインフラエンジニアの進撃
 
20131214 cocoa関西勉強会
20131214 cocoa関西勉強会20131214 cocoa関西勉強会
20131214 cocoa関西勉強会
 
構造化データをツールで簡単に分析
構造化データをツールで簡単に分析構造化データをツールで簡単に分析
構造化データをツールで簡単に分析
 
非エンジニアのSQL活用が加速させる事業成長
非エンジニアのSQL活用が加速させる事業成長非エンジニアのSQL活用が加速させる事業成長
非エンジニアのSQL活用が加速させる事業成長
 
シラサギ紹介20161119
シラサギ紹介20161119シラサギ紹介20161119
シラサギ紹介20161119
 
あなたも出来る!webエンジニアがSwiftでリリースするためにやったこと
あなたも出来る!webエンジニアがSwiftでリリースするためにやったことあなたも出来る!webエンジニアがSwiftでリリースするためにやったこと
あなたも出来る!webエンジニアがSwiftでリリースするためにやったこと
 
ビジネスマネージャとデータ分析
ビジネスマネージャとデータ分析ビジネスマネージャとデータ分析
ビジネスマネージャとデータ分析
 
モバイルWebアプリケーションを複数端末で動かすために注意すること
モバイルWebアプリケーションを複数端末で動かすために注意することモバイルWebアプリケーションを複数端末で動かすために注意すること
モバイルWebアプリケーションを複数端末で動かすために注意すること
 
1時間でITの流行を理解する
1時間でITの流行を理解する1時間でITの流行を理解する
1時間でITの流行を理解する
 
Swift afterbeginner
Swift afterbeginnerSwift afterbeginner
Swift afterbeginner
 
AssetBundle と TextureCompression のおはなし
AssetBundle と TextureCompression のおはなしAssetBundle と TextureCompression のおはなし
AssetBundle と TextureCompression のおはなし
 
Love swift 20200709
Love swift 20200709Love swift 20200709
Love swift 20200709
 
データベースを使おう
データベースを使おうデータベースを使おう
データベースを使おう
 
「Onedrive for Business」をチョットだけカスタマイズしてみる
「Onedrive for Business」をチョットだけカスタマイズしてみる「Onedrive for Business」をチョットだけカスタマイズしてみる
「Onedrive for Business」をチョットだけカスタマイズしてみる
 
20140713 ハッカソン基調講演
20140713 ハッカソン基調講演20140713 ハッカソン基調講演
20140713 ハッカソン基調講演
 
20130921 技術ひろばの勉強会
20130921 技術ひろばの勉強会20130921 技術ひろばの勉強会
20130921 技術ひろばの勉強会
 
Shirasagi20190222(OSC TOKYO)
Shirasagi20190222(OSC TOKYO)Shirasagi20190222(OSC TOKYO)
Shirasagi20190222(OSC TOKYO)
 
ビジネスサイドが知っておくべきアプリケーションのデータ分析の話
ビジネスサイドが知っておくべきアプリケーションのデータ分析の話ビジネスサイドが知っておくべきアプリケーションのデータ分析の話
ビジネスサイドが知っておくべきアプリケーションのデータ分析の話
 

Sqlite