AIプログラミングの精度を上げ・コストを下げるLinterとFormatter
Claude CodeやCodexのようなAIエージェントに任せれば、プログラミングの知識がなくても業務ツールやWebサイトを作れます。
ただし何も対策せずに任せ続けると、コードは少しずつ汚れていき、AIの精度低下・コスト浪費につながります。
今回紹介するのは、コードの汚れを自動で防ぐLinter(リンター)とFormatter(フォーマッター)です。導入をAIに任せるやり方も解説します。
動画で見たい方はこちら。
AIの開発でコードは少しずつ汚れていく

AIとの開発では、画面上の動きだけを確かめて、次の依頼へ進みがちです。動いているから問題ないように見えても、その裏側でコードは少しずつ汚れています。
汚れたコードの代表例は、次の3つ。
- どこからも使われない処理が残っている
- ほぼ同じ内容のコードが、複数の場所に重複
- 機能によってコードの書き方がバラバラ
修正を重ねるうちに、不要になった処理の消し忘れや、似た処理の作り直しが増えていきます。人がコードを読まないAI開発では、コードの汚れに気づけません。
コードの汚れがAIの精度低下・コスト浪費につながる
コードの汚れは、見た目だけの問題ではありません。AIの精度とコストの両方に悪影響です。
汚れた手本でAIが間違え、判断がブレる

AIは作業のたびに、既存のコードを手本にします。重複や書き方のバラつきがあると、どれが正解か判断できず、回答ごとに違う書き方を選びやすくなります。
やりたいことは同じなのに、色んなところに異なる書き方のコードが散らばっている。その中からAIが見本にしたものが、実はもう使われていない古いコードかもしれません。
無駄なコードを読み、判断に迷ってトークンを消費する

トークンとは、AIが情報を読み書きする最小単位(1トークンで1単語のようなイメージ)です。
汚れたコードによってAIが読むコード量が増えるほど、トークン(=コスト)を消費します。
さらに、正解がわからないコードでは、正しいコードの書き方の検討も必要なため、その判断でも余計にトークンを使います。
LinterとFormatterは、コードの汚れを自動で見張る道具

こうした汚れは、AIへの指示である程度防ぐことができます。
でも、AIに任せるよりコードを自動検査するLinterとFormatterという仕組みを使った方が速くて正確です。検査にAIを使わないので、トークンも消費しません。
Linterはコードの問題を指摘

Linterは、コードを解析して問題を指摘する道具です。
- 使われていない処理
- コードの重複
- 複雑すぎる書き方
- 決まりに反する書き方
などを、ルールにもとづいて機械的に指摘します。代表的なLinterにESLintがあります。
Linterを使っていると、以下のようにルール違反の書き方はエラーになります。

ここでは、変数(数値や文字などの値を入れる箱)の名前が、aという3文字未満なのでエラーになっています。
aのように短すぎる変数名は意味がわからないので、3文字以上の変数名を強制するルールです。ここでの変数名はserviceなどが適切です。
AIはよくi、x、yのような1文字変数を使いがちです。意味ある変数名を考えるよりラクなので。
Formatterはコードの見た目をそろえる

Formatterは、字下げや引用符の種類といったコードの見た目を、決めたルールどおりに自動でそろえる道具です。
書き方が統一されるため、どのAIがいつ書いても同じ見た目のコードになります。代表的なFormatterにPrettierがあります。

Formatterを使うと、このようにルール通りにコードを一瞬で整形してくれます。たとえば上記は、
- そろってない字下げの統一
- 無駄な空白スペースの削除
- シングルクォートへ統一
- 末尾の
;欠落の補完
をやっています。
はたらクラフトで使っているLinterとFormatter
はたらクラフトのWebサイトも、LinterとFormatterを組み合わせて、AIのコードを検査しています。
Linter:ESLint・jscpd・knip

役割の違う3つのLinterを使い分けています。
- ESLint:関数(処理のまとまり)の長さや複雑さ、デザインルールへの違反などを幅広く検出(例: 1つの関数は50行まで)
- jscpd:5行以上続く重複コードを検出
- knip:未使用のファイル・処理・外部ツールを検出
このほか、データベースの言語(SQL)用に、LinterとFormatterを兼ねるSQLFluffを使っています。
Formatter:Prettier
FormatterはPrettierを使っています。字下げや引用符の種類はもちろん、デザイン指定の並び順のような細かい点まで、自動でそろえます。
コード修正の保存ごとにLinter・Formatterを自動実行するlefthook

道具をそろえても、実行を忘れれば意味がありません。そこでlefthookで、コード修正を保存するたびに、修正コードにLinterとFormatterを自動実行しています。
ここでの保存は、履歴管理ツールGitの「コミット」という操作を指します。
違反が1つでも残っていると、修正をコミットできません。AIがルール違反のコードを書くとコミット時に指摘され、AI自身が直してから先へ進みます。Formatterによる修正も同じ流れです。
人がコードをチェックしなくても、AIによるコードの汚れを自動でガードする仕組みです。
Linter・Formatter導入はAIに任せる

ここまで読んで、設定が難しそうだと感じたかもしれません。安心してください。導入も設定もAIに任せられます。
まずはどのLinter・Formatterを使うかを検討しましょう。開発中のプロジェクトを開いて、次の依頼文をそのまま送ってください。
このプロジェクトに最適なLinterとFormatterを、導入実績やメンテナンス状況もふまえて検討してAIがプロジェクトの内容に合わせて、候補と選んだ理由を提案してくれます。次の3点を確認しましょう。
- 自分のプロジェクトに合っているか
- 多くのプロジェクトに導入実績があるか
- 継続的にメンテナンスされているか
Linter・Formatterを導入したら、以下の指示でコミット時に自動チェックが走るようにしましょう。
lefthookでcommit前にLinterとFormatterを実行するようにしてすでに動いているプロジェクトへの導入は、注意点があります。既存コード全体が検査され、大量の違反が見つかることです。
一度に直すと変更が大きくなり、確認が大変でバグもまぎれ込むかもしれません。次のように、導入計画を立てさせてください。
◯◯を導入して。既存コードの違反は一度に直さず、段階的に解消する導入計画を先に作ってあとは計画にそって、少しずつ違反を解消させればOKです。
コード検査を仕組み化し、AIコーディングの精度UP
この記事の要点は、次の4つです。
- AIによる開発では、使われない処理・重複・書き方のバラつきといった汚れがたまる
- コードが汚れると、AIの判断がブレて精度が落ち、無駄なコードの読み込みと迷いでトークンを浪費する
- Linter・Formatter・lefthookで汚れを自動で防げる
- 導入・設定はAI任せでOK。ただし、既存プロジェクト導入は違反が大量に出るので、計画を立てさせる
まずは、新規もしくは既存のプロジェクトで、「このプロジェクトに最適なLinterとFormatterを、導入実績やメンテナンス状況も含めて検討して」と指示してください。
開発が進めば進むほど、LinterとFormatterがAIの精度低下・トークン浪費を防いでくれます。
この記事をシェア
関連記事

複数アプリ開発がラクになるmise|アプリごとにツールバージョンを自動切替
AIでアプリを複数作り始めると、アプリごとに必要なツールのバージョンが違って動かないことがあります。フォルダを移動するだけでバージョンが切り替わるmiseの仕組みと始め方、はたらクラフトでの実際の活用法を紹介します。

スマホ録音ポッドキャストから環境音・無音・雑音をAIカット
ポッドキャストをやってみたいけれど、録音した音の編集がめんどくさそうで踏み出せない。そんな人向けに、環境音・無音・雑音を編集ソフトなしでAIにカットさせる実際の手順と、作業をスキル化して2回目以降は安く速く仕上げる方法を、自社番組の実例で紹介します。
