color_boxの復習帳

復習します

Objective-CからSwiftに切り替えた話

少し前に自作のアプリをSwiftで全て書き直した。

その時行った事について記す。

ちなみにそのアプリはこれ

ColorBoxStudio「アイディアミキサー」

https://appsto.re/jp/57gER.i

アプローチ

Objective-Cのアプリをswiftに置き換えるアプローチは、全ての要素を置き換えるものと、少しずつ置換していくものの二通りがある。

今回は前者のアプローチを取ることにした。

swiftとobjective-cを共存させようとすると、微妙にめんどくさい処理が必要となるため、それを嫌ったためだ。

また、昔の未熟な自分が書いた汚いコードを保守するのも面倒。

あと、仕事ではなく納期もないので余裕があるというのがその理由。

行ったこと

細かいところを上げればキリがないが、だいたい下記の通り。

CoreData関連

以前はCoreDataをそのまま使っていたが、今回はMagicalRecordを使用した。

github.com

マイグレーション機能の追加

マイグレーションをミスるとアプリが起動しなくなる。 その辺の処理はかなり気を使った。 この時得られたマイグレーションに関するノウハウは下記に記してある。

qiita.com

qiita.com

ストア処理関連

便利なライブラリがあるのでそれを使用した。

使いやすくて良い。

今後ストア関連の処理を入れる時はこのライブラリを使う。

github.com

クロージャ関連

以前は自作デリゲートを多用していたが、自作デリゲートよりもクロージャを渡した方がスマートに書けることに気づいた。

デリゲートを多用するとちょっとした処理の追加に多くのファイルを修正しなくてはいけないが、クロージャだとそれがない。

書きやすく、読みやすくなる。

検索機能

検索機能を強化した

以前は、アイディアのタイトルのみを検索するようにしていたが、今回はアイディアに紐づくデータ全てから検索できるようにしている。

NSPredicateを使いこなせるとCoreDataに対する検索周りがやりやすくなる。

NSPredicateの応用先は他にもあるため、是非ともきちんと習得したいところ。

developer.apple.com

FireBase導入

これまで解析系はGoogleAnalyticsを入れていたのだが、これを気にFirebaseに置き換えた。

firebase.google.com

現状不満がない。

アプリのアップデートやアプリ内課金など、重要なイベントを全て自動で拾ってくれるので、そういう点でかなり楽。

脳みそが退化しそう。

push通知やmBaas的な機能は使用していないため、今後使ってみたいところ。

まとめ

全体的にライブラリを多用することで実装時間を大幅に減少させることが出来た印象。

また、Appleが出しているドキュメント類は目を通しておいて損はない。

無駄にハマることが少なくなる。

一度自分で作ったものなので、仕様等は全て把握していた。

マイグレーションにだけ少しハマったが、Objective-CからSwiftへの切り替え自体は容易だった。

これが他者の書いたソースだったり、意図のわからないソースだったりすると移行時に地獄を見そう。