Make features discoverable with TipKit ざっくりまとめ
Make features discoverable with TipKitを視聴したときのメモです。詳しい情報、正確な情報は元動画を参照してください。
TipKitとは
アプリ開発者は新しい機能をユーザに知ってもらう必要がある。TipKitはアプリにヒントを簡単に表示できる新しいフレームワーク。新しい機能の存在を知らせたり、隠れた機能の発見を促したり、タスクを達成するためのヒントを示したりすることができる。
TipKitはiPhone, iPad, Mac, Apple Watch, Apple TVで利用できる。
良いtip、悪いtip
効果的なtipはアクションしやすく、示唆的で、覚えやすい。
良くないtipはプロモーション、エラーメッセージ、アクションを伴わないもの、複雑すぎるものなど。
tipの作り方
サンプルアプリのBackyard BirdsにはFavoriting a Backyardという機能がある。この機能を使うと一番気になっている庭に簡単にアクセスできる。ここでは、この機能を使えるボタンにtipを表示することを考える。
tipはタイトルとメッセージで構成されるので、それらを定義する。
カスタマイズもできる。
アクションボタンもつけられる。
TipsCenterはアプリの起動間でtipやその関連イベントを保持できたり、tipのテストを容易にしたりできる。
tipには2つのタイプがある。1つはポップオーバータイプで、ボタンやその他の要素を指し示すことができる。現在のアプリ画面から移動することなく案内するときに便利。
もう1つはインラインビュータイプ。UIをブロックすることなく表示できる。
いずれの場合も、解説したいボタンや要素の近くに表示すると良い。
サンプルコードに戻り、裏庭をお気に入りするボタンに対してポップオーバータイプでtipを表示することを考える。
これでも良いが、最も適切なタイミングで表示するために、いくつかのルールを追加することを考える。
ルール
裏庭をお気に入りにする機能のtipは便利ではあるものの、例えばお気に入り機能を使ったことがある人にとってはそう感じないかもしれない。また、アプリを滅多に使わない人もお気に入り機能はあまり興味がないかもしれない。Appleでは、アプリ内チュートリアルはその恩恵を受ける人に焦点を当てるべきだと考えており、アプリで何かを達成しようとしている間に邪魔しないことを目指している。
tipを最も理想的なタイミングで、最も関連性の高いユーザにのみ表示するためには、TipKitのルールを使ってtipをいつ表示すべきかを正確に判断すると良い。ルールには主に2つのタイプがある。1つ目はパラメータベース。2つ目はイベントベースで、tipを表示する前に実行する必要があるアクションを定義できる。
まずはパラメータベースのルールを使用してログインしているかどうかを確認する。
今度は裏庭の詳細ビューに少なくとも3回行った場合のみtipが表示されるようにしてみる。
BackyardDetailViewを表示したときに「表示した」イベントを発火させておく。
今度はアプリを定期的に使用しているユーザにだけtipを出すようにしてみる。イベントベースのルールに日付クエリ修飾子を追加して、過去5日間に裏庭の詳細ビューに3回行った場合のみtipが表示されるようにする。
イベントにはタイプを追加することもできる。今度は特定の裏庭の詳細ビューに行った場合のみに絞り込んでみる。まずDetailViewDonationを作成し、裏庭IDを持たせる。
裏庭IDを絞り込み条件として追加する。
このカスタム条件を定義するときは保存されるデータのサイズに注意する必要がある。サイズが大ければ大きいほどクエリの実行が遅くなり、パフォーマンスが低下する。
tipの表示/非表示
「ユーザがtipで紹介した機能を使用したら消えるようにしたい」「複数のtipを用意している場合は一度に表示しないようにしたい」などの要望にも応えられる。
Backyard Birdsアプリに5つのtipがあるとする。TipCenterを使えば別のtipが表示されるまでの時間を設定することができる。24時間ごとに1つのtipを表示したい場合は .daily
、60分ごとなら .hourly
を設定すれば良い。TimeInterval値を入力して期間をカスタムすることもできる。すぐに表示したいなら .immediate
を使用することもできる。
特定のtipで上記の設定を無視したい場合は .ignoresDeisplayFrequency
オプションを付与する。
tipで紹介した機能を使った場合、またはtipを表示する条件は揃ってるが、まだ興味がなさそうな場合はtipを表示しないこともできる。Backyard Birdsアプリで、あるユーザがログイン済みかつ過去5日間に3回裏庭詳細ビューを開いているが、裏庭のお気に入りボタンをタップしたことがない場合を考えてみる。tipを見てお気に入りボタンをタップしたら .userPerformedAction
を呼び出し、tipを非表示にするようにした。
.maxDisplayCount
を使えば、指定した回数よりも多く表示された場合は表示されなくなる。
.invalidate
メソッドを使って適切だと思う基準に沿ってtipを破棄することもできるし、iCloud経由でtipに関する情報を同期して、他のデバイスの表示条件を操作することもできる。例えばアプリがiPadとiPhoneの両方にインストールされていて、両方のデバイスで機能が同じ場合は、両方のデバイスでtipを表示しない方が良い。
テスト
テストが簡単になるよう、TipKitには必要に応じてtipを表示/非表示にできるようにルールを回避できるAPIが存在する。アプリ内の全てのヒントをテストするにはTipsCenterの設定に .showAllTips
を追加する。テスト時に特定のヒントのみ表示したい場合は .showTips
を使用して特定のIDを渡すか、 .hideTips
を使用して特定のtipが表示されないようにする。すべてのtipを表示しないようにするには .hideAllTips
を使用する。 .resetDatastore
を使用してTipKitデータストア内のすべての情報を削除することもできる。
プロジェクトのスキームに追加して起動引数としても利用できる。
その他
- サンプルコードはdeveloper.apple.comで入手することができる
- TipKitのHuman Interface Guidelinesがある
Discussion