抽象と具体
Categories:
最近、ある画像サイトのクローラーツールを作っていて、深く感じることがありました。プロトタイプはすぐに実装できたのですが、その後、より広い汎用性、つまり「抽象化」を持たせようとしたところ、絶えずリファクタリングを繰り返す羽目になりました。
何度も作り直し、膨大な時間を費やしてしまいました。ソフトウェア自体は進歩しているように見えますが、機能的には何も増えておらず、少し苦々しい思いをしています。
最初から最適な書き方が明確になっていれば、もう少し遠回りをせずに済んだかもしれません。しかし、抽象化を際限なく続けても終わりがなく、過度な設計の罠に陥りやすいものです。つまり、半月書き続けても、基本的な機能すら備えたプロトタイプを作れない状態です。即座に成果を求められる今日において、これは実に避けるべきことです。
ソフトウェアの適応性と機能性は、相互に段階的に進化させるべきです。ローマは一日にして成りません。毎日一つずつ小さな目標を達成し、ゆっくりと進めば、やがて頑丈な大木になるでしょう。