Visual Studio Code の GitHub Copilot はインテリジェントなコード候補を提供しますが、これらの提案は、特定のデータベース コンテキストを理解するとさらに強力になります。 Azure Cosmos DB for Visual Studio Code 拡張機能では、GitHub Copilot に Azure Cosmos DB 固有のベスト プラクティスと推奨事項が自動的に提供されるようになりました。これにより、データベース開発のコンテキスト対応 AI 支援が可能になります。
Visual Studio Code 拡張機能を使用して Azure Cosmos DB アカウントに接続すると、ユーザー プロファイル フォルダーに azurecosmosdb.instructions.md ファイルが自動的に作成されます。 このファイルは GitHub Copilot のコンテキスト プロバイダーとして機能し、AI が Azure Cosmos DB のセットアップを理解し、パーティション分割、パフォーマンス チューニング、診断などの最適化された提案を提供できるようにします。
コンテキスト対応 AI が重要な理由
GitHub Copilot のような AI コーディング アシスタントは、持っているコンテキストと同じくらい効果的です。 パーティション分割戦略、インデックス作成パターン、クエリ設計など、アプリケーションが Azure Cosmos DB とどのように対話するかを理解しないと、Copilot によって、データベースのセットアップ用に最適化されていない提案が生成される場合があります。
azurecosmosdb.instructions.md ファイルが自動的にデプロイされると、Copilot は次の機能にすぐにアクセスできます。
- パーティション キーの設計とスループット管理に関する Azure Cosmos DB のベスト プラクティス
- 複数パーティション クエリとインデックス作成のパフォーマンス最適化に関するヒント
- 待機時間またはエラーのトラブルシューティングに関する診断ログの推奨事項
- ベクター検索を含むさまざまなシナリオ向けのコスト効率の高いセットアップ ガイダンス
- SDK の使用パターン とエラー処理戦略
[前提条件]
- コンピューターにインストールされている Visual Studio Code
- GitHub Copilot サブスクリプション (個人、ビジネス、またはエンタープライズ)
- Azure Cosmos DB アカウント (任意の API)
- Cosmos DB リソースにアクセスするための適切なアクセス許可を持つ Azure サブスクリプション
手順 1: 必要な拡張機能をインストールする
まず、Azure Cosmos DB 拡張機能と GitHub Copilot 拡張機能の両方がインストールされていることを確認します。
Azure Cosmos DB 拡張機能をインストールする
- Visual Studio Code を開く
- [拡張機能] ビューに移動するには、[拡張機能の表示] >選択するか、Ctrl + Shift + X (Windows/Linux) または Cmd + Shift + X (macOS) キーを押します。
- "Azure Cosmos DB" を検索するか、拡張機能 ID を使用します。
ms-azuretools.vscode-cosmosdb - [Microsoft による Azure Databases 拡張機能へのインストール] を選択する
- メッセージが表示されたら Visual Studio Code を再読み込みする
GitHub Copilot をインストールする
- [拡張機能] ビューで、"GitHub Copilot" を検索します
- GitHub による GitHub Copilot 拡張機能のインストール
- メッセージが表示されたら、GitHub アカウントにサインインします
- まだアクティブ化していない場合は、Copilot サブスクリプションをアクティブ化します
手順 2: Azure Cosmos DB アカウントに接続する
Azure Cosmos DB アカウントを接続して、コンテキスト対応機能を有効にします。
Azure Cosmos DB for NoSQL 用
- Visual Studio Code で、アクティビティ バーの Azure アイコンを選択して Azure ペインを開きます
- Microsoft Entra ID を使用して Azure アカウントにサインインする
- Azure ツリー ビューで、サブスクリプションを展開します
- Azure Cosmos DB の検索と展開
- Azure Cosmos DB for NoSQL アカウントを右クリックするか、選択して接続します
注
ネットワーク制限のある企業環境にいる場合は、IP アドレスを許可するようにファイアウォール規則を構成することが必要になる場合があります。 最初にすべての IP アドレス (0.0.0.0 から 255.255.255.255.255) をテストできるようにしてから、運用環境で使用できるように許可リストを調整することを検討してください。
手順 3: コンテキスト ファイルの展開を確認する
接続されると、拡張機能によってユーザー プロファイル フォルダーに azurecosmosdb.instructions.md ファイルが自動的に作成されます。
Windows の場所:
%APPDATA%\Code\User\prompts\azurecosmosdb.instructions.md
macOS の場所:
~/Library/Application Support/Code/User/prompts/azurecosmosdb.instructions.md
Linux の場所:
~/.config/Code/User/prompts/azurecosmosdb.instructions.md
このファイルはユーザー プロファイルに自動的に展開され、各プロジェクトで重複することなく、すべての Visual Studio Code ワークスペースで使用できるようになります。
手順 4: コンテキストに対応した提案を体験する
GitHub Copilot では、Azure Cosmos DB に最適化された提案が提供されるようになりました。 拡張コンテキストによって開発エクスペリエンスが向上する例を次に示します。
最適化されたクエリ候補
クエリを記述するときに、Copilot は Azure Cosmos DB 固有のパターンを理解するようになりました。
// Copilot will suggest optimized query patterns
const query = {
query: "SELECT * FROM c WHERE c.partitionKey = @partitionKey AND c.status = @status",
parameters: [
{ name: "@partitionKey", value: userId },
{ name: "@status", value: "active" }
]
};
ベスト プラクティスの推奨事項
Copilot は、データモデリングのための Azure Cosmos DB のベストプラクティスに従うことを勧めます。
// Copilot suggests embedding related data for single-partition queries
const userDocument = {
id: userId,
partitionKey: userId, // Copilot suggests consistent partition key usage
profile: {
name: "John Doe",
email: "john@example.com",
preferences: {
theme: "dark",
notifications: true
}
},
// Embed frequently accessed related data
recentActivity: [
{ action: "login", timestamp: "2024-01-01T10:00:00Z" },
{ action: "purchase", timestamp: "2024-01-01T11:30:00Z" }
]
};
エラー処理と診断
Copilot は、Azure Cosmos DB に固有の適切なエラー処理パターンを提案します。
try {
const response = await container.items.create(document);
console.log("Document created successfully");
} catch (error) {
// Copilot suggests Azure Cosmos DB-specific error handling
if (error.code === 429) {
console.log("Rate limited. Retry after:", error.retryAfterInMilliseconds);
// Implement exponential backoff
} else if (error.code === 409) {
console.log("Document already exists");
} else {
console.error("Error creating document:", error.message);
// Log diagnostic information for troubleshooting
console.log("Diagnostic info:", response.diagnostics);
}
}
開発者の利点
この統合により、Azure Cosmos DB 拡張機能は単なる管理ツールではなく、開発環境内の AI ナレッジ レイヤーになります。 コンテキストに対応したサポートにより、次のことができます。
✅コンテキストのベスト プラクティスに従って、最適化されたクエリと SDK 呼び出しを記述する
✅開発の早い段階で一般的な落とし穴を避ける
✅汎用データベース ロジックではなく、実際の Azure Cosmos DB ガイダンスに沿った提案を受け取る
✅AI が提案する最適化によってパフォーマンスを向上させる
✅関連するコンテキストに対応したコード補完によって開発時間を短縮する
ガイダンスのカスタマイズ
azurecosmosdb.instructions.md ファイルが開き、拡張可能です。 次のようにすることができます。
- ファイルを確認 して、Copilot に提供されているコンテキストを理解する
- チームのコーディング標準にプロジェクト固有のガイダンスを追加する
- GitHub リポジトリに pull request を送信して機能強化を投稿する
- 問題セクションの問題または提案を報告する
代替手段: Azure Cosmos DB エージェント キット
より包括的なカバレッジについては、 Azure Cosmos DB エージェント キット を代わりに使用するか、命令ファイルの補足として使用することを検討してください。 エージェント キットには次のものが用意されています。
- 8 つのカテゴリ (データ モデリング、パーティション キー、クエリ、SDK、インデックス作成、スループット、グローバル分散、監視) にわたる 45 以上のキュレーションルール
- 実際の影響でランク付けされたルールを使用した優先順位ベースのガイダンス
- GitHub Copilot、Claude Code、Gemini CLI、その他のエージェント スキル互換ツールとのより広範な互換性
- 継続的に更新されるベスト プラクティスに対するコミュニティの貢献
1 つのコマンドを使用してエージェント キットをインストールします。
npx add-skill AzureCosmosDB/cosmosdb-agent-kit
命令ファイルを無効にする
エージェント キットのみを使用する場合、または自動命令ファイルを無効にする場合:
ユーザー プロファイル フォルダーに移動します。
-
Windows:
%APPDATA%\Code\User\prompts\ -
macOS:
~/Library/Application Support/Code/User/prompts/ -
Linux:
~/.config/Code/User/prompts/
-
Windows:
azurecosmosdb.instructions.mdファイルを削除または名前変更する必要に応じて、同じ名前の空のファイルを作成して、拡張機能で再作成されないようにします
注
拡張機能は、Azure Cosmos DB アカウントに再接続するときに命令ファイルを再作成できます。 これを完全に無効にするには、任意の構成のバックアップを作成するか、エージェント キットのみを使用します。
最大限のメリットを得るためのベスト プラクティス
このコンテキストに対応した AI 支援を最大限に活用するには、次の手順を実行します。
1. 拡張機能を最新の状態に保つ
最新のベスト プラクティスと機能強化を受け取るために、Azure Cosmos DB 拡張機能を定期的に更新します。
2. わかりやすい変数名を使用する
Copilot では、コードで Azure Cosmos DB の概念を示すわかりやすい名前を使用する場合に、より適切な提案が提供されます。
// Good - Clear Azure Cosmos DB context
const cosmosClient = new CosmosClient({ endpoint, key });
const database = cosmosClient.database("productCatalog");
const container = database.container("products");
// Less optimal - Generic naming
const client = new CosmosClient({ endpoint, key });
const db = client.database("productCatalog");
const coll = db.container("products");
3. データ モデルに関するコメントを含める
パーティション分割戦略とデータ モデルに関するコメントを追加して、Copilot がより関連性の高い提案を提供できるように支援します。
// Partition by userId to ensure user data is co-located
// Embed user preferences to minimize cross-partition queries
const userDocument = {
id: generateUserId(),
partitionKey: userId, // Using userId as partition key for user isolation
// ... rest of document
};
4. 拡張機能のデータ管理機能を使用する
拡張機能の組み込み機能を Copilot と共に使用して、完全な開発エクスペリエンスを実現します。
- クエリ をテストおよび最適化するためのクエリ エディター
- リアルタイム編集のためのドキュメント管理
- クエリ コストを理解するためのパフォーマンス メトリック
- データ分析用のエクスポート機能
トラブルシューティング
Copilot が Azure Cosmos DB 固有の提案を提供しない
-
ファイルの展開を確認する: ユーザー プロファイル フォルダーに
azurecosmosdb.instructions.mdが存在することを確認する - Visual Studio Code を再起動する: 変更を有効にするために再起動が必要な場合があります
- GitHub Copilot の状態を確認する: Copilot がアクティブで適切に認証されていることを確認する
- Azure Cosmos DB に再接続する: アカウントの切断と再接続を試みます
命令ファイルを展開していない拡張機能
- 拡張機能を更新する: 最新バージョンの Azure Cosmos DB 拡張機能があることを確認する
- アクセス許可の確認: Visual Studio Code にユーザー プロファイル フォルダーへの書き込みアクセス許可があることを確認する
- 手動接続: 拡張機能を使用して Azure Cosmos DB アカウントに手動で接続してみてください