アプリ開発者なら、ユーザーレビューがアプリの成功と信頼性にどれほど重要か、よくご存じでしょう。ポジティブなレビューはより多くのユーザーを惹きつけるだけでなく、App Store のランキング向上にも貢献します。しかし、間違ったタイミングでレビューを求めたり、良い体験をしていないユーザーに表示してしまうと、フラストレーションやネガティブなフィードバックにつながりかねません。そこで登場するのが ReviewKit です。最近ポジティブなアクティビティがあったユーザーにだけ、適切なタイミングでレビューをリクエストするオープンソースのツールです。
問題と解決策
従来、アプリ開発者はユーザーにレビューを求めるためにシンプルなプロンプトを使ってきました。アプリを開いた直後やランダムなタイミングで表示することが多く、これはユーザーにとって邪魔で迷惑に感じられ、ネガティブなレビューやアプリのアンインストールにつながることもありました。
私は最初のアプリ RemafoX で、レビューを求めるタイミングを判断するためのかなり複雑なロジックを開発しました。しかし、最新のアプリ(Twoot it!)では、本当に大切なことは何かを見極めてロジックをさらにシンプルにしました。ReviewKit はその過程から生まれたものです。

ReviewKit は、ユーザーの最近のポジティブなアクティビティに基づいて、レビューを求めるタイミングをインテリジェントに判断することでこの問題を解決します。アプリで満足のいく体験をし、特定のアクティビティに参加したユーザーにのみレビューを依頼します。これにより、ポジティブなレビューを受ける可能性を高めながら、ユーザーの不快感を最小限に抑えます。
もちろん、アプリによって「ポジティブなアクティビティ」の定義は異なるので、それはあなた自身で指定する必要があります。でも、残りは ReviewKit が処理してくれますし、カスタマイズも可能です!
ReviewKit のセットアップ

ReviewKit の導入はとても簡単です。以下の手順に従って、iOS または macOS アプリに統合してください。デプロイメントターゲットは iOS 11 や macOS 10.14 まで対応しているので、ほとんどの企業向けアプリもカバーできるはずです。
ステップ 1:ReviewKit をアプリに追加する
ReviewKit をプロジェクトに追加するには、Swift Package Manager(SPM)を使用します。Xcode でプロジェクトを開き、「Swift Packages」タブに移動してください。「+」ボタンをクリックし、ReviewKit のリポジトリ URL を入力します:
https://github.com/FlineDev/ReviewKit.git最後に、ReviewKit をリンクするアプリターゲットを選択してください。
ステップ 2:レビュー条件を調整する(任意)
ReviewKit にはデフォルトのレビューリクエスト条件があり、直近 14 日間に 3 件以上のポジティブイベントが必要です。これらをカスタマイズしたい場合は、ReviewCriteria を使って以下のように調整できます:
ReviewKit.criteria = ReviewCriteria(
minPositiveEventsWeight: 5,
eventsExpireAfterDays: 30
)上記の例では、ユーザーが最低 5 件のポジティブイベントを持つ場合にのみレビューをリクエストし、イベントは 30 日後に期限切れになるように設定しています。これは、後述する呼び出しでデフォルトの weight を 1 にした場合の動作です。
ステップ 3:ポジティブイベントの記録とレビューのリクエスト
ユーザーが特定のワークフローやアクティビティを完了したときにレビューリクエストをトリガーするには、ReviewKit を使ってポジティブイベントを記録する必要があります。ユーザーがこれらのアクティビティを完了するたびに、以下のメソッドを呼び出してください:
ReviewKit.recordPositiveEventAndRequestReviewIfCriteriaMet()このメソッドは、ユーザーの最近のポジティブなアクティビティに基づいて、レビューリクエストの条件を満たしているかどうかを自動的に判断します。条件が満たされていれば、レビューのプロンプトが表示されます。
ステップ 4:その他のポジティブなアクティビティを記録する(任意)
主要なワークフロー以外にも、ポジティブなユーザー体験を示す追加のアクティビティを考慮することが重要です。ただし、これらのタイミングでレビューを求めると、すでにワークフローに集中しているユーザーを中断してしまう可能性があり、レビューを残す意欲が下がったり、評価に悪影響を与えたりすることがあります。これらのイベントを記録するには、recordPositiveEvent() 関数を使います:
// 任意で、カスタムの `weight` パラメータを渡すこともできます(デフォルトは 1)
ReviewKit.recordPositiveEvent()上記の両メソッドはどちらも任意の weight: Int パラメータを受け取ることができ、レビューリクエストの条件を微調整するのに使えます。たとえば、アプリに異なるレベルのエンゲージメントがある場合、最も重要なアクティビティに weight を 3 に設定し、minPositiveEventsWeight を 10 程度に設定できます。ポジティブイベントのデフォルトの weight は 1 です。
iOS アプリでの使用例
より理解を深めるために、サンプルの iOS アプリを考えて、ReviewKit の効果的な使い方を見てみましょう。ユーザーが投稿したり、他の人の投稿に「いいね」できるソーシャルメディアアプリがあるとします。以下がその例です:
import ReviewKit
func sendPost() {
// ...
// 投稿送信後にポジティブイベントを記録
ReviewKit.recordPositiveEventAndRequestReviewIfCriteriaMet(weight: 3)
}
func handlePostLike() {
// ...
// 「いいね」に対してさりげなくポジティブイベントを記録
ReviewKit.recordPositiveEvent()
}上記の例では、sendPost() と handlePostLike() メソッドが、異なるアクティビティに対するポジティブイベントの記録方法を示しています。投稿を送信した後に recordPositiveEventAndRequestReviewIfCriteriaMet() を呼び出しています。これはユーザーがアプリ内で行ったワークフローの完了を意味し、レビューを求めるのに良いタイミングだからです。
ユーザーが投稿に「いいね」するとき、彼らはまだコンテンツを閲覧するというユースケースの途中にあります。これもポジティブなアクティビティとして記録すべきですが、このタイミングでレビューを求めるのは邪魔になる可能性があるため、recordPositiveEvent() だけを呼び出しています。

Twoot it! アプリでの ReviewKit の使用例
まとめ
ReviewKit は、ユーザーにアプリのレビューを求めるためのシンプルかつ効果的なソリューションです。最近のポジティブなアクティビティに基づいてレビューのリクエストタイミングをインテリジェントに判断することで、ポジティブなレビューを受ける可能性を高め、アプリの成長を助けます。簡単な統合とカスタマイズ可能な条件設定により、ReviewKit はすべての iOS 開発者やチームにとって貴重なツールです。

