リファクタリング 適切なバランス感覚とセンス
皆さん、斧を適切に研いでいますか?
技術書を読んでいてブログ投稿のネタになるビジネス書まで手が回らなかったので今回は読んでいる技術書からビジネスに一般化してみようと思います。
現在読んでいるのは「リファクタリング」という本です。
新装版 リファクタリング―既存のコードを安全に改善する― (OBJECT TECHNOLOGY SERIES)
- 作者: Martin Fowler,児玉公信,友野晶夫,平澤章,梅澤真史
- 出版社/メーカー: オーム社
- 発売日: 2014/07/26
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (11件) を見る
リファクタリング
リファクタリングとはプログラミング用語で、「外から見た挙動を変えずにソースコードを整理すること」です。要するに掃除のようなもので、これをサボるとどんどんソースコードがぐちゃぐちゃになっていき、俗に言われるスパゲッティコードとなって生産性を低下させます。
一応Wikipediaの引用も載せておきます。
リファクタリング (refactoring) とは、コンピュータプログラミングにおいて、プログラムの外部から見た動作を変えずにソースコードの内部構造を整理することである。また、いくつかのリファクタリング手法の総称としても使われる。ただし、十分に確立された技術とはいえず、また「リファクタリング」という言葉に厳密な定義があるわけではない。
プログラミングは既存の仕組みを崩壊させずに新たな仕組みを常に追加し続けるようなものです。既存の仕組みが巨大になってくると追加する仕組みの難しさよりも、全体の整合性を維持する事の方が大変になってきます。それに加えて既存のものが掃除されずに散らかっていたらさらに難しくなってしまいます。
僕は最近になってリファクタリングとよく似た概念がビジネスフレームワークにあることに気づきました。それは5S活動です。
5S活動
5S活動とは、「整理、整頓、清掃、清潔、しつけ」の頭文字をとったものです。
要らない物を処分し、要る物は使いやすい場所に置き、周囲を掃除していつでも使えるようにし、それらを維持し誰もが綺麗な状態と保とうとし、職場のルールを守り習慣づける。これによりムリ・ムダ・ムラが減り高い生産性を維持する事が出来るというわけです。
リファクタリングも5S活動もどちらも「明日以降も続く生産活動でクオリティを維持し続けるための活動」であると考える事ができます。コーディングにしろ車の組み立てにしろ、人間が活動すると周囲はどんどん汚れて行くものということですね。
それに加えてどちらにも共通する点は「1回サボっても直ちに影響が出ないため、ズルズルと形骸化しやすい」ものだともいえます。何故そうなってしまうのか、その心理をあらわしたものに木こりのジレンマがあります。
木こりのジレンマ
以下引用です。
ある木こりが、がんばって木を切っている。
通りがかった旅人がその様子を眺めていたが、斧を振るう勢いのわりに、なかなか木が切れていない。
見ると木こりの使っている斧がこぼれしているようなので、旅人は言った。
「斧を研いだほうがいいのでは?」
すると、木こりは言った。
「わかっちゃいるんだけどね、木を切るのに忙しくて、それどころじゃないよ」
木こりのジレンマ ―― 作業を止めて斧を研ぐ人だけが楽しく仕事をできるようになる | 初代編集長ブログ―安田英久 | Web担当者Forum
この逸話はよく「ちゃんと斧を研いでますか?」と、研ぎ方の少なさを注意するために用いられる事が多いと思います。きちんと研げばもっと木を切れるんだよ。と。
でも僕は本質はこれがジレンマであることだと思います。つまり「研いでばかりですがいつになったら木を切りますか?」という注意も必要だということです。5S活動を過剰に行うという話はあまり聞きませんが、目先の納期が迫っていたら5S活動を放棄する選択もあるのかもしれません。
結局バランスが重要だということですね。自己啓発本の中でも有名な7つの習慣でもこの話題はP/PCバランスという名前で取り上げられています。いい本なので今後紹介すると思います。
嫌なにおいを感じ取るセンスを磨く
リファクタリングも5S活動も、ただ言われた事をこなす人間にとっては「言われたルールをきちんと守る事を意識せよ」というだけの話です。ただ、このルール自体を設定する人間にとっては「適切なバランスを見極めよ」という何とも難しい話になってしまいます。
ここでリファクタリングに話を戻そうと思います。リファクタリングではこの適切なバランスを「(汚いコードを)2回までは見逃すが、3回見つけたらリファクタリングせよ」「コードが放つ不吉なにおいを嗅げ」と表現しています。特に後者は思いっきりセンスの話になりますが、このセンスを磨く事も重要なんだと思います。
まとめ
- リファクタリングと5S活動は似てる
- 斧を研ぎすぎても研がなくても木は切れない
- 嫌なにおいを感じ取るセンスを磨け