以下の内容はhttps://bluebirdofoz.hatenablog.com/entry/2026/03/07/212620より取得しました。


AWESOME-COPILOTのドキュメントを読む その52(C# Development)

本日はAWESOME-COPILOTの技術調査枠です。
AWESOME-COPILOTのドキュメントを読みながら実際に操作を試して記事に残します。
今回はカスタムインストラクションの一つC# Developmentについてです。

C# Development

C# DevelopmentはC#アプリケーション構築のガイドラインです。
このインストラクションファイルはプロジェクトに配置するとAIがコード生成やレビューをする際の共通ルールです。
以下のページからC# Developmentのインストールボタンをクリックして取得します。
github.com

インストールボタンを押してC# Developmentをダウンロードします。
すると.github/instructions配下にインストラクションがインストールされます。

インストールしたインストラクションはCopilotの動作に自動的に適用されます。
このインストラクションを読み込むと Copilot は以下を考慮してコード生成・修正を行います。

  • C# コーディング規約
  • .NET の設計原則
  • 可読性・保守性
  • パフォーマンス
  • テスト可能性

具体的にはCopilotは以下のような行動をとります。

MicrosoftのC#コーディング規約を遵守

CopilotはC#の公式スタイルガイドに沿ったコードを生成します。

例えば命名規則は以下のルールに従います。

要素 命名
クラス PascalCase
メソッド PascalCase
フィールド camelCase
定数 PascalCase

例えば以下のようなコードです。

public class UserService
{
    private readonly IUserRepository userRepository;

    public UserService(IUserRepository repository)
    {
        userRepository = repository;
    }
}

SOLID原則を意識した設計

Copilotはコードを書く際に以下のSOLID原則を守るよう提案します。

S — Single Responsibility

クラスは1つの責任だけ持つ

O — Open / Closed

拡張可能で変更不要

L — Liskov substitution

インターフェースで置き換え可能

I — Interface segregation

小さなインターフェース

D — Dependency inversion

DI(依存性注入)を使う

例えば以下のようなコードです。

public interface IUserRepository
{
    Task<User> GetAsync(int id);
}

依存性注入(Dependency Injection)

CopilotはDIコンテナを使う設計を推奨します。

例えば以下のようにコンテナを利用します。

builder.Services.AddScoped<IUserService, UserService>();

コンテナは以下の理由で利用します。

  • テストしやすい
  • モジュール分離
  • 保守性向上

async/awaitの正しい使い方

CopilotはC#の非同期処理のベストプラクティスに従います。

例えば以下のようなコードです。

public async Task<User> GetUserAsync(int id)
{
    return await repository.GetAsync(id);
}

具体的には以下の推奨事項に従います。

  • async/await を使う
  • .Result / .Wait() を避ける
  • I/O処理は非同期

可読性とクリーンコード

Copilotは以下のようなクリーンコード原則を守るよう提案します。

  • 小さなメソッド
  • 明確な名前
  • 重複排除

例外処理のベストプラクティス

Copilotは安全なエラーハンドリングを提案します。

例えば以下のようなコードです。

try
{
    await service.ProcessAsync();
}
catch (Exception ex)
{
    logger.LogError(ex, "Processing failed");
    throw;
}

以下の推奨事項に従います。

  • 例外を握りつぶさない
  • ログ出力
  • 適切な例外型

テストしやすいコード設計

Copilotは以下の点を考慮したコードを提案します。

  • インターフェース利用
  • DI
  • 小さなメソッド
  • Mock可能な設計

例えば以下のようなコードです。

public class OrderService
{
    private readonly IPaymentService paymentService;

    public OrderService(IPaymentService paymentService)
    {
        this.paymentService = paymentService;
    }
}

パフォーマンス最適化

Copilotは以下のようなC#のパフォーマンス面も考慮して提案します。

  • 不要なオブジェクト生成を避ける
  • Span / Memory 利用
  • LINQの過剰使用を避ける



以上の内容はhttps://bluebirdofoz.hatenablog.com/entry/2026/03/07/212620より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14