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
akrolayer
September 07, 2020
Programming
1
370
swiftでメトロノーム作成中 / WIP metronome of swift
akrolayer
September 07, 2020
Tweet
Share
More Decks by akrolayer
See All by akrolayer
最近読んだ本の話
akrolayer
0
120
LTのモチベーション
akrolayer
1
650
よく使うキーって何?
akrolayer
1
190
史上最強の哲学入門の紹介
akrolayer
0
240
13歳からのアート思考の紹介 / art thinking from 13
akrolayer
0
190
老後貯金と今の幸せ / Hump saving and Now Hapiness
akrolayer
0
140
感情のカテゴライズ / Categorize of emotion
akrolayer
0
150
不安とは / What is Vague anxiety
akrolayer
0
230
LT説明会 / Introduce to LT
akrolayer
0
130
Other Decks in Programming
See All in Programming
趣味全開のAITuber開発
kokushin
0
180
List とは何か? / PHPerKaigi 2025
meihei3
0
610
これだけは知っておきたいクラス設計の基礎知識 version 2
masuda220
PRO
24
5.8k
Youtube Lofier - Chrome拡張開発
ninikoko
0
2.4k
プロダクト横断分析に役立つ、事前集計しないサマリーテーブル設計
hanon52_
1
130
Qiita Bash
mercury_dev0517
1
180
Agentic Applications with Symfony
el_stoffel
2
250
地域ITコミュニティの活性化とAWSに移行してみた話
yuukis
0
220
AHC 044 混合整数計画ソルバー解法
kiri8128
0
320
AI Coding Agent Enablement - エージェントを自走させよう
yukukotani
13
5.6k
Day0 初心者向けワークショップ実践!ソフトウェアテストの第一歩
satohiroyuki
0
820
英語文法から学ぶ、クリーンな設計の秘訣
newnomad
1
290
Featured
See All Featured
Writing Fast Ruby
sferik
628
61k
How to train your dragon (web standard)
notwaldorf
91
6k
Rails Girls Zürich Keynote
gr2m
94
13k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
40
2.2k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
30
2.3k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
3.8k
Statistics for Hackers
jakevdp
798
220k
A designer walks into a library…
pauljervisheath
205
24k
It's Worth the Effort
3n
184
28k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
22
2.6k
Fontdeck: Realign not Redesign
paulrobertlloyd
83
5.5k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
4
510
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を発見・・・