Repolode
dif-sh

dif-sh/dif

リポジトリ内のMarkdownファイルでフィーチャーフラグとA/Bテストを管理し、CLIで型付きTypeScriptクライアントにコンパイルできます。

代替できる製品:LaunchDarklyOptimizely

スター
129
フォーク
0
未解決の Issue
1
最終コミット
5 日前

これは何?

difでは、フィーチャーフラグや実験をそれぞれYAML frontmatter付きのMarkdownファイルとして管理し、適用対象のコードの隣にあるgitリポジトリへコミットします。`dif` CLIは、ウェイト、surface参照、オーディエンス属性、実験の競合を検証し、有効な設定を型付きTypeScriptクライアントとcontext.jsonにコンパイルします。ランタイムSDKは依存関係がなく、決定論的な振り分けを行うため、割り当て用データベースやネットワーク通信なしで、同じユーザーにはページの再読み込み後もデバイスをまたいでも同じバリアントが割り当てられます。

Next.js、React、SvelteKitを対象としており、それぞれに個別のnpmパッケージが用意されています。フラグと実験は同じファイル形式を使い、フラグは100%に向けて段階的に拡大する実験として扱われます。CLIには、プロジェクトのひな形作成、実験の下書き、`dif qa`によるユーザーの割り当ての追跡、同じsurfaceでの後続実験に活用できる結論の記録などのコマンドが含まれています。

分析機能は任意です。publishable keyがなければ、フラグの評価はローカルで行われ、データはどこにも送信されません。dif.sh Cloudに接続すると、イベントの取り込みや統計分析を利用できます。また、カスタムイベントハンドラーを使って任意のパイプラインにデータを転送することもできます。実験の作成や結論の記録に使えるClaude Code skillsとエージェント向け指示ファイルもリポジトリに含まれています。

主な機能

  • 01フラグと実験をfrontmatter付きのMarkdownファイルで管理し、プルリクエストでレビューできます。
  • 02`dif validate`でウェイト、surface参照、オーディエンス、実験の競合を検証できます。
  • 03`dif build`で型付きTypeScriptクライアントとcontext.jsonを生成できます。
  • 04Rust CLIとTypeScript SDKで同じ決定論的な振り分けロジックを実行します。
  • 05`dif qa`で、特定のユーザーに割り当てられるバリアントとその理由を確認できます。
  • 06dif.sh Cloudへの接続により、イベントの取り込みと分析を任意で利用できます。

ユースケース

  • ホスト型のフラグ管理ダッシュボードを使わずに、Next.jsまたはSvelteKitのサイトでA/Bテストを実施する。
  • フラグの履歴や実験の結論を、コードと一緒にgitで管理する。
  • AIコーディングエージェントがリポジトリ内のファイルを編集して、フラグを作成・廃止できるようにする。

クイックスタート

  1. 1

    npmでdif CLIをインストールします(Node 20以降が必要です)

    npm install -g @dif.sh/cli
  2. 2

    リポジトリにdif/ディレクトリ、設定ファイル、エージェントファイルを生成します

    dif init
  3. 3

    新しいexperimentファイルを作成し、開いてstatus: activeに設定してからdif buildを実行します

    dif new home-hero-cta --surface home
  4. 4

    activeなexperimentを型付きTypeScriptクライアントにコンパイルします

    dif build

使う前に知っておきたいこと

  • npmでのインストールにはNode 20以降が必要です。スタンドアロンバイナリも提供されています。
  • 生成されたクライアントはgitignoreの対象のため、アプリのビルド前にCIとデプロイ環境でdif buildを実行する必要があります。
  • npm SDKパッケージはESM専用で、require()のエントリーポイントはありません。
  • Cloud analyticsは任意で、dif.sh Cloudのpublishable keyが必要です。

トピック

よくある質問

dif とは?
リポジトリ内のMarkdownファイルでフィーチャーフラグとA/Bテストを管理し、CLIで型付きTypeScriptクライアントにコンパイルできます。 difでは、フィーチャーフラグや実験をそれぞれYAML frontmatter付きのMarkdownファイルとして管理し、適用対象のコードの隣にあるgitリポジトリへコミットします。`dif` CLIは、ウェイト、surface参照、オーディエンス属性、実験の競合を検証し、有効な設定を型付きTypeScriptクライアントとcontext.jsonにコンパイルします。ランタイムSDKは依存関係がなく、決定論的な振り分けを行うため、割り当て用データベースやネットワーク通信なしで、同じユーザーにはページの再読み込み後もデバイスをまたいでも同じバリアントが割り当てられます。
dif は無料で使えますか?ライセンスは?
dif は MIT ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
dif は今もメンテナンスされていますか?
活発にメンテナンス中。dif の最終コミットは 2026年10月16日 です。
dif は何に使えますか?
ホスト型のフラグ管理ダッシュボードを使わずに、Next.jsまたはSvelteKitのサイトでA/Bテストを実施する。 フラグの履歴や実験の結論を、コードと一緒にgitで管理する。 AIコーディングエージェントがリポジトリ内のファイルを編集して、フラグを作成・廃止できるようにする。
dif のインストール方法は?
npmでdif CLIをインストールします(Node 20以降が必要です): npm install -g @dif.sh/cli リポジトリにdif/ディレクトリ、設定ファイル、エージェントファイルを生成します: dif init 新しいexperimentファイルを作成し、開いてstatus: activeに設定してからdif buildを実行します: dif new home-hero-cta --surface home activeなexperimentを型付きTypeScriptクライアントにコンパイルします: dif build
dif はどこで入手できますか?
ソースコードとインストール手順は GitHub にあります:https://github.com/dif-sh/dif

概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。

関連プロジェクト