Upgrade to Pro — share decks privately, control downloads, hide ads and more …

swiftでメトロノーム作成中 / WIP metronome of swift

A430184e6133a56ece24c30df869f115?s=47 akrolayer
September 07, 2020

swiftでメトロノーム作成中 / WIP metronome of swift

A430184e6133a56ece24c30df869f115?s=128

akrolayer

September 07, 2020
Tweet

Transcript

  1. Swiftでメトロノーム作成中
 推しの技術LT


  2. What are you like?
 • ごまなつ(@akrolayer)
 
 
 • 機器操作のWindowsアプリを作ってます(C#,

    .NET)
 
 
 • 趣味:TCG, ボードゲーム, eスポーツ観戦,
 AC音ゲー(メインはDDR)
 

  3. 今日話すこと
 • 個人開発しているSwift アプリについて
 ◦ 初学者がやってみたこと
 ◦ 考えの変遷
 ◦ 詰まっていること


  4. None
  5. 音ゲーやっていて嬉しいこと


  6. 新曲が追加された!!


  7. BPM230


  8. ・・・どのくらいの速さだっけ?


  9. BPMとは
 • Beat Per Minite(1分間に何拍打てるか)
 ◦ BPM60が分かりやすい
 ▪ 1分間に60回=1秒の速さ
 


    • 日常的に聞くのは大体150まで
 ◦ 200なんて速すぎて聞かない
 

  10. メトロノームを作ってみる
 • Swiftを使ってみることにした
 
 • 60÷BPMのタイミングで音を鳴らすことによってメトロノー ムを作成した


  11. 次に思ったこと
 • BPM236の12分は4分だとBPMいくつ?
 ◦ このような変換がしたいことがある
 
 • 音ゲーには、12分、24分、48分が存在する
 ◦ 計算では3連符を表すことができないため


    ▪ BPMで計算する
 ▪ ×3/4すれば変換できる

  12. 次に思ったこと
 • BPMキープする練習、吹奏楽部のときやったな・・・
 ◦ 一小節だけ鳴らして、その後音を消し正しいタイミン グだと思った時にどのくらいずれるか
 
 • この機能をつけるのが大変だった


  13. 計算誤差対策
 • Decimal型にする
 ◦ SwiftのDecimalに、floor(), ceil(), Round()がない
 ◦ doubleに変換して掛けて割って強制的に丸める


  14. テストを書いてみる
 • UITest
 ◦ ボタンの存在確認、Enable・Unable確認
 ◦ 計算結果表示ラベル確認
 
 • UnitTest


    ◦ BPM計算部分のテスト、正しいタイミング計算のテスト

  15. タイミング計算が合わない・・・
 • せっかくDecimalにしたのに、doubleに変換する時点で誤 差を許容してしまう
 ◦ もっといい方法があるのでは?
 
 • 処理時間の問題?
 ◦

    処理時間はきわめて短いと思われるが、小数点以下 の秒数を表示している
 ▪ 小数点以下は1桁表示に変更
 ▪ 誤差が0.3秒前後と発覚したので、0.3秒引く

  16. C#.NETとSwift
 • どちらも、GUIを作成するときデザイン画面でボタン・ラベ ルなどのパーツを配置して、そのボタンの処理を書いて いく
 ◦ C#.NET経験者としては、似ていてやりやすかった


  17. まとめ
 • 初学者がSwiftでアプリを作成してみた
 ◦ 音ゲーマーに役立つものを目指す
 
 • 計算誤差を解決したい
 ◦ つい先ほどNSDecimalNumberHandlerを発見・・・