『Tidy First?』を片手に斬新的に改善の道を歩む
Tidy First? 最初に整頓する?
『Tidy First? ― 個人で実践する経験主義的ソフトウェア設計』を読みました。
コードをいつ整理するか、この問いは頻繁に発生し、常に向き合うことが求められる課題です。
混沌としたコードは経験または対象となる技術や事業に対しての理解が浅かった過去の自分によって生み出されることも、チームメンバーによって生み出されることもあります。
私の普段の業務において、一番高い頻度でこの悩みと判断が求められるのは他社の制作物の改修や運用を任されたときです。
石のベッドを受け入れる
キャリアが浅かった頃は、今よりも物事を解決する力が不足しており、常に不安で何かを恐れていたこともあり[1]、開発者の意図が読み取れないコード、煩雑で問題だらけのコードを見ると、「あぁ、最悪だ。このアプリケーションは欠陥だらけ。ハリボテでろくに動作していない。」と嘆き、作り直さないと使い物にならないというバイアスがかかっていたものでした。
しかし、周りを観察すると、熟練者であればあるほど、冷静に判断し感情論だけではなく利益やリスク・妥当性で判断していることがわかりました。
社会に出て20年近く経ち、私も少しずつ冷静さを保てるようになってきました。
潤沢な資金、理解のある経営者、冷静で経験豊富なマネージャー、その分野のスペシャリストである技術者。要求を整理できる現場担当者。
そんな夢のような環境はフィクションの世界にしかあり得ません。
自分自身の未熟な能力も含め、今あるもので戦うしかないのです。
これはコードの世界も同様です。
見通しの良いコード、完璧なドキュメンテーション、十分な引き継ぎ、そのような環境はどれほどあるのでしょうか。
実際の現場では、前任者がいなくなった、問い合わせ先がない状態で、現在の状況とは乖離した僅かな資料の断片(あればラッキー)、そして何かしら動いているコード(本当に正常に動いているならラッキー)。
以上。
ということがあります。
そして理想的な状況から離れれば離れるほど、コード上の課題も多くなる傾向にあります。
コードは冗長でひとつの観点の単純な修正でも、いくつかに散らばった箇所の修正を行う必要がしばしば発生します。
- 8割方同じ内容(そしておそらく共通化できて2割のコードへの圧縮が可能であろうコード)が数十から数百存在する
- 必要そうで必要ないファイル群
- 必要なさそうで必要なファイル群
- 共通利用を想定したネーミングなのに一部のみで使用され共通で読むと問題になるファイル
- 部分利用を想定したネーミングなのに共通で読み込みが必要となるファイル
- 条件分岐が意図したとおりに動作しておらず一生実行されないコード
- おそらく意図どおりの正しい条件に修正して期待どおりに動かすことによって壊れるコード(不具合によって不具合をたまたま回避していた)
このようなコードを見ると、不安になり、ソワソワして、夜の睡眠も浅くなる人もいるでしょう。まるで石のベッドで眠る気持ちです。
修正したくなります。
作業者の視点でいうと、見るたびに心が辛くなるコードをそのままにしておくより修正するコストを払うのは前向きな気持ちで取り組むことでしょう。
しかし、私のコスト・私の時間は、業務の時間においては私だけのコスト・私だけの時間ではありません。
そこには経済合理性に基づく判断が必要です。
- 整理整頓にかかるコストはその後に発生する運用・改修のコスト圧縮分を考えると妥当か
- 顧客を中心とする関係者にはどのようなメリットがあるか、費用を請求できるか
1年後に必要になるかもしれない改修のための整頓ならば、その時点で判断すれば十分です。 また、莫大なコードの中で本当に使われているものが半分以下だったとしても、将来的な影響が少なければ、むやみに手を加えるべきではありません。
誰しもがごつごつとした石のベッドではなく、ふかふかのベッドで寝たいものですが、重要なことはふかふかのベッドを選ぶ場合の費用はいくらか?と石のベッドで我慢する回数は何回か?なのです。
結局は、リスクとコスト、そして今後の運用コストと、それを削減するための初期コストを天秤にかけることになります。
『Tidy First?』の感想
『Tidy First?』の前半は具体的な整頓術で『リーダブルコード』を想起させる内容で、後半は価値・コストの考え方とそれに紐づく整頓のタイミングについて詳細に説明されています。
書籍全体としてもボリュームが抑えられており、ひとつの章も短く分割されているのでスキマ時間でも読みやすい構成でした。
一昔前の、「あぁ、なんとかして直さないと!」と焦った気持ちになっていた自分自身や、同じ心境に陥る人にオススメしたい本です。
『Tidy First?』から特に好きな一節を引用し、締めくくりたいと思います。
整頓はポテトチップスのようなものだ。1つ食べれば、もう1つ食べたくなる。整頓をしたい衝動を抑えることが、整頓スキルのカギとなる。
-
力量不足の認識、それによる不安・恐怖は今もまだなくなってはいません。 ↩︎
Discussion