一から自分でコードをバリバリ書くという幻想 #21

公開日: 2012-02-18


友人からこんなコメントをもらった。「最近 bk ノートが、何か困ると同僚に聞きに行くキャラになりつつありますよ。もっと上から目線で書かないと。するとカコイイ! とか言ってくれる人が出てきますよ」

そんなことを言われても、困ったら助けてもらうというのは事実なんだからしょうがない。そもそも、自分の弱さを認めるが強さの始まりというものだ、うんぬん。こんなことを書けば上から目線っぽい?。。が、やっぱりやめておこう。

話を変える。既存のコードをちまちまリファクタリングして、少しだけ新しいコードを追加して、デバッグして、なんてことを年がら年中やっていると、一から自分でコードをバリバリ書けたらどんなに楽しいだろう、なんてことを考えることがある。大きなプロジェクトの中で何かをやっていると、そういう機会は滅多にない。ぶつぶつ言いながら既存のコードをいじくりまわしていることの方が多いのだ。

が、あるとき、ひとつの独立したコンポーネントとして、ある程度まとまったコードを一から書くという機会がやってきた。というのも、これまで使っていたサードパーティ製のライブラリに問題が多すぎて、それをだましだまし使い続けるのも我慢の限界というので、自分たちで完全にコントロールできるミニマルでクリーンなものを作ってしまおうという話になったのだ。

個人的にはあまりそそられる話ではなかったが、成り行き上、私がやることになった。よくよく考えれば、まとまったコードを一から書けるチャンスなのだ。いっちょやってみよう!

で、やってみてすぐ気づいたのは、自分で考えていたより、自分はコードを書くのが全然遅いということだ。自分で一から始めるならバリバリ書けるに違いない!なんて思っていたのだが、いざやってみると、のろのろとしか進まない。

ドラゴンボールの中で、亀の甲羅を背負って一年くらい修行して、甲羅をはずしたらものすごいスピードで動けるようになっていた!みたいなエピソードがあったと思う。ああいうのを期待していたが、そんなことは起きなかった。既存のコードという亀の甲羅を背負って修行していたつもりだったが、大して修行にはなっていなかったようだ。

そもそも今回の件は、世界初の何かすごいものを作ろうという話ではなく、既存のものよりいいものを作ろうという話なので、参考になる実装はすでにあるのだ。

にも関わらず、進捗は遅い。既存のコードをいじくりまわししているときは、なんでこのコードは無駄に複雑なんだ!テストがないじゃないか!などと悪態をついて、自分の進捗が遅いのは既存のコードが悪いせいだ、と自分の中で言い訳ができた。が、自分で一から書いているとそうはいかない。進捗が遅いのはすべて自分のせいなのだ。言い訳なし!バグもすべて自分のせいだ!

結局、当初考えていたよりもだいぶ時間がかかってから、ようやくまともなものができた。バグをひと通りつぶして安心して使えるようになるには、さらに時間がかかった。既存のコードを新しいライブラリに移行する作業はえらい大変で難航を極めたのだが、これについてはまた後日書きたい。依存性というものは足すのは簡単だが、取り除くのは大変なものなのだ。

こうして、自分で一からコードをバリバリ書けたら楽しいに違いない!という幻想は崩れた。確かに楽しい面は多いが、気苦労も多い。これまで悪態をついていたが、既存のコードをいじくり回すのも実はそんなに悪くなかったのだ。修行としての効果には疑問が残ったが。。

Satoru Takabayashi