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
70
Catch Up Swift Concurrency Actor & Sendable
toshiyana36
0
200
Qiita Hackathon: そこにAIはあるんか
toshiyana36
0
84
新卒iOSエンジニアの歩み
toshiyana36
1
520
Swiftで簡易 HTTP Server を作る
toshiyana36
0
390
Other Decks in Technology
See All in Technology
Cursor AgentによるパーソナルAIアシスタント育成入門―業務のプロンプト化・MCPの活用
os1ma
15
5.8k
Porting PicoRuby to Another Microcontroller: ESP32
yuuu
4
470
営業向け誰でも話せるOCIセールストーク
oracle4engineer
PRO
2
100
Microsoft の SSE の現在地
skmkzyk
0
170
バクラクの認証基盤の成長と現在地 / bakuraku-authn-platform
convto
4
730
バックオフィス向け toB SaaS バクラクにおけるレコメンド技術活用 / recommender-systems-in-layerx-bakuraku
yuya4
5
580
PdM採用とAIの製品活用を同時に頑張ってみた話 / EM oasis 20250418
rakus_dev
0
120
watsonx.data上のベクトル・データベース Milvusを見てみよう/20250418-milvus-dojo
mayumihirano
0
120
Databricksで完全履修!オールインワンレイクハウスは実在した!
akuwano
0
110
勝手に!深堀り!Cloud Run worker pools / Deep dive Cloud Run worker pools
iselegant
4
520
Dynamic Reteaming And Self Organization
miholovesq
3
650
白金鉱業Meetup_Vol.18_生成AIはデータサイエンティストを代替するのか?
brainpadpr
3
170
Featured
See All Featured
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.5k
Gamification - CAS2011
davidbonilla
81
5.2k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
The Language of Interfaces
destraynor
157
25k
Building Better People: How to give real-time feedback that sticks.
wjessup
367
19k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Imperfection Machines: The Place of Print at Facebook
scottboms
267
13k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
47
5.3k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
160
15k
GitHub's CSS Performance
jonrohan
1030
460k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
129
19k
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