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
290
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
55
Catch Up Swift Concurrency Actor & Sendable
toshiyana36
0
120
Qiita Hackathon: そこにAIはあるんか
toshiyana36
0
79
新卒iOSエンジニアの歩み
toshiyana36
1
460
Swiftで簡易 HTTP Server を作る
toshiyana36
0
320
Other Decks in Technology
See All in Technology
シフトライトなテスト活動を適切に行うことで、無理な開発をせず、過剰にテストせず、顧客をビックリさせないプロダクトを作り上げているお話 #RSGT2025 / Shift Right
nihonbuson
3
1.5k
ネットワーク可視化の世界
likr
7
5.7k
20241220_S3 tablesの使い方を検証してみた
handy
4
870
ZOZOTOWN の推薦における KPI モニタリング/KPI monitoring for ZOZOTOWN recommendations
rayuron
1
890
MasterMemory v3 最速確認会
yucchiy
0
300
株式会社ログラス − エンジニア向け会社説明資料 / Loglass Comapany Deck for Engineer
loglass2019
3
33k
.NET AspireでAzure Functionsやクラウドリソースを統合する
tsubakimoto_s
0
140
深層学習と3Dキャプチャ・3Dモデル生成(土木学会応用力学委員会 応用数理・AIセミナー)
pfn
PRO
0
400
エンジニアリングマネージャー視点での、自律的なスケーリングを実現するFASTという選択肢 / RSGT2025
yoshikiiida
4
2.8k
Storage Browser for Amazon S3を触ってみた + α
miura55
0
100
Denoで作るチーム開発生産性向上のためのCLIツール
sansantech
PRO
0
140
OCI技術資料 : ファイル・ストレージ 概要
ocise
3
12k
Featured
See All Featured
Optimising Largest Contentful Paint
csswizardry
33
3k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
6
490
Fantastic passwords and where to find them - at NoRuKo
philnash
50
2.9k
Scaling GitHub
holman
459
140k
Building Applications with DynamoDB
mza
92
6.1k
Documentation Writing (for coders)
carmenintech
67
4.5k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
33
2.7k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
2
160
Gamification - CAS2011
davidbonilla
80
5.1k
Building a Modern Day E-commerce SEO Strategy
aleyda
38
7k
Code Reviewing Like a Champion
maltzj
521
39k
Git: the NoSQL Database
bkeepers
PRO
427
64k
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