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