Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
PHPアプリケーションにおける アーキテクチャメトリクスについて Qiita Night PHP by @isanasan_ 1
Slide 2
Slide 2 text
自己紹介 Qiita Night PHP by @isanasan_ 2
Slide 3
Slide 3 text
Lancers Productivity Team DevOpsに興味関心がある @isanasan_ @isanasan @isana Qiita Night PHP いさな by @isanasan_ 3
Slide 4
Slide 4 text
対象者 Qiita Night PHP by @isanasan_ 4
Slide 5
Slide 5 text
負債に苦しむエンジニア テックリード プレイングマネージャー Qiita Night PHP 対象者 by @isanasan_ 5
Slide 6
Slide 6 text
Qiita Night PHP アーキテクチャメトリクスとは by @isanasan_ 6
Slide 7
Slide 7 text
アーキテクチャの保守性を測定するための指標 Qiita Night PHP アーキテクチャメトリクスとは by @isanasan_ 7
Slide 8
Slide 8 text
Qiita Night PHP 保守性とは by @isanasan_ 8
Slide 9
Slide 9 text
システム/ソフトウェア製品品質(SQuaRE) Qiita Night PHP 保守性とは by @isanasan_ 9
Slide 10
Slide 10 text
Qiita Night PHP システム/ソフトウェア製品品質(SQuaRE) https://www.ipa.go.jp/sec/reports/20150331_1.html 10
Slide 11
Slide 11 text
以下の項目が今どのくらいヤバいのかを数字で示すためのもの モジュール性 再利用性 理解容易性 修正性 テスト容易性 Qiita Night PHP つまりアーキテクチャメトリクスとは by @isanasan_ 11
Slide 12
Slide 12 text
Qiita Night PHP ?? by @isanasan_ 12
Slide 13
Slide 13 text
Qiita Night PHP 具体的なユースケース by @isanasan_ 13
Slide 14
Slide 14 text
Qiita Night PHP とあるサービス by @isanasan_ 14
Slide 15
Slide 15 text
Qiita Night PHP 疲弊した現場 by @isanasan_ 15
Slide 16
Slide 16 text
荒みきったコード Qiita Night PHP by @isanasan_ 16
Slide 17
Slide 17 text
Qiita Night PHP 爆弾処理のようなリリース by @isanasan_ 17
Slide 18
Slide 18 text
Qiita Night PHP 改善したい!!!!!!! by @isanasan_ 18
Slide 19
Slide 19 text
Qiita Night PHP 今動いているものを直す必要ある? 効果測定どうやんの? 費用対効果はどれくらい? by @isanasan_ 19
Slide 20
Slide 20 text
説得失敗 Qiita Night PHP by @isanasan_ 20
Slide 21
Slide 21 text
Qiita Night PHP 改善の黄金パターン by @isanasan_ 21
Slide 22
Slide 22 text
1. 課題を認識する 2. 課題を定量化できるメトリクス(指標)を定義し目標を決める 3. 改善施策を実施する 4. 振り返りを行う Qiita Night PHP 改善の黄金パターン by @isanasan_ 22
Slide 23
Slide 23 text
Qiita Night PHP ソフトウェア開発の現場では? by @isanasan_ 23
Slide 24
Slide 24 text
もちろんソフトウェア開発の現場でも考え方は同じ 特に「正確な現状把握」は必要不可欠 パフォーマンスチューニングはその代表的な例 Qiita Night PHP ソフトウェア開発の現場では? by @isanasan_ 24
Slide 25
Slide 25 text
Qiita Night PHP アーキテクチャの保守性を改善する時は? by @isanasan_ 25
Slide 26
Slide 26 text
Qiita Night PHP コードスメル(不吉な匂い) by @isanasan_ 26
Slide 27
Slide 27 text
定性的指標(≒ 暗黙知) 経験値に依存する 効果測定や優先順位付けが難しい 対外的な説明には使えない Qiita Night PHP コードスメルの欠点 by @isanasan_ 27
Slide 28
Slide 28 text
再掲 Qiita Night PHP by @isanasan_ 28
Slide 29
Slide 29 text
1. 課題を認識する 2. 課題を定量化できるメトリクス(指標)を定義し目標を決める 3. 改善施策を実施する 4. 振り返りを行う Qiita Night PHP 改善の黄金パターン by @isanasan_ 29
Slide 30
Slide 30 text
1. 課題を認識する コードスメル 2. 課題を定量化できるメトリクス(指標)を定義し目標を決める 3. 改善施策を実施する 4. 振り返りを行う Qiita Night PHP 改善の黄金パターン by @isanasan_ 30
Slide 31
Slide 31 text
1. 課題を認識する 2. 課題を定量化できるメトリクス(指標)を定義し目標を決める アーキテクチャメトリクス 3. 改善施策を実施する 4. 振り返りを行う Qiita Night PHP 改善の黄金パターン by @isanasan_ 31
Slide 32
Slide 32 text
Qiita Night PHP 定性的指標から定量的指標へ by @isanasan_ 32
Slide 33
Slide 33 text
利点 Qiita Night PHP by @isanasan_ 33
Slide 34
Slide 34 text
コードスメルのような暗黙知を形式知にすることが出来る 効果測定を行うことでフィードバックサイクルを回せる 測定基準を設けることで負債を未然に防ぐ Qiita Night PHP 利点 by @isanasan_ 34
Slide 35
Slide 35 text
Qiita Night PHP 代表例と測定ツール by @isanasan_ 35
Slide 36
Slide 36 text
理解容易性に関連するメトリクス テスト容易性に関連するメトリクス その他 Qiita Night PHP 代表例と測定ツール by @isanasan_ 36
Slide 37
Slide 37 text
循環的複雑度(CCN) 要するに分岐の数 24以上の値ではエラーレートが急速に増加すると言われている 加重平均を用いることで時系列推移を計測できる Qiita Night PHP 理解容易性に関連するメトリクス by @isanasan_ 37
Slide 38
Slide 38 text
bmitch/churn-php 変更頻度で重み付けしたCCNのスコアを計測するツール Qiita Night PHP PHPの循環的複雑度を計測するツール by @isanasan_ 38
Slide 39
Slide 39 text
Qiita Night PHP churn-php by @isanasan_ 39
Slide 40
Slide 40 text
terryyin/lizard CCNを含む複数の指標で複雑さを計測するツール 行数、CCN、token、引数の数を計測してくれる 出力形式にxmlやhtmlを選べる Qiita Night PHP PHPの循環的複雑度を計測するツール by @isanasan_ 40
Slide 41
Slide 41 text
============================================================== NLOC CCN token param function@line@file -------------------------------------------------------------- 10 2 29 2 start_new_player@26@./html_game.c Qiita Night PHP lizard by @isanasan_ 41
Slide 42
Slide 42 text
テストカバレッジ テストコードとプロダクトコードの割合 テストの実行時間 Qiita Night PHP テスト容易性に関連するメトリクス by @isanasan_ 42
Slide 43
Slide 43 text
k1LoW/octocov カバレッジ、コードの割合、実行時間を全て計測できる CIフレンドリー PRにコメントしたり 複数リポジトリの数値を収集したりできる Qiita Night PHP テスト容易性を計測するツール by @isanasan_ 43
Slide 44
Slide 44 text
Qiita Night PHP octocov by @isanasan_ 44
Slide 45
Slide 45 text
edsonmedina/php_testability 密結合になっている箇所(new演算子とか)を数えて テスト容易性のリストを出力できる Qiita Night PHP テスト容易性を計測するツール by @isanasan_ 45
Slide 46
Slide 46 text
Qiita Night PHP php_testability by @isanasan_ 46
Slide 47
Slide 47 text
変更頻度と変更人数 あまりにも多くの人が頻繁に変更を加えるソースは責務が大きすぎる可能性がある churn-php もこれで循環的複雑度を重み付けしている PRのリードタイム アーキテクチャ のメトリクスとは言えないが、アーキテクチャメトリクスの遅行指標 として扱える 例えば,「理解容易性が悪化すればPRのリードタイムは伸びる」みたいな Qiita Night PHP その他のもの by @isanasan_ 47
Slide 48
Slide 48 text
最後に Qiita Night PHP by @isanasan_ 48
Slide 49
Slide 49 text
Qiita Night PHP アーキテクチャメトリクスはめっちゃ種類ある by @isanasan_ 49
Slide 50
Slide 50 text
累積コンポーネント依存度(CCD) 平均コンポーネント依存度(ACD) 伝搬コスト(PC) 相対循環依存度(RC) 構造的負債指数(SDI) Qiita Night PHP アーキテクチャメトリクスはめっちゃ種類ある by @isanasan_ 50
Slide 51
Slide 51 text
Qiita Night PHP 現場によって抱えている課題は異なる by @isanasan_ 51
Slide 52
Slide 52 text
Qiita Night PHP あなただけのメトリクスを見つけよう by @isanasan_ 52
Slide 53
Slide 53 text
Qiita Night PHP PHPで使えるツールも沢山ある by @isanasan_ 53
Slide 54
Slide 54 text
exakat/php-static-analysis-tools このリポジトリにまとまっている メンテされなくなったものも紛れてるので注意 DeGraciaMathieu/php-arguments-detector 引数が多すぎないかどうかをチェックするツール phpmetrics/PhpMetrics 結構色々取れるツール。 結果がHTMLでしか出力できないのでCIと組み合わせたりするのはちょっと手間 Qiita Night PHP PHPで使えるツールも沢山ある by @isanasan_ 54
Slide 55
Slide 55 text
Qiita Night PHP 測りたい指標を決めたら探してみよう by @isanasan_ 55
Slide 56
Slide 56 text
まとめ Qiita Night PHP by @isanasan_ 56
Slide 57
Slide 57 text
保守性を改善するときはアーキテクチャメトリクスを計測しよう 現場の課題に合ったメトリクスを見つけよう PHPの現場で使えるツールは沢山あるので探してみよう Qiita Night PHP まとめ by @isanasan_ 57