Web クイックスタート
数分で、あなたの Web サイトは本物のフィーチャーフラグを読むようになります。永続キャッシュ、あらゆる状況でのフェイルセーフな答え、そしてブラウザ側で管理するものは何もありません。
ランタイム依存はゼロ。SDK 全体が gzip で 10 kB の上限の下に収まります。
1. インストール
Section titled “1. インストール”SDK は GitHub の公開リポジトリにあります。そこから直接、リリースに固定してインストールしてください。
npm install github:FortressFlag/FortressFlag_SDK_web#v1.0.0パッケージはインストール時に自分でビルドされ、以下の import がそのエントリポイントです。
2. SDK を起動する
Section titled “2. SDK を起動する”ページやアプリのブートストラップの早い段階で 1 回。
import { Environment, FortressFlag } from "@fortressflag/sdk-web";
FortressFlag.start({ sdkKey: "ffc_prod_…", // プロジェクトの SDK キー画面から environment: Environment.PRODUCTION,});start は即座に戻ります。前回の訪問でキャッシュされた値はすぐに利用でき、新しい値はバックグラウンドで届きます。このキーはクライアントキーで、設計上ページソースに見えるものです。
3. flag を読む
Section titled “3. flag を読む”if (FortressFlag.isEnabled("new-checkout", false)) { // 新しいチェックアウトを描画する}stringValue と numberValue は多変量 flag を同じように読み、FortressFlag.onChange は値が動いたときに教えてくれるので、再描画できます。
これで完了です。flag は公開されています。ダッシュボードで切り替えてページを開き直せば(あるいはポーリングを待てば)、追従するのを確かめられます。
ここでは何も例外を投げない
Section titled “ここでは何も例外を投げない”この API のどの呼び出しも例外を投げず、どの promise も reject されません。すべての読み取りはカスケードを通じて解決されます。最新の取得値、次にこのブラウザが記録した最後の値、次にあなたのデフォルト、次に false。FortressFlag の障害、死んだネットワーク、広告ブロッカー、失効したキー。そのすべてが flag の値として解決され、どれもエラーとしてあなたのコードに届くことはありません。
(広告ブロッカーのケースは現実のものです。一部のプライバシー拡張機能は flag のリクエストをブロックします。キャッシュされた値は配信され続け、一度も取得していないブラウザはあなたのデフォルトを配信します。「uBlock を入れていると flag が更新されない」はカスケードが働いているのであって、バグではありません。)
ブラウザに何が入るか、正直に
Section titled “ブラウザに何が入るか、正直に”- デバイス ID は
localStorageに、あなたのオリジンにスコープされて保存されます。ランダムに発行された仮名で、ページ自身の JavaScript から読めます。隣にある SDK キーと同じ種類の値です。 - プライベートウィンドウは使い捨ての ID を発行します。各プライベートセッションは、それが続く間 1 台のデバイスとして数えられます。サイトデータを消去したユーザーも新しいデバイスです。そしてあなたの Web サイト、iOS アプリ、Android アプリを使う 1 人の人は最大 3 台のデバイスになります。設計上、プラットフォーム間の紐付けはありません。
- テストスイートは無料です。Playwright、Selenium、Puppeteer、Cypress で駆動されるブラウザは自らを名乗り、SDK はそこで
sim_の ID を発行します。flag は配信され、決して課金されません。 - Web にバージョンタグはありません。SDK は
platformとsdkVersionを自動で送りますが、ページには信頼できるappVersionやosVersionがありません。それらに対するターゲティングルールは、ブラウザには単に一致しません。
- flag がアプリに届くまで:ポーリングとキャッシュ
- デバイス ID と課金:そのストレージキーに入っている ID
- ターゲティング:ルール、セグメント、ロールアウト