10
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

コーディング規約を「読むもの」から「効かせるもの」へ:GitHub CopilotのCustom Instructions導入

10
Last updated at Posted at 2025-12-19

はじめに

こんにちは。アイスタイルにて会員基盤の運用保守や機能改修を担当しているyukawacです。

近年、業務におけるAI活用の機会が増えてきました。
私の所属する環境ではGitHub Copilot(以下、Copilot)のBusinessプランを利用でき、最近のコーディングはCopilotを前提として進める場面が増えています。

その中で、「Custom Instructions(リポジトリ単位でCopilotに指示を与える仕組み)」を知りました。

これまでに作成してきたシステム開発におけるコーディング規約をCustom Instructions化すれば、人間にとって読みやすい形を保ちつつ、Copilotにも同じルールを参照させられるのではないかと考えました。

この記事では、既存のコーディング規約をCustom Instructions化するまでに、どの順番で整備し、どのようなファイルを用意したかを導入手順としてまとめます。

Custom Instructionsとは

公式ドキュメント: GitHub Copilot のリポジトリ カスタム命令を追加する

要点は次のとおりです。

  • リポジトリ単位で、Copilotに対する指示(方針・ルール)を与えられる
  • 指示はMarkdownで記述し、リポジトリ全体向けは.github/copilot-instructions.mdに、特定範囲向けは.github/instructions/*.instructions.mdに作成する
  • 特定範囲向け指示ファイルにはapplyToを指定でき、特定ディレクトリ/特定ファイルにのみに適用することも可能

コーディング規約からCustom Instructions化するまでの流れ

Custom Instructionsの整備自体もCopilotのAgentモードを活用し、次の3ステップで進めました。
すでにコーディング規約資料のあった、メイン言語がJavaのリポジトリで実施しました。

  1. Custom Instructionsを作成するためのCustom Instructionsを整備
  2. コーディング規約とリポジトリのコードをCopilotに読み込ませ、*.instructions.mdの分割案を提示させる
  3. 分割案に沿って*.instructions.mdを1ファイルずつ生成し、人とCopilotで調整しながら完成させる

1. Custom Instructionsを作成するためのCustom Instructionsを整備

Custom Instructions化そのものもCopilotを活用して進めたかったため、先に土台となるinstructionsを用意しました。

  • instructions.instructions.md
    • 指示ファイルの型(frontmatter、章立て、文体、例の出し方、検証手順)
  • java.instructions.md
    • Javaの基本方針(Optional、命名、JavaDoc、よくあるバグパターン、静的解析導入の考え方)
  • springboot.instructions.md
    • Spring Bootの方針(DI、設定外部化、ログ、入力バリデーション、ビルド・検証の基本)
  • markdown.instructions.md
    • ドキュメント作成ルール(見出し、リスト、リンク、画像alt、テーブル、行長など)
  • self-explanatory-code-commenting.instructions.md
    • コメント方針(WHATを書かずWHYを書く、古いコメントを残さない、注釈タグの使い分け)
  • taming-copilot.instructions.md
    • 最上位ルール(ユーザー指示の最優先、時点依存情報は事実確認、変更は外科的に最小、など)

参考資料(Custom Instructionsの例集):awesome-copilot/instructions

2. コーディング規約とリポジトリのコードをCopilotに読み込ませ、*.instructions.mdの分割案を提示させる

コーディング規約(mdファイルや文章)とリポジトリのコードを、Copilotチャットで指示して読み込ませ、作るべき*.instructions.mdの分割案(ファイル一覧と役割)を提示させました。

プロンプト例:

このリポジトリの、リポジトリ用のCustom Instructions(instructions.mdファイル)を作成したいです。
まずは、どのような`*.instructions.md`を作ればよいか、リポジトリのコードやコーディング規約を確認して考えて、一覧に出してください。
足りない情報がありましたら、尋ねてください。
Copilotが出した分割案の例

リポジトリの構造まとめ

技術スタック: ...略...
ファイル数: ...略...

情報収集が完了しました。リポジトリの構造を把握できました。以下に提案をまとめます。

プロジェクト固有インストラクション(8ファイル)

ファイル 対象 説明
web-controller.instructions.md **/controller/**/*.java WEB画面用Controller実装
api-controller.instructions.md **/api/controller/**/*.java REST API Controller実装
service.instructions.md **/service/**/*.java Service層実装
database-dao.instructions.md **/dao/**/*.java, **/*.sql DAOとSQLファイル
database-entity.instructions.md **/entity/**/*.java Entity実装ガイド
thymeleaf.instructions.md **/templates/**/*.html Thymeleafテンプレート
form-validation.instructions.md **/form/**/*.java Form/バリデーション実装
testing.instructions.md **/*Test.java テストコード実装

既存のコーディング規約は1つのmdファイルにまとまっていましたが、
規約に沿いつつ実体コードにも則した、レイヤ/役割ごとの分割案になりました。

3. 分割案に沿って*.instructions.mdを1ファイルずつ生成し、人とCopilotで調整しながら完成させる

Copilotから分割案(ファイル一覧と役割)を得たあと、分割案に沿って*.instructions.mdを1ファイルずつ生成させ、レビューと調整を繰り返しながら整備しました。

プロンプト例:

上から順番に1つずつ、instructions.mdファイルの作成をお願いします。

instructions.mdファイルの出力例(雰囲気):

---
applyTo: '**/controller/**/*.java'
description: 'WEB画面用Controller実装ガイドライン'
---

# WEB画面用 Controller 実装ガイドライン

## 概要

WEB UIを提供するモジュールです。
ControllerはThymeleafテンプレートと連携し、画面遷移とユーザー操作を処理します。

## アーキテクチャ

・・・

## 基本実装パターン

### クラス構成

・・・

## アノテーション使用ガイド

### 必須アノテーション

・・・

## セッション管理

・・・

これで、既存のコーディング規約をCustom Instructions化できました。
既存のコーディング規約はCustom Instructionsへ移行し、旧ファイルは整理したうえで、READMEからはCustom Instructionsを参照するように整えました。

今回こだわったこと:Custom Instructions化もCopilotに寄せる

今回こだわったのは、Custom Instructions化そのものを「人が手で書き起こす作業にしない」ことです。
まず土台となるinstructionsを用意し、その上でコーディング規約とリポジトリの実装をCopilotに読ませ、分割案の作成から*.instructions.mdの初稿生成まで、できる限りCopilotに寄せて進めました。

人が作業したのは、生成結果のレビューと微調整、そして最終的な判断だけです。
また、人だけでは見落としがちな「実装上の暗黙ルール」も文章化されるため、規約の再整理や学び直しにもつながりました。

今後の運用

効果検証

導入効果はこれから確認します。次の観点で観察します。

  • 人が行うレビュー指摘の減少(命名、責務境界、例外、テスト不足)
  • PRの往復回数・リードタイム
  • Copilot提案を採用した後の手戻り量

Custom Instructionsのメンテナンス

Custom Instructionsは、一度作って終わりではありません。
リポジトリの実装が変われば、指示内容やapplyToの適用範囲も追従させないと、指示と実コードがズレて逆に混乱の原因になります。

そこで、更新作業も人手に寄せすぎず、Copilotを使って定型化する方針にしました。
具体的には、Instructionsをメンテするためのプロンプトファイル(prompt.md)を用意し、「実体コードとCustom Instructionsの内容のズレを洗い出して、必要な修正を提案・反映する」ことをCopilotに1コマンドで指示できるようにしたいと考えています。

プロンプトファイルについての参考資料:

まとめ

本記事では、既存のコーディング規約をGitHub CopilotのCustom Instructionsとして再構成し、Copilotにも規約を参照させるための導入手順を紹介しました。

結果として、コーディング規約を「読むもの」だけにせず、Copilotの提案にも反映される「効かせるもの」として扱える状態にできました。
今後は効果検証を進めつつ、実装変更とInstructionsのズレを検知して追従させる更新作業もCopilotに任せられるよう、メンテ用のプロンプトファイルを整備していく予定です。

Custom Instructionsを「作って終わり」ではなく、Copilotと一緒に育てていける状態を目指します。

10
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?