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
Swift6からのTyped throws
Search
Toshiyana
July 23, 2024
Technology
2
320
Swift6からのTyped throws
Mobile勉強会 Wantedly × チームラボ × Sansan #15
Toshiyana
July 23, 2024
Tweet
Share
More Decks by Toshiyana
See All by Toshiyana
Mobile 自動E2Eテストの導入検討-Appium
toshiyana36
0
74
Catch Up Swift Concurrency Actor & Sendable
toshiyana36
0
210
Qiita Hackathon: そこにAIはあるんか
toshiyana36
0
85
新卒iOSエンジニアの歩み
toshiyana36
1
550
Swiftで簡易 HTTP Server を作る
toshiyana36
0
390
Other Decks in Technology
See All in Technology
Azure & DevSecOps
kkamegawa
2
200
SONiCにて使用されているSAIの実際
sonic
0
230
Google Cloud Next 2025 Recap アプリケーション開発を加速する機能アップデート / Application development-related features of Google Cloud
ryokotmng
0
340
Part1 GitHubってなんだろう?その1
tomokusaba
3
850
Google Cloud Next 2025 Recap 生成AIモデルとマーケティングでのコンテンツ生成 / Generative AI models and content creation in marketing
kyou3
0
360
雑に疎通確認だけしたい...せや!CloudShell使ったろ!
alchemy1115
0
240
試作とデモンストレーション / Prototyping and Demonstrations
ks91
PRO
0
150
TanStack Start 技術選定の裏側 / Findy-Lunch-LT-TanStack-Start
iktakahiro
1
170
猫でもわかるS3 Tables【Apache Iceberg編】
kentapapa
2
260
DynamoDB のデータを QuickSight で可視化する際につまづいたこと/stumbling-blocks-when-visualising-dynamodb-with-quicksight
emiki
0
180
ゆるくはじめるSLI・SLO
yatoum
1
120
Part1 GitHubってなんだろう?その2
tomokusaba
2
830
Featured
See All Featured
Rebuilding a faster, lazier Slack
samanthasiow
81
9k
RailsConf 2023
tenderlove
30
1.1k
Fireside Chat
paigeccino
37
3.4k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
52
2.6k
Visualization
eitanlees
146
16k
How to Think Like a Performance Engineer
csswizardry
23
1.6k
Statistics for Hackers
jakevdp
799
220k
Reflections from 52 weeks, 52 projects
jeffersonlam
349
20k
KATA
mclloyd
29
14k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
60k
Adopting Sorbet at Scale
ufuk
76
9.4k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
227
22k
Transcript
Swift6からのTyped throws Toshiyana Mobile勉強会 Wantedly × チームラボ × Sansan #15
⾃⼰紹介 Toshiyana X: @toshi_ios_jp • 所属: 合同会社 DMM.com DMM PointClub
iOSチーム • 趣味: テニス🎾、⼀⾵堂 • 最近、Vision Proを初めて体験。視線認識技術すご。 2
• Typed throwsとは? • モチベーション • 既存のthrowsによるエラーハンドリング • Typed throwsによるエラーハンドリング
• メリット • 利⽤場⾯ 話すこと 3
• 機能概要: 特定の型のエラーのみをスローする機能 ◦ 対象: 関数、イニシャライザ、do-catch⽂ • Swift6で導⼊される機能 Typed throwsとは?
https://github.com/swiftlang/swift-evolution/blob/main/proposals/0413-typed-throws.md 4
• throwsはResultやTaskと異なり具体的なエラー情報を持てない • throwsはResultやTaskと相互変換できない • 存在型の any Errorは、型が不明なのでオーバーヘッドが発⽣ ◦ メモリ、実⾏パフォーマンスで発⽣
Typed throwsのモチベーション これらを解決したい 5
• throwsをつけた場合にエラーはany Error型として扱われる 既存のthrowsによるエラーハンドリング 6
• 呼び出し側は何のエラーを投げられるか不明 既存のthrowsによるエラーハンドリング 7
• throwsで具体的なエラータイプを指定可能 Typed throwsによるエラーハンドリング 8
• throwsで具体的なエラータイプを指定可能 Typed throwsによるエラーハンドリング 9
• init() throwsでタイプ指定可能 イニシャライザもTyped throwsが可能 10
• 可読性の向上 ◦ 投げられるエラータイプの明確化 ◦ throwする際のエラータイプの省略 • 型安全性の向上 ◦ 指定外のエラーを処理しようとするとコンパイル時に検出
• パフォーマンス向上 ◦ 組み込みなどリソース制限のある環境では重要 Typed throwsを利⽤するメリット 11
1. モジュールやパッケージで閉じてエラーを処理する場合 ◦ エラー型を閉じ込めることで、内部変更が外部に影響しない 2. ジェネリックなコードで⾃⾝はエラーを発⽣させず、利⽤者側か らエラーを発⽣させる場合 3. 制約のある環境 (組み込み)
でメモリ割り当てができず、⾃⾝のエ ラーのみ発⽣させる場合 Typed throwsの利⽤場⾯ 12
• Swift6で導⼊されるTyped throwsを学んだ • Typed throwsは利点もあるが利⽤場⾯を意識する • 可読性や型安全性は向上するので、使えそうな箇所で導⼊していきた い まとめ
13
• https://github.com/swiftlang/swift-evolution/blob/main/proposals/0413-typed-throws.md • https://medium.com/@vereshhagin98/typed-throws-in-swift-6-76c5ff657a81 • https://www.avanderlee.com/swift/typed-throws/ 参考 14