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
haptaro
March 05, 2019
Programming
110
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
通信環境が不安定でも心地よい体験を
haptaro
March 05, 2019
More Decks by haptaro
See All by haptaro
アニメーション実践入門
kotaro
3
630
iOSアプリ開発にもDIツールを!
kotaro
5
1.4k
はじめてのRxSwift体験記
kotaro
3
650
Swiftで気持ち良く開発したアプリを気持ち良くSubmitする
kotaro
0
7.3k
Other Decks in Programming
See All in Programming
3Dシーンの圧縮
fadis
1
770
作って学ぶ、 JSX (TSX) ランタイムの基本
syumai
7
1.6k
脅威をエンジニアリングの糧にして――現場編 / Turning Threats into Engineering Fuel — Field Edition
nrslib
0
280
ADKを使って簡単にAIエージェントを作ってみよう
k1mu21
0
260
エンジニアと一緒にテストコードの設計と実装を改善した話
mototakatsu
0
170
スマートグラスで並列バイブコーディング
hyshu
0
140
タクシーアプリ『GO』の バックエンド開発のおける AI利活用と若者のすべて
pyama86
3
2k
LLM本来の能力を解き放つサンドボックス技術とAI民主化への適用
yukukotani
3
3.9k
A2UI という光を覗いてみる
satohjohn
1
130
OSもどきOS
arkw
0
560
AI時代のUIはどこへ行く?その2!
yusukebe
21
7.2k
生成AI時代にこそ効くGo | Why Go Works in the Age of Generative AI
mom0tomo
8
3.2k
Featured
See All Featured
Chasing Engaging Ingredients in Design
codingconduct
0
220
The Limits of Empathy - UXLibs8
cassininazir
1
360
Building Applications with DynamoDB
mza
96
7.1k
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.1k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
220
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
It's Worth the Effort
3n
188
29k
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
130
So, you think you're a good person
axbom
PRO
2
2.1k
Fashionably flexible responsive web design (full day workshop)
malarkey
408
66k
RailsConf 2023
tenderlove
30
1.5k
How to build a perfect <img>
jonoalderson
1
5.6k
Transcript
௨৴ڥ͕ෆ҆ఆͰ৺Α͍ମݧΛ! 2019/03/05 Mobile Engineer Meetup @Sansan #33tech
ඌ ଠ - Sansanגࣜձࣾ - Eightࣄۀ෦ - iOSΞϓϦΤϯδχΞ 2 @haptaro
ΞδΣϯμ - Πϯυͷ௨৴ڥ - ௨৴ମݧΛྑ͘͢Δ3ͭͷํ๏ - ௨৴ͷσόοάํ๏ - ·ͱΊ 3
None
Πϯυʹߦ͖ͬͯ·ͨ͠!
None
None
None
None
None
None
ߤత - ௨৴पΓͷ՝ͷચ͍ग़͠ͱͦͷղܾࡦͷఏҊ - ݱiOSΞϓϦΤϯδχΞͷ࠾༻ - ݱͷڠྗձࣾ͞ΜͱͷກΠϯυͷจԽΛΔ͜ͱ 12
ߤత - ௨৴पΓͷ՝ͷચ͍ग़͠ͱͦͷղܾࡦͷఏҊ - ݱiOSΞϓϦΤϯδχΞͷ࠾༻ - ݱͷڠྗձࣾ͞ΜͱͷກΠϯυͷจԽΛΔ͜ͱ 13
Πϯυͷ௨৴ڥ - ճઢ ेkbps ʙ Mbps (ݱSIM Jio) - ճઢ͕ྑ͍ͱ͜ΖͰɺຊͱ΄΅ಉ͘͡͠ϫϯςϯϙ͍͔ͳ
͙Β͍ - ͨͩٸʹ͘ͳͬͨΓɺશ͘ి͕ೖΒͳ͘ͳͬͨΓ͢Δεϙοτ͕͋Δ 14 ※͋͘·ͰMumbaiʙPuneपลɻSIMʹΑͬͯࠩ͋Γɻ
௨৴ڥ͕ѱ͍߹ͷ͜ͱ ͪΌΜͱߟ͑ΒΕ͍ͯ·͔͢ʁ
ׂͱ௨৴ڥ͕ྑ͍ࠃͰɺ ҠಈதɺϏϧͷԼɺΤϨϕʔλͷதɺԼమͳͲ ௨৴͕ෆ҆ఆʹͳΔγνϡΤʔγϣϯଘࡏ͢Δ
None
௨৴ͷνϡʔχϯάํ๏ 18 αʔόͷϨεϙϯεߴԽɺ௨৴ͷฒྻԽɺը૾ϑΥʔϚοτͷมߋɺ௨৴ ϑΥʔϚοτͷมߋɺAPIΛୟ͘ॴΛม͑Δetc
௨৴ͷνϡʔχϯάํ๏ 19 αʔόͷϨεϙϯεߴԽɺ௨৴ͷฒྻԽɺը૾ϑΥʔϚοτͷมߋɺ௨৴ ϑΥʔϚοτͷมߋɺAPIΛୟ͘ॴΛม͑Δetc ͪΖΜ௨৴ࣗମͷνϡʔχϯάେʂ
ͦΕΑΓ·ͣجຊతͳ͜ͱΛஸೡʹΔ ඞཁ͕͋Δ͜ͱʹؾ͕͍ͭͨ
ࠓճ௨৴ڥ͕ෆ҆ఆͰ Ϣʔβ͕৺Α͑͘ΔΑ͏ʹ͢ΔͨΊͷ جຊͷ͓Λ͠·͢
࣮ࡍʹEightʹ͋ͬͨ - ௨৴த௨৴ʹࣦഊͯ͠͠·͏ͱਅͬനʹ͍ۙ൵͍͠ը໘͕ͱ͜ΖͲ͜Ζ ʹ͋ͬͨ - ௨৴தʹϩʔσΟϯάදݱ͕ͳ͍͜ͱͰɺࠓΞϓϦ͕ԿΛ͍ͯ͠Δͷ͔Θ͔ Βͳ͍ɻ௨৴Ͱ͖͍ͯͳ͍ͷ͔ɺࣦഊ͍ͯ͠Δͷ͔ɺͨͩಡΈࠐΈ͕͍ ͚ͩͳͷ͔ - ը໘Λ෴͏Α͏ͳϩʔσΟϯάʹΑΓɺ௨৴தϢʔβ͕શ͘ૢ࡞Ͱ͖ͳ͍
22
࣮ࡍʹEightʹ͋ͬͨ - ௨৴த௨৴ʹࣦഊͯ͠͠·͏ͱਅͬനʹ͍ۙ൵͍͠ը໘͕ͱ͜ΖͲ͜Ζ ʹ͋ͬͨ - ௨৴தʹϩʔσΟϯάදݱ͕ͳ͍͜ͱͰɺࠓΞϓϦ͕ԿΛ͍ͯ͠Δͷ͔Θ͔ Βͳ͍ɻ௨৴Ͱ͖͍ͯͳ͍ͷ͔ɺࣦഊ͍ͯ͠Δͷ͔ɺͨͩಡΈࠐΈ͕͍ ͚ͩͳͷ͔ - ը໘Λ෴͏Α͏ͳϩʔσΟϯάʹΑΓɺ௨৴தϢʔβ͕શ͘ૢ࡞Ͱ͖ͳ͍
23 Ωϟογϡ
࣮ࡍʹEightʹ͋ͬͨ - ௨৴த௨৴ʹࣦഊͯ͠͠·͏ͱਅͬനʹ͍ۙ൵͍͠ը໘͕ͱ͜ΖͲ͜Ζ ʹ͋ͬͨ - ௨৴தʹϩʔσΟϯάදݱ͕ͳ͍͜ͱͰɺࠓΞϓϦ͕ԿΛ͍ͯ͠Δͷ͔Θ͔ Βͳ͍ɻ௨৴Ͱ͖͍ͯͳ͍ͷ͔ɺࣦഊ͍ͯ͠Δͷ͔ɺͨͩಡΈࠐΈ͕͍ ͚ͩͳͷ͔ - ը໘Λ෴͏Α͏ͳϩʔσΟϯάʹΑΓɺ௨৴தϢʔβ͕શ͘ૢ࡞Ͱ͖ͳ͍
24 Ωϟογϡ ϢʔβͷదͳϑΟʔυόοΫ
࣮ࡍʹEightʹ͋ͬͨ - ௨৴த௨৴ʹࣦഊͯ͠͠·͏ͱਅͬനʹ͍ۙ൵͍͠ը໘͕ͱ͜ΖͲ͜Ζ ʹ͋ͬͨ - ௨৴தʹϩʔσΟϯάදݱ͕ͳ͍͜ͱͰɺࠓΞϓϦ͕ԿΛ͍ͯ͠Δͷ͔Θ͔ Βͳ͍ɻ௨৴Ͱ͖͍ͯͳ͍ͷ͔ɺࣦഊ͍ͯ͠Δͷ͔ɺͨͩಡΈࠐΈ͕͍ ͚ͩͳͷ͔ - ը໘Λ෴͏Α͏ͳϩʔσΟϯάʹΑΓɺ௨৴தϢʔβ͕શ͘ૢ࡞Ͱ͖ͳ͍
25 Ωϟογϡ ϢʔβͷదͳϑΟʔυόοΫ όοΫάϥϯυ௨৴
Ωϟογϡ
ΩϟογϡͷϝϦοτ - ௨৴ͤͣͱσʔλʹΞΫηεͰ͖Δ - ॏ͍σʔλ1ճऔಘ͢Ε͑Δ - ϩʔΧϧʹσʔλ͕͋ΔͷͰߴͰΞΫηεͰ͖Δ 27
ΩϟογϡͷσϝϦοτ - ࠷ॳͷ1ճ௨৴͠ͳ͍ͱ͍͚ͳ͍ - ࠷৽ͷσʔλͰͳ͍Մೳੑ͕͋Δ - ͷ༰ྔ͕૿͑Δ - ҙਤ͠ͳ͍σʔλ͕ݟ͑ͯ͠·͏Մೳੑ͕͋Δ (ΞΧϯτͷΓସ͕͑͋ΔαʔϏε߹)
28
ൺֱ (Eightͷϝοηʔδৄࡉը໘) 29
࠷৽Ͱͳ͙ͯ͘͢ʹσʔλ͕ ݟΕΔ΄͏͕ମݧͱͯ͠ྑ͍ɻ ※ͪΖΜαʔϏεಛੑʹΑΓ·͢
ϢʔβͷదͳϑΟʔυόοΫ
“Feedback helps people know what an app is doing, discover
what they can do next, and understand the results of actions.” Human Interface Guidelines
௨৴ͷϑΟʔυόοΫ - ϩʔσΟϯά - Τϥʔ 33
ϩʔσΟϯά - ௨৴ڥ͕ѱ͍ͱ͜ΖͰɺίϯςϯπ͕ॠ࣌ʹදࣔ͞ΕͣɺϩʔσΟϯά දݱ͕ͳ͍ͱਅͬന͍ը໘·ͨίϯςϯπ͕ଘࡏ͠ͳ͍ۭനදݱʹͳͬ ͯ͠·͏ - Instagram, Facebook, Twitter, AppleͳͲͷΞϓϦΛݟΔͱϩʔσΟϯάදݱ
Activity IndicatorΛग़͍ͯ͠Δ - ը૾ͷϩʔσΟϯάʹؔͯ͠Progressive JPEGͷΑ͏ͳදݱͦͷը૾ ͷதͰҰ൪ଟ͘ΘΕ͍ͯΔ৭ͷը૾ΛҰ୴ද͓ࣔͯ͘͠ͷྑͦ͞͏ 34
Instagram Facebook Twitter Apple
Τϥʔ - ى͖͍ͯΔ͜ͱΛਖ਼֬ʹ͑ɺ࣍ʹͲ͏͢Εྑ͍͔͑Δ - APIͷϨεϙϯεͰΤϥʔͷछผ͝ͱʹఆٛ͠HTTPεςʔλείʔυͰద ʹϋϯυϦϯάͯ͠Ϣʔβʹ͑Δ - APIΛୟ͘લʹ௨৴͕Ͱ͖ͳ͍ঢ়گʹ͋ΔͳΒͦͷ͜ͱΛϢʔβʹ͑Δ - ʮΤϥʔʯɺʮ௨৴Τϥʔʯɺʮ௨৴ࣦഊʯΈ͍ͨͳͷ͚ͩઈର
36
37 ReachabilityͰ௨৴ڥ͕ͳ͚ΕguardͰૣظExit https://github.com/tonymillion/Reachability HTTPϨεϙϯεͷεςʔλείʔυΛݟͯదʹϋϯυϦϯά
None
Կ͕ى͖͍ͯͯɺ࣍ԿΛ͢ΕΑ͍͔Θ͔Δ
దͳϑΟʔυόοΫ͕ Ϣʔβମݧͷ্ʹͭͳ͕Δɻ ※1ͭલͷΞϥʔτ Ͱ͕͢ɻ
όοΫάϥϯυ௨৴
None
όοΫάϥϯυ௨৴ͷϝϦοτ - ෳຕͷը૾ϑΝΠϧಈըϑΝΠϧͳͲͷ௨৴ʹ͕͔͔࣌ؒΔͷͰཪ ଆͰ௨৴͢Δ͜ͱͰϢʔβͷૢ࡞ΛϒϩοΫ͠ͳ͍ - લͬͯཪଆͰ௨৴ͯ͠σʔλΛऔಘ͓ͯ͘͜͠ͱ(ϓϦϑΣον)Ͱɺ͍ ͍ͨͱ͖ʹ͙͢͏͜ͱ͕Ͱ͖Δ 43
όοΫάϥϯυ௨৴ͷσϝϦοτ - ௨৴தͷঢ়ଶɺޭ / ࣦഊΛૢ࡞தͷϢʔβʹ͑ͳ͚Ε͍͚ͳ͍ - ॲཧͷ҆શ໘ͷ߹ɺ௨৴͕ऴΘΒͳ͍ͱ࣍ͷը໘ਐΊͳ͍Α͏ͳը ໘Ͱ͑ͳ͍ - ෳͷ௨৴(ྻɺฒྻ)ɺ༏ઌॱҐɺґଘؔɺϦτϥΠػೳ(खಈɺࣗಈ)
Λߟ͑࢝ΊΔͱॲཧ͕ෳࡶʹͳͬͯ͠·͏ 44
InstagramɺSlackɺFacebookɺApple͋ͨΓͲ͜ όοΫάϥϯυͰ௨৴͠ɺϢʔβͷૢ࡞ΛϒϩοΫ͍ͯ͠ͳ͍
iCloud(Apple) Slack
Instagram Facebook
όοΫάϥϯυ௨৴ QueueͷΑ͏ͳΈ͕͋Ε࣮ݱͰ͖ͦ͏
Operation / OperationQueue - FoundationϑϨʔϜϫʔΫʹؚ·ΕΔ - Operation: ॲཧͷ͔ͨ·Γ - OperationQueue:
OperationΦϒδΣΫτͷΩϡʔɻฒྻॲཧɺඇฒྻॲཧ Λఏڙ͢Δ - OperationOperation Queueʹ༏ઌґଘؔΛ͚ͭΔ͜ͱՄೳ 49
- Operation / OperationQueueΛͬͯಠࣗͰ࣮ - Operation / OperationQueueͷWrapperϥΠϒϥϦΛ͏ 50
- SwiftQueue https://github.com/lucas34/SwiftQueue - ProducerKit https://github.com/ProcedureKit/ProcedureKit - Queuer https://github.com/FabrizioBrancati/Queuer -
PSOperations https://github.com/pluralsight/PSOperations 51 WrapperϥΠϒϥϦ
ཪଆͰ௨৴͢Δ͜ͱͰϢʔβͷૢ࡞Λ͛ͳ͍ɻ
௨৴ͷσόοάํ๏
Network Link ConditionerͰϥϑʹ࣮ػσόοά 54
CharlesͰৄࡉ·Ͱσόοά - ௨৴ͷϦΫΤετϨεϙϯεΛݟ͍ͨ - ಛఆͷ௨ͷΈΛࣦഊ͍ͤͨ͞ 55 Charles: https://www.charlesproxy.com/
·ͱΊ - ΩϟογϡΛੵۃతʹදࣔ - దͳදݱͰϢʔβʹϑΟʔυόοΫ - ॏ͍ॲཧόοΫάϥϯυͰ௨৴͢Δ 56
௨৴ڥ͕ෆ҆ఆͰࡉ෦·ͰؾΛͬͯ ৺Α͍ମݧΛಧ͚Α͏ʂ
Your business network
ࢀߟࢿྉ - ΠϯυͷΠϯλʔωοτڥͱͷઓ͍ํ https://www.slideshare.net/kenichitatsuhama/ss-112660510 - ΠϯυͷͳωοτϫʔΫڥͷ߈ུ๏ https://www.slideshare.net/kenichitatsuhama/ss-103588833 - Sansan Builders
Box (ฐࣾϒϩά) https://buildersbox.corp-sansan.com/entry/2019/02/27/165648 - Πϯλʔωοτճઢͷςετ Fast.com https://fast.com/ja/ - Feedback - User Interaction - iOS Human Interface Guidelines https://developer.apple.com/design/human-interface-guidelines/ios/user-interaction/feedback/ 59