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
モバイルアプリ設計入門
Search
野瀬田 裕樹
June 16, 2025
Technology
35
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
モバイルアプリ設計入門
iOSを中心にモバイルアプリにおける設計の基本原則などをまとめて資料にしました
野瀬田 裕樹
June 16, 2025
More Decks by 野瀬田 裕樹
See All by 野瀬田 裕樹
iOS26時代の新規アプリ開発
yuukiw00w
0
250
Swift ConcurrencyでよりSwiftyに
yuukiw00w
0
340
Human Interface Guidelines 2
yuukiw00w
0
70
AI前提で考えるiOSアプリのモダナイズ設計
yuukiw00w
0
280
HIG学習用スライド
yuukiw00w
0
200
FlutterKaigi 2025: What is iOS Assistive Access? UI considerations for Flutter
yuukiw00w
0
63
Swift6.2時代のconcurrencyを考える会
yuukiw00w
2
1.7k
実践!App Intents対応
yuukiw00w
1
510
App Intents再入門
yuukiw00w
0
91
Other Decks in Technology
See All in Technology
AI時代の開発生産性は、個人技からチーム設計へ
moongift
PRO
4
2.3k
生成AI×AWS CDK×AWS FISで"振り返れる"ミニGameDayをつくろう
yoshimi0227
1
360
関数型の考えを TypeScript に持ち込んで、テストしやすい純粋関数を増やす / Pure at the Core, Effects at the Edge: Bringing Functional Thinking into TypeScript
kaminashi
2
130
SoccerMaster: A Vision Foundation Model for Soccer Understanding
kzykmyzw
0
130
DatabricksにおけるMCPソリューション
taka_aki
1
270
非定型なドキュメントを効率よくリファクタする 〜えぇ!?仕様書27本の移行が1日で終わったって!?〜
subroh0508
2
550
ruby.wasmとPicoRuby.wasmに対応した仮想DOMライブラリを作ってる話 #kaigieffect_kaigi
sue445
PRO
0
150
ソニー銀行におけるビジネスアジリティ向上のためのクラウドシフト戦略
srenext
0
720
AI、CDK と協働する Full TypeScript アプリケーション開発 / Full TypeScript Application with AI and CDK
geekplus_tech
2
360
CIで使うClaude
iwatatomoya
0
290
AIコード生成×サプライチェーン攻撃 — PHPが直面する“二重の信頼問題
shinyasaita
0
190
AI時代の闇と光
tatsuya1970
0
110
Featured
See All Featured
A Soul's Torment
seathinner
6
3.1k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.5k
How to Ace a Technical Interview
jacobian
281
24k
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.5k
Designing Powerful Visuals for Engaging Learning
tmiket
1
450
HDC tutorial
michielstock
2
740
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
490
What does AI have to do with Human Rights?
axbom
PRO
1
2.2k
Chasing Engaging Ingredients in Design
codingconduct
0
240
Marketing to machines
jonoalderson
1
5.6k
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
220
It's Worth the Effort
3n
188
29k
Transcript
ϞόΠϧΞϓϦઃܭೖ ాɹ༟थ
࣍ w ιϑτΣΞΞʔΩςΫνϟʔͱ w ϞόΠϧΞϓϦͰಛʹॏཁͳ࣭ಛੑ w ϞόΠϧΞϓϦͰಛతͳ੍ w ϞόΠϧΞϓϦͷ։ൃͰҙ͖ࣝ͢͜ͱ w
ϞόΠϧΞϓϦͱόοΫΤϯυͷҧ͍ w ϞόΠϧΞϓϦͷઃܭݪଇ w όοΫΤϯυͱڞ௨ͷઃܭࢦ w 4XJGUಛ༗ͷ
ιϑτΣΞΞʔΩςΫνϟʔ w ιϑτΣΞΛͲͷΑ͏ʹߏ͢Δ͔Λࣔ͢ͷ w γεςϜΛߏཁૉʹͲͷΑ͏ʹׂɾஔ͠ɺͲͷΑ͏ʹ૬ޓʹ ΓऔΓͤ͞Δͷ͔Λࣔ͢ͷ
ιϑτΣΞΞʔΩςΫνϟʔ w ͏·͘࡞ΓࠐΉ͜ͱͰ w ։ൃɾอकɾӡ༻͕༰қʹͳΔ w γεςϜʹٻΊΒΕΔ࣭ಛੑɾͦͷଞͷੑ্࣭͕͢Δ
࣭ಛੑ ػೳద߹ੑ ੑೳޮੑ ޓੑ ༻ੑ ৴པੑ ηΩϡϦςΟ อकੑ Ҡ২ੑ
IUUQTLJLBLVSVJDPNY9IUNM w ιϑτΣΞ࣭ʢ+*49ࢀরʣ
ϞόΠϧΞϓϦͰಛʹॏཁͳ࣭ಛੑ w ༻ੑʢVTBCJMJUZʣ ෭ಛੑɿదೝࣝੑɺशಘੑɺӡ༻ૢ࡞ੑɺ ɹɹɹɹϢʔβΤϥʔࢭੑɺϢʔβΠϯλϑΣʔεշඒੑɺ ɹɹɹɹΞΫηγϏϦςΟ w ੑೳޮੑʢQFSGPSNBODFF ff i
DJFODZʣ ෭ಛੑɿ࣌ؒޮੑɺࢿݯޮੑɺ༰ྔຬੑ ˞ଞ͕ෆཁͱ͍͏Θ͚Ͱ͋Γ·ͤΜ
ϞόΠϧΞϓϦͰಛʹॏཁͳ࣭ಛੑ w ༻ੑʢVTBCJMJUZʣ ϢʔβʔʹͱͬͯΑΓ͍উखͷྑ͍ମݧΛ࡞ΓࠐΉඞཁ͕͋Δ ςΩετ #VUUPO ेͳλοϓྖҬɺ)JHI$POUSBTUɺదͳಡΈ্͛ɺFUD ଟݴޠରԠɺจࣈαΠζͷมԽʹରԠɺ)JHI$POUSBTUɺFUD 5FYU'JFME
ೖྗཁૉʹԠͨ͡LFZCPBSEɺࣗಈೖྗɺFUD
ϞόΠϧΞϓϦͰಛʹॏཁͳ࣭ಛੑ w ੑೳޮੑʢQFSGPSNBODFF ff i DJFODZʣ ΞϓϦ͕λοϓͨ࣌͠ʹϑϦʔζͨ͠ΓɺεΫϩʔϧ͕ΧΫπΫ ͱମݧͱͯ͠ྑ͘ͳ͍ ʲྑ͍ΞϓϦʳ
ىಈ͕͍ εϜʔζͳεΫϩʔϧ Ԡ͕͍ ΞϓϦαΠζ͕খ͍͞
ϞόΠϧΞϓϦͰಛతͳ੍ w σόΠεͷ੍ ը໘αΠζ04ޓੑͷ੍͕͋Γɺݻ༗ͷࣄଘࡏ
J1IPOF4& 9 1SP.BY FUD J1BE J1BE1SP J1BE"JS FUD
ϞόΠϧΞϓϦͰಛతͳ੍ w 04ͷ੍ 04ߋ৽ʹ͏༷มԽਪͱ͞ΕΔ࣮ɾମݧɾ6*͕มԽ 4JSJ͔Βͷݺͼग़͠ͳͲɺ04ͱͷ૬ޓ࡞༻ଘࡏ
04ߋ৽ʹ͏มԽͷྫ w J1BE04Ͱඪ४ͷλϒόʔҐஔ͕Լ͔Β্෦ϑϩʔςΟϯάʹ
04ߋ৽ʹ͏มԽͷྫ w J04Ͱେ͖ͳσβΠϯมߋʢ-JRVJE(MBTTʣ
ϞόΠϧΞϓϦͷ։ൃͰҙ͖ࣝ͢͜ͱ w 6*ͷෳࡶੑ 04όʔδϣϯʹΑͬͯมԽ͢Δ্ɺମݧઃܭ͕ඇৗʹॏཁ Ϩεϙϯγϒ6*ɺը໘ભҠઃܭɺΞχϝʔγϣϯɺFUD w 04ͱͷ૬ޓ࡞༻ 4JSJ͔Βͷݺͼग़͠ηϯαʔใͷऔಘͳͲɺը໘ͷߏஙʹཹ· Βͳ͍ମݧઃܭ͕ඞཁ
ෳࡶͳྖҬ 0OEFWJDFͷཁૉɾঢ়ଶཧ ϏδωεϩδοΫͷཧ ෳࡶ͞ͱͷ ઓ͍ํ $PNQPTBCMFͳ6*ઃܭɺ୯ํ σʔλϑϩʔɺ4405ɺFUD %%%ɺ5IF$MFBO "SDIJUFDUVSFɺFUD ϞόΠϧΞϓϦͱόοΫΤϯυͷҧ͍
.PCJMF"QQ #BDLFOE
ϞόΠϧΞϓϦͷઃܭݪଇ w ίϯϙʔωϯτࢦͱ$PNQPTBCMFͳ6*ઃܭ w ୯ํσʔλϑϩʔ w 4405ʢ4JOHMF4PVSDFPG5SVUIɺ৴པͰ͖Δ།Ұͷใݯʣ
ϞόΠϧΞϓϦͷઃܭݪଇ w ίϯϙʔωϯτࢦͱ$PNQPTBCMFͳ6*ઃܭ 6*Λখ͘͞࠶ར༻Մೳͳߏཁૉ $PNQPTBCMFDPNQPOFOU ʹ ׂ͠ɺͦΕΛ߹͢Δ͜ͱʹΑͬͯ6*Λߏங͢Δઃܭ )FMMP 8PSME
#VUUPO #VUUPO )FMMP 8PSME #VUUPO #VUUPO ߹ $PNQPTF
ϞόΠϧΞϓϦͷઃܭݪଇ w ୯ํσʔλϑϩʔ ঢ়ଶʹมԽΛҾ͖ى͜͢σʔλͷྲྀΕ͕୯ํͱͳΔΑ͏ʹ͢Δ ઃܭ 7JFX 4UBUF )PMEFS 7JFX
&WFOU "DDFQUPS %PNBJO -BZFS ΞʔΩςΫνϟʔͷྫ
ϞόΠϧΞϓϦͷઃܭݪଇ w 4405ʢ4JOHMF4PVSDFPG5SVUIɺ৴པͰ͖Δ།Ұͷใݯʣ มߋՄೳͳΞϓϦͷঢ়ଶɾσʔλΛৗʹ͔ॴʹ͚ͩଘࡏͤ͞ɺ ͦͷ།Ұͷใݯ͚ͩΛ৴པɾࢀর͢Δઃܭ 7JFX 4UBUF )PMEFS 7JFX
&WFOU "DDFQUPS %PNBJO -BZFS 4UBUF)PMEFSͷதʹ ৴པͰ͖Δঢ়ଶΛͭ ΞʔΩςΫνϟʔͷྫ
όοΫΤϯυͱڞ௨ͷઃܭࢦ w దͳ໋໊ɺίϝϯτ w ϚδοΫφϯόʔɺάϩʔόϧมɺྫ֎ѲΓͭͿ͠ͳͲͷΞϯν ύλʔϯճආ w ςετ༰қͳઃܭ
4XJGUಛ༗ͷ w 4XJGU㱠Ϋϥεத৺ͷݴޠ 4XJGUܕத৺ͷݴޠ w 4XJGU㱠ΦϒδΣΫτࢦʢ0CKFDUPSJFOUFEʣ 4XJGUϓϩτίϧࢦʢ1SPUPDPMPSJFOUFEʣ
Ϋϥεʢࢀরܕʣத৺ͷݴޠ w Ϋϥεʢࢀরܕʣத৺ͷݴޠͰɺDMBTTΛͬͯঢ়ଶΛཧ ೖʹΑͬͯՄมͳঢ়ଶ͕؆୯ʹڞ༗Ͱ͖ͯ͠·͏͕͋Δ class A { var x: Int
= 0 } var a1 = A() var a2 = a1 a1.x = 1 print(a2.x) // ग़ྗɿ1ʢa1ͱa2ͰՄมͳঢ়ଶ͕ڞ༗͞ΕΔɻ͙ͨΊʹޚతίϐʔ͕ඞཁʣ
4XJGUܕத৺ͷݴޠ w 4XJGUͰ௨ৗTUSVDUʢܕʣΛͬͯঢ়ଶΛཧ ೖͯ͠Մมͳঢ়ଶ͕ڞ༗͞Εͳ͍ struct A { var x: Int
= 0 } var a1 = A() var a2 = a1 a1.x = 1 print(a2.x) // ग़ྗɿ0ʢa1ͱa2ͰՄมͳঢ়ଶ͕ڞ༗͞Εͳ͍ɻޚతίϐʔͳͲෆཁʣ
4XJGUܕத৺ͷݴޠ w Ϋϥεத৺ɿDMBTTʹঢ়ଶΛ࣋ͨͤͯΧϓηϧԽɺϝοηʔδύογϯάͰॲཧ 4XJGUʢܕத৺ʣɿࢀরಁաੑͷ͋ΔؔͱΠϛϡʔλϒϧͳΛͬͯॲཧ struct A { var x: Int
= 0 } func createX2(_ a: A) -> Int { a.x * 2 } let a = A() let x2 = createX2(a) print(x2)
1SPUPDPMPSJFOUFE1SPHSBNNJOH w ܕʢTUSVDUʣͰܧঝΛ͑ͳ͍ͨΊɺΘΓʹQSPUPDPMΛ༻ protocol Animal { func foo() -> Int
} struct Cat: Animal { var value: UInt8 = 2 func foo() -> Int { Int(value) } } func useAnimal(_ animal: some Animal) { print(animal.foo()) // ۩ମతͳܕΛΘͣهड़Ͱ͖ΔɻSwiftUI.ViewͷbodyͰར༻͞Ε͍ͯΔ } useAnimal(Cat())
ࢀߟࢿྉ w "OESPJE ެࣜͷઃܭΨΠυɿIUUQTEFWFMPQFSBOESPJEDPNUPQJD BSDIJUFDUVSF OPXJOBOESPJEɿIUUQTHJUIVCDPNBOESPJEOPXJOBOESPJE w J04 "QQMFެࣜαϯϓϧूɿIUUQTEFWFMPQFSBQQMFDPN EPDVNFOUBUJPOTBNQMFDPEF
༗໊ͳBSDIJUFDUVSFMJCSBSZɿIUUQTHJUIVCDPNQPJOUGSFFDP TXJGUDPNQPTBCMFBSDIJUFDUVSF
J04ͷΞʔΩςΫνϟʔͷྺ࢙ w $PDPB.7$ .PEFM7JFX$POUSPMMFS ౷తͳ"QQMFͷ.7$ΞʔΩςΫνϟʔ IUUQTEFWFMPQFSBQQMFDPNMJCSBSZBSDIJWFEPDVNFOUBUJPO(FOFSBM$PODFQUVBM%FW1FEJB$PDPB$PSF.7$IUNM 7JFX .PEFM
7JFX $POUSPMMFS 6TFSૢ࡞ ඳըߋ৽ ௨ σʔλߋ৽
J04ͷΞʔΩςΫνϟʔͷྺ࢙ w $PDPB.7$ .PEFM7JFX$POUSPMMFS 7JFX$POUSPMMFSͷංେԽ͕՝ʹʢ'BU7JFX$POUSPMMFSʣ "OESPJEͰྨࣅͷͱͯ͠'BU"DUJWJUZ͕͋ͬͨ 7JFX .PEFM
7JFX $POUSPMMFS 6TFSૢ࡞ ඳըߋ৽ ௨ σʔλߋ৽
J04ͷΞʔΩςΫνϟʔͷྺ࢙ w .71 .PEFM7JFX1SFTFOUFS 4VQFSWJTJOH$POUSPMMFSͱ1BTTJWF7JFXͷύλʔϯ͕͋Δ J04Ͱ7JFX$POUSPMMFS7JFXʹؚΊͯߟ͑ͯɺ1SFTFOUFSʹ6* ϩδοΫΛஔ͘ߏ IUUQTNBSUJOGPXMFSDPNFBB%FW1BTTJWF4DSFFOIUNM
J04ͷΞʔΩςΫνϟʔͷྺ࢙ w .71 .PEFM7JFX1SFTFOUFS 1SFTFOUFS͕7JFX͔Β͞Εɺ୯ମςετՄೳͳঢ়ଶʹͳΔ 'BU7$ղফ͢Δ͕ɺ࣍1SFTFOUFSͷංେԽ͕ൃੜ 7JFX 7$
.PEFM 1SFTFOUFS 6TFSૢ࡞ ඳըߋ৽ IUUQTNBSUJOGPXMFSDPNFBB%FW1BTTJWF4DSFFOIUNM
J04ͷΞʔΩςΫνϟʔͷྺ࢙ w .77. .PEFM7JFX7JFX.PEFM .JDSPTPGUൃͰɺએݴత6*͕ྲྀߦΔલ·Ͱྲྀߦ͍ͬͯͨ "OESPJEͰެࣜͱͯ͠7.͕༻ҙ͞Ε͍ͯΔؔͰ"OESPJEͰ ඪ४తʹ࠾༻͞ΕɺͦͷྲྀΕͰJ04ʹ࠾༻͞ΕΔ͜ͱ͕ଟ͔ͬͨ ࠷ۙ͋·Γݟ͔͚ͳ͍ʢ"OESPJEެࣜͷઃܭΨΠυʹ.77. ͱهࡌ͞Ε͍ͯͳ͍ʣ
IUUQTMFBSONJDSPTPGUDPNKBKQBSDIJWFNTEONBHB[JOFGFCSVBSZQBUUFSOTXQGBQQTXJUIUIFNPEFMWJFXWJFXNPEFMEFTJHOQBUUFSO
J04ͷΞʔΩςΫνϟʔͷྺ࢙ w .77. .PEFM7JFX7JFX.PEFM EBUBCJOEJOHʹΑΓ7.ͱ7JFXͷ͕ؒૄ݁߹ʹͳΔͷ͕ಛ ͔͠͠σʔλͷϑϩʔ͕ํͰ͋Γɺঢ়ଶ͕มԽ͢ΔࡍͷྲྀΕ Λ͏ͷ͕͍͠ͱ͍͏͕͋ͬͨ 7JFX
7$ .PEFM 7JFX.PEFM %BUB#JOEJOH
J04ͷΞʔΩςΫνϟʔͷྺ࢙ w 'MVY GBDFCPPLൃͷ+4ͷϥΠϒϥϦͰɺ୯ํσʔλϑϩʔ͕ಛ J04Ͱ͜ͷઃܭΛࢀߟʹҰ෦ΞϓϦͰ࠾༻͞Ε͍ͯΔ 7JFX 7$ 6TFS *OUFSBDUJPOT
"DUJPO $SFBUPST "DUJPOT %JTQBUDIFS $IBOHF &WFOUT 4UPSF2VFSJFT $BMMCBDLT 4UPSF "1*
ͦͷଞͷJ04ΞʔΩςΫνϟʔ w 7*1&3 7JFX*OUFSBDUPS1SFTFOUFS&OUJUZ3PVUFS IUUQTXXXPCKDJPJTTVFTBSDIJUFDUVSFWJQFS ͍͔ͭ͘ஶ໊ͳΞϓϦͰ࠾༻͞ΕͯҰ෦ྲྀߦͬͨ w 3FEVY +4ͷϥΠϒϥϦ͕ͩɺJ04ͰҰ෦ಉ༷ͷΞʔΩςΫνϟʔͱ͠
ͯ࠾༻͞Εͨ
ͦͷଞͷJ04ΞʔΩςΫνϟʔ w "OESPJEެࣜઃܭΨΠυͷJ04ͷྲྀ༻ རɿυΩϡϝϯτ͕ॆ࣮͓ͯ͠Γֶशϋʔυϧ͕͍ རɿ"OESPJEͱͷઃܭࠩҟʹΑΔ༷ࠩͷൃੜϦεΫܰݮ w .7 .PEFM7JFX ΞʔΩςΫνϟʔ རɿ4XJGU6*ͷಛੑΛ׆͔ͨ͠γϯϓϧͳߏ
w 'MVY3FEVYΧελϚΠζɺܰྔ'MVY3FEVYʢTUPSFQBUUFSOͳͲʣ རɿ4405 ୯ํϑϩʔͷݪଇΛकΓͭͭݸผࣄʹԠͯ͡࠷దԽ
·ͱΊ w ΞϓϦͰαʔόʔͱҟͳΔ࣭ಛੑ͕ٻΊΒΕΔͨΊɺΞʔΩςΫ νϟʔͷબఆҟͳΔ w όοΫΤϯυͱҧ͏ΞϓϦͷઃܭࢦΛ֮͑Α͏ w ίϯϙʔωϯτࢦͱ$PNQPTBCMFͳ6*ઃܭ w ୯ํσʔλϑϩʔ
w 4405ʢ4JOHMF4PVSDFPG5SVUIɺ৴པͰ͖Δ།Ұͷใݯʣ w ಛʹJ04Ͱਖ਼ղ͓खຊͱͳΔΞʔΩςΫνϟʔͳ͍ͨΊɺΞϓϦͷ ༷ɾಛੑʹ߹Θͤͯઃܭ͠Α͏
"QQFOEJY
࣮ફฤͷ͕͔Γ w ίϯΣΠͷ๏ଇٯίϯΣΠͷ๏ଇ ΞʔΩςΫνϟʔͱ৫ߏີʹؔ ਓϝϯόʔͷಛੑʹΑͬͯ࠷దͳΞʔΩςΫνϟʔมԽ ྫ ՝ۚϞδϡʔϧΛϥΠϒϥϦʹΓग़ͯ͠՝ۚνʔϜΛ࡞Δ
࣮ફฤͷ͕͔Γ w 'FBUVSF fi STU-BZFS fi STUɺϚϧνϞδϡʔϧ୯ҰϞδϡʔϧ ϞόΠϧͰ'FBUVSF fi STUͰΔ͜ͱ͕ଟ͍
ػೳ͝ͱʹ4XJGU1BDLBHFʹΓग़ͨ͠ϚϧνϞδϡʔϧԽͳͲ ߦΘΕΔ͜ͱ͕͋Δ 4XJGU6*ʹґଘ͢ΔϞδϡʔϧͱͦΕҎ֎Ͱ͚ΔͳͲͷߏ ͋Δ
࣮ફฤͷ͕͔Γ w ϦΞΫςΟϒϓϩάϥϛϯάͱඇಉظॲཧ άϩʔόϧͳ4USFBNΛͲ͏ѻ͏͔ͳͲɺ৻ॏͳઃܭ͕ඞཁ ಛʹผͷػೳ͕ಉ͡σʔλΛࢀর͢Δ߹ͷ୯ํσʔλϑϩʔ ͱ4405ͷݪଇͷॱकΛઃܭͰ୲อ͢Δඞཁ͕͋Δ w ΞϓϦͷϥΠϑαΠΫϧ όοΫάϥϯυ࣌ͷॲཧɺ%FFQMJOLىಈ࣌ͷॲཧͳͲߟྀ͕ ඞཁ
࣮ફฤͷ͕͔Γ w ςελϏϦςΟʢݹయϩϯυϯֶʣ "OESPJEެࣜͷΨΠυͰϩϯυϯֶدΓͷΞʔΩςΫνϟʔ 4XJGUͰܕͱؔΛͬͯϞοΫͤͣʹৼΔ͍Λςετ͢Δ ݹయͷ࣮༰қ