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
15分でわかる バックグラウンドアップロード
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
yimajo
September 17, 2017
Technology
2.9k
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
15分でわかる バックグラウンドアップロード
iosdc2017 の発表資料です
yimajo
September 17, 2017
More Decks by yimajo
See All by yimajo
OSSとなったswift-buildで Xcodeのビルドを差し替えられるため 自分でXcodeを直せる時代になっている ダイアモンド問題編
yimajo
3
870
いま中途半端なSwift 6対応をするより、Default ActorやApproachable Concurrencyを有効にしてからでいいんじゃない?
yimajo
2
680
11年かかって やっとVibe Codingに 時代が追いつきましたね
yimajo
1
380
iOSアプリ開発で 関数型プログラミングを実現する The Composable Architectureの紹介
yimajo
3
320
良いテストコードのために悪いテストコードを理解する - 不安定なテスト編: iOSアプリ開発ユニットテストの場合
yimajo
22
6.7k
TCAの Shared Stateって どういう仕組みになってんの?
yimajo
0
2.6k
Swift 5.9 からの Observation はiOS17 未満 からも使えて struct の変更検知もできるんすかね?
yimajo
2
1.2k
不安定なテストは200種類あんねん
yimajo
3
1.2k
TCA v0.19.0からのSwitchStore/CaseLetが良い
yimajo
0
2k
Other Decks in Technology
See All in Technology
AIエージェントが名古屋の猛暑からあなたを守る
happysamurai294
0
130
SONiCのLinuxベースを活かしたZabbix監視
sonic
0
190
新しいUbuntu/GNOMEが使いたいからXからWaylandへ移行頑張ってるの巻 2026-06-20
nobutomurata
0
140
エンジニアリング戦略の作り方 / Crafting Engineering Strategy
iwashi86
21
7k
Oracle AI Database@AWS:サービス概要のご紹介
oracle4engineer
PRO
4
3k
入門!AWS Blocks
ysuzuki
1
140
非エンジニアがClaudeと挑んだ「1ヶ月間プロダクト30本ノック」
askokc
0
600
やさしいA2A入門
minorun365
PRO
12
1.9k
【Cyber-sec+】経営層を"動かす"ための考え方
hssh2_bin
0
190
SONiCの統計情報を取得したい
sonic
0
190
SONiC Scale-Up Working Group から探る Scale-UpやUltraEthernet機能の実装方法
ebiken
PRO
2
360
SONiCで構築・運用する生成AI向けパブリッククラウドネットワーク ~実装編~
sonic
0
240
Featured
See All Featured
The untapped power of vector embeddings
frankvandijk
2
1.8k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6k
Deep Space Network (abreviated)
tonyrice
0
170
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
2.9k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.7k
So, you think you're a good person
axbom
PRO
2
2.1k
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.2k
Building AI with AI
inesmontani
PRO
1
1.1k
Chasing Engaging Ingredients in Design
codingconduct
0
220
Statistics for Hackers
jakevdp
799
230k
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.6k
Transcript
ͰΘ͔Δ όοΫάϥϯυΞοϓϩʔυ גࣜձࣾΩϡϦΦγςΟιϑτΣΞ J04%$D !ZJNBKP ࠓળۣ ձૣҴాେֶཧֶ෦ૣҴాΩϟϯύε߸ؗձٞࣨ
ෳ͋Δηογϣϯͷத͔ΒબΜͰ͖ ͋Γ͕ͱ͏͍͟͝·͢
wࢿྉޙ΄ͲΣϒ্ʹެ։ͯ͠ϋογϡλάΛ͚ͯπΠʔτΛ ͠·͢!ZJNBKPJPTEDD wࢿྉͷࡱӨࣗ༝Ͱ͕͢ɺը͞Ε͍ͯΔͣͳͷͰ:PV5VCFͰݟ ฦͤΔͣͰ͢ wฏຌͳൃදͳͷͰؾܰʹฉ͍͍ͯͩ͘͞
ͳͥࠓճόοΫάϥϯυͰͷ Ξοϓϩʔυʹ͍ͭͯ ͢ͷ͔ ❓
υΩϡϝϯτ͕গͳ͍
αϯϓϧίʔυ͔ͳΓগͳ͍
όοΫάϥϯυ࣌ͷ ಈ࡞͕σόοάͮ͠Β͍
͜ͷൃදͰʜ
όοΫάϥϯυࣗ ମͷ͓͞Β͍͠·͢
༷ͷ͔ΓͮΒ ͍Λղઆ͠·͢
σόοάʹඞਢͳπʔ ϧΛհ͠·͢
͡ΊͯͰ ࠷Ͱ҆શͳํ๏͕Θ͔Δͱࢥ ͍·͢
͋ΒͨΊ͓ͯ͠ͳ͕͖ w ࣗݾհ w όοΫάϥϯυΞοϓϩʔυͬͯԿʁ w ϓϩδΣΫτͷಋೖͱ։ൃཱͪπʔϧ
ࣗݾհ
͋ΒͨΊͯࣗݾհ wגࣜձࣾΩϡϦΦγςΟιϑτΣΞ wϒʔεεϙϯαʔ w!ZJNBKPʢࠓળۣʣ wJ04͘Β͍͔ΒΞϓϦ͘Β͍
༨ஊΛ͠·͢
͜ͷ෦ೖޱͷઆ໌ ಡΜͩਓ͍·͢ʁ ʮ͜ͷ෦ૣҴాཧֶ෦ͷઃऀɺ ໌ଠه೦ձٞࣨͰ͢ʯ ʢ࣮෦͝ͱʹ໊લ͕͋Γ·͢ʣ
͜ͷձೖޱͷ૾ˠ ໌ଠʢ͚ͨ͏ͪ Ί͍ͨΖ͏ɺ ҆72݄28ʮ18603݄20ʯ ੜ·Ε — ত3ʮ1928ʯ3݄23ʣɺ ݱࡏͷߴݝ ॓ໟࢢग़ͷ໌࣏ɾେਖ਼ظͷ ࣮ۀՈɾऺٞӃٞһɻ ૣҴాେֶཧֶ෦ઃཱऀɻ
ࠓճͷൃදऀˠ @yimajoʢ͍·͡ΐ͏Α͠ͷΓɺ 1981ੜ·Εʣɺ ݱࡏͷߴݝ࢛ສेࢢग़ɻ தֶ࣌΄΅डݧษڧΛ͠ͳ͔ͬͨͨΊ ࣗۙ͘ͷਐֶߍʹਐ·ͣɺ ߴݝ॓ໟߴߍʹਐֶɺ ϒʔεεϙϯαʔ݉εϐʔΧʔ
͕͢͞ӡӦɺΘ͔ͬͯ·͢Ͷ
ӡӦ ʮͨͩͷۮવͰ͢ʯ
ຊ
ͦͦ όοΫάϥϯυΞοϓϩʔυ ͬͯԿʁ
w J04Ҏ߱ͷόοΫάϥϯυΞοϓϩʔυॲཧ w #BDLHSPVOE5SBOTGFS4FSWJDF༻ͷ"1*ͱͯ͠/463-4FTTJPO ͰॲཧΛ࣮Ͱ͖·͢
Ͳ͏͍͏ͱ͖͏ w ଞͷΞϓϦΛ͍ͬͯΔؒࣗͷΞϓϦͰൺֱతେ͖ͳϑΝΠϧ ΛΞοϓϩʔυͰ͖Δ w 4IBSF&YUFOTJPOͰJ04ඪ४ͷࣸਅBQQͳͲଞΞϓϦ͔Βίϯςϯ πΛબΜͰαʔόʔʹΞοϓϩʔυ͢Δࡍʹར༻͢Δͱศར
͔͠͠ ࠷ॳʹݴ͓ͬͯ͘ͱ
บ͕ڧ͍
৭ʑͬͯͳ͍ͱ
ѻ͍ͮΒ͍
όοΫάϥϯυͬͯԿʁ w ΞϓϦ͕ϑΥΞάϥϯυͰͳ͍ͱ͖Ͱ ಈ࡞Ͱ͖Δ w ϑΥΞάϥϯυͰͳ͍ͱݴͬͯɺ 4VTQFOEFEͱ͍͏ঢ়ଶ/PU3VOOJOHͱ ͍͏ঢ়ଶଘࡏͦ͠ͷঢ়ଶಈ࡞͠·ͤΜ w 4VTQFOEFE#BDLHSPVOEͱߦ͖དྷ͠·
͢
όοΫάϥϯυ௨৴ॲཧ ʹؔ͢Δྺ࢙ͷ͓͞Β͍ ݹ͔͘Β͋ΔJ04࣌ͱJ04͔Βͷҧ͍
J04͔࣌ΒͷόοΫάϥϯυ ॲཧԆ w ༗ݶͳλεΫͷԆॲཧʢ&YFDVUJOH'OJUF-FOHUI5BTLTʣ ͱ͍͏ͷ͕͋Γ͜ͷॲཧόοΫάϥϯυঢ়ଶͰॲཧΛߦ͏ w ௨৴͠Α͏ͱࢥ͑Ͱ͖Δ
88%$ ʢJ04Ќൃද࣌ʣ ͷਤΛݟͯΈΔ
J04͔ΒJ04ͷόοΫάϥϯυ࣮ߦ 88%$8IBUTOFXNVMUJUBTLJOHΑΓ όοΫάϥϯυͰλεΫͷ ॲཧԆ࿈ଓ͍ͯͨ͠ ը໘ΛϩοΫͯ͠ J1IPOFΛεϦʔϓ͍ͯ͠ͳ͔ͬͨ όοςϦʔෛՙ͕ߴ͔ͬͨ
J04Ҏ߱ͷόοΫάϥϯυ࣮ߦ 88%$8IBUTOFXNVMUJUBTLJOHΑΓ όοΫάϥϯυͰλεΫͷ ॲཧԆඈͼඈͼʹͳΔ ը໘ΛϩοΫ͢Δͱ J1IPOF4MFFQ͢Δ
J04ͷ࣌ܥྻͰݟΔόοΫάϥϯυ௨৴ J04 J04 ʮ༗ݶλεΫͷॲཧԆʯͰ ͚ͩಈ࡞Մೳ ʮ༗ݶλεΫͷॲཧԆʯͰ ͚ͩಈ࡞Մೳ #BDLHSPVOE5SBOTGFS 4FSWJDF
͜͜·Ͱͷ·ͱΊ w J04͔ΒJ04ؒॲཧԆͰ͖ʹͰ͖ͨ w σόΠεͷෛՙ͕ܹ͍͠ w J04Ҏ߱ॲཧԆΛʹ͘͠ݸผʹઐ༻ͷ"1*Λ ͏Α͏ʹͳͬͨ
όοΫάϥϯυΞοϓ ϩʔυͷ༷ʹ͍ͭͯ
؆୯ͳಛ w ΞοϓϩʔυJ04্ͷΩϡʔʹੵ·Ε੍ޚ͞ΕΔ w ύϑΥʔϚϯε࠷దԽͷͨΊʹγεςϜͷ࠷ྑͰ εέδϡʔϦϯά͞ΕΔ w ࣦഊͨ͠ΒࣗಈϦτϥΠ͞ΕΔ
"QQMF͕ఏ͍ࣔͯ͠ΔόοΫά ϥϯυ௨৴ͷ੍ʹ͍ͭͯ
w /463-4FTTJPOΫϩʔδϟͰͳ͘EFMFHBUFΛ ͏ w Ξοϓϩʔυ͢ΔϑΝΠϧ%BUBΫϥε͔ΒϑΝ Πϧͱͯ͠ग़ྗͯ͠ύεΛ͢ w όοΫάϥϯυ༻ʹͳΔ͘ϢχʔΫͳ*%Λ࡞ ͢Δ ੍
ͳ͔ͥ
ΞϓϦ J04 EFMFHBUFͱͯ͠Πϯελϯε͢ EFMFHBUFͷϝιουݺͼग़͠ σʔϞϯϓϩηε Ξοϓϩʔυ͢ΔϑΝΠϧ w ΞϓϦ͕όοΫάϥϯυͷঢ়ଶͰ Ξοϓϩʔυ͢ΔͨΊɺJ04σʔϞϯ ϓϩηεʹ௨৴ΛͤΔ
ࢀߟ<ॻ੶>্Λࢦ͢ϓϩάϥϚʔͷͨΊͷJ1IPOFΞϓϦ։ൃςΫχοΫJ04ฤ w σʔϞϯϑΝΠϧύεʹΞΫηε ͦ͠ͷϑΝΠϧΛΞοϓϩʔυ͢Δ w ྃ௨σʔϞϯ͕EFMFHBUFϝ ιουΛݺͼग़͢
w ͓ͦΒ͘ɺJ04ͷϓϩηε͕௨৴Λࣝผ͢ΔͨΊ w ͦͷͨΊɺಉ͡*%Λෳಉ࣌ʹͬͯ௨৴͍͚ͯ͠ͳ͍ w ௨৴͕ऴΘ͔ͬͯΒͦͷ*%Λ͍·Θ͢ͷͳ͍ ʢͱࢥ͏ʣ όοΫάϥϯυ*%ΛҰҙʹ ܾΊΔඞཁ͕͋Δཧ༝
ϓϩδΣΫτͷಋೖ
·ͣ͡Ίʹ όοΫάϥϯυͷίʔυྫ
ओཁͳΫϥεͱEFMFHBUF w 63-3FRVFTU w 63-4FTTJPO w 63-4FTTJPO%FMFHBUF w 63-4FTTJPO$POpHVSBUJPO w
63-4FTTJPO5BTL w 63-4FTTJPO%FMFHBUF
/// - Parameter: /// - fileURL: Ξοϓϩʔυ͢ΔσʔλΛϩʔΧϧͰϑΝΠϧԽͨ͠URL /// - identifier:
ϢχʔΫͳID func upload(fileURL: URL, identifier: String) { let config = URLSessionConfiguration.background(withIdentifier: identifier) let session = URLSession(configuration: config, delegate: self, delegateQueue: nil) let request = makeRequest(with: fileURL) let task = session.uploadTask(with: request, fromFile: fileURL) task.resume() } // 1: URLSessionConfigurationΛ࡞ // 2: URLSessionΛ࡞ // 3: URLRequestΛ࡞(ϦΫΤετύϥϝʔλΛΈཱͯΔͨΊϚϧνύʔτͳURLRequestΛ࡞ͬͯฦ͢) // 4: URLSession͔ΒUploadTaskΛऔΓग़͢ʢΞοϓϩʔυ͢ΔϑΝΠϧͷॴ͕ඞཁʣ Ξοϓϩʔυͷखଓ͖
/// Ξοϓϩʔυਐḿ࣌ʹݺͼग़͞ΕΔ func urlSession(_ session: URLSession, task: URLSessionTask, didSendBodyData bytesSent:
Int64, totalBytesSent: Int64, totalBytesExpectedToSend: Int64) { /// ΞοϓϩʔυࡁΈͷbyteͰਐḿΛͱΔ… /// task͔ΒΩϟϯηϧͰ͖Δ… } /// Ξοϓϩʔυྃ࣌ʹݺͼग़͞ΕΔ func urlSession(_ session: URLSession, task: URLSessionTask, didCompleteWithError error: Error?) { /// task͔ΒεςʔλείʔυΛऔΓग़ͨ͠Γ… /// ྃॲཧ… } ݺͼग़͞ΕΔ%FMFHBUF
͜ΕͰόοΫάϥϯυͰ ΞοϓϩʔυͰ͖·͢
"QQMFͷαϯϓϧίʔυ w /463-4FTTJPOͰ#BDLHSPVOE5SBOTGFSʹΑ Δμϯϩʔυ w ը૾Λμϯϩʔυ͢ΔͷΈ w ͜ΕΛΞοϓϩʔυʹ࣮Λม͑ಈ࡞Λ֬ೝ͢ Δ w
௨৴ϥΠϒϥϦʹཔΒͳ͍΄͏͕ޙʑॿ͔Δʢޙ ड़ʣ 4JNQMF#BDLHSPVOE5SBOTGFS
ʹཱͭπʔϧ w /FUXPSL-JOL$POEJUJPOFSʢ௨৴ঢ়گΛѱ͘ग़དྷ Δʣ w $IBSMFTʢ1SPYZπʔϧʣ w 4XJGUZCFBWFSʢϩάϥΠϒϥϦʣ
w .BDʹΠϯετʔϧ͢ΔϓϩΩγαʔόʔ $IBSMFT w J1IPOFͱಉ͡8J'JͷNBDʹೖΕΔ w 8FC"1*ͷϦΫΤετΛΤϯυϙΠϯτͰ USFFදࣔͯ͘͠ΕΔ w ϦΫΤετ͕࣌ؒΔͷͰαʔόʔଆʹ
͍߹ΘͤΔࡍʹҰؾʹָʹͳͬͨ w D63-ίϚϯυΛੜͰ͖Δ
w αʔόʹϩάΛૹͬͯͦΕΛઐ༻ͷ.BD BQQͰ֬ೝͰ͖Δˠ w Ԇ͕͋ΔͷͰ͋·Γʹཱͨͳ͍ 4XJGUZ#FBWFS w όοΫάϥϯυʹೖΔλΠϛϯάΛϩά Ͱ֬ೝ w
όοΫάϥϯυதͷಈ࡞ΛςΩετग़ྗ
όοΫάϥϯυΞοϓϩʔυ ·ΓͲ͜Ζ
όοΫάϥϯυಈ࡞࣌ͷ UJNFPVU*OUFSWBM'PS3FRVFTUͷ ͕࣌ؒมߋͰ͖ͳ͍ ఘΊͯΔ
λΠϜΞτؔ࿈ͷϓϩύςΟ w UJNFPVU*OUFSWBM'PS3FRVFTU w ϦΫΤετͷλΠϜΞτɻ৽͍͠σʔλΛड ͚औΔͨͼʹϦηοτ͞ΕΔʢ͔ΓͮΒ͍ʣ w UJNFPVU*OUFSWBM'PS3FTPVSDF w Ϧιʔεʹର͢ΔλΠϜΞτɻ͜ͷ࣌ؒͷؒϦ
τϥΠΛ܁Γฦ͠ɺ͜ΕΛ͑ͯ௨৴ΛߦΘͳ͍
UJNFPVU*OUFSWBM'PS3FRVFTUͬͯ͜͏͍͏͜ͱʁ ϦΫΤετ࣌ؒ αʔόͰͷॲཧ࣌ؒ Ϩεϙϯε ࣌ؒ όοΫάϥϯυ࣌ ඵ Ҏ͡Όͳ͍ͱ λΠϜΞτʁ ϦΫΤετ
UJNF
UJNFPVU*OUFSWBM'PS3FTPVSDFͬͯ͜͏͍͏͜ͱ ϦτϥΠ ϦΫΤετ ϦτϥΠ λΠϜΞτΛ͑Δͱ ϦτϥΠऴΘΓ UJNF
ΜͰͳ͍উखͳϦτϥΠ UJNFPVU*OUFSWBM'PS3FTPVSDFΛͯ͘͠ରԠ
UJNFPVU*OUFSWBM'PS3FTPVSDF ͷσϑΥϧτؒ ͗͢
J04͔Βͷ
w ௨৴ͷεέδϡʔϦϯά༻ͷ"1*͕૿͍͑ͯΔ w ௨৴ࢹࣗ͠ಈͰ։࢝ΛΒͤͨΓ w όοΫάϥϯυ࣌ʹࢦఆͨ࣌ؒ͠Ҏ߱ʹ௨৴͢Δ 88%$"EWBODFTJO/FUXPSLJOH 1BSU
͍͞͝ʹ·ͱΊ w όοΫάϥϯυΞοϓϩʔυJ04͔Β͋ΔόοΫάϥϯυॲཧͷԆ ͱࠞಉͦ͠͏ʹͳΔ͕ผ w ผϓϩηεͰಈ࡞͢ΔͷͰ9DPEFҎ֎ͷπʔϧઈରͬͨ΄͏͕͍͍ w ϦτϥΠपΓ͕ະͩʹṖͳͷͰใڞ༗͠·͠ΐ͏
͝ਗ਼ௌ͋Γ͕ͱ͏ ͍͟͝·ͨ͠ ථͷఔΑΖ͓͘͠ئ͍͠·͢