Rob Pikeのプログラミング5つのルール――「早すぎる最適化」より深い真実とは

元記事を読む
キュレーターコメント

実装速度や可読性に悩むすべてのエンジニアに届けたい、時代を超えた指針。「なぜシンプルさが強いのか」を言語化したくて選んだ。

概要

「早すぎる最適化は諸悪の根源」という格言を知っているエンジニアは多いが、Go言語の生みの親でもあるRob Pikeが残した「プログラミング5つのルール」は、その一言では語りきれない実践的な知恵が詰まっている。このルールを読めば、なぜシニアエンジニアほどシンプルな実装を好むのかが腑に落ちるはずだ。

ルール1と2は「計測なき最適化は妄想」という原則だ。ボトルネックは必ず意外な場所にある。自分の勘を信じてチューニングしても、たいてい的外れに終わる。まず計測し、数字が語るまで手を動かすな、という鉄則だ。ルール3と4はKenthompsonの「迷ったらブルートフォース」を補強する。洗練されたアルゴリズムは定数項が大きく、nが小さい現実の問題では単純な実装より遅くなることも珍しくない。加えて複雑なアルゴリズムはバグを呼び込む。KISSの哲学そのものだ。

個人的に最も刺さるのがルール5「データが支配する」だ。適切なデータ構造を選べば、アルゴリズムはほぼ自明に決まる。「賢いオブジェクトを使う愚直なコードを書け」という言い換えは、Fred Brooksの『人月の神話』まで遡る普遍的な洞察だ。アーキテクチャ設計で行き詰まったとき、まず問うべきは「どんなアルゴリズムを使うか」ではなく「どんなデータ構造で情報を持つか」なのだと改めて思い知らされる。数十年前のルールが今も色あせない理由が、ここにある。