AI にコードを書かせた後、余計なコードを見つけて消す作業があります。
不毛なことなので、それらの作業を減らすためのお作法を紹介します。
以下でも書きましたが、未使用コードの検査に knip を使うことが多いです。
Git の pre commit 時に knip を動かして未使用ファイルを削除するように強制します。
これにより、使われていないコードや未使用な npm package などを消すことができます。
プロジェクトごとに、 knip の設定ファイルを書く必要があります。
AI にコードを書かせると、テキストが他のページと合わない用語を使ったりします。
そういった用語を手直しするのが不毛です。
そこで以下の記事でも触れている通り、画面表示などに使用する文言を言語ファイル( ja.json )として管理します。
その上で、ESLint の設定で 直接テキストを使用できないようにします。
例えば、jsx-no-literals が手っ取り早いでしょう。
これを導入することで、表示するテキストの表記揺れの修正が言語ファイル内で完結します。
そうすると、AI から比較的マシなテキストを書き上げてくれます。
また良くなかった場合も、文言ファイル内の修正だけに止まるため修正が楽になります。
よく AI にコードを書かせていると、試行錯誤によって無駄なコードが生まれることがあります。
基本的に、変更前に戻せる状態を意識しておくと楽です。
うまく行っている状態までをステージに上げておくのです。
こまめにコミットしちゃうのが良いのですが、そうはいかない場合もあります。
そういう場合うまく行っている状態の箇所をステージにあげておけば、AIのコードがNGだった場合にコードをリセットできます。
pre commit 時に、さまざまなチェックを入れておくと安全です。
私の場合は、以下の npm script の ci:fix を pre commit に通すようにしています。
{
"scripts": {
"ci:fix": "pnpm knip:fix && pnpm lint:fix && pnpm format && pnpm check-types && pnpm test:fix",
"knip": "knip",
"knip:fix": "knip --fix",
"lint": "eslint . --max-warnings 0",
"lint:fix": "pnpm lint -- --fix",
"format": "prettier --write \"**/*.{ts,tsx}\"",
"check-types": "tsc --noEmit",
"test": "vitest --run",
"test:fix": "pnpm test -- --update"
}
}knipの未使用コードの削除、lintのチェック、formatで整え、check-typesで型チェック、テストの実行です。
テストにはvitest のテストだけでなく、storybook のテストを実行しています。
Storybook を Vitest Browser Mode で Visual Regression Test (以下、VRT)します。
詳しくは、以下の記事をご参考ください。
VRTに加えて、Storybookのa11yも導入しておきます。
a11yのテストを動かしておくと最低限のa11yのエラーを見つけることができます。
例えば色のコントラストなどが多いです。
いちいち指摘せずとも、テストでエラーになれば AI 側で修正してくれるようになります。
Lintの設定は、自身が手直しをよくするものはLintで対応できるならやっておきます。
例えば、Propsなどの並び順は気になる場合は それらを強制する設定を登録しておきます。
あとは、『classNameを使わせない』という強硬策を取ることもあります。
className で自由にスタイルを書かせると、AI がデザインシステム外のスタイルで仕上げてくることがあります。
基本的に、デザインの最終調整は人間の目でやるべきと思いますが、土台はある程度 AI に書かせたいです。
そこで、ESLintの設定で className を使用させない設定を取り入れます。
設計次第ですが、以下のようなルールで縛っておけば楽です。
className の使用を許可する
class-variance-authority を使用し、UIのバリエーションを定義するこれらのお作法を守っておくと、AI のコーディングからの手直しを比較的減らせることができます。
より効率的に開発していきましょう。
-
タグ「AI」の記事
主にWeb関連の個人開発をしている際に心がけていることを書きます。 月末に近づくにつれ、AIの利用上限に達してしまうことがあります。 その状況になった時、以下のいずれかの選択肢が私の中では残っています。 課金して利用上限を増やす 無料モデル
最近、AI エージェントに Playwright MCP を設定した状態で、CSS の調整作業を行っていました。 デザイン上どうしても原因を特定できず、修正に行き詰まっていたスタイルがあったのですが、Playwright MCP を使って調
なんでやねん!AIに指摘をしたとき、なんかモヤっとする。「するどい指摘です!」とか言われると、褒められてるようでいて、微妙にずれてる感じ。反論しても不毛なので、冷静に淡々と指示を出そう。「いい気づきです!」みたいな返事もあるけれど……ぬぬぬ。
2025年11月11日
タグ「フロントエンド」の記事
最近、iframeを使っています。 クライアントサイドで埋め込む想定で、iframeを使おうとしています。 色々と苦労したことがあったので、書いて残しておこうと思います。 レスポンスヘッダー 前提として、ウェブアプリケーションをプロダクショ
紙を積んだイラストをSVGで書こうとしていました。 (当たり前ですが)図形を表現するためには数学の知識が必要で、学生の頃の記憶を思い出したので疲れました。 所感について、諸々書こうと思います。 成果物 実際に完成したのは、以下の画像ができま
2026年02月17日
以下の記事で書いた CSSをテストする方法について、試してみました。 https://zenn.dev/silverbirder/articles/df6752b230f04c ソースコードは、以下に置いています。 https://gith