Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
Swiftでメトロノーム作成中 推しの技術LT
Slide 2
Slide 2 text
What are you like? ● ごまなつ(@akrolayer) ● 機器操作のWindowsアプリを作ってます(C#, .NET) ● 趣味:TCG, ボードゲーム, eスポーツ観戦, AC音ゲー(メインはDDR)
Slide 3
Slide 3 text
今日話すこと ● 個人開発しているSwift アプリについて ○ 初学者がやってみたこと ○ 考えの変遷 ○ 詰まっていること
Slide 4
Slide 4 text
No content
Slide 5
Slide 5 text
音ゲーやっていて嬉しいこと
Slide 6
Slide 6 text
新曲が追加された!!
Slide 7
Slide 7 text
BPM230
Slide 8
Slide 8 text
・・・どのくらいの速さだっけ?
Slide 9
Slide 9 text
BPMとは ● Beat Per Minite(1分間に何拍打てるか) ○ BPM60が分かりやすい ■ 1分間に60回=1秒の速さ ● 日常的に聞くのは大体150まで ○ 200なんて速すぎて聞かない
Slide 10
Slide 10 text
メトロノームを作ってみる ● Swiftを使ってみることにした ● 60÷BPMのタイミングで音を鳴らすことによってメトロノー ムを作成した
Slide 11
Slide 11 text
次に思ったこと ● BPM236の12分は4分だとBPMいくつ? ○ このような変換がしたいことがある ● 音ゲーには、12分、24分、48分が存在する ○ 計算では3連符を表すことができないため ■ BPMで計算する ■ ×3/4すれば変換できる
Slide 12
Slide 12 text
次に思ったこと ● BPMキープする練習、吹奏楽部のときやったな・・・ ○ 一小節だけ鳴らして、その後音を消し正しいタイミン グだと思った時にどのくらいずれるか ● この機能をつけるのが大変だった
Slide 13
Slide 13 text
計算誤差対策 ● Decimal型にする ○ SwiftのDecimalに、floor(), ceil(), Round()がない ○ doubleに変換して掛けて割って強制的に丸める
Slide 14
Slide 14 text
テストを書いてみる ● UITest ○ ボタンの存在確認、Enable・Unable確認 ○ 計算結果表示ラベル確認 ● UnitTest ○ BPM計算部分のテスト、正しいタイミング計算のテスト
Slide 15
Slide 15 text
タイミング計算が合わない・・・ ● せっかくDecimalにしたのに、doubleに変換する時点で誤 差を許容してしまう ○ もっといい方法があるのでは? ● 処理時間の問題? ○ 処理時間はきわめて短いと思われるが、小数点以下 の秒数を表示している ■ 小数点以下は1桁表示に変更 ■ 誤差が0.3秒前後と発覚したので、0.3秒引く
Slide 16
Slide 16 text
C#.NETとSwift ● どちらも、GUIを作成するときデザイン画面でボタン・ラベ ルなどのパーツを配置して、そのボタンの処理を書いて いく ○ C#.NET経験者としては、似ていてやりやすかった
Slide 17
Slide 17 text
まとめ ● 初学者がSwiftでアプリを作成してみた ○ 音ゲーマーに役立つものを目指す ● 計算誤差を解決したい ○ つい先ほどNSDecimalNumberHandlerを発見・・・