Copilot Edit モードによる複数ファイル編集
学習目標
Edit モードを使って、複数のファイルにまたがる変更を効率的に実行する方法を学習します。
学習内容
1. Edit モードの基本概念
なぜ Edit モードを使うのか
- 制御された編集: 変更するファイルを明示的に指定
- 段階的なレビュー: 各ファイルの変更を個別に確認
- 予測可能な動作: Agent モードより制御しやすい
2. Edit モードの開始
演習1: 基本的な操作
- モードの切り替え
- Chat view を開く(Ctrl+Alt+I)
- モードドロップダウンから「Edit」を選択
-
または直接開く: VS Code Stable
-
作業セットの準備
3. 単純な複数ファイル編集
演習2: 関連するファイルの同時更新
-
初期コードの作成
// Book.cs public class Book { public int Id { get; set; } public string Title { get; set; } public string ISBN { get; set; } public decimal Price { get; set; } } // Author.cs public class Author { public int Id { get; set; } public string Name { get; set; } } // BookService.cs public class BookService { private readonly List<Book> _books = new(); public void AddBook(Book book) { _books.Add(book); } }
-
Edit モードでの変更
-
変更の確認とレビュー
- 各ファイルの変更内容を確認
- 必要に応じて個別に承認または却下
- エディタオーバーレイで変更箇所をナビゲート
4. リファクタリング作業
演習3: 既存コードの改善
-
リファクタリング前のコード
-
戦略パターンへのリファクタリング
5. 大規模な機能追加
演習4: 新機能の実装
- 既存システムへの機能追加
6. エラー修正とテスト追加
演習5: 問題の修正と品質向上
-
バグのあるコード
public class ShoppingCart { private List<CartItem> items = new List<CartItem>(); public void AddItem(Product product, int quantity) { var item = items.FirstOrDefault(i => i.Product.Id == product.Id); if(item != null) { item.Quantity += quantity; } else { items.Add(new CartItem { Product = product, Quantity = quantity }); } } public decimal GetTotal() { return items.Sum(i => i.Product.Price * i.Quantity); } }
-
修正とテストの追加
実践プロジェクト
シナリオ: マイクロサービスへの分割
モノリシックなアプリケーションをマイクロサービスに分割します:
-
現状分析
-
第1段階: インターフェースの抽出
-
第2段階: 通信レイヤーの追加
Edit モードのベストプラクティス
ファイル選択の戦略
- 関連ファイルのグループ化
- モデルとそのリポジトリ
- インターフェースと実装
-
サービスとそのテスト
-
段階的な変更
- 大きな変更は小さなステップに分割
- 各ステップでテストを実行
- 問題があれば早期に発見
効果的なプロンプト
-
明確なファイル指定
-
具体的な要件
変更の管理
レビューとアプリケーション
- 個別ファイルのレビュー
- ファイルごとに変更内容を確認
- 不要な変更は却下
-
必要に応じて手動で微調整
-
一括操作
- Accept All: すべての変更を承認
- Discard All: すべての変更を破棄
- 慎重に使用すること
トラブルシューティング
よくある問題と対処法
- 期待しない変更が含まれる
- より具体的なプロンプトを使用
- ファイルを明示的に指定
-
小さな変更単位で実行
-
変更が適用されない
- ファイルが保存されているか確認
- 構文エラーがないか確認
- VS Codeを再起動
まとめ
学習した内容: - Edit モードの基本的な使い方 - 複数ファイルの同時編集 - リファクタリングへの活用 - 大規模な機能追加の実装 - 効果的なファイル選択とプロンプト作成
次のステップ
次は「Agent モード」について学習し、より自律的なコード生成と問題解決の方法を習得しましょう。