Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Realmビギナーが知っとくべき内容で打線組んだwww
Search
yimajo
March 12, 2015
Technology
5
6.9k
Realmビギナーが知っとくべき内容で打線組んだwww
potatotips15 で発表した資料です
http://connpass.com/event/12140/
yimajo
March 12, 2015
Tweet
Share
More Decks by yimajo
See All by yimajo
良いテストコードのために悪いテストコードを理解する - 不安定なテスト編: iOSアプリ開発ユニットテストの場合
yimajo
22
6.1k
TCAの Shared Stateって どういう仕組みになってんの?
yimajo
0
2k
Swift 5.9 からの Observation はiOS17 未満 からも使えて struct の変更検知もできるんすかね?
yimajo
2
910
不安定なテストは200種類あんねん
yimajo
3
940
TCA v0.19.0からのSwitchStore/CaseLetが良い
yimajo
0
1.9k
TCAでViewStoreにKeyPath DynamicMemberLookupが使われてる件
yimajo
0
1.1k
TCAでのClient/Managerの 利用パターンでは副作用のActionやErrorを分離できる
yimajo
0
860
【開催説明資料】iOSアプリ開発のための Functional Architecture 情報共有会
yimajo
0
260
SWORD ART COMBINE
yimajo
1
1.2k
Other Decks in Technology
See All in Technology
Web Streams APIの基本と実践、TypeScriptでの活用法 / TSKaigi 2025 Web Streams API
tasshi
4
440
SONiCで構築・運用する生成AI向けパブリッククラウドネットワーク
sonic
1
550
人間性を捧げる生成AI時代の技術選定
yo4raw
2
1.2k
Cline&CursorによるAIコーディング徹底活用―Live Vibe Coding付き
pharma_x_tech
2
500
フロントエンドがTypeScriptなら、バックエンドはPHPでもいいじゃない/php-is-not-bad
hanhan1978
3
1.6k
エンジニアのための 法規制への取り組み方 #healthtechmeetup
77web
0
280
golang-migrate VS Atlas !? 技術選定のポイントと学び ~DBマイグレーションツール選定の実例を通して~ / golang-migrate vs Atlas ! What is the point of technology selection and what you can learn from the examples of DB migration tool selection?
nttcom
0
120
若手中心の内製アジャイル開発で研究開発に挑戦 / 20250517 Nobuhiro Kawamura & Dami Lee & Tomohiko Tanikawa
shift_evolve
1
170
Ruby on Rails の楽しみ方
morihirok
6
3.2k
AWS LambdaをTypeScriptで動かして分かった、Node.jsのTypeScriptサポートの利点と課題
smt7174
1
1.5k
LLMベースAIの基本 / basics of LLM based AI
kishida
9
2.3k
TypeScriptで実践するクリーンアーキテクチャ ― WebからもCLIからも使えるアプリ設計 / CClean Architecture with Typescript Application
panda_program
10
3.5k
Featured
See All Featured
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
19
1.2k
A Modern Web Designer's Workflow
chriscoyier
693
190k
Intergalactic Javascript Robots from Outer Space
tanoku
271
27k
Six Lessons from altMBA
skipperchong
28
3.8k
GraphQLとの向き合い方2022年版
quramy
46
14k
Making Projects Easy
brettharned
116
6.2k
Optimising Largest Contentful Paint
csswizardry
37
3.2k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
52
2.7k
The World Runs on Bad Software
bkeepers
PRO
68
11k
Building an army of robots
kneath
305
45k
Building Better People: How to give real-time feedback that sticks.
wjessup
368
19k
Transcript
3FBMNϏΪφʔ͕ͬͱ͖͘ ༰ͰଧઢΜͩXXX גࣜձࣾΩϡϦΦγςΟιϑτΣΞ ࠓળۣ !ZJNBKP ୈճQPUBUPUJQT
ଧॱ कඋ બख໊ ༡ 3FBMNͷಡΈํʮϨϧϜʯ ೋ 3-.0CKFDUαϒΫϥεͷϓϩύςΟఆ͕ٛΧϥϜΛࣔ͢
த /4/VMMOJMͰอଘͰ͖ͳ͍ Ұ ओΩʔTUSJOH͔Ͱͳ͚Ε͍͚ͳ͍ ӈ /4%BUF͕ϛϦඵΛอଘͰ͖ͯͳ͍ ࡾ 3FBMN +40/͕ࣗಈͰ*40ܗࣜͷจࣈྻΛ/4%BUFʹ ͯ͠͠·͏ ࠨ +40/&YQPSUͷίʔυOJMΛߟྀ͍ͯ͠ͳ͍ ั 3-.0CKFDUͷϓϩύςΟଐੑॻ͔ͳ͍͜ͱΛਪ /4*OUFHFS͡Όͳ͘JOU@UΛ͏͖࣌͋Δ 3FBMN DPDPB WΛ༻ɻόάमਖ਼͞ΕͨΓ༷มΘΔͨΊ༰ӏವΈʹ͠ͳ͍Ͱ͍ͩ͘͞
3FBMNಡΈํΛΧλΧφͰදݱ͢Δͱ ʮϨϧϜʯ
ͦͦ3FBMNͱ w 3FBMNϞόΠϧϑΝʔετͰγϯϓϧ͔ͭϞμ ϯͳ࣍ੈσʔλϕʔε w IUUQTHJUIVCDPNSFBMNSFBMNDPDPB w 0CKFDUJWF$ 4XJGUͱ"OESPJE͔Β͑ΔϥΠ ϒϥϦ͕͋Δ
w ϦΞϧϜ͡Όͳͯ͘ϨϧϜͱಡΉ
ࠓճશͯJ04ʹ͍ͭ ͯͷ
3-.0CKFDUαϒΫϥεͷϓϩύςΟఆ͕ٛ ΧϥϜΛࣔ͢
@interface Dog : RLMObject @property NSString *name; @end ϞσϧͰςʔϒϧఆٛ ͑Δܕ
#00- CPPM JOU /4*OUFHFS MPOH qPBU EPVCMF $('MPBU /44USJOH /4%BUF /4%BUB 3-.0CKFDUͷαϒΫϥε
@interface Dog : RLMObject @property NSString *name; @property NSNumber *age;
// Ճͨ͠ @end ϞσϧͰςʔϒϧఆٛ ͑ͳ͍ܕͰఆٛͯ͠͠·͏ͱz࣮ߦ࣌ʹྫ֎zɻ ͜Ε୯७ϛεͳͷͰͦͷΫϥεΛར༻͢Δࡍʹ ͕͔Δͷخ͍͠ɻ
/4/VMMOJMͰอଘ͕Ͱ͖ͳ͍ͷͰσʔλ͕ ͳ͍͜ͱΛදͮ͠Β͍
8FC"1*Λར༻ͨ͠߹ ϨεϙϯεʹΦϓγϣφϧͳ߲͕͋Δ ͱ/4/VMMOJM͕ར༻Ͱ͖ͳ͍ͷਏ͍
ٯʹ ϩʔΧϧͰ࡞ͨ͠σʔλΛ3FBMNʹอଘ͢Δ ߹Φϓγϣφϧͳ߲ ͬͱগͳ͍͔͠Εͳ͍ͨΊ ͋·ΓؾʹͳΒͳ͍ͱࢥ͏
ଥڠҊ w ͦͷ͕͋Δ͔ͳ͍͔ͷ#00-ϑϥάΛอଘ߲ ͷҰͭͱͯ࣋ͭ͠ ଥڠҊ w ͳΒ*/5@.*/ͳͲఆԽ͞Ε͍ͯΔΘ Εͳͦ͞͏ͳͰଘࡏ͠ͳ͍ͱ͍͏ҙຯ͚ͩΛ ࣔ͢
ͪͳΈʹ
/44USJOHʹOJMΛ ಥͬࠐΊΔ
None
w OJM͕อଘͰ͖ͯΔΑ͏ʹݟ͑Δ͚Ͳ w ۭจࣈ!lz͕อଘ͞Ε͍ͯͯɺOJMͰͳ͍͔Β ҙ͕ඞཁ
ओΩʔTUSJOH͔Ͱͳ͚Ε͍͚ͳ͍
w ྫ֎ʹTUSJOH͔JOUΛ͑ͱॻ͍ͯ͋Δ w JOU͚ͩͰͳ͘MPOHͳͲ͑ΔͷͰͰ͋Ε ྑ͍
/4%BUF͕ϛϦඵΛอଘͰ͖ͯͳ͍
w ݱࡏͷ࠷৽ W Ͱ࣌ؒͷখҎԼ͕ ΓࣺͯΒΕɺϛϦඵҎԼ͕อଘͰ͖ͳ͍ w IUUQTHJUIVCDPNSFBMNSFBMNDPDPB JTTVFT
w /45JNF*OUFSWBM͏ͷ͕ૉ w ͕ͩ͋͘·Ͱج४͔Βͷ*OUFSWBMʹͳΔͷͰ ͦͷج४ΛͲ͜ʹ͢Δ͔దʹܾΊͨ͘ͳ Δ w 8FC"1*͔Β*40ܗࣜʢྫ 5 ʣͰૹΒΕͯ͘ΔΑ͏ͳ
έʔεͳΒͦΕΛ/44USJOHͰอଘ͢Δͷѱ͍ํ ๏͡Όͳ͍ؾ͕͢Δ ϛϦඵҎԼ͍͍ͨ࣌ͷ ଥڠҊ
ଥڠҊͲͪΒΛબΜͰ ෦อଘ͕Ͳ͏͋Εϝιουܦ༝ Ͱ/4%BUFΛฦ͢Α͏ʹ͢Ε 3-.0CKFDUΛࢀর͢Δଆؾʹ͠ ͳ͍ͰࡁΉ͔
@interface Dog : RLMObject @property NSTimeInterval *birthDateInterval; // NSDate͕ཉ͚͠ΕpropertyΛNSDateʹͯ͠ฦ͢ɻ //
birthDateInterval͕-1ͳΒnilΛฦ͍͍ͤ - (NSDate *)birthDate; @end
3FBMN +40/͕ࣗಈͰ*40ܗࣜͷจ ࣈྻΛ/4%BUFʹͯ͠͠·͏
3FBMN +40/ͱ͍͏ ϥΠϒϥϦ͕͋Δ w +40/ͷϚοϐϯάϧʔϧΛ.BOUMFͷΑ͏ʹॻ ͚Δ w Ϛοϐϯάϧʔϧ3-.0CKFDUΛܧঝͨ͠Ϋϥ εͷΫϥεϝιουͱͯ͠هड़͠/4%JDUJPOBSZ Ͱฦ͢
IUUQTHJUIVCDPNNBUUIFXDIFPL3FBMN+40/
+ (NSDictionary *)JSONInboundMappingDictionary { return @{ @"id": @"identifier", @"created_at": @"createdAt"
}; } Ϛοϐϯάϧʔϧྫ LFZ͕KTPOͷLFZ WBMVF͕Ϛοϐϯά͢ΔϓϩύςΟ໊
w *40ܗࣜͷจࣈྻ/4%BUFʹͯ͘͠ΕΔ w Ͱ/4%BUFϛϦඵࣺͯΔ͠ w σʔλ͕ͳ͍ͱ͖/4%BUFͰOJMอ࣋͢Δͷϫʔ ΫΞϥϯυ͕ඞཁͳͷͰ w ࣌Λ/4%BUFͰอଘͨ͘͠ͳ͍࣌͋ͬͯ ͋Γ͕ͨ໎తͳʜ
+40/&YQPSUͷίʔυ OJMΛҙ͍ࣝͯ͠ͳ͍
+40/&YQPSUͱ IUUQTHJUIVCDPN"INFE"MJ+40/&YQPSU
+40/&YQPSUͱ w +40/&YQPSU+40/ͷϑΝΠϧ͔ΒΫϥεΛఆ ٛͯ͘͠ΕΔπʔϧ w Ϛοϐϯά༻ͷϝιουͷίʔυੜͯ͠ग़ ྗͯ͘͠ΕΔ IUUQTHJUIVCDPN"INFE"MJ+40/&YQPSU
ྫ - (instancetype)initWithDictionary:(NSDictionary *)dictionary { if(dictionary == nil || [dictionary
isKindOfClass:[NSNull class]]){ return nil; } self = [super init]; if(![dictionary[@"id"] isKindOfClass:[NSNull class]]){ self.identifier = [dictionary[@"id"] integerValue]; } if(![dictionary[@"name"] isKindOfClass:[NSNull class]]){ self.name = dictionary[@"name"]; } return self; } ͨͩEJDUJPOBSZ<!lJEz>͕OJMͳΒ@JEFOUJpFSOJMʹͳΓྫ֎͕ ى͖ΔͷͰɺ͜ͷ݅ࣗମΧελϚΠζඞཁʹͳΔ
+40/ &YQPSUͰࣗಈੜ͞ ΕΔίʔυΛݩʹΧελϚΠ ζ͍ͯ͘͠ͷ͕ྑͦ͞͏
3-.0CKFDUͷϓϩύςΟ ଐੑॻ͔ͳ͍͜ͱΛਪ
w 3FBMNͰɺOPOBUPNJD BUPNJD TUSPOH DPQZ XFBLͷ Α͏ͳ0CKFDUJWF$ͷϓϩύςΟଐੑ͕ແࢹ͞Ε·͢ w 3FBMNͷதͰɺಠࣗͷ࠷దԽ͞Εͨଐੑ͕ΘΕ·͢ɻ ͦͷͨΊɺࠞཚΛආ͚ΔͨΊʹɺ3FBMNϞσϧΫϥεΛએ
ݴ͢Δͱ͖ɺϓϩύςΟଐੑΛ͚ͳ͍͜ͱΛਪ͍ͯ͠ ·͢ɻ w ϓϩύςΟଐੑΛ͚ͨ߹ɺ3-.0CKFDU͕3FBMNʹอ ଘ͞ΕΔ·Ͱ༗ޮʹͳΓ·͢ɻ ެࣜϦϑΝϨϯεΑΓ IUUQSFBMNJPKQEPDTDPDPB
ແࢹ͞ΕΔͷ͔͞Εͳ ͍ͷ͔͔ΓͮΒ͍ʜ
͜͏͍͏͜ͱʁ %#ʹอଘ͞Εͨ 3-.0CKFDUΛ࡞ͬͨ ଐੑͷࢦఆ͕༗ޮ ଐੑͷࢦఆΛແࢹʁ w Կʹ͠Ζଐੑͷࢦఆ͠ͳ͍΄͏͕ྑͦ͞͏ %#͔Βऔಘ ଐੑͷࢦఆΛແࢹʁ
/4*OUFHFSʹ͢ΔͱCJU$16ͰࠔΔ͜ͱ ͋Δ
ωλ͕ਚ͖ͯ3FBMNͱ ؔͳ͍ΜͰ͕͢
w CJU$16ͷ߹/4*OUFHFSCJU w CJU͚ʹϏϧυ͞Ε্ͨͰCJU$16ͳΒ /4*OUFHFSCJUʹͳΔ w ϋʔυΣΞΞʔΩςΫνϟʹΑΒͣɺॴఆͷό ΠτͰ͋Δ͜ͱ͕อূ͞ΕͨΈࠐΈσʔλ ܕ͕0CK$Ͱ͑ΔͷͰͦΕΛ͏΄͏͕ྑ͍ 8FC"1*ͰCJUͷΛฦ
͞ΕΔࡍ
@interface Employ : RLMObject @property uint64_t identifier; @end ྫ͑ූ߸ͳ͠CJUͷΛอଘ͢Δඞཁ͕͋Δ ͳΒ/4*OUFHFSͰͳ͘JOU@UVJOU@UΛ͑
͍͍ͱࢥ͏
ͦͷଞ
w 3FBMN DPDPB ͷόʔδϣϯΞοϓ͕͍ w /4/VMMOJMΛಥͬࠐΊͳ͍͙͢ʹղܾ͢Δ ͩΖ͏ͱࢥ͏ w %#ͱͯ͠Ϣʔβʔͷखݩʹͬͯ͠·͏͜ͱͳ ͷͰมͳϫʔΫΞϥϯυΛͤͣͳΔ͘ૉ
ͳରԠ͍ͨ͠