最近、Voicepaper2という音声読み上げアプリをリリースしたんだけど、一つのアプリをリリースするまで意外といろんなライブラリ、Webサービスなどを使いまくっている。

僕自身、他の人はアプリをリリースするまでどんなツールやサービス使ってるか参考にしたいと思ってきたので、まずは自分が使っていて便利なものを全部紹介してみる。

まず、今回はSwift3でスクラッチから開発したので、Swiftの新しい便利ライブラリをガンガン使えてめちゃ開発が捗った。さらにSwift自体もobj-cよりはるかに簡潔なコードが書けるので視認性がよくなるし、なにより書いてて気持ち良いのでほんとよかった。

Swift出た時は、「おいおい、勘弁してくれよ。もうobj-cで別にいいのに、ライブラリとか分裂するからメンドくさいよ。」と思ってたんだが、今では、「Swift最高、アップルさんGJ。ライブラリも、swiftで検索したら、新しいライブラリってスクリーニングできるから検索しやすいしブラボー!」っていう180度意見が変わっている毎日です。

データベース

Realm Swift
https://realm.io/docs/swift/latest/

実は、今までCoreDataをずっと保守的に使ってきたから、Realmみたいなアップル公式じゃないものは使うべきかすごい迷ったんですよ。Swiftって日本では岸川さんが普及してくれてるから結構心強いんだけど、僕の中ではParseが死んで全部書き直した悪夢があったから躊躇してた。

ところがですよ、一回使ってみたら、こりゃもうCoreDataなんて二度と使いたくないわっていうぐらい使いやすい。もう、使ってみたら一気に、「あ、もうこれでいいわ。」ってなりました。

アプリ内課金部分

SwiftyStoreKit
https://github.com/bizz84/SwiftyStoreKit

Obj-c時代はRSStoreという結構使いやすいもの使ってたんだけど、Swiftのこれのほうがさらに使いやすい。やっぱSwift使ってると優れたライブラリを利用できるから嬉しい。

StoreKit周りは本当にRestoreとか、Subscriptionsのレシートとか自分でゴリゴリ書くと時間がかかってしゃあないのでこういう便利なライブラリは本当助かります。

ちなみに、現時点でこのライブラリ、自動継続課金の、同じグループ内の購入切り替えには対応してないので注意。まあ、調べてみたら、UIの工夫でなんとかなるのでそこまで問題ではなかった。

*参考
iOSアプリで自動継続課金をリジェクトされないためのチェックリスト

端末への設定保存

SwiftyUserDefaults
https://github.com/radex/SwiftyUserDefaults

iOSでは、設定の保存記録などにNSUserDefaultsというものをよく使う。Swiftはかなり書きやすいんだけど、このライブラリ使うとDateとかも保存しやすくなるからマジ便利。特にDateの保存はバグりやすいし、面倒だから、それだけのためにもこれ使う価値あり。

TableViewのUIカスタム

SwiftReorder
https://github.com/adamshin/SwiftReorder

SwipeCellKit
https://github.com/SwipeCellKit/SwipeCellKit

Voicepaperでは、TableViewの並び替え、スワイプで削除という機能を実装しないといけなかった。いいライブラリないかなと思っていくつか使ってみて、上記の二つが一番使いやすかった。ほんとSwiftだと優秀なライブラリ多い。

並び替えはこんな感じで使ってる

スワイプ削除はPocketからの記事をアーカイブするのに

アクティビティHudビュー

PKHUD
https://github.com/pkluz/PKHUD

なにかが成功した時とか、ダウンロード中に表示するHudビュー。このPKHUDはできることは少ないんだけど、とにかくシンプルでめちゃくちゃ使いやすい。凝ったことはできないけど、viewとかの受け渡しとかもあまり考えなくてよいので、とにかく実装がスピーディになるのが特徴。ほんと楽。

日付の操作

SwiftDate
https://github.com/malcommac/SwiftDate

Date使って日付関連のコードを自力で書くのはかなり面倒だし、言語ごと、時差の部分も考慮しないといけないのでバグが本当に起こりやすい。なので、こういうライブラリを使って楽チンになりつつ、バグの心配も未然に防ぐというのがおすすめコースです。

新しいバージョンの告知

iVersion
https://github.com/nicklockwood/iVersion

新しいバージョンがリリースされた時に、「新しいバージョンが出たからアップデートしてね。」とアプリ内でお知らせするライブラリ。実は、SwiftにSirenっていうライブラリも使ってみたんだが、結局iVersionに戻った。理由は、Sirenはリリースノートを表示してくれなかったから。

このライブラリはobj-cだけど、CocoaPod使ってると大抵自動的に利用できるので無問題だった。

同じ開発者の他のアプリを紹介

FTMoreApps
https://github.com/ftapps/FTMoreApps

これもobj-c時代のライブラリだけど、未だにこれを超えるライブラリはないので引き続き利用。アプリ内で、同じ開発者の作った他のアプリを一覧で紹介することができる。表示方法が見やすくて素晴らしい。

僕は設定画面に、「作者のアプリ」というボタンをつけていて、そこでこんなふうに使ってます。

アップデート後にリリースノート表示

TWSReleaseNotesView
https://github.com/iGriever/TWSReleaseNotesView

iOSアプリは自動アップデートがあるので、大抵の人はリリースノートを読む機会がない。なので、頑張って「ここをアップデートしました。ここを修正しました。」とか書いても誰も読んでませんという悲しい自体になるのです。

そんな時、このライブラリ使うと、アップデート後にリリースノートをアプリ内で表示してくれる。これで、ユーザもアプリの近況がわかるし、一生懸命リリースノート書いてたら結構応援してくれる人が増えます。

このライブラリもobj-c時代の古いやつなんだけど、似たようなライブラリが未だに見つからないんですよね。誰か新しいのでいいのあったら@umekun123まで教えてください。

デモ動画でタップ部分を表示する

TouchVisualizer
https://github.com/morizotter/TouchVisualizer

デモ動画を録画する時にタップしてる部分を綺麗に表示してくれる。これ、デモ動画作る時に便利すぎる。iOS11のAppStoreはデモ動画が自動再生されるので、さらに使う機会が増えそうなお勧めライブラリ。

データ解析・クラッシュ解析

Fabric・Crashlytics
https://fabric.io/home

Mixpanel
https://mixpanel.com/

まあ、定番のFabricで、簡単なデータ分析とクラッシュ解析。Crashlyticsは、Xcode側でBitcodeをオンにしてたら相当使い難いので、結局Bitcodeオフにしてリリースしてます。

もっと詳しいコンバージョンとかを調査したい時のためにMixpanelも併用。FabricとMixpanelでだいたい間に合うと思う。

*参考
アプリに広告があると離脱率はどれだけ高まるかをABテストしてみた (MixpanelとSkyLab利用)
Lean Analytics 虚構の数字と改善に繋がる数字

アプリ内サポート・Q&A設置

Helpshift
https://www.helpshift.com/

僕のアプリ開発にはヘルプサポートでフィードバックもらいやすくするの欠かせないんだけど、このHelpshift来年からかなり値上げするんですよね。。スタートプランがなくなって毎月2万以上からがスタートみたいな。。
https://www.helpshift.com/pricing/

僕の周りでも「どこか移行先ねえか。。」って相談してる途中なんだけど、まだ見つかってません。なんか似たようないいのあったら教えていただきたい。Webではいいのあるんだけど、アプリで使いやすいのはよくわからないからなあ。

*参考
フィードバックしやすい状況を作るHelpshift
使いやすいアプリを作る簡単な方法

AppStoreスクリーンショット作成

AppLaunchpad
https://theapplaunchpad.com/

以前使ってた、ScreenshotBuilderっていうサービスが死んだので、クローンみたいに似ているこのサービスを使った。問題は結構お高い。月に30ドル近く、年間99ドル。一回作って解約するのが無難かな。。


*家計簿読み上げのアプリ作ってます。自己紹介と過去ログはこちら