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

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

akrolayer
September 07, 2020

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

akrolayer

September 07, 2020
Tweet

More Decks by akrolayer

Other Decks in Programming

Transcript

  1. Swiftでメトロノーム作成中

    推しの技術LT


    View Slide

  2. What are you like?

    ● ごまなつ(@akrolayer)



    ● 機器操作のWindowsアプリを作ってます(C#, .NET)



    ● 趣味:TCG, ボードゲーム, eスポーツ観戦,

    AC音ゲー(メインはDDR)


    View Slide

  3. 今日話すこと

    ● 個人開発しているSwift アプリについて

    ○ 初学者がやってみたこと

    ○ 考えの変遷

    ○ 詰まっていること


    View Slide

  4. View Slide

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


    View Slide

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


    View Slide

  7. BPM230


    View Slide

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


    View Slide

  9. BPMとは

    ● Beat Per Minite(1分間に何拍打てるか)

    ○ BPM60が分かりやすい

    ■ 1分間に60回=1秒の速さ


    ● 日常的に聞くのは大体150まで

    ○ 200なんて速すぎて聞かない


    View Slide

  10. メトロノームを作ってみる

    ● Swiftを使ってみることにした


    ● 60÷BPMのタイミングで音を鳴らすことによってメトロノー
    ムを作成した


    View Slide

  11. 次に思ったこと

    ● BPM236の12分は4分だとBPMいくつ?

    ○ このような変換がしたいことがある


    ● 音ゲーには、12分、24分、48分が存在する

    ○ 計算では3連符を表すことができないため

    ■ BPMで計算する

    ■ ×3/4すれば変換できる


    View Slide

  12. 次に思ったこと

    ● BPMキープする練習、吹奏楽部のときやったな・・・

    ○ 一小節だけ鳴らして、その後音を消し正しいタイミン
    グだと思った時にどのくらいずれるか


    ● この機能をつけるのが大変だった


    View Slide

  13. 計算誤差対策

    ● Decimal型にする

    ○ SwiftのDecimalに、floor(), ceil(), Round()がない

    ○ doubleに変換して掛けて割って強制的に丸める


    View Slide

  14. テストを書いてみる

    ● UITest

    ○ ボタンの存在確認、Enable・Unable確認

    ○ 計算結果表示ラベル確認


    ● UnitTest

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


    View Slide

  15. タイミング計算が合わない・・・

    ● せっかくDecimalにしたのに、doubleに変換する時点で誤
    差を許容してしまう

    ○ もっといい方法があるのでは?


    ● 処理時間の問題?

    ○ 処理時間はきわめて短いと思われるが、小数点以下
    の秒数を表示している

    ■ 小数点以下は1桁表示に変更

    ■ 誤差が0.3秒前後と発覚したので、0.3秒引く


    View Slide

  16. C#.NETとSwift

    ● どちらも、GUIを作成するときデザイン画面でボタン・ラベ
    ルなどのパーツを配置して、そのボタンの処理を書いて
    いく

    ○ C#.NET経験者としては、似ていてやりやすかった


    View Slide

  17. まとめ

    ● 初学者がSwiftでアプリを作成してみた

    ○ 音ゲーマーに役立つものを目指す


    ● 計算誤差を解決したい

    ○ つい先ほどNSDecimalNumberHandlerを発見・・・


    View Slide