このクイック スタートでは、Visual Studio Code 内でコンテキスト対応コードを直接生成することで、GitHub Copilot が SQL と ORM の開発を高速化する方法について説明します。 T-SQL を使用している場合でも、Entity Framework、続編、Prisma、SQLAlchemy などの ORM を使用する場合でも、GitHub Copilot を使用すると、テーブルのスキャフォールディング、スキーマの進化、繰り返しのスクリプトの削減に役立ちます。これにより、アプリケーション ロジックの構築に集中できます。
始めましょう
データベースに接続されていて、MSSQL 拡張機能でアクティブなエディター ウィンドウが開かれていることを確認します。 この接続により、 @mssql
チャット参加者はデータベース環境のコンテキストを理解できるため、正確でコンテキストに対応した提案が可能になります。 データベース接続がないと、チャット参加者は意味のある応答を提供するスキーマまたはデータ コンテキストを持ちません。
次の例では、 AdventureWorksLT2022
サンプル データベースを使用します。このデータベースは、 Microsoft SQL Server サンプルとコミュニティ プロジェクト のホーム ページからダウンロードできます。
最適な結果を得るには、独自の環境に合わせてテーブル名とスキーマ名を調整します。
チャットに @mssql
プレフィックスが含まれていることを確認します。 たとえば、「 @mssql
」と入力し、その後に質問またはプロンプトを入力します。 これにより、チャット参加者は、SQL 関連のサポートを求めていることを理解できます。
GitHub Copilot を使用したコード生成
GitHub Copilot を使用して、接続されたデータベースの構造を反映し、ベスト プラクティスに従う SQL と ORM 互換のコードを生成します。 テーブルとリレーションシップの定義から、スクリプト ビュー、移行ファイルの構築、データ アクセスレイヤーと API のスキャフォールディングまで、GitHub Copilot は、迅速かつ確実に移動するのに役立ちます。
チャット参加者から質問できる一般的なユース ケースと例を次に示します。
SQL コードの生成
GitHub Copilot は、スクリプト作成、テーブルの作成と変更、ストアド プロシージャやビューの記述など、さまざまな開発シナリオに対応した SQL コードを生成するのに役立ちます。 これらの例は、GitHub Copilot を使用して反復的な SQL スクリプトを自動化し、T-SQL 開発のベスト プラクティスに従う方法を示しています。
-
SalesLT
スキーマ内のすべてのテーブルを、CREATE TABLE
のSQL
ステートメントとしてスクリプトアウトします。 - 現在のデータベースに
SQL
ストアド プロシージャを記述します。 プロシージャは、SalesLT.Customer
が指定されたパラメーターと一致するLastName
テーブルからすべての顧客を取得する必要があります。 T-SQL のベスト プラクティスを必ず使用してください。 - すべての制約とインデックスを含む、
SalesLT.Customer
テーブルをCREATE TABLE
ステートメントとしてスクリプト化します。 -
SQL
スクリプトを生成して、SalesLT.Customer
テーブルとSalesLT.SalesOrderHeader
テーブルを結合するビューを作成し、顧客の名前とその合計注文金額を表示します。 - 既定のタイムスタンプを持つ
SQL
列を追加して、SalesLT.Customer
テーブルを変更するlast_updated
スクリプトを記述します。
ORM マイグレーションを生成
GitHub Copilot では、選択したスキーマ コンテキストとフレームワークに基づいて、ORM 互換の移行とモデル定義を生成できます。 SequelizeからEntity Framework、Prisma、SQLAlchemyまで、GitHub Copilotは、アプリケーションのデータモデルに合った変更の足場を作るのに支援します。
JavaScriptのSequelizeモデルを生成して
email
テーブルにvarchar(256)
列(SalesLT.Customer
)を追加します。SalesLT.ProductModel
、id
、およびname
列を含むdescription
テーブルを表す Entity Framework モデル クラスを C# で生成します。既存の
SalesLT.Product
テーブルに基づいて、C# で Entity Framework モデルを生成します。SalesLT.OrderDetails
、id
、order_date
フィールドを含むcustomer_id
テーブルを定義する SQLAlchemy コードを記述し、Python
との互換性を確保します。SQLAlchemy を使用して、
SalesLT.Customer
が指定されたパラメーターと一致するLastName
テーブルからすべての顧客を取得するパラメーター化クエリを記述します。既存の Prisma モデル (schema.prisma) を更新して、
SalesLT.Order
、id
、およびcustomer_id
フィールドを使用して新しいorder_date
モデルを定義します。列やデータ型など、
SalesLT.Product
テーブルの SQLAlchemy モデル クラスを生成します。
定型アプリ コードを生成する
GitHub Copilot は、SQL データベースと対話するバックエンドコンポーネントとフロントエンド コンポーネントのスキャフォールディングにも役立ちます。 これらの例では、Azure Functions、Node.js、Django、Next.jsなどの一般的なスタックを使用して、スキーマから動作するアプリケーション コードに進む方法を示します。
サーバーレス バックエンドのSQL接続とBlazor
次の例は、GitHub Copilot Chat でエンド ツー エンド ソリューションをスキャフォールディングするために使用できる完全なプロンプトを示しています。 これらのプロンプトには、Copilot がバックエンドレイヤーとフロントエンドレイヤーの両方で正確で構造化されたコードを生成するのに役立つ詳細な手順とコンテキストが含まれています。
Functions と Blazor WebAssembly 用の Azure SQL バインドを使用して、フル スタック アプリを生成します。 次の手順に従います。
バックエンド: SQL バインドを使用した Azure Functions (C#)
-
SQL Bindings
テーブルからデータを自動的に読み書きするようにSalesLT.Customer
を構成します。 - 次のエンドポイントを使用して、HTTP によってトリガーされる関数を実装します。
-
GET /api/customers
– すべての顧客を取得します。 -
GET /api/customers/{id}
– ID で特定の顧客を取得します。 -
POST /api/customers
– 新しい顧客を作成します。 -
PUT /api/customers/{id}
– 既存の顧客を更新します。 -
DELETE /api/customers/{id}
– 顧客を削除します。
-
- データベース接続とログ記録には
Dependency Injection
を使用します。 - データベース接続文字列と環境変数を格納する
appsettings.json
ファイルを含めます。 -
Azure Functions Core Tools
を使用して、関数をローカルで実行およびテストします。
-
フロントエンド: Blazor WebAssembly (省略可能)
- API を使用する
Blazor WebAssembly
フロントエンドを作成します。 - 顧客データとフォームを含むテーブルを表示して、新しい顧客を追加します。
-
HttpClient
を使用して、Azure Functions
エンドポイントを呼び出します。 - フォーム入力を動的に処理するための双方向データ バインディングを実装します。
- スタイルとレイアウトには、
Bootstrap
またはBlazor
コンポーネントを使用します。
- API を使用する
データベース接続に適切なAzure Functions
またはBlazor WebAssembly
構成を使用して、.env
バックエンドとlocal.settings.json
フロントエンドの両方をローカルで実行するためのセットアップ手順がプロジェクトに含まれていることを確認します。
Full-Stack は Node.js と Next.js と一緒に
API ルートやデータベース統合など、バックエンドの完全なセットアップを生成するために GitHub Copilot Chat で指定できる詳細なプロンプトを次に示します。
ローカルの SQL Database に接続する Express で Node.js を使用して REST API を生成します。 SQL Server 接続には面倒なパッケージを使用し、ORM として Prisma を使用します。 次の手順に従います。
バックエンド: Node.js + Express
-
Prisma
を使用し、Tedious
をSQL
サーバードライバーとしてデータベース接続を確立します。 - 次のエンドポイントを使用して、
SalesLT.Customer
の API ルートを実装します。-
GET /customers
– すべての顧客を取得します。 -
GET /customers/:id
– ID で特定の顧客を取得します。 -
POST /customers
– 新しい顧客を作成します。 -
PUT /customers/:id
– 既存の顧客を更新します。 -
DELETE /customers/:id
– 顧客を削除します。
-
-
Prisma
テーブルをマップし、SalesLT.Customer
を使用してデータベースの移行を生成するようにprisma migrate dev
を構成します。 - 環境変数 (データベース資格情報、ポートなど) に
dotenv
を使用します。 - API エンドポイントをテストするための
Jest
を追加します。
-
フロントエンド: Next.js + TypeScript (省略可能)
- API を使用する
Next.js
フロントエンドを作成します。 - 顧客データとフォームを含むテーブルを表示して、新しい顧客を追加します。
-
React
フック (useState
、useEffect
) を使用して状態を管理し、データを動的にフェッチします。 -
Tailwind CSS
を使用して UI のスタイルを設定します。 - パフォーマンスを向上させるために、
getServerSideProps
にサーバー側のデータ フェッチ (Next.js
) を実装します。
- API を使用する
データベース接続に適切な .env
構成を使用して、バックエンドとフロントエンドの両方を個別に実行するためのセットアップ手順がプロジェクトに含まれていることを確認します。
バックエンド: Django + Django REST フレームワーク
API ルートやデータベース統合など、バックエンドの完全なセットアップを生成するために GitHub Copilot Chat で指定できる詳細なプロンプトを次に示します。
Django
テーブルのDjango REST Framework
を使用してSalesLT.Customer
バックエンドをスキャフォールディングします。 次の手順に従います。
次のエンドポイントで Django の
ModelViewSet
を使用して API ルートを実装します。-
GET /customers
– すべての顧客を取得します。 -
GET /customers/{id}
– ID で特定の顧客を取得します。 -
POST /customers
– 新しい顧客を作成します。 -
PUT /customers/{id}
– 既存の顧客を更新します。 -
DELETE /customers/{id}
– 顧客を削除します。
-
python manage.py makemigrations
とmigrate
を使用してデータベースの移行を生成する手順を追加します。
フィードバック: コード生成
MSSQL 拡張機能の GitHub Copilot を改良および改善するために、次の GitHub 問題テンプレートを使用してフィードバックを送信します。 GitHub Copilot フィードバック
フィードバックを送信する場合は、次の内容を検討してください。
テスト済みのシナリオ – スキーマの作成、クエリの生成、セキュリティ、ローカライズなど、どの領域に重点を置いたかをお知らせください。
うまくいったこと - スムーズで役に立ち、期待を超えた経験について説明します。
問題またはバグ – 問題、不整合、または混乱を招く動作を含めます。 スクリーンショットや画面の記録は特に役立ちます。
改善の提案 – 使いやすさの向上、カバレッジの拡大、GitHub Copilot の応答の強化に関するアイデアを共有します。
関連コンテンツ
- Visual Studio Code 用 MSSQL 拡張機能のための GitHub Copilot
- クイック スタート: チャットとインライン GitHub Copilot の提案を使用する (プレビュー)
- クイック スタート: スキーマ エクスプローラーとデザイナーを使用する (プレビュー)
- クイック スタート: スマート クエリ ビルダーを使用する (プレビュー)
- クイック スタート: クエリ オプティマイザー アシスタント (プレビュー)
- クイックスタート: ビジネス ロジック説明ツールを使用する (プレビュー)
- クイック スタート: Security Analyzer (プレビュー)
- クイック スタート: ローカライズと書式設定ヘルパー (プレビュー)
- クイック スタート: テストとモック作成のためにデータを生成する (プレビュー)
- 制限事項と既知の問題