静的解析ツールを活用した、チームでのコードベース健全化戦略

サムネイル

はじめに

この記事は、DMMグループ Advent Calendar 2025 の17日目の記事です。

こんにちは、二次元コンテンツ事業/同人開発部の小杉です。

私たちは、サービス全体の品質向上とセキュリティ強化を目的として、コードベースの健全性を継続的に高める取り組みを進めています。

その一環として、静的解析ツールを活用し、改善につながる情報をチーム全体で共有しながら、品質向上を推進する仕組みづくりに着手しました。

本記事では、この取り組みの中で私たちが確立した、チーム全体で実行でき、かつ継続的に運用可能な改善プロセスを紹介します。

静的解析を取り入れた品質改善アプローチ

改善活動の基盤として、JetBrains製のQodanaやPHPStanを導入し、CI/CDパイプラインの中でコード品質に関するフィードバックを自動的に得られるようにしました。

静的解析ツールの導入にあたっては、まず必要最低限のルールに絞り、得られるフィードバックが日々の開発や改善活動にどの程度寄与するかを確認しました。

改善を進める中で見えてきた課題と気づき

静的解析ツールの結果をレビューしたところ、次のような観点が改善活動において特に有用であることが分かりました。

  • 不具合に直結する可能性のある指摘: 実行時エラーにつながる可能性のある型不一致や、引数の不正などが事前に検出され、バグの早期発見に寄与しました。

  • 可読性・保守性に関する示唆: PHPDocとの齟齬、未使用の変数、冗長な記述など、将来的な保守負荷につながる項目が明確になりました。

このように、静的解析によって得られる情報は、個別の開発案件とは別軸で進める改善活動を支援するうえで重要な役割を果たすと分かりました。

品質改善の効果を最大化するための目標再設計

改善活動を続ける中で、当チームは品質向上に向けた取り組みの範囲と目標をあらためて整理しました。

振り返りの中で、導入当初はノイズとして扱っていた指摘にも、実は保守性や一貫性を高めるうえで解消すべきものが多く含まれていることが分かりました。

そこで、これらの指摘を段階的に解消し、コードベース全体の品質基準を底上げすることを下期の明確な目標として設定しました。

現在はチーム全体で協力しながら、潜在的な問題を着実に解消し、バグ発生率の低減とコード品質の安定化に向けて改善を進めています。

チームで取り組んだ改善プロセスと具体的な進め方

1. 優先順位付けとタスクの細分化戦略

除外されていた指摘を一斉に解消するのは困難なため、私たちは実現の容易さとリリース頻度を重視した戦略を取りました。

優先順位付けの基準

  • 難易度が低いものから着手: 未使用変数や冗長な記述など、動作に影響しないが保守性に関わる指摘を優先しました。

こうした指摘の中には、静的解析ツールで一般的に検出される項目も多く含まれます。
例としてQodanaを用いると、以下のような項目を除外対象から外し、検出対象として有効化しました:

exclude:
  - name: PhpUnusedLocalVariableInspection  # 未使用のローカル変数
  - name: PhpIssetCanBeReplacedWithCoalesceInspection  # isset()をNull合体演算子(??)に置き換え可能
  - name: PhpUnnecessaryFullyQualifiedNameInspection  # 不要な完全修飾名

これらのルールは、コードの動作には影響しないものの、可読性や保守性を向上させる重要な指摘です。

  • 即時反映を重視: 修正が完了したルールから順次CI/CDに組み込み、即座に品質基準を引き上げることで、改善効果を早期に実感できるようにしました。

タスクの細分化(チケット作成)

  • 1チケットあたり1〜3ルールまでに限定し、なるべく細かくリリースできるように意識しました。
  • 指摘の数や難易度を精査し、チケットの工数見積もりを安定させました。

2. チームメンバーへのタスク分担と運用の仕組み

通常の開発案件の進行を妨げないよう、空き時間の有効活用と情報共有の徹底を軸に運用しました。

実行フロー

  • ルールのテスト
    • 除外ルールを1個ずつ外して、CI/CDに組み込んでいるQodanaスキャンを実施し、実際の指摘の数と修正難易度を確認しました。
    • その結果を参考に、タスクの分割や担当者アサインを行いました。
  • チケット作成とアサイン
    • 作成した改善チケットをチームメンバーにアサインし、担当している案件の空き時間を利用して着手してもらう仕組みにしました。
    • 各メンバーは、担当案件に支障が出ない範囲で改善チケットに取り組む運用としました。
  • 情報共有の徹底
    • 改善チケットには、Qodanaが解析した結果のURLを記載しました。
    • 担当メンバーが修正対象のコードをすぐに特定できるようにし、スムーズな作業が行えるようにしました。

継続的な改善サイクルの構築と今後の展望

下期が終わる頃には、現在進めている改善タスクが完了し、コードベース全体の品質基準が大きく向上している見込みです。

これにより、静的解析で得られる情報が整理され、品質改善を継続しやすい基盤が整います。

今後も、QodanaやPHPStanなどの静的解析ツールを適切に組み合わせながら改善サイクルを継続し、コードベースの健全性と開発の安定性をさらに高めていきます。

宣伝

二次元コンテンツ事業/同人開発部では、一緒に働く仲間を募集しています。
興味を持っていただけた方はぜひご応募ください。

dmm-corp.com