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
セキュリティの専門家じゃなくてもできる。「セキュリティ意識」をアップデートして サプライチェーン攻撃への耐性を高めよう。
tk3fftk
5
760
タクシーアプリ『GO』の バックエンド開発のおける AI利活用と若者のすべて
pyama86
3
2k
AI時代のUIはどこへ行く?その2!
yusukebe
21
7.1k
技術記事、AIに書かせるか、自分で書くか? 〜それでも私が自分の手で書く理由〜 / #QiitaConference
jnchito
2
1.4k
JavaDoc 再入門
nagise
1
340
ローカルLLMでどこまでコードが書けるか -拡張版 / How much code can be written on a local LLM Extended
kishida
11
4.1k
気づいたらRubyで100作品 ー クリエイティブコーディングが生活の一部になるまで / 100 Ruby Sketches Later: How Creative Coding Became Part of My Life
chobishiba
3
570
Spec Driven Development | AI Summit Lisbon
danielsogl
PRO
0
190
例外の正しい扱い方 そのエラー try-catchして大丈夫?
jinwatanabe
0
230
Language Server 使ってる? 〜VSCode と Zed の場合〜 / Are you using a Language Server? ~For VS Code and Zed~
handlename
0
780
TSKaigi Night Talks 2026_TypeScriptでサプライチェーンの整合性を型に閉じ込める
geekplus_tech
0
350
エンジニアと一緒にテストコードの設計と実装を改善した話
mototakatsu
0
170
Featured
See All Featured
The agentic SEO stack - context over prompts
schlessera
0
820
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
140
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
230
Optimising Largest Contentful Paint
csswizardry
37
3.7k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
330
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
140
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.5k
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
780
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.4k
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.1k
New Earth Scene 8
popppiees
3
2.3k
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