プログラミングは、一度に、小さな1つのことを行います。
1つずつ、少しずつ、小さな段の階段を上っていくように作業します。決して複数を相手にせず、1つずつ対処します。
小さな作業を1つ行い、それをしっかり確認し、次の作業に移る、というサイクルを繰り返します。
上田勲. プリンシプル オブ プログラミング 3年目までに身につけたい 一生役立つ101の原理原則 (Kindle の位置No.4234-4237). 株式会社秀和システム. Kindle 版.
’1歩ずつ少しずつ’とは書籍プリンシプル オブ プログラミング内で述べられているプログラミングの原則の一つです。内容は上記で引用した通り一つ一つ小さな作業をこなしていくという方法を繰り返して大きなことを成すプログラミングをしましょう、ということです。
プログラミングを行う過程で現れるものは積み重ねると複雑になりがちです。例えば、条件分岐、関数の依存関係。また機能追加、バグ修正、リファクタリング、テストといった作業も多岐に渡るため、一度に行うと何をしたのか、していたのか不透明になることがあります。こういった問題が現れないように、1歩ずつ少しずつ作業をした方がよいです。
1歩ずつ少しずつとありましたが1歩をどう定義するかという問題があります。極端に言えば、ある製品を作る、あるモジュールを完成させる、といった何らかの単位を持つものに関して作業(動詞?)を一つ行ったならばとんでもない大股でも1歩です。もちろんプリンシプル オブ プログラミング内で述べられている原則における1歩はこれほど大股ではありません。Gitのコミットメッセージのルールを定めることによって、いくらかましな歩幅で1歩を刻めます。
コミットメッセージのルールとして参考になりやすいのは大規模であったり、多人数で開発を続けているリポジトリのコミットメッセージのフォーマットです。例えばAngular.js の開発者ガイドのコミットメッセージガイドラインには次の様にあります。
Commit Message Format <type>(<scope>): <subject> <BLANK LINE> <body> <BLANK LINE> <footer>
- feat: A new feature
- fix: A bug fix
- docs: Documentation only changes
- style: Changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons, etc)
- refactor: A code change that neither fixes a bug nor adds a feature
- perf: A code change that improves performance
- test: Adding missing or correcting existing tests
- chore: Changes to the build process or auxiliary tools and libraries such as documentation generation
このfix:などの様に接頭辞をつけることで一つのコミットで一種類の小さな作業しかできない様に1歩を縛れ、1歩ずつ少しずつを実現できます。接頭辞をつけることで次の画像の様な検索もできなかなか便利です。