SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Developers Summit 2024 Summer レポート

DMM.comの施策から見る、事業をむしばむ「技術負債」への処方箋──リファクタリングの「言語化」でインシデントを予防

【24-B-1】技術的負債~困難を乗り越える道筋~

  • X ポスト
  • このエントリーをはてなブックマークに追加

見積もりやリカバリーの「失敗」は必ず起こる

 このような事態が発生するのはなぜだろうか。石垣氏は以下の2点を挙げる。

  1. 「失敗は見積りの失敗」であるという認識の欠如
  2. 隠された失敗が明るみになり、「詰んでいる」状態であること

 1.について石垣氏は、マーティン・ファウラー氏による言葉を引用しつつ、「プロジェクトが失敗するのは、そもそもの見積もりが失敗しているためだ」と話す。さらには「見積もり時点での計画工数が大きくなるほど、実績との乖離が大きくなる傾向がある」というIPAのデータも示した。

 そのうえで石垣氏は、「見積もりが失敗するのは、プロジェクト初期の段階で多くの約束事を決めてしまうためだ」と指摘する。有名な図である「不確実性のコーン」が示すように、プロジェクトの初期は不確実性が非常に高いため、焦ってリカバリー策を講じたところで見積もりのズレは取り戻せないのだ。

初動のズレは「見積もりの失敗」であり、エンジニア側の非ではない
初動のズレは「見積もりの失敗」であり、エンジニア側の非ではない

 「プロジェクト初期に『だいたいこのくらいです』と伝えた概算がいつのまにか"約束"となり、首を絞めることはよくある。技術負債が溜まっていればなおさら見積もりは難しい。エンジニアはこのことをよく認識し、"DD(詳細設計)の後であれば、リリース日を約束できる"といった形で伝えるべきだ」。石垣氏は、予測と約束を区別することの必要性をこう強調した。

 2.の「隠された失敗」は、予定日の直前になされる「リリース日が2週間ずれます」という報告などだ。事業責任者からすれば「どうして今言うんだ」と頭を抱えたくなるだろう。

 石垣氏によれば、このような状況に陥る原因には、エンジニアの「リカバリーできる」という過信や、開発への不安から必要以上のバッファを取ってしまうケースがあるという。「技術負債の解決と内部品質の改善は、遅くなればなるほどリカバリープランが限られる」と、早めに報告することの重要性を強調した。

「爆弾化」した技術負債は人海戦術以外の手段が取れない
「爆弾化」した技術負債は人海戦術以外の手段が取れない

 計画のディレイや予算超過といった課題を抱えた事業責任者は、内部品質の改善よりもスピードを重視し、短期的な選択に走りがちだ。しかし、こうした状況が続くとエンジニア側からは「いつリファクタリングのような内部改善ができるのか」という疑問が生じてしまう。

 「事業を営む以上、毎年の売上成長を目標に掲げることは避けられない。だからこそ、それを言い訳に問題を先送りすることなく、内部品質の改善や技術負債の解消をスケジュールに織り込んでいくことが重要だ」。

エンジニアの「言語化能力」はリファクタリングにも効果アリ

 技術負債を解消するためには、エンジニアの言語化能力も鍵となる。内部品質の改善効果は非エンジニアにとっては分かりにくいうえに、リファクタリングの具体的な効果や意義を説明できるエンジニアも少ないため、事業責任者の納得を得づらいのだ。

 「昨今では事業責任者も、リファクタリングを『やったほうがいい(やらなければ)』と考えていることが多い。ただしその範囲や方法に知悉しているとは限らず、そうなると予算やスケジュールも立てられないので、及び腰になるわけだ」

超概算の段階とは全く規模が異なることも
超概算の段階とは全く規模が異なることも

 DMM.comには20年以上変わらないシステムも多く存在しており、これらのリファクタリングには数十億円規模の費用がかかる可能性がある。

 石垣氏はこうしたレガシーの解消に「いつ踏み込もうかと悩む」としつつ、具体的な手立てとして「開発の優先順位を明確化すること」を挙げる。これは新規開発やエンハンス開発はもちろん、ミドルウェアのバージョンアップやセキュリティ対応、設計改善なども含めた幅広い要素に優先順位をつけるものだ。

 エンジニアリングは不確実性が高いため、これらの事項を適切に言語化しオープンにすることで、「新規開発やエンハンス開発ばかりを割り振られ、内部品質改善の機会が失われる」という状況を回避できる。石垣氏は「リファクタリングという言葉を使わずに、何をするのかをしっかり言語化して伝えることが重要」と、非エンジニアにもわかるような説明を行うエンジニア側の責任について強調し、ミノ駆動氏の講演につなげた。

次のページ
広範囲のリファクタリングで立ちはだかる「3つの壁」

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Developers Summit 2024 Summer レポート連載記事一覧

もっと読む

この記事の著者

丸毛 透(マルモ トオル)

インタビュー(人物)、ポートレート、商品撮影、料理写真をWeb雑誌中心に活動。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

CodeZine編集部(コードジンヘンシュウブ)

CodeZineは、株式会社翔泳社が運営するソフトウェア開発者向けのWebメディアです。「デベロッパーの成長と課題解決に貢献するメディア」をコンセプトに、現場で役立つ最新情報を日々お届けします。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

中島 佑馬(ナカシマ ユウマ)

 立命館大学卒業後、日刊工業新聞社にて経済記者として勤務。その後テクニカルライターを経て、2021年にフリーランスライターとして独立。Webメディアを中心に活動しており、広くビジネス領域での取材記事やニュース記事、SEO記事の作成などを行う。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/20125 2024/10/21 11:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング