コンテンツにスキップ

ターゲティング

デフォルトでは、環境はすべてのデバイスに flag のデフォルトを配信します。ターゲティングは、一部のデバイスに別のものを配信する仕組みです。ベータテスター、特定のアプリバージョン、全体の 10% など。このページは仕組みを説明し、ロールアウトガイドが実際の使い方を案内します。

ルールはタグを検査します。タグは、問い合わせているデバイスに関する小さなキー/値の事実です。SDK はいくつかの組み込みタグ(appVersion、appBuild、osVersion、platform、sdkVersion)を自動で送り、アプリは cohort: "beta" のような独自のタグを追加できます。

タグについて早めに知っておく価値のあることが 2 つあります。

  • タグは評価され、忘れられます。FortressFlag はタグを、それが届いた 1 つのリクエストに答えるために使い、その後は破棄します。保存されることも、ログに残ることもありません。設計上、タグの履歴はどこにも存在しません。
  • タグはアプリの申告です。タグにはコードが入れたものが何でも載せられます。だから、秘密やユーザーの個人データをタグの値に入れないでください。コホート、バージョン、設定にとどめましょう。

ルール:順序付きリスト、最初の一致が勝つ

Section titled “ルール:順序付きリスト、最初の一致が勝つ”

各 flag と環境の組み合わせは、順序付きのルールリストを持ちます。ルールは AND で結合された条件のグループ(cohort が beta かつ appVersion ≥ 2.0)と、一致したときに配信する値からなります。

評価は単純で、身につけておく価値があります。

  1. ルールは上から下へ確認されます。
  2. 条件がすべて成り立つ最初のルールが値を決めます。それより下は参照されません。順序が意味であり、ダッシュボードでルールを並べ替えられます。
  3. デバイスが送っていないタグに対する条件は成り立ちません。タグがなければ一致もなく、そのルールはスキップされるだけで、エラーにはなりません。
  4. どのルールも一致しなければ、flag のデフォルトが配信されます。

条件のないルールは常に一致します。これがリストの最下部に置く「それ以外の全員」の形です。

条件ではバージョンを比較できます。appVersion ≥ 2.0 のように。バージョンはドットで分割され、左から右へ数値として比較され、欠けている要素はゼロとして読まれます。つまり 2.0 は 2.0.0 と等しく、2.10 は 2.9 より新しいです。ドット区切りの数値として解釈できないデバイスのバージョン(たとえば 2.0-beta)は、単にその条件を成り立たせません。プレリリースの接尾辞はサポートされていないので、プレーンなドット区切りのバージョンで比較してください。

セグメント:名前を付けて再利用するルールの部品

Section titled “セグメント:名前を付けて再利用するルールの部品”

セグメントは名前付きの AND 条件リストです。beta-testers、internal-devices のように、組織全体で一度定義し、flag や環境をまたいでルールから参照します。セグメントを編集すれば、それを使うすべてのルールが追従します。

その影響範囲の広さこそ、セグメントの編集に本番環境レベルの権限が必要な理由です。本番環境のルールから参照されているセグメントは、変更されれば本番環境を変えます。誰が保存したかにかかわらず。

どのルールにもロールアウトの割合を設定できます。条件を満たすすべてのデバイスに一致する代わりに、そのうち最初の 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 文字です。