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
39
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
250
Swift ConcurrencyでよりSwiftyに
yuukiw00w
0
340
Human Interface Guidelines 2
yuukiw00w
0
70
AI前提で考えるiOSアプリのモダナイズ設計
yuukiw00w
0
280
HIG学習用スライド
yuukiw00w
0
200
FlutterKaigi 2025: What is iOS Assistive Access? UI considerations for Flutter
yuukiw00w
0
63
Swift6.2時代のconcurrencyを考える会
yuukiw00w
2
1.7k
実践!App Intents対応
yuukiw00w
1
510
App Intents再入門
yuukiw00w
0
91
Other Decks in Programming
See All in Programming
act2-costs.pdf
sumedhbala
0
110
【やさしく解説 設計編・中級 #6】良いアーキテクチャとは ~ 一本の登り道の、行き先 ~
panda728
PRO
0
160
【SRE NEXT 2026 Lunch Session】一人目専任SREの立ち上げを加速する ― AIと進めたオンボーディングで2分を0.04秒にした話
pkshadeck
PRO
0
2.7k
初めてのKubernetes 本番運用でハマった話
oku053
0
130
Generative UI & AI-Assistants for Your Angular Solutions
manfredsteyer
PRO
1
180
AI駆動開発を妨げる技術的負債の解消アプローチ / ai-refactoring-approach
minodriven
17
9.1k
AIを活用したE2Eテスト実装効率化のあゆみ / ebisu-mobile-14-kotetu
kotetuco
0
170
エンジニアにデザインハーネスを 〜デザインプロセスを規定するためのハーネス〜 / Design harness from an engineer's perspective
rkaga
2
1.5k
ソフトウェア設計に溶けるインフラ ― AWS CDK のインフラ認識論
konokenj
2
500
The Bowling Game- From Imperative to Functional Programming - Part 1
philipschwarz
PRO
0
330
信頼性について考えてみる(SRE NEXT 2026 miniLT)
hayama17
0
190
任せる範囲はこう広がった / How the Scope of AI Delegation Has Expanded
nrslib
1
260
Featured
See All Featured
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
380
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2.1k
Art, The Web, and Tiny UX
lynnandtonic
304
22k
Speed Design
sergeychernyshev
33
1.9k
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
260
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
260
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
420
Claude Code のすすめ
schroneko
67
230k
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
220
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
220
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
390
Unsuck your backbone
ammeep
672
58k
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 ご静聴ありがとうございました