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
野瀬田 裕樹
May 12, 2025
Programming
41
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 野瀬田 裕樹
uhooiさん発ランダムタスクにチャレンジしよう!
yuukiw00w
0
11
ViewModelって200種類あんねん
yuukiw00w
0
6
Validate your App Intents adoption with AppIntentsTesting
yuukiw00w
0
7
App Intentsを実装しよう
yuukiw00w
0
7
iOS26時代の新規アプリ開発
yuukiw00w
0
250
Swift ConcurrencyでよりSwiftyに
yuukiw00w
0
350
Human Interface Guidelines 2
yuukiw00w
0
79
AI前提で考えるiOSアプリのモダナイズ設計
yuukiw00w
0
280
HIG学習用スライド
yuukiw00w
0
200
Other Decks in Programming
See All in Programming
OpenSpecのproposalにbrainstormingを持たせてみた
tigertora7571
1
210
型も通る、synthも通る、それでも危ない 〜AIのCDKの権限とコストを機械で検証する〜 / It Passes Type Checks, It Passes Synth Checks, but It’s Still Risky — Automatically Verifying Permissions and Costs in AI’s CDK —
seike460
PRO
1
540
Claude CodeとAgentCore Gatewayを繋ぐ際の認証認可 / Authentication and authorization when connecting Claude Code with AgentCore Gateway
har1101
1
250
改善しないと、タスクが回らない。 “てんこ盛りポジション” を引き継いだ情シスの、入社3ヶ月の業務改善録
krm963
0
260
Built Our Own Background Agent at LayerX
layerx
PRO
9
5k
その節約、円になってますか?
isamumumu
1
700
今さら聞けない .NET CLI
htkym
0
180
関東Kaggler会_NVIDIA_Nemotron_コンペ_振り返り
rick_ds
0
470
php-fpmのプロセスが枯渇した日-調査・対処・そして本当にやるべきだったこと-
shibuchaaaan
0
240
プロポーザルを書いてもらう
pvcresin
0
280
2年かけて Deno に DOMMatrix を実装した話 / How I implemented DOMMatrix in Deno over two years
petamoriken
0
210
React本体のコードリーディング
high_g_engineer
1
140
Featured
See All Featured
Principles of Awesome APIs and How to Build Them.
keavy
128
18k
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
430
Building AI with AI
inesmontani
PRO
1
1.1k
Building a Scalable Design System with Sketch
lauravandoore
463
34k
Side Projects
sachag
455
43k
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
460
Utilizing Notion as your number one productivity tool
mfonobong
4
520
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
400
New Earth Scene 8
popppiees
3
2.5k
Designing Powerful Visuals for Engaging Learning
tmiket
1
480
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
400
Accessibility Awareness
sabderemane
1
170
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 ご静聴ありがとうございました