英語 Rule of Optimization
プログラミングにおける最適化とは、パフォーマンス・チューニングを行うことです。動作スピードを上げたり、メモリやディスクスペースなど、マシンリソースの使用を効率化したりします。
ただし、プログラミングにおいては、コードを最適化する前に、正しく動作するコードを書くようにします。
十分に動作するものがない段階で、細かいところを磨いていくことには意味がありません。ごくわずかの成果のために、多すぎる時間を注ぎ込むことになります。
正しく動作する前に最適化に走ることは、コードの設計を台無しにすることです。
なぜなら、この時点で最適化にこだわると、以下の問題が起こるからです。
コードが無理なものになったり、コードの内部構造がわかりにくくなったりすると、多くの障害を生み、その障害は莫大な時間を浪費します。そうしてまで得られるものはと言えば、障害のデバッグにかかる時間と比べてはるかに価値の少ない、微々たる高速化や、リソース使用量のわずかな節約に過ぎません。
半端に最適化すると、全体に渡る大きな効果が得られる最適化ができなくなります。その結果、パフォーマンスが低い上に、必要以上に複雑なコードが残ることになります。
まず動かし、正しくしてから、速くしましょう。この順番でプログラミングすることを肝に銘じてください。
最適化より前に、最適化されていない「遅くて、リソースを大量に消費するが、正しく動作する実装」をしましょう。少なくともこの時点では、コードの複雑度を上げないようにして、シンプルな状態を保ちます。その後、大きな効果が得られるところを体系的に探し、最適化を行ってください。
コードが単純であれば、この探索は容易です。
まず動くプロトタイプを作ることは、最適化の観点からも効果的です。
プロトタイプを使うと、「コードを書かなくて済む機能がわかる」という学習効果があります。コードを書かないことは、パフォーマンスを上げることに貢献します。書いていないコードは、最適化しなくても済むからです。
「もっとも強力な最適化ツールは、削除キーである」「もっとも生産的な日は、1000行のコードを捨てた日だ」という、皮肉めいた格言もあるほどです。
Copyright © ITmedia, Inc. All Rights Reserved.