インラインチャットによる効率的なコード編集
学習目標
エディタやターミナル内で直接Copilot Chatを使用し、コンテキストを切り替えることなく効率的にコードを編集する方法を学習します。
学習内容
1. インラインチャットの基本
インラインチャットとは
- エディタ内で直接起動するチャット
- 選択したコードや現在のファイルに焦点を当てた編集
- コンテキストの切り替えが不要
2. エディタインラインチャット
演習1: 基本的な起動と操作
-
インラインチャットの起動
-
簡単なコード変更
インラインチャットで実行: - "コンストラクタを追加" - "バリデーションを追加" - "ToStringメソッドを実装"
3. コードリファクタリング
演習2: 既存コードの改善
- メソッドの抽出
public class OrderProcessor { public void ProcessOrder(Order order) { // 在庫確認 foreach(var item in order.Items) { var stock = GetStock(item.ProductId); if(stock < item.Quantity) { throw new InsufficientStockException($"商品{item.ProductId}の在庫が不足しています"); } } // 価格計算 decimal total = 0; foreach(var item in order.Items) { var price = GetPrice(item.ProductId); total += price * item.Quantity; } // 割引適用 if(total > 10000) { total *= 0.9m; } order.TotalAmount = total; } }
選択してインラインチャット: "各処理を個別のメソッドに抽出してください"
- パフォーマンス最適化
インラインチャット: "LINQを使って最適化"
4. エラー修正
演習3: 問題の迅速な解決
- コンパイルエラーの修正
エラー箇所でインラインチャット: "/fix"
5. コード生成
演習4: 新しいコードの追加
-
インターフェースの実装
-
ユニットテストの生成
メソッドを選択してインラインチャット: "このメソッドの単体テストを生成。xUnitを使用し、エッジケースも含める"
6. ターミナルインラインチャット
演習5: コマンドラインでの活用
- ターミナルでインラインチャットを起動
-
統合ターミナルで Ctrl+I
-
コマンドの生成
-
複雑なコマンドの構築
実践プロジェクト
シナリオ: レガシーコードのモダナイゼーション
インラインチャットを使って、古いコードを段階的に改善します:
- Step 1: 古いパターンの識別
// レガシーコード public class DataAccess { public DataSet GetUserData(int userId) { SqlConnection conn = new SqlConnection("..."); SqlCommand cmd = new SqlCommand("SELECT * FROM Users WHERE Id = " + userId, conn); SqlDataAdapter adapter = new SqlDataAdapter(cmd); DataSet ds = new DataSet(); adapter.Fill(ds); return ds; } }
選択してインラインチャット: "このコードの問題点を指摘してください"
- Step 2: 段階的な改善
- SQLインジェクション対策: "パラメータ化クエリに変更"
- using文の追加: "リソースの適切な解放を実装"
-
非同期化: "async/awaitパターンに変更"
-
Step 3: モダンなパターンへの移行
ベストプラクティス
効果的なインラインチャットの使い方
- 具体的な指示
- ❌ "改善して"
-
✅ "nullチェックとログ出力を追加"
-
段階的な変更
- 大きな変更は小さなステップに分割
-
各ステップでテストを実行
-
コンテキストの活用
- 必要な部分だけを選択
- 関連するコードも含める
トラブルシューティング
よくある問題と対処法
- インラインチャットが起動しない
- VS Codeの最新版を確認
- Copilot拡張機能の有効化を確認
-
キーボードショートカットの競合を確認
-
提案が期待と異なる
- より具体的なプロンプトを使用
- 必要なコンテキストを選択
- スラッシュコマンドを活用
高度な使い方
マルチカーソル編集との組み合わせ
- 複数箇所の同時編集
- Alt+クリックで複数カーソル設置
- 各位置でインラインチャット起動
-
一括で類似の変更を適用
-
正規表現との組み合わせ
カスタムスニペットの生成
まとめ
学習した内容: - エディタとターミナルでのインラインチャット起動方法 - コードのリファクタリングと最適化 - エラー修正とコード生成 - ターミナルコマンドの効率的な作成 - 実践的なシナリオでの活用方法
次のステップ
次は「プロンプトエンジニアリング」について学習し、より効果的なプロンプトの作成方法を習得しましょう。