MAPlayer を Swift2.1 から Swift5 にアップデートした
今年の夏季休暇はやることなかったので、たまにはエンジニアっぽいことしてみようかなと思ったので、4,5年放置していた MAPlayer という iOS アプリをアップデートした。(本業は Rails エンジニア。)
アプリはこちら。
apps.apple.com何回かに分けて勉強したことをメモしておく。
- guard let(いまさら)
- public static let (いまさら)
- MPRemoteCommandCenter(いまさら)
- UnsafeMutablePointer(いまさら)
- App extensions(いまさら)
- custom AudioUnit の作り方(合ってるかどうか微妙)
Objective-C から書いてるアプリなので、Swift 1.2 に移行した時に言語がサポートしてなかったものとか、それを Swift 2.1 に移行した時に対応してなかったものがあり、 Swift なんだけど、なんだこれ...状態だった。
guard let と public static let についてはこの記事でさらっと思い出だけ振り返っておく。
guard let 便利でびっくりした
if guard let value = optionalValue else { fatalError("unexpected value") } print("\(value)") // ここで value が使えるのすごくないか・・・?
guard let なかった時代の(まだ Swift よくわかってなかった自分が書いた)コードはひたすら fource unwrap してて残念だった。
public static let
これも確か Swift がサポートしてなくてシングルトンパターンがめんどくさかった記憶。それだけ。
class Nanika class var sharedInstance: Nanika { struct Singleton { static let instance: Nanika = Nanika() } return Singleton.instance } end
こんな感じだったのが
class Nanika public static let sharedInstance = Nanika() end
こうなって最高だった。
その他
AudioUnit を使ったアプリケーション特有の情報とかもあるので、それぞれ別記事にまとめていく予定。 特に Swift で AudioUnit を扱うには、結局まだ Objective-C や C++ のコードは必要になるみたいなので、その辺がまとめられたらいいかなーという気持ち。
- MPRemoteCommandCenter
- UnsafeMutablePointer
- App extensions
- custom AudioUnit の作り方