1つの解決策を永続的な決定とするのは無理がある――曳光弾とプロトタイプ、ユーザーからのフィードバック問題解決力を高めるコツはプログラミングの原則・思考にあり(7)(3/4 ページ)

» 2017年08月24日 05時00分 公開
[上田勲]

UNIX思想(15) 最適化の原則

 英語  Rule of Optimization

 What 〜速いコードより正しいコード

 プログラミングにおける最適化とは、パフォーマンス・チューニングを行うことです。動作スピードを上げたり、メモリやディスクスペースなど、マシンリソースの使用を効率化したりします。

 ただし、プログラミングにおいては、コードを最適化する前に、正しく動作するコードを書くようにします。

 十分に動作するものがない段階で、細かいところを磨いていくことには意味がありません。ごくわずかの成果のために、多すぎる時間を注ぎ込むことになります。

 Why 〜早い段階での「速いコード」は設計を破綻させる

 正しく動作する前に最適化に走ることは、コードの設計を台無しにすることです。

 なぜなら、この時点で最適化にこだわると、以下の問題が起こるからです。

  • 透明性や単純性が犠牲になる

 コードが無理なものになったり、コードの内部構造がわかりにくくなったりすると、多くの障害を生み、その障害は莫大な時間を浪費します。そうしてまで得られるものはと言えば、障害のデバッグにかかる時間と比べてはるかに価値の少ない、微々たる高速化や、リソース使用量のわずかな節約に過ぎません。

  • 部分に対する半端な最適化が、全体の最適化の妨げになる

 半端に最適化すると、全体に渡る大きな効果が得られる最適化ができなくなります。その結果、パフォーマンスが低い上に、必要以上に複雑なコードが残ることになります。

 How 〜正しくしてから速くする

 まず動かし、正しくしてから、速くしましょう。この順番でプログラミングすることを肝に銘じてください。

 最適化より前に、最適化されていない「遅くて、リソースを大量に消費するが、正しく動作する実装」をしましょう。少なくともこの時点では、コードの複雑度を上げないようにして、シンプルな状態を保ちます。その後、大きな効果が得られるところを体系的に探し、最適化を行ってください。

 コードが単純であれば、この探索は容易です。

 発展 〜プロトタイプで最適化

 まず動くプロトタイプを作ることは、最適化の観点からも効果的です。

 プロトタイプを使うと、「コードを書かなくて済む機能がわかる」という学習効果があります。コードを書かないことは、パフォーマンスを上げることに貢献します。書いていないコードは、最適化しなくても済むからです。

 「もっとも強力な最適化ツールは、削除キーである」「もっとも生産的な日は、1000行のコードを捨てた日だ」という、皮肉めいた格言もあるほどです。

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。