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でメトロノーム作成中 / WIP metronome of swift
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
akrolayer
September 07, 2020
Programming
430
1
Share
swiftでメトロノーム作成中 / WIP metronome of swift
akrolayer
September 07, 2020
More Decks by akrolayer
See All by akrolayer
最近読んだ本の話
akrolayer
0
170
LTのモチベーション
akrolayer
1
760
よく使うキーって何?
akrolayer
1
250
史上最強の哲学入門の紹介
akrolayer
0
300
13歳からのアート思考の紹介 / art thinking from 13
akrolayer
0
240
老後貯金と今の幸せ / Hump saving and Now Hapiness
akrolayer
0
200
感情のカテゴライズ / Categorize of emotion
akrolayer
0
200
不安とは / What is Vague anxiety
akrolayer
0
290
LT説明会 / Introduce to LT
akrolayer
0
160
Other Decks in Programming
See All in Programming
瑠璃の宝石に学ぶ技術の声の聴き方 / 【劇場版】アニメから得た学びを発表会2026 #エンジニアニメ
mazrean
0
260
10年分の技術的負債、完済へ ― Claude Code主導のAI駆動開発でスポーツブルを丸ごとリプレイスした話
takuya_houshima
0
2.6k
GitHubCopilotCLIをはじめよう.pdf
htkym
0
210
Programming with a DJ Controller — not vibe coding
m_seki
3
140
tRPCの概要と少しだけパフォーマンス
misoton665
2
220
의존성 주입과 모듈화
fornewid
0
150
Offline should be the norm: building local-first apps with CRDTs & Kotlin Multiplatform
renaudmathieu
0
220
Vibe하게 만드는 Flutter GenUI App With ADK , 박제창, BWAI Incheon 2026
itsmedreamwalker
0
550
検索設計から 推論設計への重心移動と Recall-First Retrieval
po3rin
2
730
運転動画を検索可能にする〜Cosmos-Embed1とDatabricks Vector Searchで〜/cosmos-embed1-databricks-vector-search
studio_graph
0
350
How We Benchmarked Quarkus: Patterns and anti-patterns
hollycummins
1
150
PHPで TLSのプロトコルを実装してみるをもう一度しゃべりたい
higaki_program
0
210
Featured
See All Featured
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
5.9k
Skip the Path - Find Your Career Trail
mkilby
1
110
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
130
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
270
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
280
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
300
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.4k
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
180
Crafting Experiences
bethany
1
120
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.7k
Building AI with AI
inesmontani
PRO
1
910
Transcript
Swiftでメトロノーム作成中 推しの技術LT
What are you like? • ごまなつ(@akrolayer) • 機器操作のWindowsアプリを作ってます(C#,
.NET) • 趣味:TCG, ボードゲーム, eスポーツ観戦, AC音ゲー(メインはDDR)
今日話すこと • 個人開発しているSwift アプリについて ◦ 初学者がやってみたこと ◦ 考えの変遷 ◦ 詰まっていること
None
音ゲーやっていて嬉しいこと
新曲が追加された!!
BPM230
・・・どのくらいの速さだっけ?
BPMとは • Beat Per Minite(1分間に何拍打てるか) ◦ BPM60が分かりやすい ▪ 1分間に60回=1秒の速さ
• 日常的に聞くのは大体150まで ◦ 200なんて速すぎて聞かない
メトロノームを作ってみる • Swiftを使ってみることにした • 60÷BPMのタイミングで音を鳴らすことによってメトロノー ムを作成した
次に思ったこと • BPM236の12分は4分だとBPMいくつ? ◦ このような変換がしたいことがある • 音ゲーには、12分、24分、48分が存在する ◦ 計算では3連符を表すことができないため
▪ BPMで計算する ▪ ×3/4すれば変換できる
次に思ったこと • BPMキープする練習、吹奏楽部のときやったな・・・ ◦ 一小節だけ鳴らして、その後音を消し正しいタイミン グだと思った時にどのくらいずれるか • この機能をつけるのが大変だった
計算誤差対策 • Decimal型にする ◦ SwiftのDecimalに、floor(), ceil(), Round()がない ◦ doubleに変換して掛けて割って強制的に丸める
テストを書いてみる • UITest ◦ ボタンの存在確認、Enable・Unable確認 ◦ 計算結果表示ラベル確認 • UnitTest
◦ BPM計算部分のテスト、正しいタイミング計算のテスト
タイミング計算が合わない・・・ • せっかくDecimalにしたのに、doubleに変換する時点で誤 差を許容してしまう ◦ もっといい方法があるのでは? • 処理時間の問題? ◦
処理時間はきわめて短いと思われるが、小数点以下 の秒数を表示している ▪ 小数点以下は1桁表示に変更 ▪ 誤差が0.3秒前後と発覚したので、0.3秒引く
C#.NETとSwift • どちらも、GUIを作成するときデザイン画面でボタン・ラベ ルなどのパーツを配置して、そのボタンの処理を書いて いく ◦ C#.NET経験者としては、似ていてやりやすかった
まとめ • 初学者がSwiftでアプリを作成してみた ◦ 音ゲーマーに役立つものを目指す • 計算誤差を解決したい ◦ つい先ほどNSDecimalNumberHandlerを発見・・・