DOCUMENTATION / GETTING STARTED
Getting Started
まずデモを起動し、用意されている同期設定を確認・変更します。管理画面の操作と同期の流れをつかんだあと、実際の業務DBを使う構成へ進みます。
QUICK START
デモを起動する
デモでは、Customer Portal、CRM、Field Serviceと3種類の業務DBをまとめて起動します。実際の同期処理と同じ経路を使うため、製品の動きを一通り確認できます。
- Windows 11(win-x64)
- .NET SDK 10.0.301
- Aspire CLI 13.4.4
- Docker Desktop
- PowerShellまたはターミナル
Visual StudioとVS Codeは必須ではありません。
リポジトリのルートで、次のコマンドを実行します。
dotnet tool restore
dotnet restore SyncCoordinator.sln
dotnet build SyncCoordinator.sln --no-restore
dotnet test SyncCoordinator.sln --no-build
aspire run --apphost src/SyncCoordinator.AppHost/SyncCoordinator.AppHost.csprojAspire Dashboardに、SyncCoordinator Web、Worker、3つのサンプル業務アプリと業務DBが表示されます。
デモでは、業務システムとDB接続、無効な同期ルール、テーブル/列マッピングまで用意されています。同期用テーブルとTriggerはまだ業務DBへ反映されていません。
FIRST LOGIN
管理者を設定してログインする
初回起動時は、Webサーバー自身のブラウザーから管理者パスワードを登録します。初期設定画面は外部PCから開けません。
- 1初期設定画面を開く
Webサーバー上で
http://localhost:<Webのポート>/account/setupを開きます。 - 2パスワードを登録する
12文字以上128文字以下のパスワードを設定します。ユーザー名は
admin固定です。 - 3ログインする
設定したパスワードでログインすると、ダッシュボードが表示されます。
初期設定とパスワード再設定は、接続元とアクセス先の両方がlocalhostまたはループバックIPの場合だけ利用できます。
DEMO CONFIGURATION
デモの設定を確認・変更する
デモの設定は管理DBへ初期投入されています。まず内容を確認してください。設定を変更するときも、実環境で新しく作るときも同じ管理画面を使います。
SYSTEMS
システムとDB接続
同期元・同期先のDB種別、接続情報、有効状態を管理します。接続先を変えたら、保存前に接続テストを行います。
- デモ
- 3システムを登録済み
RULES
同期ルール
送信元と送信先、片方向・双方向、競合時の扱いを決めます。デモのルールはDB反映前なので無効です。
- デモ
- ルールを作成済み・無効
MAPPINGS
テーブルと列の対応
両側のテーブル、キー列、同期列を対応付けます。値変換、固定値、削除方法もここで設定します。
- デモ
- マッピング設定済み



DATABASE SETUP
業務DBへ反映して有効化する
デモでもこの操作は必要です。各ルールの「DBへ反映」でSQLを確認し、同期用オブジェクトを両側の業務DBへ反映します。
- 1変更内容とSQLを確認する
送信元・送信先それぞれの作成対象と実行SQLを開きます。
- 2業務DBへ反映する
デモでは管理画面から反映できます。本番ではDBAがSQLを確認して実行する方法を推奨します。
- 3すべてのDBを確認する
補助テーブルとTriggerの存在、定義が一致していることを管理画面から検証します。
- 4ルールを有効にする
両側のDBが検証済みになったら、基本設定から同期対象にします。

追加するのは変更検知と重複防止に必要な補助テーブルとTriggerです。既存の業務アプリケーション、業務テーブル、業務列は変更しません。
VERIFY THE DEMO
データを変更して同期を確認する
ルールを有効にしたら、Customer Portalなど送信元のサンプルデータを1件変更します。初期データはTrigger反映前に作られているため、更新して最初の同期を開始します。
対応付けた列と値が、同期先のアプリとDBへ反映されたことを確認します。
「処理状況」でQueueの読取位置、処理結果、試行回数を確認します。
必要に応じて両側の同じ項目を変更し、設定した競合ポリシーの結果を確認します。
USE WITH EXISTING SYSTEMS
実際の業務DBで使う
デモ用DBを本番へ移すのではなく、CoreモードでWebとWorkerを起動し、実際の業務システムを管理画面から登録します。管理画面の操作とDB反映の流れは、デモで行った手順と同じです。
1. Coordinator管理DBを用意する
管理DBはSyncCoordinatorの設定、処理状態、競合履歴を保存するSQL Serverです。業務データを保存するDBとは別です。
EXTERNAL SQL SERVER
用意済みのSQL Serverを使う
CoordinatorDatabase:UseContainerをfalseにし、管理DBの接続文字列を設定します。Dockerは不要です。
DOCKER
管理DBをコンテナで起動する
CoordinatorDatabase:UseContainerをtrueにします。AspireがSQL Serverコンテナと接続文字列を管理します。
2. AppHostをCoreモードにする
src/SyncCoordinator.AppHost/appsettings.Development.jsonへ次の設定を反映します。以下は外部SQL Serverを使う例です。
{
"RunMode": "Core",
"CoordinatorDatabase": {
"UseContainer": false
}
}3. 管理DBの接続文字列を登録する
外部SQL Serverを使う場合は、ConnectionStrings:coordinator-dbをAppHostのUser Secretsへ登録します。パスワードを設定ファイルへ書かないでください。
dotnet user-secrets set --project src/SyncCoordinator.AppHost "ConnectionStrings:coordinator-db" "Server=localhost,1433;Database=SyncCoordinator;User ID=your-user;Password=your-password;Encrypt=True;TrustServerCertificate=True;MultipleActiveResultSets=true"管理DBをコンテナで起動する場合、この接続文字列の登録は不要です。
4. 起動して実際の業務DBを登録する
aspire run --apphost src/SyncCoordinator.AppHost/SyncCoordinator.AppHost.csprojCoreモードにはデモの初期設定がありません。初回ログイン後、「システム」で業務DBを登録し、デモで確認した手順と同じようにルール、マッピング、DB反映を進めます。
本番配備で必要になる管理DBマイグレーション
開発環境ではWebが起動時に管理DBを更新します。本番環境では自動更新が無効なので、配備前に最新マイグレーションを適用します。
対象の管理DBはSYNC_COORDINATOR_DESIGN_CONNECTIONで明示します。AppHostのUser Secretsはこのコマンドから参照されません。
$env:SYNC_COORDINATOR_DESIGN_CONNECTION = "Server=localhost,1433;Database=SyncCoordinator;User ID=your-user;Password=your-password;Encrypt=True;TrustServerCertificate=True;MultipleActiveResultSets=true"
dotnet tool restore
dotnet tool run dotnet-ef database update --project src/SyncCoordinator.Infrastructure/SyncCoordinator.Infrastructure.csproj --startup-project src/SyncCoordinator.Worker/SyncCoordinator.Worker.csproj
Remove-Item Env:SYNC_COORDINATOR_DESIGN_CONNECTION本番運用前の確認
SyncCoordinatorは配備後の変更を同期します。既存データは同期開始前に別の手段で揃えます。
管理画面と認証Cookieを保護するため、本番ではHTTPSで公開します。
WebとWorkerを分ける場合は、両方が使えるKey Ringを用意し、アクセス制御とバックアップを行います。
Workerの通常権限と、同期用オブジェクトを作成するDDL権限を分けます。
NEXT
