Upgrade to Pro — share decks privately, control downloads, hide ads and more …

PHPInsightsで技術的負債の可視化始めました

赤堀海
October 12, 2023

 PHPInsightsで技術的負債の可視化始めました

私たちは「はたらこねっと」という求人広告サービスを開発しています。
「はたらこねっと」は2000年からサービスを開始しました。サービス開始以降何度かリプレイスを行っていますが、レガシーなコードがまだまだ残ってしまっている状況です。
そんなはたらこねっとに残ってしまっている技術的負債やレガシーコードを、PHPInsightsで可視化する取り組みを開始しました。
本トークでは、PHPInsightsを利用してコードを解析し、技術的負債を特定する方法について紹介します。
技術的負債の可視化にご興味のある方におすすめのトークです!

赤堀海

October 12, 2023
Tweet

Other Decks in Business

Transcript

  1. 自己紹介 • 名前:赤堀 海
 
 • 会社名:ディップ株式会社/はたらこねっと開発課
 
 • 担当業務:はたらこねっと求職者向けサイトの開発
 


    • 趣味:
 ・バンド(ギターボーカル) 
 ・ダンス(半年前から始めました!) 
 
 • 目指すエンジニア:歌って踊れるエンジニア 
 01 4

  2. 03 循環的複雑度の重要性 11
 循環的複雑度が高い • プログラムは複雑になる
 • バグの混入リスク、発見されたバグの修 正にかかる時間が増加する
 循環的複雑度が低い

    • プログラムの可読性、保守性、移植性が 高まる
 • テストに必要なテストパターンの数が減り、カ バレッジも上げることができる

  3. →どのファイルで一番労力を使っているのかを明確にし、労力が高い順に優先度を決める! 
 
 
 
 
 ⒈ Gitで直近1年間のファイル別変更回数を取得 
 


    ⒉ 「循環的複雑度 × 変更回数 = 労力(重み)」と考えて計算! 
 
 ⒊ 労力の多いファイルから優先度をつける。 
 
 04 重み(優先度)を出す 15
 循環的複雑度 × ファイル変更回数 で開発の労力(重み)を出す ②どのファイルからリファクタリングを始めていいのか分からない。
  4. 04 ファイル別変更回数(直近1年間)の取得 16
 Gitで以下のコマンドを実行することで git log --name-only --oneline | grep

    -v ' ' | sort | uniq -c | sort -n 
 ファイル別変更回数 (直近1年間)を取得できる
  5. 05 今後の動き 22
 ⒈ 複雑度や重みの数値をダッシュボード化することで更なる可視化を目指す。 
 
 
 
 ⒉

    一部の優先度が高いファイルからリファクタリングを開始し、メンバーの実装時間への影響を 計測する。
 
 
 
 ⒊ 定量的な評価を元にリファクタリングの優先度を上げる。
  6.   ①どのファイルにどれくらいの負債があるか把握できていない...
 
     
 
   ②どのファイルからリファクタリングを始めるべきか見当がつかない...
 
     
 


      ③リファクタリングの優先度が低く時間が取れない...
 
     
 06 24
 まとめ → 「循環的複雑度」を出して「負債の量」を把握する! → 「重み」を出して「優先度」を決める! → 一部でリファクタリングを行い、メンバーの 「実装時間への影響」を測定する。
  測定した定量的な評価を元にリファクタリングの 「優先度」を上げる。