EXPLAZA Tech Blog

株式会社エクスプラザのテックブログです

Neosyncによる個人情報の匿名化と合成データ生成:開発者体験の向上へ

EXPLAZAの jun です。
開発者の日常は、テスト、デバッグ、そして何よりもプライバシー保護が大きな課題となっています。特に、実際の個人情報を用いたデータの取り扱いは、多くのリスクを伴います。そこで今回紹介するのが、データの匿名化と合成データ生成を簡単かつ効率的に行えるオープンソースツール「Neosync」です。このツールを使えば、開発環境の同期も同時に行うことができ、実環境でのテストの精度を落とすことなく、プライバシー保護を徹底できます。本記事では、Neosyncがどのようにこれらの問題を解決するかを、具体的な使用例とともに紹介します。

まず今回はSupabaseを利用するため、シンプルなusersテーブルを作成します。

CREATE TABLE public.users (
    id UUID PRIMARY KEY,
    first_name VARCHAR(255) NOT NULL,
    last_name VARCHAR(255) NOT NULL,
    email VARCHAR(255) NOT NULL,
    age INTEGER NOT NULL
);


次にNeosyncで会員登録します。 登録完了後、ConnectionsをクリックしてSupabaseと接続していきます。

New Connectionをクリックすると、Supabaseが選択できるようになるため必要な接続情報を入力します。 入力後はTest Connectionを実行して、問題がなければSubmitします。

では必要な準備が終わったので、コア機能であるデータ生成を試します。 Jobsから新しいJobを作成します。 今回はData Generationを試しますが、OpenAIのAPIを利用したData Generationもあるようです。

適当なJobの名前を入力、Initiate Job RunはYesを選択します。Yesを選択すると、Job作成直後に実行されるようです。

次に接続先を聞かれるのでConnectionsで接続したSupabaseを選択します。

最後にSchemaを作成していきます。

Number of Rows: 生成する行数
Table Selection: 生成したデータを挿入したいテーブル(users)を選択して、右矢印で右側に移動

テーブルの移動が完了すると、Transformer Mappingにテーブルのカラムが表示されます。 各カラムのTransformersをクリックすると、どのようなデータを生成するか決められるので適切な選択肢を選択します。

選択が完了後、SubmitをクリックしてJobを実行します。実行が完了すると先ほど作成したusersテーブルにデータが挿入されています。


次はもう一つのコア機能であるデータの匿名化を試していきます。
まず事前にSupabaseで同じusersテーブルを持つDBを作成して、Neosyncを接続をしておきます。 接続が完了したら、先ほどと同じように新しいJobを作成して、今回はData Synchronizationを選択します。

Sourceは最初に接続したDBを選択、Destination(s)は最後に接続したDBを選択します。

先ほどのJobと同様、Table Selectionではusersを選択します。

テーブルの移動が完了すると、Transformer Mappingにテーブルのカラムが表示されので、そのまま同期したいカラムはTransformersでPassthroughを選択してください。

匿名化したいカラムはTransform ~を選択します。今回はid以外を匿名化してデータを同期したいと思います。

SaveしてJobを実行します。実行完了後に同期先のusersテーブルを確認します。

idのみ同期され、その他のカラムは匿名化されていることが確認できました。

同期先のusersテーブル

同期もとのusersテーブル


これで、Neosyncを活用してデータの匿名化や合成データ生成、そして環境同期を行う方法についての紹介は終わりです。今回紹介したNeosyncは、プライバシー保護を強化しながら、テストやデバッグの精度を向上させるための強力なツールです。データの取り扱いにおけるリスクを最小限に抑えつつ、開発者体験を向上させることで、より効率的で安全な開発プロセスを実現します。
みなさんもぜひ試してみてください!