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
7k
Realmビギナーが知っとくべき内容で打線組んだwww
potatotips15 で発表した資料です
http://connpass.com/event/12140/
yimajo
March 12, 2015
Tweet
Share
More Decks by yimajo
See All by yimajo
11年かかって やっとVibe Codingに 時代が追いつきましたね
yimajo
1
280
iOSアプリ開発で 関数型プログラミングを実現する The Composable Architectureの紹介
yimajo
2
250
良いテストコードのために悪いテストコードを理解する - 不安定なテスト編: iOSアプリ開発ユニットテストの場合
yimajo
22
6.3k
TCAの Shared Stateって どういう仕組みになってんの?
yimajo
0
2.2k
Swift 5.9 からの Observation はiOS17 未満 からも使えて struct の変更検知もできるんすかね?
yimajo
2
990
不安定なテストは200種類あんねん
yimajo
3
1k
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
890
Other Decks in Technology
See All in Technology
Apache Spark もくもく会
taka_aki
0
130
職種の壁を溶かして開発サイクルを高速に回す~情報透明性と職種越境から考えるAIフレンドリーな職種間連携~
daitasu
0
170
roppongirb_20250911
igaiga
1
240
品質視点から考える組織デザイン/Organizational Design from Quality
mii3king
0
210
Terraformで構築する セルフサービス型データプラットフォーム / terraform-self-service-data-platform
pei0804
1
190
人工衛星のファームウェアをRustで書く理由
koba789
15
8.2k
5分でカオスエンジニアリングを分かった気になろう
pandayumi
0
260
Unlocking the Power of AI Agents with LINE Bot MCP Server
linedevth
0
110
「何となくテストする」を卒業するためにプロダクトが動く仕組みを理解しよう
kawabeaver
0
430
react-callを使ってダイヤログをいろんなとこで再利用しよう!
shinaps
2
260
未経験者・初心者に贈る!40分でわかるAndroidアプリ開発の今と大事なポイント
operando
5
750
COVESA VSSによる車両データモデルの標準化とAWS IoT FleetWiseの活用
osawa
1
380
Featured
See All Featured
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
The Pragmatic Product Professional
lauravandoore
36
6.9k
How to Think Like a Performance Engineer
csswizardry
26
1.9k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
229
22k
What’s in a name? Adding method to the madness
productmarketing
PRO
23
3.7k
Docker and Python
trallard
46
3.6k
Speed Design
sergeychernyshev
32
1.1k
Being A Developer After 40
akosma
90
590k
How to Ace a Technical Interview
jacobian
279
23k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4k
Art, The Web, and Tiny UX
lynnandtonic
303
21k
BBQ
matthewcrist
89
9.8k
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 %#ͱͯ͠Ϣʔβʔͷखݩʹͬͯ͠·͏͜ͱͳ ͷͰมͳϫʔΫΞϥϯυΛͤͣͳΔ͘ૉ
ͳରԠ͍ͨ͠