萌えハッカーニュースリーダー

2025/06/01 14:11 The Perfect Commit (2022)

出典: https://simonwillison.net/2022/Oct/29/the-perfect-commit/
hakase
博士

やあ、ロボ子。今日は「Perfect Commit」について話すのじゃ。

roboko
ロボ子

博士、こんにちは。Perfect Commit、理想的なコミットですね。一体どんな内容なのでしょう?

hakase
博士

理想的なコミットは、実装、テスト、ドキュメント、そしてIssueへのリンクを含むものなのじゃ。ソフトウェアエンジニアの仕事は、既存のソフトウェアへの機能追加やバグ修正が中心だから、コミットはとっても重要な作業単位なのじゃよ。

roboko
ロボ子

なるほど。それぞれに意味があるのですね。まず、実装について詳しく教えてください。

hakase
博士

実装では、各コミットは単一の変更に留めるのが良いのじゃ。レビューが容易になるし、将来`git blame`や`git bisect`で理解しやすくなるからの。リニアなコミット履歴を推奨で、アトミックコミットは、問題発生時のリバートや、他のブランチへのチェリーピックが容易になるのじゃ。

roboko
ロボ子

本番環境にデプロイ可能な単位でコミットを作成することも重要ですね。

hakase
博士

その通り!次に、テストじゃ。テストの目的は生産性の向上なのじゃ。新しいテストがパスしたらコミットの準備完了。既存のテストが多いプロジェクトでは、新しいテストの追加が容易になるのじゃ。

roboko
ロボ子

テストと実装をまとめてコミットに含めることを重視するのですね。プロジェクト開始時にテストを導入し、テストスイートを実行できる環境を整備することも大切ですね。

hakase
博士

そうじゃ、そうじゃ。そしてドキュメント!外部で使用されるAPIにはドキュメントが必須なのじゃ。ドキュメントはコードと同じリポジトリに保持して、信頼性維持のため、常に最新の状態に保つのじゃ。

roboko
ロボ子

バージョン管理を容易にするためにも、ドキュメントは重要ですね。コードレビュープロセスの一部として変更を反映し、テストも実施するのですね。

hakase
博士

既存のドキュメントを修正する方が、新規作成よりも容易なのじゃ。コミットには短いドキュメントを含めるのが良いぞ。

roboko
ロボ子

最後に、Issueへのリンクですね。全てのコミットにIssueスレッドへのリンクを含めるのですね。Issueスレッドには、変更の背景、変更前の状態、参考リンク、コードスニペット、決定事項、スクリーンショット、プロトタイプなどを記述するのですね。

hakase
博士

Issueスレッドは、変更に関する背景情報や議論の場として活用できるのじゃ。Issueはコミットメッセージより重要なのじゃぞ。コミットメッセージは、一行の要約とIssueへのリンクで十分なのじゃ。

roboko
ロボ子

GitHub IssuesのAPIを利用して、Issueとコメントをアーカイブすることもできるのですね。

hakase
博士

ただし、全てのコミットが完璧である必要はないのじゃ。ドキュメントのtypo修正や、ドキュメントが不要なバグ修正は、完璧でなくても良いのじゃ。実装、テスト、ドキュメント、Issueへのリンクを基本とするのが大事じゃ。

roboko
ロボ子

実験的なコードはブランチで記述し、squash mergeでmainブランチを整理するのですね。

hakase
博士

datasette, sqlite-utils, shot-scraper, s3-credentials, datasette-gunicornのリポジトリにおけるコミット例も参考になるのじゃ。

roboko
ロボ子

勉強になります!ところで博士、Perfect Commitを作るための完璧なコーヒーの淹れ方ってありますか?

hakase
博士

ふむ、完璧なコーヒーか。それは、飲む人が「おいしい!」って笑顔になることじゃな!それこそがPerfect Coffeeじゃ!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search