ターゲティング
デフォルトでは、環境はすべてのデバイスに flag のデフォルトを配信します。ターゲティングは、一部のデバイスに別のものを配信する仕組みです。ベータテスター、特定のアプリバージョン、全体の 10% など。このページは仕組みを説明し、ロールアウトガイドが実際の使い方を案内します。
タグ:ルールが見るもの
Section titled “タグ:ルールが見るもの”ルールはタグを検査します。タグは、問い合わせているデバイスに関する小さなキー/値の事実です。SDK はいくつかの組み込みタグ(appVersion、appBuild、osVersion、platform、sdkVersion)を自動で送り、アプリは cohort: "beta" のような独自のタグを追加できます。
タグについて早めに知っておく価値のあることが 2 つあります。
- タグは評価され、忘れられます。FortressFlag はタグを、それが届いた 1 つのリクエストに答えるために使い、その後は破棄します。保存されることも、ログに残ることもありません。設計上、タグの履歴はどこにも存在しません。
- タグはアプリの申告です。タグにはコードが入れたものが何でも載せられます。だから、秘密やユーザーの個人データをタグの値に入れないでください。コホート、バージョン、設定にとどめましょう。
ルール:順序付きリスト、最初の一致が勝つ
Section titled “ルール:順序付きリスト、最初の一致が勝つ”各 flag と環境の組み合わせは、順序付きのルールリストを持ちます。ルールは AND で結合された条件のグループ(cohort が beta かつ appVersion ≥ 2.0)と、一致したときに配信する値からなります。
評価は単純で、身につけておく価値があります。
- ルールは上から下へ確認されます。
- 条件がすべて成り立つ最初のルールが値を決めます。それより下は参照されません。順序が意味であり、ダッシュボードでルールを並べ替えられます。
- デバイスが送っていないタグに対する条件は成り立ちません。タグがなければ一致もなく、そのルールはスキップされるだけで、エラーにはなりません。
- どのルールも一致しなければ、flag のデフォルトが配信されます。
条件のないルールは常に一致します。これがリストの最下部に置く「それ以外の全員」の形です。
バージョン比較
Section titled “バージョン比較”条件ではバージョンを比較できます。appVersion ≥ 2.0 のように。バージョンはドットで分割され、左から右へ数値として比較され、欠けている要素はゼロとして読まれます。つまり 2.0 は 2.0.0 と等しく、2.10 は 2.9 より新しいです。ドット区切りの数値として解釈できないデバイスのバージョン(たとえば 2.0-beta)は、単にその条件を成り立たせません。プレリリースの接尾辞はサポートされていないので、プレーンなドット区切りのバージョンで比較してください。
セグメント:名前を付けて再利用するルールの部品
Section titled “セグメント:名前を付けて再利用するルールの部品”セグメントは名前付きの AND 条件リストです。beta-testers、internal-devices のように、組織全体で一度定義し、flag や環境をまたいでルールから参照します。セグメントを編集すれば、それを使うすべてのルールが追従します。
その影響範囲の広さこそ、セグメントの編集に本番環境レベルの権限が必要な理由です。本番環境のルールから参照されているセグメントは、変更されれば本番環境を変えます。誰が保存したかにかかわらず。
パーセンテージロールアウト
Section titled “パーセンテージロールアウト”どのルールにもロールアウトの割合を設定できます。条件を満たすすべてのデバイスに一致する代わりに、そのうち最初の N% だけに一致します。「ベータテスターの 10%」はこうして実現されます。条件が先、割合のゲートが後です。
ロールアウトを安心して頼れるものにしている性質が 3 つあります。
- 固定的(sticky)。デバイスが割合の内側にいるかどうかは、デバイスの ID と flag のキーから計算されます。同じデバイスはすべてのリクエストで同じ答えを得ます。誰もロールアウトの内外でちらつくことはなく、10% を 20% に上げても元の 10% は残ります。
- flag ごと。計算には flag のキーが混ぜ込まれるので、ある flag の 10% ロールアウトと別の flag の 10% ロールアウトは、あなたのフリートの異なる 1 割を捕まえます。すべての実験を一度に受ける、永遠に不運な 10% のデバイスは存在しません。
- 何も保存されません。コホートの所属は純粋な算術で、リクエストごとに再計算されます。FortressFlag はどのデバイスがどのロールアウトに入っているかの記録を持ちません。漏れるものも、片付けるものもありません。
普段は突き当たらない程度に十分に大きく、ペイロードが有界にとどまるよう固定されています。flag ごと・環境ごとに最大 20 ルール、ルールごとに 5 条件(セグメントの参照は 1 つと数え、セグメント自体は最大 10 条件を持てます)、タグのキーは最大 64 文字、条件の値は最大 256 文字です。
- パーセンテージロールアウトを設定する:タスクを手順ごとに
- 環境とプロジェクト:ターゲティングは環境ごと
- flag がアプリに届くまで:デバイスがルールを決して見ない理由