SlideShare une entreprise Scribd logo
1  sur  22
Télécharger pour lire hors ligne
浅野 友希
について
Who am I?
浅野 友希 (Asano Yuki)
@yuuki1224st
京都工芸繊維大学
工芸科学部 電子システム工学課程 5回生
書ける言語: Objective-C
一応歩んできた道..
C→VisualBasic→Java(Android)→PHP→Ruby→Objective-C
で、今日発表することは..
今日は、Realmの話をしようと思います。
面白いかどうかわかりませんが..
1. Realmとは
2. 使い方
3. Realmの内部的な話(ソースコード)
とは..
・Mobileの データベース+ORM (Cocoa/Android)
似たようなのだと..
SugarRecord / MagicalRecord
FMDB / CoreData / sqlite / Mantle
Realmの使い方
RealmModelクラスの定義
関連付け(1対1)
関連付け(1対多)
オブジェクトの追加
Realmモデルクラスのインスタンス作って
Realmインスタンス作って
ここでトランザクション使って、
Realmにオブジェクトを保存してる
オブジェクトの取り出し
ここで取り出してる
NSPredicateを使ってフェッチ
JSONデータ
こんな感じで合わせておけば..
Contact
Location
Venue
JSON → RLMObject が簡単!! (Mantleみたい)
スレッド
スレッド間でインスタンスの受け渡しはできない
RLMRealmインスタンス RLMRealmインスタンス
realm-cocoaの内部的な話
(ソースコード)
realm-cocoa realm-core(C++)
RLMRealm
RLMSchema
RLMObjectSchema
Group
Table
Dog : RLMObject
RLMResults Table(検索結果)
OSSじゃない!
(OSSで公開予定)
OSS
RLMProperty
RLMProperty
RLMProperty
RLMObjectSchema
RLMProperty
RLMProperty
RLMProperty
RLMObjectSchema
RLMProperty
RLMProperty
RLMProperty
Person: RLMObject Food : RLMObject
Row (Realmモデルクラスのインスタンスと対応)
Row (Realmモデルクラスのインスタンスと対応)
Row (Realmモデルクラスのインスタンスと対応)
[RLMRealm defaultRealm]で、Realmインスタンスが作られる時
このタイミングになる
RLMSchema.mmに + (void)initialize;
1. 全てのクラスを objc_copyClassList() でとってきて、
RLMObject継承のものだけを調べる
2. Realmモデルクラスのものだけ、class_copyPropertyList()し
てRLMPropertyインスタンスを作って, RLMObjectSchemaイン
スタンスを作る
RLMSchema
RLMObjectSchema
Dog : RLMObject
RLMProperty
RLMProperty
RLMProperty
RLMObjectSchema
RLMProperty
RLMProperty
RLMProperty
RLMObjectSchema
RLMProperty
RLMProperty
RLMProperty
Person: RLMObject Food : RLMObject
RLMSchemのグローバル変数_sharedSchema
アクセッサクラスが作られる
Userクラス
RLMStandalone_UserクラスRLMAccessor_Userクラス
アクセッサがMethod Swizzlingされてて
C++のAPIからゲット/セットできる
なんでSQLiteより速いのか?(予想)※はっきりとはわかっていません
1. そもそもrealm-coreがsqliteより薄い?
2. RLMResultsの遅延させる仕組み
Sqliterealm-core
CoreData
realm-cocoa CのAPI
C++API
fetch結果のTableRLMResults
fetch要求
RLMResultsが返ってくる
結論
ご静聴ありがとうございました!!

Contenu connexe

Similaire à Realmについて

[豆ナイト]Java small object programming
[豆ナイト]Java small object programming[豆ナイト]Java small object programming
[豆ナイト]Java small object programmingYuichi Hasegawa
 
C#初心者がxamarinに手を出してみた
C#初心者がxamarinに手を出してみたC#初心者がxamarinに手を出してみた
C#初心者がxamarinに手を出してみたIosif Takakura
 
TreeFrog Frameworkの紹介
TreeFrog Frameworkの紹介TreeFrog Frameworkの紹介
TreeFrog Frameworkの紹介ao27
 
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~infinite_loop
 
新入社員の俺がDeepLearningのコードを書いてみたら神検出率だった件
新入社員の俺がDeepLearningのコードを書いてみたら神検出率だった件新入社員の俺がDeepLearningのコードを書いてみたら神検出率だった件
新入社員の俺がDeepLearningのコードを書いてみたら神検出率だった件Study Group by SciencePark Corp.
 
nomlab_okayamaruby_slide
nomlab_okayamaruby_slidenomlab_okayamaruby_slide
nomlab_okayamaruby_slidenomlab
 
超高速アプリ開発法
超高速アプリ開発法超高速アプリ開発法
超高速アプリ開発法Keiichi SASAKI
 
Core Animation 使って見た
Core Animation 使って見たCore Animation 使って見た
Core Animation 使って見たOCHI Shuji
 
2011 icse-reverse engineering feature models
2011 icse-reverse engineering feature models2011 icse-reverse engineering feature models
2011 icse-reverse engineering feature modelsn-yuki
 
どきっ!三行で作るランダムダンジョン!?~WEBもあるよ!~ - 2010/8/21 群馬Web研究会(勉強会)
どきっ!三行で作るランダムダンジョン!?~WEBもあるよ!~ - 2010/8/21 群馬Web研究会(勉強会)どきっ!三行で作るランダムダンジョン!?~WEBもあるよ!~ - 2010/8/21 群馬Web研究会(勉強会)
どきっ!三行で作るランダムダンジョン!?~WEBもあるよ!~ - 2010/8/21 群馬Web研究会(勉強会)parrotstudio
 
HTML5でスマートフォン開発の理想と現実
HTML5でスマートフォン開発の理想と現実HTML5でスマートフォン開発の理想と現実
HTML5でスマートフォン開発の理想と現実Takumi Ohashi
 
俺とDockerとtDiaryとkubernetes
俺とDockerとtDiaryとkubernetes俺とDockerとtDiaryとkubernetes
俺とDockerとtDiaryとkubernetesMasayuki KaToH
 
ななめ45°から見たJavaOne
ななめ45°から見たJavaOneななめ45°から見たJavaOne
ななめ45°から見たJavaOneAdvancedTechNight
 
Web技術勉強会 20110528
Web技術勉強会 20110528Web技術勉強会 20110528
Web技術勉強会 20110528龍一 田中
 
Inside frogc in Dart
Inside frogc in DartInside frogc in Dart
Inside frogc in DartGoro Fuji
 
jQueryで気をつけてほしいこと
jQueryで気をつけてほしいことjQueryで気をつけてほしいこと
jQueryで気をつけてほしいこと良太 増子
 
20120616i phonedeveloperworkshop
20120616i phonedeveloperworkshop20120616i phonedeveloperworkshop
20120616i phonedeveloperworkshopYoichiro Sakurai
 

Similaire à Realmについて (20)

Groovyコンファレンス
GroovyコンファレンスGroovyコンファレンス
Groovyコンファレンス
 
[豆ナイト]Java small object programming
[豆ナイト]Java small object programming[豆ナイト]Java small object programming
[豆ナイト]Java small object programming
 
C#初心者がxamarinに手を出してみた
C#初心者がxamarinに手を出してみたC#初心者がxamarinに手を出してみた
C#初心者がxamarinに手を出してみた
 
TreeFrog Frameworkの紹介
TreeFrog Frameworkの紹介TreeFrog Frameworkの紹介
TreeFrog Frameworkの紹介
 
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
 
Html5nagoya20130910
Html5nagoya20130910Html5nagoya20130910
Html5nagoya20130910
 
新入社員の俺がDeepLearningのコードを書いてみたら神検出率だった件
新入社員の俺がDeepLearningのコードを書いてみたら神検出率だった件新入社員の俺がDeepLearningのコードを書いてみたら神検出率だった件
新入社員の俺がDeepLearningのコードを書いてみたら神検出率だった件
 
nomlab_okayamaruby_slide
nomlab_okayamaruby_slidenomlab_okayamaruby_slide
nomlab_okayamaruby_slide
 
超高速アプリ開発法
超高速アプリ開発法超高速アプリ開発法
超高速アプリ開発法
 
Core Animation 使って見た
Core Animation 使って見たCore Animation 使って見た
Core Animation 使って見た
 
2011 icse-reverse engineering feature models
2011 icse-reverse engineering feature models2011 icse-reverse engineering feature models
2011 icse-reverse engineering feature models
 
どきっ!三行で作るランダムダンジョン!?~WEBもあるよ!~ - 2010/8/21 群馬Web研究会(勉強会)
どきっ!三行で作るランダムダンジョン!?~WEBもあるよ!~ - 2010/8/21 群馬Web研究会(勉強会)どきっ!三行で作るランダムダンジョン!?~WEBもあるよ!~ - 2010/8/21 群馬Web研究会(勉強会)
どきっ!三行で作るランダムダンジョン!?~WEBもあるよ!~ - 2010/8/21 群馬Web研究会(勉強会)
 
HTML5でスマートフォン開発の理想と現実
HTML5でスマートフォン開発の理想と現実HTML5でスマートフォン開発の理想と現実
HTML5でスマートフォン開発の理想と現実
 
俺とDockerとtDiaryとkubernetes
俺とDockerとtDiaryとkubernetes俺とDockerとtDiaryとkubernetes
俺とDockerとtDiaryとkubernetes
 
ATN No.2 Scala事始め
ATN No.2 Scala事始めATN No.2 Scala事始め
ATN No.2 Scala事始め
 
ななめ45°から見たJavaOne
ななめ45°から見たJavaOneななめ45°から見たJavaOne
ななめ45°から見たJavaOne
 
Web技術勉強会 20110528
Web技術勉強会 20110528Web技術勉強会 20110528
Web技術勉強会 20110528
 
Inside frogc in Dart
Inside frogc in DartInside frogc in Dart
Inside frogc in Dart
 
jQueryで気をつけてほしいこと
jQueryで気をつけてほしいことjQueryで気をつけてほしいこと
jQueryで気をつけてほしいこと
 
20120616i phonedeveloperworkshop
20120616i phonedeveloperworkshop20120616i phonedeveloperworkshop
20120616i phonedeveloperworkshop
 

Realmについて