AIが書いたコードの命名やインデントがチーム規約と少し違うのを、毎回手で直すのではなく、仕組みで揃えようと落ち着いて考えている開発者

AIにコーディング規約を守らせる|指示とチェックの仕込み方

AIに書いてもらったコード、動くのはいいけれど——命名がキャメルケースとスネークケースで混ざる。インデントが違う。importの順番がチームのルールと逆。ログの出し方も、エラーの投げ方も、いつもの書き方と微妙にずれている。 そのたびに手で直して、レビューでも「ここ規約と違うよ」と指摘して……。一つひとつは小さいけれど、毎回積み重なると地味に疲れる。そんな引っかかり、ありますよね。

これはあなたのお願いの仕方が悪いわけでも、AIがわがままなわけでもありません。 AIは、その場の会話で渡された指示は覚えていても、チームの規約を最初から知っているわけではない。だから、何も仕込まなければ「一般的によくある書き方」で返してくる。それがたまたまチームの流儀と違うだけです。

この記事は、AIにコーディング規約を守ってもらうための、指示の仕込み方と、指示に頼りきらないチェックの仕込み方の話です。先に大事なことを言うと——毎回プロンプトで丁寧にお願いするより、規約をAIが読む場所に置き、最後は機械で直す方が、ずっと確実で楽になります。少し長めですが、まず効く所から一緒に見ていきましょう。

結論:AIに規約を守らせるコツは、「指示」と「チェック」を二段構えにすることです。①規約を、その場の会話ではなくAIが毎回読む設定ファイル(各AIツールのルールファイル)に、短く・優先順位をつけて置く。②それでもズレは残る前提で、Formatter(自動整形)とLinter(規約違反の自動検出)を通し、機械的に直せる所は機械に直させる。③人間は、機械で拾えない「意図」の部分だけ見る。指示だけで100%守らせようとせず、指示で減らし、チェックで揃える——この分担が一番ラクで確実です。

大事なのは、「AIに完璧に守らせる」ことをゴールにしないことです。 人間だって規約を全部そらんじて書いているわけではなく、FormatterやLinterに助けられています。AIも同じ土俵に乗せてあげれば、それで十分うまく回ります。

なぜAIは規約を守ってくれないのか

会話での指示だけに頼ると規約がすり抜けるが、設定ファイルへの指示と自動チェックの二段構えにすると違反が最後で揃うことを示した図

対策の前に、なぜズレるのかを一度だけ整理します。理由が分かると、どこに手を打てばいいかが見えてきます。

まとめると、原因は「規約が、AIが毎回読める場所に、読める形で置かれていない」ことに尽きます。 逆に言えば、置き場所と書き方を整え、最後に機械で揃える仕組みを足せば、ほとんど解決します。次から順に見ていきます。

指示の仕込み方①——「AIが毎回読む場所」に置く

まず押さえたいのは、規約をその場の会話に書くのではなく、AIが毎回自動で読む場所に置くことです。会話で毎回お願いするのは、忘れやすく、担当者ごとにバラつきます。

多くのAIコーディングツールには、プロジェクトのルールを書いておく専用の場所があります(ツールにより名前は違いますが、リポジトリ直下に置く「ルールファイル」「指示ファイル」の類です)。ここに書いておけば、毎回のプロンプトに自動で効くので、会話で言い忘れても守られやすくなります。

置き場所の考え方は、こう整理できます。

置く場所効き方向いている内容
ツールのルールファイル(リポジトリ直下)毎回自動で効くチーム共通の恒久ルール。命名・構成・使う/使わないライブラリ
その場のプロンプトその会話だけ効く今回だけの事情。「今回はこのファイルの流儀に合わせて」
コードのすぐ近く(既存コードを一緒に渡す)例として効く言葉で書きにくい「空気」。近い既存コードを見せて合わせさせる

いちばん効くのはルールファイルですが、それだけに頼らず、近い既存コードを一緒に渡すのも強力です。AIは「言葉のルール」より「実際のお手本」に上手く合わせてくれることが多いからです。既存コードの文脈を渡すコツは既存コードベースにAIを馴染ませる文脈の渡し方にまとめました。

指示の仕込み方②——「短く・優先順位つき」で書く

置き場所が決まったら、次は書き方です。ここでの失敗は、たいてい書きすぎです。規約を全部だらだら並べると、AIはどれが大事か分からず、肝心なところを落とします。

意識したいのは3つです。

書き方のイメージはこんな感じです(あくまで型で、中身は各チームに合わせてください)。

# コーディング規約(優先順位順)
1. 命名はスネークケース。関数・変数とも統一する。
2. 外部入力は必ず検証してから使う(未検証のまま処理に渡さない)。
3. ログは logger 経由で出す(print/標準出力は使わない。本番で拾えないため)。
4. 新しいライブラリを足すときは、まず候補だけ挙げて相談する(勝手に追加しない)。
5. エラーは握りつぶさず、呼び出し元が判断できる形で返す。

ポイントは、「スタイル」ではなく「判断」を書くことです。 インデントや空白の入れ方は機械が直せるので、ルールファイルには機械が拾いにくい約束事(設計の流儀、使ってほしくないもの、外部入力の扱いなど)を優先して残します。渡す前提と制約のそろえ方そのものはAIにコードを書かせる前に渡す前提と制約の伝え方が下敷きになります。

チェックの仕込み方——最後は機械で揃える

AIが書いたコードが自動整形と自動検出とレビューの三つの関所を順に通り、規約に沿った状態で本番へ進む流れを示した図

ここが本題です。どれだけ丁寧に指示しても、AIの出力は毎回わずかにブレます。だから「指示で完璧に守らせる」を目指すと、いつまでも手で直し続けることになります。発想を変えて、ズレは残る前提で、最後に機械で揃える方が圧倒的にラクです。

順番はこうです。

1. Formatter(自動整形)を通す インデント、空白、改行、クォートの種類——こうした見た目のスタイルは、Formatterに一発で揃えさせます。AIがどんな書き方で返してこようが、保存時やコミット前に自動整形が走れば、スタイルの議論そのものが消えます。まずここを入れるだけで、指摘の大半がなくなります。

2. Linter(規約違反の自動検出)を通す 未使用の変数、危ない書き方、命名ルール違反、使ってほしくない関数の呼び出し——こうした「これはダメ」というルールは、Linterに検出させます。AIの出力も人の出力も同じLinterを通せば、誰が書いても同じ基準で引っかかります。チーム独自のルールも、多くのLinterは設定で足せます。

3. CIで自動チェックを走らせる FormatterとLinterを、手元だけでなく、プルリクエスト(変更をまとめてレビューに出す単位)の自動チェックにも組み込みます。こうすると、通っていないコードはそもそもマージできないので、「うっかりチェックを忘れる」がなくなります。人の善意に頼らず、仕組みで守れます。

4. 人間は「機械で拾えない所」だけ見る ここまで来ると、レビューで見るべきはスタイルや規約違反ではなく、設計の意図や妥当性だけになります。「この分岐で本当に合っているか」「この抽象化は妥当か」——AIも機械も判断しづらい、人にしか見えない所に集中できます。レビューで人が見るべき観点はAIにレビューさせてもバグが残る——人が見るべき観点に詳しくまとめています。

この四段を通せば、AIが多少ブレても、本番に入る頃には規約に沿った状態になります。 指示は「ブレを減らす」ため、チェックは「残ったブレを揃える」ため。役割を分けるのがコツです。

それでも守られないルールへの向き合い方

FormatterやLinterで機械化しても、どうしても言葉でしか伝えられないルール(設計の流儀、ドメイン特有の約束)は残ります。これがAIに守られにくいときの手当ても、いくつか持っておくと安心です。

大事なのは、「守られないのはAIのせい」で止めないことです。 守られにくいなら、置き場所・書き方・機械化のどこかに手を打てるサインだと捉えると、前に進めます。

明日からやること(小さく3つ)

全部いっぺんに仕組み化しようとすると重いので、まずこの3つから。

  1. ルールを3つだけ、ルールファイルに書き出す:完璧な規約集でなくていいので、いちばん毎回ズレる3つを、優先順位順に書いて置く。会話で毎回言う手間が消えます。
  2. Formatterを1つ入れる:スタイルの指摘が多いなら、まずFormatterを入れて保存時に自動整形。スタイルの議論を今日から機械に渡します
  3. お手本コードを1つ添えて頼んでみる:次の依頼で、規約どおりに書けている既存コードを1つ一緒に渡す。言葉の指示より効くのを体感できます。

この3つだけでも、「毎回手で直す」引っかかりがぐっと減ります。 慣れてきたら、LinterやCIへの組み込みを足していけば十分です。

AIに規約を守らせるチェックリスト

依頼を送る前・受け取った後に、さっと確認します。全部に○が要るわけではなく、関係する所だけで十分です。

仕込み(指示)

仕込み(チェック)

この記事のまとめ

AIに規約を守らせるのは、丁寧にお願いし続ける根気くらべではありません。 規約をAIが読む場所に短く置いて(指示)、残るブレは機械で揃える(チェック)。この二段構えにすれば、AIが多少ブレても、本番に入る頃にはちゃんと揃っています。人間は、機械にできない「意図の確認」だけに力を使えます。

自動整形と自動検出の仕組みが整い、AIが書いたコードが規約に沿って揃うようになって、落ち着いて次の仕事に向かう開発者

一度に完璧な仕組みを作らなくて大丈夫です。 今日ひとつ「よくズレる3つをルールファイルに書く」か「Formatterを入れる」ができたなら、それはもう「毎回手で直す」を減らす確かな一歩です。指示で減らして、チェックで揃える。渡す前提のそろえ方は渡す前提と制約の型、受け取った後の見方はAI生成コードのレビュー・検証チェックリスト。この2つがそろうと、AIコーディングはずいぶん落ち着きます。

関連用語