Gitの履歴を振り返って気づいたこと
エンジニアとして評価されるGit履歴ってどんなのか気になって、AIにGit履歴について率直なフィードバックを求めてみました。
現状:良かった点
AIの分析では、コミットメッセージについては問題なしという結果。以下のメッセージが「なぜその変更をしたか書けている」と判定されました。
古いデータが保持され、更新した記事が反映されない問題を修整。URLパラメータに依存する動的処理を<Suspense>で囲み、アクセス時にレンダリングさせるように修正。
現状:問題点
一方で、ブランチの使い方については「使えていない」と指摘されました。
自分では DesignOps、letsLogin、letsStyle など複数のブランチを作ってコミットしていたので、一応使っているつもりでした。
ブランチを使ってマージした形跡もありましたが、途中からmainに直接コミットしていたようです。
指摘された問題は2つです。
1. mainへの直接コミットが続いている
機能単位でブランチを切り、PRを作ってマージする流れができていませんでした。これはチーム開発の基本で、一人開発でも練習として使うべきとのことでした。
2. 一部のコミットメッセージが曖昧
middleware→proxyに変更→ なぜ変更したか書かれていないUI/UX改善。問題なさそうならデプロイへ。→ ToDoがコミットメッセージに混入している
良いメッセージと悪いメッセージが混在していました。
良いコミットメッセージの事例
※日本人のエンジニアのコミット例をあまり見つけられなかった(本当にエンジニアなのかも判断できない)ので、AIに提示してもらった。
基本構造:[何をしたか]:[なぜしたか / 何が問題だったか]
バグ修正
古いキャッシュが残り記事更新が反映されない問題を修正
revalidatePath の対象パスが /notes のみで /notes/[slug] が含まれていなかった。
詳細ページのキャッシュが更新されないため両方を対象に追加。
ログイン後に404になる問題を修正
middleware のマッチャーが /admin/* を対象外にしていたため、
認証後のリダイレクト先が保護されていなかった。パターンを /admin/:path* に変更。
機能追加
タグ絞り込み機能を追加
記事一覧でタグをクリックすると該当記事だけ表示されるようにした。
URLクエリパラメータで状態を管理し、ブラウザバックでも絞り込み状態が戻るようにした。
記事削除機能を管理画面に追加
一覧画面ではなく編集画面に配置。IDが取得できる状態(既存記事の編集時)のみ表示する。
誤操作防止のため確認ダイアログを挟んでいる。
リファクタリング
認証チェックをmiddlewareに集約
各管理ページで個別に行っていたセッション確認を middleware.ts に移動。
重複コードの削除と、認証漏れが起きにくい構造への変更が目的。
UI・スタイル
モバイル表示でナビゲーションが崩れる問題を修正
flex-wrap が設定されておらず、画面幅640px以下でメニューが溢れていた。
sm:flex-wrap-wrap を追加し、実機(iPhone SE)で確認済み。
設定・環境
ビルド時の prisma generate エラーを修正
Vercelデプロイ時に型定義が生成されずビルドが失敗していた。
package.json の build スクリプトに prisma generate を追加して対処。
まとめ
| 観点 | 現状 | これから |
|---|---|---|
| コミットメッセージ | 理由を書く習慣はあるが一部曖昧 | 変更理由を必ず書く |
| ブランチ | 途中からmainに直接コミット | feature/xxx → PR → マージ |
Git履歴は、コードと同じくらい「自分がどう考えて開発したか」を示すものなので、もう少し真剣に使い方を調べたり、他のエンジニアの事例を調べておけばよかったです。
…恥ずかしながら、定着化するまでAIにコーチングしてもらうことにしました。
