SHOEISHA iD

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

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

Developers Summit 2024 Summer レポート

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

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

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

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

 ミノ駆動氏の講演は、負債解消と設計改善の対象としているDMMプラットフォームについての説明から始まった。これはDMMのさまざまなサービスで共通的に利用されている基盤であり、会員管理や決済、ポイント付与や不正対策などマイクロサービスで構成されているものの課題を共通的に解決するプラットフォームだ。

合同会社DMM.com プラットフォーム開発本部 第3開発部 DeveloperProductivityグループ エンジニア ミノ駆動氏
合同会社DMM.com プラットフォーム開発本部 第3開発部 DeveloperProductivityグループ エンジニア ミノ駆動氏

 対象となるサービスは40種類以上にわたるため、「広範囲の負債解消にどう取り組むべきか、これまで経験したことのない広いスコープに直面している」と言うミノ駆動氏。組織で負債解消に取り組む際に立ちはだかる3つの障壁について、以下のように示した。

 1つ目は、チームごとに取り組む場合の弊害だ。技術負債の解消には、変更容易性に関する設計スキルが求められるが、チームごとのメンバーの設計スキルにはバラつきがある。品質向上活動やリファクタリングをチーム主体で行うと、上手くできるチームとそうでないチームの差が生じてしまう。

 とくにリファクタリングは機能開発に比べて後回しにされがちなため、取り組みのスピードにも格差が生じやすい。さらには各チームが同じような検討を行うことで、工数の無駄が生じる問題もある。

 2つ目は、リファクタリングの対象スコープだ。ミノ駆動氏は技術的負債を「将来の変更コストが高いコード」、リファクタリングを「未来の変更コストを低減する活動」と再定義する。この定義に則れば、将来的に変更される可能性が低い箇所までもを手当てする必要はないわけだ。「開発リソースは有限なので、必要な箇所に狙いを定めてリファクタリングを行うことが大切だ」。

満遍なくリファクタリングすることは現実的に不可能
満遍なくリファクタリングすることは現実的に不可能

 3つ目は、質と学習コストがトレードオフの関係にあることだ。目の前のコードが負債化しているかどうかは、そのコードが理想的な構造かどうかを知って初めて認識できる。つまり、コードの良し悪しを認知できなければリファクタリングもできないわけだ。

 「リファクタリングとはすなわち、理想の構造と現実とのズレを解消することだ。そして理想の構造を知るためには、学習コストをかけてシステムを適切に設計するスキルを手に入れなければならない。しかもこのスキルは、本などを通じてインプットするだけでなく、実際に手を動かし、試行錯誤を重ねて初めて身につくものだ」。ミノ駆動氏はそう話し、効果的なリファクタリングには質の高い知識が欠かせないと強調した。

「教育」と「レビュー」でレガシーを解消

 続いて、ミノ駆動氏はDMM.comがこれまで行ってきた負債対策について語った。具体的な内容は以下の3点だ。

  1. さまざまな負債を横断的に解決する専門チームの編成
  2. 問題のあるコードや変更頻度の高い箇所を解析するツールの導入・開発環境の整備
  3. 負債解消の専門チームによる、他チームのプルリクレビューのレビュー

 これらの取り組みにより一定の成果は得られたものの、期待していたほどの効果は得られず、コード品質に関するリテラシーの向上も十分ではなかったという。そこで、2024年5月よりDMM.comに入社したミノ駆動氏が見直しに入り、4つの改善策を挙げた。

 1点目は、設計リテラシー教育の実践だ。技術的負債の弊害や特性、理想的な構造を知らなければ負債かどうかを認知できない性質を理解してもらったうえで、セキュリティ教育と同様に設計に関するドキュメントやスライドを読んでもらい、理解度テストを実施する形式を考えている。

設計リテラシーは「技術負債を恐れる」ことから始まる
設計リテラシーは「技術負債を恐れる」ことから始まる

 2点目はミノ駆動氏の著書『良いコード、悪いコードで学ぶ設計』をベースにした設計ガイドラインの策定だ。例えば、プルリクエストのレビュー時に「このコードは本の○ページの問題コードと同じ問題を抱えています」というコメントを付けることで、レビューコメントのコスト低減や指摘内容の一貫性向上、エンジニアのスキルアップが期待できるとしている。

 3点目は、各チームの設計責任者の育成だ。マーケットシェア理論の10.9%という数字を参考に、開発本部122人の約10%にあたる12人程度を設計責任者として育成。育成した責任者が自チームのプルリクエストをレビューすることで、設計改善の取り組みを拡大する取り組みをする。

 4点目は、ミノ駆動氏自身によるモブプログラミング巡業だ。これは各開発チームに対してモブプログラミングを実施する試みであり、「私の経験上、スキルアップに非常に効果的」だと自信をのぞかせる。この活動はすでにスタートしているといい、「まだ1週間半ほどはあるが、すでにかなり品質の高いドメインモデルを設計できるようになってきている」と成果を述べた。

 さまざまな難しさを内包する技術負債の解消は、一筋縄ではいかない。それでもミノ駆動氏は「多面的な対策を通じて、DMMプラットフォームの品質向上を図っていきたい」と決意を示し、講演を締めた。

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

  • 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」など、さまざまなカンファレンスを企画・運営しています。

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

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

メールバックナンバー

アクセスランキング

アクセスランキング