プログラマのダイエット

結城浩

最近私も年齢相応にお腹まわりが気になってきているので、 「プログラマのダイエット」というのを自分で考え、実行してみています。

ここ1ヶ月2週間ほど続けてみて、それなりに効果が出ているようですので、 みなさんとアイディアをシェアしたいと思います。 ただし、以下の記述を参考にしてダイエットしようと思う方は、 どうか自己責任でお願いいたします。 結城はいかなる責任も負いません。

プログラマのダイエットとは何か。

プログラマはプログラムを作るのが仕事である。 プログラムを作っていて、しばしば「もっと高速化しなければならない」という局面にぶつかる。 「プログラムを高速化する」というのは複雑な技術だけれど、そこにはいくつかの鉄則がある。 私はその鉄則が「自分の体重を減らす」という技術にも応用できるのではないか、と考えた。

「プログラマのダイエット」というのは、 「プログラムの高速化技術」を「体重の軽量化」に応用する方法のことである。

ポイントは3つある。

鉄則1. 計測ツールを使え

プログラムの高速化では、プロファイラなどの計測ツールを使って実行時間(や頻度)を計測する。 ソースコードをちらっと見ただけで、高速化のポイントは決してわからない。 また、改善したとしてもどれだけ改善したのかがわからない。 計測ツールを使って、客観的な数字にするのが極めて重要である。

ダイエットも同じだ。まず体重計を用意する。 そして、毎日それに乗る。そしてその数字を記録する。 頭で覚えていて「何キロ増えた・減った」と一喜一憂しない。 体重計の数字を、日時と共に淡々と記録することが肝要である。

私の場合には、 基本的には朝と晩に服を脱いで体重計に乗った。 そしてその数字を自分の「一人Wiki」に記録した。 YukiWikiの「コメント機能」を使うと、自動的に日時が記録できて便利。 そして、ページ内の数字をピックアップして棒グラフ化するプラグインを作って、 即座にグラフが表示されるようにした。 頻繁に体重計に乗ってみて、人間というものは一日の中でもずいぶん体重が増減していることが分かった。 だから、ピンポイントでの数字で一喜一憂しても意味がないと分かった。 グラフ化して、自分の体重の変化を見極めることが大切なのだ。

鉄則2. やたらに直すな(主要因を見極めてから直せ)

プログラムの高速化では、やたらにソースを直してはいけない。 アドホックな直しを入れてはソースが汚くなりメンテ不能になるからだ。 きちんとボトルネックを見極めてから直すことが肝要である。

ダイエットも同じだ(と思う)。いろんなダイエット方法をやみくもにやっても無意味だ。 どんなによい方法でも、がんばりすぎて続かなくなっては意味がない。 主要因を見極めて、それを確実に取り除く。でもそれ以外はそのまま。ノータッチでいこう。

私の場合には、夜、 本を読みながら食べたり飲んだりするのがよくなかった。 夜中にビールを飲んでいた時期があって、そのころにめっきり体重増加したからだ。 そこで、このたびは「ビール(お酒)を飲まない」「夜中に食べない」 ということを守ることにした。 もちろん、そのほかにもやれば効果的なことはたくさんあるだろうけれど、 そんなにきつく縛っては、長期間にわたって続けるのは難しい。 だから、上記の二点だけはしっかり守り、 あとはまったくいままでどおりでかまわない、ということにした。 実際には、ストレッチをしたり、意識的に体を動かすことも心がけた。 でもそれはオマケであって「やってもいいけれど、やらなくてもいいんだよ」と自分に言い聞かせた。

鉄則3. 度を越した改善を約束するな

プログラムの高速化では、プロファイルを取って主要因を取り除く最初のステップだけは、 とても効果が上がる。でもその後、同じペースで高速化が達成できるわけではない。 しりすぼみというか、だんだん労力に見合った効果は望めなくなる。 だからうっかり「○○%は確実に改善できます」などと請け負ってはいけない。

ダイエットも同じだ(と思う)。 まだ何もやっていないところから、主要因を取り除くと、きっとぐぐっと体重は下がるだろう。 そしてそれを実感できるだろう。 でもその後、ペースは落ちていくだろう(その変化は、きちんと数値化していれば見ることができる)。 だから、過剰な期待をせず、度を越した改善を約束しない、ということにしよう。 それよりも、ダイエットを1つのきっかけとして、 自分の生活を長期的に改善するのだ、と考えるほうがよいだろう。

私の場合には、まだこのダイエットを始めたばかりなので、 いま、ぐぐっと体重が下がっている途中である。 これからどういう風に進むかは実はよくわかっていない。 でも、数字が目に見えて変化するのは楽しいものだ。 体重が減っていくことだけを目標にするのではなく、 広い意味で自分の生活が改善できたらよいなあ、と思っている。

以上。

繰り返しになりますが、 上記を参考にしてダイエットしようとする方は自己責任でお願いします。 結城は何の保証もしませんし、責任も負いません。

追記:ちなみに、2004-07-10 21:32 現在、 Googleで「プログラマのダイエット」を検索すると0件。

17日目

プログラマのダイエット、17日目。

毎日体重をはかるだけで、ずいぶん意識が変化するものだなと思います。 無理をしていないので、ぜんぜんつらくはないし、数字が見えるのでゲーム感覚で楽しいです。 体を動かしたくなってくるので、ちょっとした空き時間にストレッチもしています。 ちなみに空き時間というのは10秒とか、1分とかそういう単位です。

コンパイルしている間にストレッチ。

21日目

プログラマのダイエット、21日目。

ちなみに、2004-07-31 22:16 現在、 Googleで「プログラマのダイエット」を検索すると77件。

25日目

プログラマのダイエット、25日目。

ちなみに、2004-08-04 22:00 現在、 Googleで「プログラマのダイエット」を検索すると58件。

2004-08-09 02:00:00 - [diet]プログラマのダイエット(31日目)

プログラマのダイエット31日目(8月9日でちょうどひと月)。

いま考えているnext stepは…。

35日目

35日目。

51日目

プログラマのダイエット、 51日目。

(2004年7月10日〜8月29日の日記から)

豊かな人生のための四つの法則