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
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
野瀬田 裕樹
May 12, 2025
Programming
31
0
Share
SwiftでよりSwiftyに
Kanagawa.swiftで登壇した時の資料です
野瀬田 裕樹
May 12, 2025
More Decks by 野瀬田 裕樹
See All by 野瀬田 裕樹
Swift ConcurrencyでよりSwiftyに
yuukiw00w
0
290
Human Interface Guidelines 2
yuukiw00w
0
51
AI前提で考えるiOSアプリのモダナイズ設計
yuukiw00w
0
250
HIG学習用スライド
yuukiw00w
0
180
FlutterKaigi 2025: What is iOS Assistive Access? UI considerations for Flutter
yuukiw00w
0
52
Swift6.2時代のconcurrencyを考える会
yuukiw00w
1
1.5k
実践!App Intents対応
yuukiw00w
1
470
App Intents再入門
yuukiw00w
0
80
Flutterで備える!Accessibility Nutrition Labels完全ガイド
yuukiw00w
0
260
Other Decks in Programming
See All in Programming
条件判定に名前、つけてますか? #phperkaigi #c
77web
2
960
Feature Toggle は捨てやすく使おう
gennei
0
430
ファインチューニングせずメインコンペを解く方法
pokutuna
0
270
forteeの改修から振り返るPHPerKaigi 2026
muno92
PRO
3
230
Spec Driven Development: The End Of Vibe Coding | DevLand 2026
danielsogl
PRO
0
110
「効かない!」依存性注入(DI)を活用したAPI Platformのエラーハンドリング奮闘記
mkmk884
0
300
Symfony + NelmioApiDocBundle を使った スキーマ駆動開発 / Schema Driven Development with NelmioApiDocBundle
okashoi
0
260
3分でわかるatama plusのQA/about atama plus QA
atamaplus
0
100
「接続」—パフォーマンスチューニングの最後の一手 〜点と点を結ぶ、その一瞬のために〜
kentaroutakeda
5
2.5k
AI時代の脳疲弊と向き合う ~言語学としてのPHP~
sakuraikotone
1
1.8k
AIエージェントで業務改善してみた
taku271
0
480
Kubernetes上でAgentを動かすための最新動向と押さえるべき概念まとめ
sotamaki0421
2
430
Featured
See All Featured
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
280
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.7k
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.2k
AI Search: Where Are We & What Can We Do About It?
aleyda
0
7.3k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.2k
Fashionably flexible responsive web design (full day workshop)
malarkey
408
66k
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.4k
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
450
Discover your Explorer Soul
emna__ayadi
2
1.1k
Joys of Absence: A Defence of Solitary Play
codingconduct
1
330
Ruling the World: When Life Gets Gamed
codingconduct
0
190
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 ご静聴ありがとうございました