次の方法で共有


クイック スタート: コードの生成 (プレビュー)

このクイック スタートでは、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 TABLESQLステートメントとしてスクリプトアウトします。
  • 現在のデータベースに 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.ProductModelid、およびname列を含むdescription テーブルを表す Entity Framework モデル クラスを C# で生成します。

  • 既存の SalesLT.Product テーブルに基づいて、C# で Entity Framework モデルを生成します。

  • SalesLT.OrderDetailsidorder_dateフィールドを含むcustomer_id テーブルを定義する SQLAlchemy コードを記述し、Pythonとの互換性を確保します。

  • SQLAlchemy を使用して、SalesLT.Customerが指定されたパラメーターと一致するLastName テーブルからすべての顧客を取得するパラメーター化クエリを記述します。

  • 既存の Prisma モデル (schema.prisma) を更新して、SalesLT.Orderid、および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 バインドを使用して、フル スタック アプリを生成します。 次の手順に従います。

  1. バックエンド: 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を使用して、関数をローカルで実行およびテストします。
  2. フロントエンド: Blazor WebAssembly (省略可能)

    • API を使用する Blazor WebAssembly フロントエンドを作成します。
    • 顧客データとフォームを含むテーブルを表示して、新しい顧客を追加します。
    • HttpClientを使用して、Azure Functions エンドポイントを呼び出します。
    • フォーム入力を動的に処理するための双方向データ バインディングを実装します。
    • スタイルとレイアウトには、 Bootstrap または Blazor コンポーネントを使用します。

データベース接続に適切な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 を使用します。 次の手順に従います。

  1. バックエンド: Node.js + Express

    • Prismaを使用し、TediousSQLサーバードライバーとしてデータベース接続を確立します。
    • 次のエンドポイントを使用して、 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 を追加します。
  2. フロントエンド: Next.js + TypeScript (省略可能)

    • API を使用する Next.js フロントエンドを作成します。
    • 顧客データとフォームを含むテーブルを表示して、新しい顧客を追加します。
    • Reactフック (useStateuseEffect) を使用して状態を管理し、データを動的にフェッチします。
    • Tailwind CSSを使用して UI のスタイルを設定します。
    • パフォーマンスを向上させるために、getServerSidePropsにサーバー側のデータ フェッチ (Next.js) を実装します。

データベース接続に適切な .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 makemigrationsmigrateを使用してデータベースの移行を生成する手順を追加します。

フィードバック: コード生成

MSSQL 拡張機能の GitHub Copilot を改良および改善するために、次の GitHub 問題テンプレートを使用してフィードバックを送信します。 GitHub Copilot フィードバック

フィードバックを送信する場合は、次の内容を検討してください。

  • テスト済みのシナリオ – スキーマの作成、クエリの生成、セキュリティ、ローカライズなど、どの領域に重点を置いたかをお知らせください。

  • うまくいったこと - スムーズで役に立ち、期待を超えた経験について説明します。

  • 問題またはバグ – 問題、不整合、または混乱を招く動作を含めます。 スクリーンショットや画面の記録は特に役立ちます。

  • 改善の提案 – 使いやすさの向上、カバレッジの拡大、GitHub Copilot の応答の強化に関するアイデアを共有します。