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
ReactiveProperty を使ったアプリの設計に Realm Xamarin を組み合わせる
Search
Nobuhiro Ito
March 19, 2017
Technology
0
630
ReactiveProperty を使ったアプリの設計に Realm Xamarin を組み合わせる
2017/03/19 Realm World Tour
Demo Project:
https://github.com/iseebi/RP-CleanArchitecture-Demo
Nobuhiro Ito
March 19, 2017
Tweet
Share
More Decks by Nobuhiro Ito
See All by Nobuhiro Ito
Bitriseで本をビルドする / Build a book with Bitrise
iseebi
0
140
BitriseでmacOSアプリをビルドする / Build macOS apps with Bitrise
iseebi
1
750
iOS/Androidアプリ転送ツール TransporterPadの紹介
iseebi
0
6k
Xamarinアプリとプッシュ通知
iseebi
2
1.7k
Apple Developer Enterprise Program でどこまでいけるのか
iseebi
0
760
ReactiveProperty で Xamarin アプリの作り方が変わった
iseebi
3
1.7k
600件のPull RequestからみたXamarinのはまりどころ
iseebi
3
4.2k
Yet Another Cross Platform Development
iseebi
0
4.2k
XamarinでPDFを作る
iseebi
1
1.7k
Other Decks in Technology
See All in Technology
Apache Iceberg Case Study in LY Corporation
lycorptech_jp
PRO
0
380
20250309 無冠のわたし これからどう先生きのこれる?
akiko_pusu
1
150
OPENLOGI Company Profile
hr01
0
60k
リクルートのエンジニア組織を下支えする 新卒の育成の仕組み
recruitengineers
PRO
2
180
マルチアカウント環境における組織ポリシーについて まとめてみる
nrinetcom
PRO
2
110
Global Databaseで実現するマルチリージョン自動切替とBlue/Greenデプロイ
j2yano
0
170
Qiita Organizationを導入したら、アウトプッターが爆増して会社がちょっと有名になった件
minorun365
PRO
1
350
マーケットプレイス版Oracle WebCenter Content For OCI
oracle4engineer
PRO
3
540
AWSではじめる Web APIテスト実践ガイド / A practical guide to testing Web APIs on AWS
yokawasa
8
790
エンジニアの健康管理術 / Engineer Health Management Techniques
y_sone
4
990
OPENLOGI Company Profile for engineer
hr01
1
20k
Amazon Aurora のバージョンアップ手法について
smt7174
2
190
Featured
See All Featured
Six Lessons from altMBA
skipperchong
27
3.6k
Docker and Python
trallard
44
3.3k
The Invisible Side of Design
smashingmag
299
50k
The Power of CSS Pseudo Elements
geoffreycrofte
75
5.5k
Embracing the Ebb and Flow
colly
84
4.6k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
160
15k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
30
2.3k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
How STYLIGHT went responsive
nonsquared
99
5.4k
Navigating Team Friction
lara
183
15k
Building Applications with DynamoDB
mza
93
6.2k
Transcript
3FBDUJWF1SPQFSUZΛͬͨΞϓϦͷઃܭʹ 3FBMN9BNBSJOΛΈ߹ΘͤͯΈͨ /PCVIJSP*UP
ࣗݾհ w ҏ౻৳༟ w ϑΣϯϦϧגࣜձࣾΞϓϦέʔγϣϯڞಉ։ൃ෦νʔϑΤϯδχΞ w ݉ɹ৽نࣄۀ෦#PMU[&OHJOFϓϩμΫτΦʔφʔ w ओʹεϚʔτϑΥϯΞϓϦͷઃܭɾ։ൃΛ୲ɻ࠷ۙϚωʔδϝϯτɻ w
J04 4XJGU 0CKFDUJWF$ "OESPJE +BWB 9BNBSJO $
None
9BNBSJO w $ͰJ04"OESPJE.BDͷ։ൃ͕Ͱ͖ΔπʔϧΩοτ w ࡢ.JDSPTPGU͕ങऩͯ͠ɺݸਓ͚ʹແঈԽ w ๏ਓ͚ؒສਓˠສԁͪΐ͍ʹ 9BNBSJO.BD7JTVBM4UVEJPɺ8JOEPXT͍ͭͯ͘Δ w
ຊͷϢʔβʔάϧʔϓͱͯ͠ +BQBO9BNBSJO6TFS(SPVQ +96( ͕͋Δ
9BNBSJOΛͬͨ։ൃख๏ 9BNBSJO'PSNT 9BNBSJO/BUJWF
%FNP
σϞͷཁࢫ w ҰཡදࣔɾՃɾৄࡉද͔ࣔΒͳΔ؆୯ͳΞϓϦ w σʔλϕʔεͪΖΜ3FBMNΛ༻ɻ w 3FBMN0CKFDU4FSWFSͰಉظɻ w ݩωλ$POOFDU ͱ͍͏ΦϯϥΠϯΠϕϯτͰͷɺ
.JHVFMEF*DB[BͷσϞ ͜ͷͱ͖"[VSF"QQ4FSWJDF͕όοΫΤϯυͩͬͨ
͋ΔΞϓϦͷڞ௨ԽʴߏԽͷྺ࢙ ୈ̍ੈ ωΠςΟϒʴ4JOHMFUPOͳ.BOBHFS͕͍͔ͭ͘ɻ ظؒूதܕͷνʔϜ։ൃʹ͔ͳ͔ͬͨɻ ୈ̎ੈ 9BNBSJO .WWN$SPTTʹΑΔڞ௨Խ 7JFXͷͰ͖͕ͨڞ௨෦ʹΰουΫϥεग़ݱ ୈ̏ੈ $MFBO"SDIJUFDUVSFΛج࣠ʹڞ௨෦ڧԽ
ͷׂΛ໌֬ʹͯ͠ݟ௨͠ޮ͖ͨ͘͢͠
$MFBO"SDIJUFDUVSF w υϝΠϯۦಈ։ൃ %%% ͳͲΛҙࣝͯ͠ɺ ϏδωεϩδοΫΛʹׂ͚ͯͱΛׂ͢Δख๏ w ʮ.77.ͰϞσϧͱϏϡʔͷΛʙʯͱ͍͏ଟ͔͕ͬͨɺ ʮ͡Ό͋ͦͷϞσϧͲͳ͍͢ΜͶΜʯͱ͍͏෦ʹର͢ΔղͷҰͭ ͱೝ͍ࣝͯ͠Δ
w .77.͚ͩͰ$PSF͕ਏ͘ͳΔΛղফͰ͖ͳ͍
7JFX 1SFTFOUFS 6TF$BTF 5SBOTMBUPS .PEFM %BUB4UPSF &OUJUZ 3FQPTJUPSZ IUUQRJJUBDPNLPVUBMPVJUFNTBGDGBEFDED
7JFX 1SFTFOUFS 6TF$BTF 5SBOTMBUPS .PEFM %BUB4UPSF &OUJUZ 3FQPTJUPSZ IUUQRJJUBDPNLPVUBMPVJUFNTBGDGBEFDED ը໘දࣔɾΠϕϯτͷ1SFTFOUFSͷ௨
7JFXͱ6TF$BTFͷؒͰͷσʔλΓͱΓ ඞཁͳϩδοΫΛॻ͘ͱ͜ΖɻσʔλͷऔಘͳͲɻ 3FQPTJUPSZ͔Βग़͖ͯͨ&OUJUZΛ.PEFMʹม͢Δ 7JFXͰ༻͢ΔͨΊʹ࠷దԽͨ͠σʔλϞσϧ υϝΠϯͱσʔλͷ*' 6TF$BTFͰ༻͢Δσʔλͷ$36%ॲཧΛ୲ σʔλΛ࣮ࡍʹऔಘߋ৽͢Δ σʔλͰ༻͢ΔσʔλϞσϧ
͏Ε͘͠ͳ͍ w Ϋϥεଟ͗͢ .PEFMͱ&OUJUZΘ͟Θ͟ม͢Δඞཁ͋Δʁ w ࣅͨΑ͏ͳͷ͏গͬͯ͠Δ໊લʹͰ͖ͳ͍͔ʁ 1SFTFOUFSͬͯ.77.Ͱ͍͏ͱ͜Ζͷ7JFX.PEFMΑͶʁ w
ը໘ʹ͔͔ΘΒͣมԽ͢ΔͷัଊΛͲ͏͢Δʁ 8FC4PDLFUϙʔϦϯάͰڥ֎͔ΒมԽ͢Δଟ
ॏཁͳͷ੍ޚͷํΛҰఆʹ͢Δ͜ͱ ΫϥεΛׂ͠·͘Δͷຊ࣭͡Όͳ͍ͣ
7JFX 1SFTFOUFS 6TF$BTF 5SBOTMBUPS .PEFM %BUB4UPSF &OUJUZ 3FQPTJUPSZ ࠓճΘ͟Θ͟ม͢Δ ඞཁͳͦ͞͏
7JFX 1SFTFOUFS 6TF$BTF %BUB4UPSF &OUJUZ 3FQPTJUPSZ 4FSWJDF όοΫάϥϯυ͔ΒΛม͑Δॲཧ )551ϙʔϦϯάɺ8FC4PDLFUͰͷมԽ
%BUB4UPSFΛૢ࡞͢Δ͜ͱʹͨ͠ ˞"OESPJEଆͰ*OUFOU4FSWJDFͱ͔ͱ͔ͿΔ͔Β8PSLFSʹ͖ͩͬͨ͢
7JFX 7JFX.PEFM 4DFOF %BUB4UPSF .PEFM 3FQPTJUPSZ 4FSWJDF ͜Ε·Ͱݟ֮͑ͷ͋Δ໊લʹม͑ͨ ɾ1SFTFOUFS͜Ε·Ͱͷ7JFX.PEFM૬ͷಈ͖ ɾ&OUJUZ͜Ε·Ͱͷ.PEFM૬ͷಈ͖
ɹ 7JFXҎ্͜ΕΛͦͷ··ར༻͢Δ ɾ6TF$BTF͍͍ͬͯϫʔυ͔ͪΐͬͱࣗ৴ͳ͔ͬͨ ɹͷͰɺ৽͘͠4DFOF໊ͬͯલΛ͚ͭͨ
7JFX 7JFX.PEFM 4DFOF %BUB4UPSF .PEFM 3FQPTJUPSZ 4FSWJDF ͜ͷ෦͕1$- ڞ௨ίʔυ
ͷؒͷଓ w ͯ͢3FBDUJWF1SPQFSUZͰܨ͍Ͱ͍Δɻ w IUUQTHJUIVCDPNSVODFFM3FBDUJWF1SPQFSUZ w !PLB[VLJ͞Μ࡞ɻ ϓϩύςΟΛ3FBDUJWF&YUFOTJPOͱଊ͑ͯૢ࡞Ͱ͖ΔΑ͏ʹͳΔɻ w ຊདྷ7JFX.PEFM7JFXؒͰ͏͖ͱҰ෦ͰݴΘΕ͍ͯΔ͕ɺ
ϓϩύςΟͱ͍͏ϝλϑΝ͕Θ͔Γ͍͢ͷͰͯ͢ͷͰར༻ɻ
3FBDUJWF1SPQFSUZͷΑ͍ͱ͜Ζ w 31ʹΛηοτ͢Δͱ3YετϦʔϜʹ͕ྲྀΕΔ Θ͔Γ͍͢ w *0CTFSWBCMF5ΛͳΜͰ3FBDUJWF1SPQFSUZʹͰ͖Δ 5P3FBDUJWF1SPQFSUZ ศར
w 3FBDUJWF1SPQFSUZ4FMFDU YBOZ 5P3FBDUJWF1SPQFSUZ ͱ͍͏ͷՄೳ w ͦͷ··7JFXΦϒδΣΫτʹόΠϯσΟϯάͰ͖Δ 4FU#JOEJOH w J04ͷࠓͷόʔδϣϯյΕ͍ͯΔ मਖ਼13ϚʔδࡁΈ
7JFX 7JFX.PEFM 4DFOF %BUB4UPSF .PEFM 3FQPTJUPSZ 4FSWJDF %BUB4UPSFΛ࠷Լͱͯ͠ Լͷ3FBDUJWF1SPQFSUZΛ ্͔Β4VCTDSJCF͢Δ
ԼͷΛ্ʹఏڙ͢Δͷ5P3FBDUJWF1SPQFSUZ͢Δ ͜ͷਤͰ 4FSWJDF͚ͩٯͳͷͰҙ
֤ͷߟ͑ํ%BUB4UPSF w σʔλϕʔεΛ৮ͬͯྑ͍ϨΠϠʔ w ࣮ࡍͷΞϓϦͰҎԼͷΑ͏ͳͷΛ༻ҙͨ͠ ࠓճͷσϞʹؚ·ͣ w &QIFNFSBM%BUB4UPSFىಈ࣌ʹ"1*͔Βऔಘ͢ΔҰ࣌తσʔλΛอ࣋ w
"QJ%BUB4UPSF"1*ͱ௨৴ͯ͠σʔλΛऔΔ w 4UPSFE%BUB4UPSFϑΝΠϧͰμϯϩʔυͨ͠ϦετσʔλΛอ࣋
֤ͷߟ͑ํ4FSWJDF w %BUB4UPSFͷΛѻͬͯߋ৽͢Δɻ ࠓճͷσϞʹؚ·ͣ w λΠϚʔͰҰఆ͓͖࣌ؒʹ"QJ%BUB4UPSF͔ΒΛऔ͖ͬͯͯɺ &QIFNFSBM%BUB4UPSFʹॻ͖ࠐΉͳͲɻ
֤ͷߟ͑ํ3FQPTJUPSZ w %BUB4UPSFͷ֤छૢ࡞Λߦ͍ɺ্ͷʹΛఏڙ͢Δɻ w 3FBDUJWF1SPQFSUZϝιουΛ্ͷʹެ։ w ݁Ռతʹػೳ͝ͱʹ༻ҙ͞ΕΔ͜ͱͱͳͬͨɻ
"OESPJEͷϦδϡʔϜରԠ w &QIFNFSBM%BUB4UPSFΛ0O4BWF*OTUBODF4UBUFͰ·Δͬͱอଘ ϦετΞ࣌ʹ·Δͬͱ෮ݩ w 3FBDUJWF1SPQFSUZͰͭͳ͕͍ͬͯΔ͔Β্ʹྲྀΕͯͯ͢ݩʹΔ w 4UPSFE%BUB4UPSFεςʔτ͕ফ͑ͯ࠶ಡࠐͰ෮ݩ͞ΕΔ w ͜ͷϦδϡʔϜॲཧͷͨΊʹ"QQ4UBUF4FSWJDFͱ͍͏ͷΛ༻ҙͨ͠ɻ
֤ͷߟ͑ํ4DFOF w ಉ͡ػೳͷෳͷը໘Ͱڞ༗͞ΕΔػೳΛఏڙ͢Δɻ ݱஈ֊ͰΛҰ࣌తʹอ࣋ͨ͠Γ͍ͯ͠Δ͕ɺ&QIFNFSBM%BUB4UPSFୡ͞ΕΔ͖ 4DFOF
͜͜·Ͱͷ·ͱΊ w 3FBDUJWF1SPQFSUZΛ͍ɺ$MFBO"SDIJUFDUVSFΛҙࣝͯ͠ઃܭͨ͠Βɺ ͦͦ͜͜͏·͍ͬͨ͘ײ͕͢͡Δ w ·ͩ͜Ε͕࠷దղͱࢥ͍ͬͯ·ͤΜͷͰɺ ࠓޙϒϥογϡΞοϓ͍ͯ͜͠͏ͱࢥ͍·͢ɻ
9BNBSJOϢʔβʔ͔ΒΈͨ 3FBMN
ϥΠϒϥϦͷܗଶ w ωΠςΟϒόΠϯσΟϯάϥΠϒϥϦΛϥοϓ͍ͯ͠Δ༷ࢠ w #BJUBOE4XJUDIͰϥοϓ͞Ε͍ͯΔͷͰɺ ωΠςΟϒίʔυΛ͑ͳ͍1$-͔Βͦͷ··͑Δɻ w 'PEZͱ͍͏/&5ͷதؒݴޠ .4*- Λมߋ͢Δπʔϧ͕ΘΕ͍ͯΔɻ
w Ϗϧυ࣌ɺ5PPMT3FBMN8FBWFS'PEZEMMͱϑΝΠϧ͕ ιϦϡʔγϣϯσΟϨΫτϦʹੜ͞ΕΔ͕HJUJHOPSFͯ͠Α͍ɻ
None
͍ํ w 3FBMN(FU*OTUBODF ͰΠϯελϯεΛऔΔɻ w SFBMN"MM*UFN8IFSF ʜ ͱ͍ͬͨɺ $Ϣʔβʔʹ͓ͳ͡Έͷ-*/2ͰߜΓࠐΈՄೳ w
ඌʹ4FMFDUॻ͖ͨ͘ͳΔͷ͕͓ଋͰ͕͢ɺ ͦͷ··ͩͱ/PU*NQMFNFOUFE&YDFQUJPO͕ฦͬͯ͘ΔͷͰ Ұ5P-JTUͰྻڍ͢Δඞཁ͋Γɻ ύϑΥʔϚϯεɾ݅ҙ
มߋࢹ Ϧετ w "T3FBMN$PMMFDUJPO͢Δͱ*3FBMN$PMMFDUJPO5͕औಘͰ͖ɺ */PUJGZ$PMMFDUJPO$IBOHFE5ͷΠϕϯτͰࢹͰ͖Δɻ w 3FBDUJWF1SPQFSUZͱͷ૬ޓӡ༻తʹ*3FBMN$PMMFDUJPO5ʹ 5P3FBDUJWF$PMMFDUJPO͕΄͍͠ͱ͜Ζ Ζ͏ͱͯ͠அ೦ ˞͜Ε͍ͩͿࡶͳͷͰ͏ͪΐͬͱߟ͑ͨํ͕͍͍
มߋࢹ ༰ w 3FBMN0CKFDU*/PUJGZ1SPQFSUZ$IBOHFEΛఏڙ͍ͯ͠ΔͷͰɺ ͜ΕͰࢹ͢Δɻ w ͕ɺ3FBDUJWF1SPQFSUZΛͬͨࠓ͔ͳΓͭΒ͍ʜϥούʔ͕ඞཁ͔ɻ
ॻ͖ࠐΈ w σʔλͷॻ͖ࠐΈछྨ͋Δ w ϕʔγοΫͳͷ#FHJO8SJUFͰVTJOHϒϩοΫΛ͏ w USBOTBDUJPO$PNNJU͞ΕΕอଘɻ $PNNJU͞Εͣʹൈ͚Δͱ3PMMCBDL USBOTBDUJPO%JTQPTF
w VTJOH͏·͔ͭͬͯͯ͘DPPM
ॻ͖ࠐΈ w ίϛοτલఏͰ͋Ε8SJUF "DUJPO3FBMN ͕ศརɻ όοΫάϥϯυͰ࣮ߦ͢Δ8SJUF"TZODΛBXBJU͢Δ͜ͱՄɻ w தͰྫ֎͕ى͖ͳ͚Εอଘ͞ΕΔ
3FBMN.PCJMF1MBUGPSN w 3FBMN(FU*OTUBODF ͷҾʹ$POpHVSBUJPO͚ͩ͢ͰରԠྃ w ͳʹ͜Εઈ؆୯͗͢Δʂʂʂײಈͨ͠ʂʂʂ w -PHJO"TZOD͕ฦͬͯ͘Δͷʹ͔͔࣌ؒΔΑ͏Ͱɺ ͑Δ·Ͱʹ͔͔࣌ؒΔͷ͕ʁγϦΞϥΠζͯ͠ΩϟογϡͰ͖Δʁ ௐࠪෆ
3FBMN.PCJMF1MBUGPSN w 0CKFDU4FSWFS্ʹ֤ϢʔβʔͷSFBMNϑΝΠϧ͕͓͔Εͯɺ ඞཁʹԠͯ͡ڞ༗ઃఆ͕Մೳɺͱ͍͏ܗͰߟ͑Εྑ͍ͱཧղ͠·ͨ͠ɻ ͱͯΘ͔Γ͍͢ʂ
3FBMN.PCJMF1MBUGPSN w ࣗࣾอ༗ͷαʔόʔʹઃஔ͢ΔϞσϧͳͷͰɺ σʔλΛ֎ʹग़ͤͳ͍େاۀͳͲͰΑͦ͞͏ʜ w ͋Εɺ͜Ε͏ͪͷͰಉ͡ࣄ͍ͬͯͨͳʜ
3FBMN9BNBSJOશମతͳײ w -*/2 BTZODBXBJU */PUJGZ$PMMFDUJPO$IBOHFE5 */PUJGZ1SPQFSUZ$IBOHFE5ͱ͍ͬͨɺ $Ϣʔβʔ͕ීஈ͔Β͍ͬͯΔͷΛͪΌΜͱ͑Δ w ֤छϥΠϒϥϦͱͷΈ߹Θ͖ͤͬ͢͞ͱྑͦ͞͏ɻ
3FBDUJWF1SPQFSUZͱ࿈ಈ͢ΔͨΊͷϥούʔͳͲ࡞ΒΕΔͱྑ͍ͳɻ w $PDPB+BWBʹൺͯߋ৽Ίͳͷ͕͔ɻ .BD 8JOEPXT·ͩ
9BNBSJO $ͷศརͰָ͍͠ϥΠϒϥϦ ͍ͬͺ͍͋ΔͷͰ ·ͩͷਓҰ৮ͬͯΈ·͠ΐ͏ʂ