英語 One by one
別名 1つずつ少しずつ
プログラミングは、一度に、小さな1つのことを行います。
1つずつ、少しずつ、小さな段の階段を上っていくように作業します。決して複数を相手にせず、1つずつ対処します。
小さな作業を1つ行い、それをしっかり確認し、次の作業に移る、というサイクルを繰り返します。
小さいけれども、確実な1歩を繰り返して進む方が、結果として品質も時間効率も上がります。
なぜなら、複数の作業を一度に行うと、それらの作業が混線して、どれも失敗する可能性が高くなるからです。失敗まで行かなくても、2つの作業がごちゃ混ぜになり、コードの質が悪くなる上に、余計に時間がかかります。
1歩ずつ進めると、最後の1歩を後戻りすることが楽になります。
問題が発生して、修正をいったん元に戻したい時、ステップ・バイ・ステップで進んでいれば、後戻りは楽です。進んだ時と逆の順に、ステップ・バイ・ステップで戻っていけばよいからです。
例えば、タスクAだけを取り消したいのに、タスクAとタスクBの結果がコードに混在していたとしたら、タスクBの内容には手を加えずに、タスクAだけ後戻りさせるのは、非常に厄介な作業です。
1歩ずつ進めると、各1歩の確認が楽になります。
例えば、新しく関数を書く時、まだどこからも使用されていないとしても、まずコンパイルすることで、文法エラーがないことを確認できます。次に、ユニットテストを行うことで、実際の動作を確認できます。このように、コンピュータに仕事をしてもらえるようになるのです。
1歩ずつ進めると、特に古いものを新しいものに変えていく場合、それを安全に行うことができるようになります。「すべてを壊して、すべてを作り直す」のではなく「動く状態を保ちつつ、新しいコードを追加していき、古いものがすべて新しくなったところで、古いものを壊す」という手順を踏むのです。はじめは面倒に感じますが、この方が失敗する危険が少なくなります。
実用的な理由のほかに、心理的な理由もあります。
1歩ずつ進めることは、コードの状態を把握して、コントロールできていることを意味します。そのため、不確定要素がなくなり、不安を感じることのないまま、作業することができるのです。
心理的に圧迫されていると、普段のような質のよい判断ができません。自分の状態をコントロールすることも、よいコードを書くためには必要です。
1歩ずつ、少しずつ作業を行いましょう。
例えば、リファクタリングであれば、モジュール間で関数を移動する時、関数名の不備に気付いたとしても、移動と名前変更を同時に行ってはいけません。関数を移動した後、いったんその状態で動作確認をしてから、関数名の変更に取り組みます。
あるいは、テスト駆動開発中であれば、コードを一気に書いて、後からまとめてテストを実行してはいけません。もちろん、必要なテストコードを全部書いてから、本番コードを全部書くということもしてはいけません。少しずつテストコードを書き、少しずつ本番コードを書き、それを繰り返します。
頭のいい人は、コツコツ考えたりしないで、瞬時に、一足飛びに答えを導き出しているように見えます。
確かに、頭のいい人は、アウトプットが速い上に正確なので、何かショートカットしているように見えるかもしれません。しかし、これは誤解です。
頭のいい人は、何か特別な手法を使って、手順を飛ばして、考えるのが速くなっているのではありません。コツコツ考えているのですが、やらなければならない論理ステップを構築し、各ステップそれぞれを速く、確実に行うので、全体として速く正確になっているのです。「コツコツを高速化している」ということです。
少し考えて、わからないと、すぐに自分の頭の悪さを責めてしまうのは誤りです。手順をしっかり踏んで、コツコツ考えるようにしましょう。
論理的に考えるには、ポイントがあります。
出典書籍
『Java言語で学ぶリファクタリング入門』結城浩, ソフトバンククリエイティブ(2007)
関連書籍
『新装版リファクタリング―既存のコードを安全に改善する』Martin Fowler, オーム社(2014)
『テスト駆動開発入門』ケントベック, ピアソンエデュケーション(2003)
『史上最強の論理パズル―ポイントを見抜く力を養う60問』小野田博一, 講談社(2003)
Copyright © ITmedia, Inc. All Rights Reserved.