kbits

Rob Pikeのプログラミング5ルール

原題: Rob Pike’s 5 Rules of Programming
著者: Rob Pike
公開日: 1989年頃(Pike著 “Notes on Programming in C” より)
ソースURL: https://www.cs.unc.edu/~stotts/COMP590-059-f24/robsrules.html
アーカイブ日: 2026-03-19


要約

Rob Pike(Unixの共同開発者、Go言語の設計者)が提唱したプログラミングの5つの原則。最適化・アルゴリズム選択・データ構造の設計に関する本質を、短く鋭い言葉で凝縮している。

ルール1

ボトルネックがどこに現れるかは予測できない。
「スピードハック」を入れる前に、まずそこが本当のボトルネックであることを証明せよ。推測でチューニングするな。

ルール2

計測せよ。 スピードのためにチューニングする前に計測すること。計測した後でも、コードのある一部が残りを圧倒的に占めていない限りはチューニングするな。

ルール3

nが小さいとき、凝ったアルゴリズムは遅い。そしてnはたいてい小さい。
凝ったアルゴリズムには大きな定数がある。nが頻繁に大きくなると分かるまで、凝ったものを使うな(たとえnが大きくなっても、まずルール2を適用せよ)。

ルール4

凝ったアルゴリズムはシンプルなものよりバグが多く、実装もはるかに難しい。
シンプルなアルゴリズムとシンプルなデータ構造を使え。

ルール5

データが支配する。 適切なデータ構造を選び、物事をうまく整理すれば、アルゴリズムはほとんど常に自明になる。アルゴリズムではなく、データ構造こそがプログラミングの中心だ。


関連する格言


論評

この5つのルールが30年以上にわたって語り継がれている理由は、それが「スタイルガイド」ではなく「設計哲学」だからだ。計測なき最適化を戒め、凝ったアルゴリズムより単純な実装を優先し、アルゴリズムより先にデータ構造を考える——この順序が正しいと骨身に染みて理解するには、多くの場合、自分で失敗した経験が要る。

特にルール5の「データが支配する」という洞察は深い。コードはデータの形に引き寄せられる。データ構造が決まれば、操作はほぼ自動的に導かれる。これはオブジェクト指向設計にも、関数型設計にも、AIモデルのアーキテクチャ設計にも通じる視点だ。

ルール3も時代を超えた鋭さがある。「nはたいてい小さい」——この一文は、現場でO(n²)を恐れて不必要に複雑な実装をしてしまうあらゆるケースに対する解毒剤だ。プロファイリングせずに最適化するエンジニアは今もいる。


タグ: #programming #optimization #data-structures #software-design #rob-pike