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
330
swiftでメトロノーム作成中 / WIP metronome of swift
akrolayer
September 07, 2020
Tweet
Share
More Decks by akrolayer
See All by akrolayer
最近読んだ本の話
akrolayer
0
85
LTのモチベーション
akrolayer
1
540
よく使うキーって何?
akrolayer
1
150
史上最強の哲学入門の紹介
akrolayer
0
190
13歳からのアート思考の紹介 / art thinking from 13
akrolayer
0
160
老後貯金と今の幸せ / Hump saving and Now Hapiness
akrolayer
0
110
感情のカテゴライズ / Categorize of emotion
akrolayer
0
120
不安とは / What is Vague anxiety
akrolayer
0
190
LT説明会 / Introduce to LT
akrolayer
0
100
Other Decks in Programming
See All in Programming
シェーダーで魅せるMapLibreの動的ラスタータイル
satoshi7190
1
480
광고 소재 심사 과정에 AI를 도입하여 광고 서비스 생산성 향상시키기
kakao
PRO
0
170
AWS Lambdaから始まった Serverlessの「熱」とキャリアパス / It started with AWS Lambda Serverless “fever” and career path
seike460
PRO
1
250
TypeScript Graph でコードレビューの心理的障壁を乗り越える
ysk8hori
2
1.1k
Make Impossible States Impossibleを 意識してReactのPropsを設計しよう
ikumatadokoro
0
170
Better Code Design in PHP
afilina
PRO
0
120
Streams APIとTCPフロー制御 / Web Streams API and TCP flow control
tasshi
2
350
AI時代におけるSRE、 あるいはエンジニアの生存戦略
pyama86
6
1.1k
OSSで起業してもうすぐ10年 / Open Source Conference 2024 Shimane
furukawayasuto
0
100
Less waste, more joy, and a lot more green: How Quarkus makes Java better
hollycummins
0
100
ペアーズにおけるAmazon Bedrockを⽤いた障害対応⽀援 ⽣成AIツールの導⼊事例 @ 20241115配信AWSウェビナー登壇
fukubaka0825
6
1.9k
役立つログに取り組もう
irof
28
9.6k
Featured
See All Featured
[RailsConf 2023] Rails as a piece of cake
palkan
52
4.9k
Fantastic passwords and where to find them - at NoRuKo
philnash
50
2.9k
Art, The Web, and Tiny UX
lynnandtonic
297
20k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
26
1.4k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
364
24k
Side Projects
sachag
452
42k
Music & Morning Musume
bryan
46
6.2k
Why You Should Never Use an ORM
jnunemaker
PRO
54
9.1k
Embracing the Ebb and Flow
colly
84
4.5k
Docker and Python
trallard
40
3.1k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
169
50k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
665
120k
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を発見・・・