Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
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
420
swiftでメトロノーム作成中 / WIP metronome of swift
akrolayer
September 07, 2020
Tweet
Share
More Decks by akrolayer
See All by akrolayer
最近読んだ本の話
akrolayer
0
150
LTのモチベーション
akrolayer
1
720
よく使うキーって何?
akrolayer
1
230
史上最強の哲学入門の紹介
akrolayer
0
270
13歳からのアート思考の紹介 / art thinking from 13
akrolayer
0
220
老後貯金と今の幸せ / Hump saving and Now Hapiness
akrolayer
0
170
感情のカテゴライズ / Categorize of emotion
akrolayer
0
180
不安とは / What is Vague anxiety
akrolayer
0
270
LT説明会 / Introduce to LT
akrolayer
0
150
Other Decks in Programming
See All in Programming
S3 VectorsとStrands Agentsを利用したAgentic RAGシステムの構築
tosuri13
5
270
著者と進める!『AIと個人開発したくなったらまずCursorで要件定義だ!』
yasunacoffee
0
110
WebRTC と Rust と8K 60fps
tnoho
2
1.9k
ViewファーストなRailsアプリ開発のたのしさ
sugiwe
0
400
AIコーディングエージェント(NotebookLM)
kondai24
0
130
TypeScriptで設計する 堅牢さとUXを両立した非同期ワークフローの実現
moeka__c
6
2.9k
DSPy Meetup Tokyo #1 - はじめてのDSPy
masahiro_nishimi
1
150
認証・認可の基本を学ぼう前編
kouyuume
0
150
ソフトウェア設計の課題・原則・実践技法
masuda220
PRO
24
21k
Google Antigravity and Vibe Coding: Agentic Development Guide
mickey_kubo
2
130
Integrating WordPress and Symfony
alexandresalome
0
120
手軽に積ん読を増やすには?/読みたい本と付き合うには?
o0h
PRO
1
140
Featured
See All Featured
A Modern Web Designer's Workflow
chriscoyier
697
190k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.3k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
1.8k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
132
19k
VelocityConf: Rendering Performance Case Studies
addyosmani
333
24k
Become a Pro
speakerdeck
PRO
30
5.7k
Site-Speed That Sticks
csswizardry
13
990
Optimizing for Happiness
mojombo
379
70k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.6k
The Cost Of JavaScript in 2023
addyosmani
55
9.3k
Making the Leap to Tech Lead
cromwellryan
135
9.6k
RailsConf 2023
tenderlove
30
1.3k
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を発見・・・