スキーマ デザイナーでのGitHub Copilot統合

Visual Studio Codeの MSSQL 拡張機能のスキーマ デザイナーには、GitHub Copilot統合が含まれています。 自然言語を使用して、データベース スキーマを設計、変更、検証できます。 チャット ウィンドウで必要な内容を説明し、GitHub Copilotは、ビジュアル ダイアグラム キャンバスに反映されるスキーマ アクション、生成された Transact-SQL (T-SQL) または ORM コード、および変更の強調表示に要求を変換します。

Visual Studio Code で GitHub Copilot チャット パネルが開いているスキーマ デザイナーのスクリーンショット。

特徴

スキーマ デザイナーでの GitHub Copilot 統合には、次の機能があります。

  • テーブル、列、リレーションシップを自動的に生成して、自然言語の説明からデータベース スキーマを作成します。
  • 会話型プロンプトを使用してテーブルと列を追加、変更、または削除することで、既存のスキーマを進化させます。
  • Prisma、Sequelize、TypeORM、Drizzle、SQLAlchemy、およびEntity Framework Coreをサポートして、ビジュアル スキーマの変更から移行対応のオブジェクト リレーショナル マッピング (ORM) スクリプトを生成します。
  • ガイド付き変更レビュー フローを使用して、AI によって提案された変更を個別に確認し、各編集を受け入れるか元に戻すことができます。
  • データベースに適用される前に、保留中の変更をすべて表示したスキーマの差分を確認します。
  • 1 つの自然言語プロンプトを使用して、空のデータベースでアプリケーション スキーマをブートストラップします。
  • JSON データ、ドキュメント、イメージなどの外部成果物をインポートし、そこからスキーマ要素を生成します。
  • 不足している主キー、無効なデータ型、正規化の問題について、ガードレールを使用してスキーマの変更を検証します。

前提条件

スキーマ デザイナーで GitHub Copilot を使用する前に、次の要件が満たされていることを確認します。

GitHub Copilot でスキーマ デザイナーを開く

GitHub Copilot を使用してスキーマ デザイナーを開くには、次の 2 つのエントリ ポイントを使用します。

  1. MSSQL 拡張機能の オブジェクト エクスプローラーで、データベース ノードを右クリックします。

  2. コンテキスト メニューから [スキーマ デザイナー ] を選択します。

    スキーマ デザイナー オプションを示すデータベース ノードの右クリック コンテキスト メニューのスクリーンショット。

  3. データベース スキーマが読み込まれた状態でスキーマ デザイナー キャンバスが開いたら、スキーマ デザイナーツール バーの [ チャット ] ボタン (GitHub Copilot アイコン付き) を選択して、現在のスキーマ コンテキストをスコープとした GitHub Copilot チャット セッションを開きます。

ヒント

データベース ノードを右クリックし、[ Copilot エージェント モードで開く ] を選択して GitHub Copilot エージェント チャット セッションを開始することもできます。 エージェント モードでは、GitHub Copilot にスキーマ デザイナーを開くように依頼できます (例: "Open schema designer for AdventureWorksLT2022")。 詳細については、「クイック スタート: GitHub Copilot エージェント モードを使用する」を参照してください。

自然言語でスキーマを作成する

スキーマ デザイナーで GitHub Copilot チャット パネルを開くと、プレーンな英語でスキーマを記述し、ビジュアルダイアグラムに表示されるのを確認できます。

  1. チャット ウィンドウに作成するスキーマの自然言語の説明を入力します。

  2. GitHub Copilot では、説明に基づいてテーブル、列、主キー、および外部キーのリレーションシップが生成されます。

  3. 生成されたスキーマを反映するようにリアルタイムで更新されるビジュアル ダイアグラム キャンバスをご覧ください。

試すことができるプロンプトの例を次に示します。

  • "Build a library management system with tables for Books, Authors, Members, and BookLoans"
  • "Design an e-commerce schema with Products, Categories, Orders, OrderItems, and Customers"
  • "Create a blog platform with Users, Posts, Comments, and Tags with many-to-many relationships"

ビジュアル ダイアグラムが更新された状態でスキーマ デザイナーでスキーマの変更を生成する GitHub Copilot のスクリーンショット。

既存のスキーマを進化させます

既存のスキーマから始めて、GitHub Copilot を使用して、テーブルと列を追加、変更、または削除することで、それを進化させます。 ダイアグラム、コード、および差分ビューはすべて、これらの変更をライブで反映します。

スキーマの進化に関するプロンプトの例を次に示します。

  • "Add a description column of type NVARCHAR(500) to the Books table"
  • "Remove the ratings table from the schema"
  • "Rename the 'NumberOfPages' column in the Books table to 'PageCount'"
  • "Add booking/reservation support to this app schema"
  • "Change the data type of the Price column in Products from INT to DECIMAL(10,2)"

ビジュアル ダイアグラムは、変更を適用すると更新されます。 列の追加が正しいテーブル カードに表示されます。 削除された要素は図から消えます。 このプロセスでは、すべてのリレーションシップが保持されます。

スキーマの変更を確認する

GitHub Copilot または UI を使用してスキーマの編集を行った後、保留中のすべての変更を確認してから、データベースに適用します。

スキーマ差分ビュー

スキーマ デザイナーのツール バーの [ 変更の表示 ] ボタンを選択して、差分ビューを開きます。 差分ビューには、次の情報が表示されます。

  • テーブル、列、外部キーなどの追加されたオブジェクトは、明確に [追加済み] としてマークされています。
  • 削除済みとしてマークされたオブジェクトを 削除しました
  • データ型、null 許容性、識別子、既定値、キー フラグについて、変更前と変更後の値を示す変更済みオブジェクト。
  • schema.tableschema.columnなど、すべてのオブジェクトのスキーマ修飾名。
  • 個々の変更にカーソルを合わせると表示される 元に戻す オプション。

追加、削除、および変更されたスキーマ オブジェクトを示すスキーマの相違ビューのスクリーンショット。

GitHub Copilot の変更レビュー

GitHub Copilot が複数のスキーマ編集を適用すると、 自動的に Copilot の変更 レビューが開始されます。 このガイド付きフローでは、AI によって提案された各編集が表示されるので、それらを 1 つずつ確認できます。

  1. 変更箇所の間を前後に進みます。
  2. 変更を 保持するには [承諾] を選択し、 元に戻すには [元に戻す] を選択します。
  3. 変更カードのプロパティ バッジを選択すると、前後の値の詳細が表示されます。

スキーマ変更ごとに [承諾] ボタンと [元に戻す] ボタンを含む GitHub Copilot 変更レビュー フローのスクリーンショット。

変更した各プロパティの前後の値の詳細を表示するには、変更カードのプロパティ バッジを選択します。

変更されたスキーマ プロパティの前後の値を示す変更カードの詳細のスクリーンショット。

最初からスキーマをブートストラップして設定する

GitHub Copilot では、完全なアプリケーション スキーマを生成できます。 空のデータベースで、GitHub Copilot チャット パネルでスキーマ デザイナーを開き、アプリケーションの概念について説明します。 GitHub Copilot は、テーブル、列、主キー、外部キー、リレーションシップなどのデータ モデルを構築します。

スキーマ ブートストラップのプロンプトの例を次に示します。

  • "Build a Twitter clone schema from scratch"
  • "Create a blog platform schema with users, posts, comments, and tags"
  • "Design an inventory management system with warehouses, products, stock levels, and suppliers"
  • "Generate a restaurant reservation system with tables for restaurants, menus, customers, and reservations"

GitHub Copilot で初期スキーマが生成された後は、 "Add a comments feature to this blog platform""Add direct messaging to this Twitter clone"などのフォローアップ プロンプトを使用して、スキーマの進化を続けることができます。

外部成果物をインポートする

GitHub Copilot は、外部コンテキストを受け入れてスキーマ設計を生成または通知できます。 サポートされている入力には、JSON データ、ドキュメント、イメージ、または GitHub Copilot がサポートする任意の形式が含まれます。

外部成果物をインポートするためのプロンプトの例を次に示します。

  • "Import this JSON and model it as tables" その後に JSON ペイロードが続く
  • "I have this API response format, create tables to store this data" その後にサンプルの JSON 応答が続く
  • ドキュメントまたは画像を添付して、次の質問を行います。 "Create a schema based on this document"

JSON 内の入れ子になったオブジェクトは、個別の関連テーブルとしてモデル化されます。 スキーマ デザイナーは、入力からデータ型を推論し、入れ子になった構造体の外部キー リレーションシップを作成します。

スキーマ デザイナー図で JSON ペイロードをインポートし、テーブルを生成する GitHub Copilot のスクリーンショット。

ORM 移行スクリプトを生成する

GitHub Copilotを使用してスキーマを設計または進化した後は、単純なTransact-SQLではなく、移行対応のオブジェクト リレーショナル マッピング (ORM) コードとして変更をエクスポートできます。 [スキーマ デザイナー Copilot] パネルには、保留中のスキーマ変更をフレームワーク固有の移行ファイルに変換する専用の ORM 出力ビューが含まれており、既存のアプリケーション プロジェクトにドロップできます。

次の ORM がサポートされています。

  • Prisma (Node.js/ TypeScript)
  • 続編化 (Node.js)
  • TypeORM (Node.js / TypeScript)
  • Drizzle (TypeScript)
  • SQLAlchemy (Python)
  • Entity Framework Core (.NET)

ORM コードを生成するには、スキーマ デザイナーの [Copilot] パネルのフレームワーク セレクターからターゲットの ORM を選択します。 GitHub Copilot、モデル定義、リレーションシップ マッピング、移行メタデータなど、選択したフレームワークの規則に合わせて移行スクリプトを再生成します。 生成されたスクリプトをプロジェクトの移行フォルダーに直接コピーできます。

パネル上部にフレームワーク セレクターがあり、ビジュアル スキーマ変更から生成された Sequelize の移行スクリプトが表示されている Schema Designer Copilot パネルのスクリーンショット。

ヒント

データベース スキーマの変更をアプリケーション コードと共に追跡する場合は、ORM スクリプトの生成を使用します。 生成された移行ファイルは、各フレームワークの標準形式に従うので、既存の CI/CD パイプラインやコード レビュー ワークフローとクリーンに統合されます。

検証とガードレール

スキーマの進化に伴い、GitHub Copilot は変更を検証し、潜在的な問題をインラインで発生させます。 検証チェックには次のものが含まれます。

  • テーブルに主キーがありません。
  • ターゲット SQL Server プラットフォームのデータ型が無効またはサポートされていません。
  • 1 つの列に格納されているグループの繰り返しなどの正規化の問題。
  • 同じテーブル内の列名が重複しています。
  • 存在しないテーブルまたは列への外部キー参照。

GitHub Copilot は、検出された問題をインラインで説明し、要求された変更に進む前に是正措置を提案します。

制限事項

  • チャット セッションの状態: データベース コンテキストを切り替えると、チャット セッションは履歴を保持しません。 新しいコンテキストによってチャット メモリがリセットされます。
  • アクティブなデータベース接続が必要: スキーマを読み込んで変更するには、MSSQL 拡張機能を介したアクティブなデータベース接続が必要です。 エージェント モードで GitHub Copilot を使用する場合、エージェントは接続を設定できます。
  • AI によって生成された出力を確認する: GitHub Copilotは、不適切なスキーマまたは最適ではないスキーマの推奨事項を示唆している可能性があります。 データベースに発行する前に、生成された SQL とスキーマの変更を常に確認してください。

フィードバックとサポート

アイデアやフィードバックがある場合、またはコミュニティに参加したい場合は、 https://aka.ms/vscode-mssql-discussionsでディスカッションに参加してください。 バグを報告するには、 https://aka.ms/vscode-mssql-bugにアクセスしてください。 新しい機能を要求するには、 https://aka.ms/vscode-mssql-feature-requestに移動します。