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
SwiftでよりSwiftyに
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
野瀬田 裕樹
May 12, 2025
Programming
37
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
SwiftでよりSwiftyに
Kanagawa.swiftで登壇した時の資料です
野瀬田 裕樹
May 12, 2025
More Decks by 野瀬田 裕樹
See All by 野瀬田 裕樹
iOS26時代の新規アプリ開発
yuukiw00w
0
240
Swift ConcurrencyでよりSwiftyに
yuukiw00w
0
330
Human Interface Guidelines 2
yuukiw00w
0
64
AI前提で考えるiOSアプリのモダナイズ設計
yuukiw00w
0
270
HIG学習用スライド
yuukiw00w
0
190
FlutterKaigi 2025: What is iOS Assistive Access? UI considerations for Flutter
yuukiw00w
0
62
Swift6.2時代のconcurrencyを考える会
yuukiw00w
2
1.7k
実践!App Intents対応
yuukiw00w
1
500
App Intents再入門
yuukiw00w
0
87
Other Decks in Programming
See All in Programming
セキュリティの専門家じゃなくてもできる。「セキュリティ意識」をアップデートして サプライチェーン攻撃への耐性を高めよう。
tk3fftk
5
760
Agentic UI
manfredsteyer
PRO
0
160
ローカルLLMを使ってB2Bサービスを作っていての学び
yaotti
0
170
フロントエンドとバックエンドで「1文字」を揃えよう
youkidearitai
PRO
0
680
ECSアプリログをFireLensでコスト削減しようとしたけど諦めた話 in Fargate×Node.js
akihisaikeda
2
4.2k
TypeScript+Orvalで実現する型安全かつ堅牢でスケーラブルなマルチチャネル通知基盤 / TSKaigi Night talks ~after conference~
d0riven
0
340
JJUG CCC 2026 Spring: JSpecify で実現する Kotlin フレンドリーな Java API 設計
ternbusty
1
170
Semantic Version 単位で戦略を柔軟に変えて、パッケージアップデートを自動化する
daitasu
1
240
Webフレームワークの ベンチマークについて
yusukebe
0
170
Observability in Practice:Grafana 與 Edge Device SRE 的那些事
blueswen
0
160
Spec Driven Development | AI Summit Lisbon
danielsogl
PRO
0
190
Claspは野良GASの夢をみるか
takter00
0
190
Featured
See All Featured
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6k
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
140
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.7k
Context Engineering - Making Every Token Count
addyosmani
9
960
What's in a price? How to price your products and services
michaelherold
247
13k
Discover your Explorer Soul
emna__ayadi
2
1.1k
Leo the Paperboy
mayatellez
7
1.8k
RailsConf 2023
tenderlove
30
1.5k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.5k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
270
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
300
Transcript
© DMM © DMM Swiftでよりswiftyに swifty codeを書こう 野瀬田 裕樹(@ynoseda) 2024/11/3
© DMM 2 注:この資料は今年の3月頃に作成しました (風邪ひいて登壇キャンセルした時のやつ)
© DMM 3 一応さっきXcode16でも警告なく動くことは確認しました
© DMM 野瀬田 裕樹(@ynoseda) 2023年9月 合同会社DMM.com 中途入社 開発統括本部 アプリ開発室 自己紹介 4
© DMM 5 Swiftで書くならswiftyなコードを書きたいですよね?
© DMM 6 今回の発表を機にswiftyなコードを書きましょう!
© DMM 7 と言いつつも
© DMM 8 swiftyなコードって何
© DMM swiftyという単語の意味 9
© DMM 10 swiftyなコード = Swiftらしいコード
© DMM 11 swiftyなコード ≠ Swiftらしいコード
© DMM 12 swiftyなコード = 素早いコード
© DMM swiftyなコードを書こう 素早いと言っても色んな種類がある • 実行時間が短い • ビルド時間が短い • 理解に要する時間が短い(Swiftらしいコードはここに入る)
13
© DMM swiftyなコードを書こう 素早いと言っても色んな種類がある • 実行時間が短い • ビルド時間が短い • 理解に要する時間が短い(Swiftらしいコードはここに入る)
14
© DMM 適当な大きいサイズの連立一次方程式を解く 実行時間が長い処理のお題 15
© DMM 16 どうやって連立一次方程式を解くか?
© DMM ガウスの消去法 17 ピボット選択は省略
© DMM ガウスの消去法 18
© DMM ガウスの消去法 19
© DMM ガウスの消去法のパフォーマンス 20 前提条件 • 先ほどのコードに部分ピボット選択を追加 • 解がわかりやすいよう係数行列は →
を使用 ◦ 例えば定数ベクトルを全て12にすると、 奇数次元のとき解が6, 0, 6, …, 0, 6のように 6と0の繰り返しになる • 501次元でパフォーマンスを計測
© DMM ガウスの消去法のパフォーマンス 21 結果 • 平均12.139秒(501次元) • これをSwiftyにしよう!!
© DMM Accelerateフレームワークで解いてみよう 22
© DMM • 自前実装しなくても、Swiftには専用の数値計算ライブラリがある • Accelerateフレームワークでは、dgesv_という関数で連立一次方程式 が解ける! Accelerateフレームワークで解いてみよう 23
© DMM Accelerateフレームワークで解いてみよう 24
© DMM Accelerateフレームワークで解いてみよう 25
© DMM Accelerateフレームワークで解いてみよう 26
© DMM dgesv_のパフォーマンス 27 結果 • 平均0.003秒(501次元) • 圧倒的スピード
© DMM dgesv_のパフォーマンス 28 結果 • 平均14.353秒(10,001次元) • 約20倍の次元にも関わらず圧倒的スピード
© DMM 係数行列が特定の形なら、アルゴリズムを改善できる • 三重対角行列ならThomas法が使える • 下三角行列と上三角行列の積に変換し、後退代入してみよう! Thomas法で解いてみよう 29
© DMM Thomas法のコード 30
© DMM 結果 • 平均0.012秒!!(10,001次元) • 脅威のスピードでAccelerateフレームワークのdgesvに勝利 • 10倍にして100,001次元にしても平均0.261秒!! Thomas法のパフォーマンス
31
© DMM 32 やはりアルゴリズムを改善するのが最強か…
© DMM 33 と思うのはまだ早い
© DMM Accelerateフレームワークは強い 34
© DMM • 対称かつ正定値の三重対角行列専用関数もある • dptsv_関数が今回の場合使える dptsvで解いてみよう 35
© DMM 結果 • 平均0.172秒!!(100,001次元) • これがswiftyというやつか… dptsvのパフォーマンス 36
© DMM • 連立一次方程式を解くときはAccelerateフレームワークを使おう • ちなみにドキュメントはありません ◦ 使い方が知りたい人は懇親会で聞いてね まとめ 37
© DMM ご静聴ありがとうございました