SlideShare a Scribd company logo
1 of 20
自己紹介 株式会社ミクシィ たんぽぽチームリーダ 広木大地 @hiroki_daichi やっていること *刺身にたんぽぽ *サービスアーキテクト *非機能要件全般 *サービスのトラブル *安くて速くて安心
静的解析、 しましょうか。 せいてきかいせき
静的解析 ってなんなんだよ。
静的 性的
コードレビュー自動化 刺身にたんぽぽ おかせない ソフトウェア測定
Technical Debt 技術的負債 最初のコードを出荷することは、借金をしに行くことと同じである。小さな負債は、代価を得て即座に書き直す機会を得るまでの開発を加速する。 危険なのは、借金が返済されなかった場合である。
複雑な依存関係 最長不倒関数 王様モジュール
01 ●        ●         ●         ●      ●        ●        ●      技術的負債の見える化 Inspect-package
95 計測できないものは 改善できない。
最長不倒関数 Node(2) Node(3) If( is_foo()) do_var() Edge(4) Node(1) Node(5) Edge(2) start do_hoge() end Edge(1) Edge(3) Edge(5) Node(4) Edge(6) 分岐、ループなど関数をグラフ構造としてとらえて、 その複雑さを測定する。 (Cyclomatic Complexity)
王様モジュール good bad Module Module より大きく、より多くの人によって 差分が加えられているコードを探して計測する。
複雑な依存 good good bad B B B E A A A C C C F D D D G より多くに依存しながら、より多くに依存されている コンポーネントを悪い依存として測定する。
計測 measurement 2011年2月某日 サービスの結合性に関するポリシーは決めた これから順次リファクタリングが必要 あの日以来、すべてがスコアリングされた。
依存されている度 サービス全体への負債 依存している度 $ inspect-package Mixi::TheServiceMayUKnow -type ALLSCORE       Ca      Ce      CC         SRP          couple        cohesion 240     173     261         527           41520          138335 最長不倒関数度 コンポーネント内の負債 王様モジュール指数
王様モジュールをレビュー $inspect-package Mixi/TheServiceUMayKnow -type SRP score(  123):rev(  98):user(  16):lines(1331)   Mixi/TheServiceUMayKnow.pm score(  107):rev(  80):user(  18):lines(1323)   Mixi/TheServiceUMayKnow/Object.pm score(   47):rev(  40):user(   5):lines( 659)   Mixi/TheServiceUMayKnow/Admin/Ad.pm 1300行で16人がいじってるけど、 そろそろ責務がいりまじってるんじゃない?
最長不倒関数をレビュー $inspect-package Mixi::TheServiceUMayKnow -type CC           59      get_status   lib/Mixi/TheServiceUMayKnow/Analytics.pm  46      summarize         lib/Mixi/TheServiceUMayKnow/Counter/Summarizer.pm 44      _select_own_page lib/Mixi/TheServiceUMayKnow/Feed.pm  このモジュールのget_statusが複雑に なりすぎてて、テストケース網羅できないほどだよ。
嫌だわ、早くすりつぶさないと
せいてきかいせき 静的解析、 しましょうか。
くわしいことは WEB+DB Press 62のPerl Hackers Hubにも載ってます http://gihyo.jp/dev/serial/01/perl-hackers-hub/000801

More Related Content

Similar to 静的解析、しましょうか。

【Dll3】scskプレゼン20170904
【Dll3】scskプレゼン20170904【Dll3】scskプレゼン20170904
【Dll3】scskプレゼン20170904Hirono Jumpei
 
楽天市場で使われている技術、エンジニアに必要なコアスキルとはTechnology used in Rakuten, core skills neede...
楽天市場で使われている技術、エンジニアに必要なコアスキルとはTechnology used in Rakuten,  core skills  neede...楽天市場で使われている技術、エンジニアに必要なコアスキルとはTechnology used in Rakuten,  core skills  neede...
楽天市場で使われている技術、エンジニアに必要なコアスキルとはTechnology used in Rakuten, core skills neede...Rakuten Group, Inc.
 
トラブルシューティングのあれこれ Yoshihiko kamata
トラブルシューティングのあれこれ Yoshihiko kamataトラブルシューティングのあれこれ Yoshihiko kamata
トラブルシューティングのあれこれ Yoshihiko kamataRakuten Group, Inc.
 
受託開発でテストファーストしたらXXXを早期発見できてハイアジリティになったはなし
受託開発でテストファーストしたらXXXを早期発見できてハイアジリティになったはなし受託開発でテストファーストしたらXXXを早期発見できてハイアジリティになったはなし
受託開発でテストファーストしたらXXXを早期発見できてハイアジリティになったはなしterahide
 
マイクロサービスとは.pptx
マイクロサービスとは.pptxマイクロサービスとは.pptx
マイクロサービスとは.pptxssuserdd7ea9
 
AWS Cognito makes old web apps available from anywhere
AWS Cognito makes old web apps available from anywhereAWS Cognito makes old web apps available from anywhere
AWS Cognito makes old web apps available from anywhereYukiya Hayashi
 
Empirical Project Monitorの紹介
Empirical Project Monitorの紹介Empirical Project Monitorの紹介
Empirical Project Monitorの紹介Makoto SAKAI
 
プログラミングLT 2019 Summer
プログラミングLT 2019 SummerプログラミングLT 2019 Summer
プログラミングLT 2019 SummerYusuke Mori
 
Redmineの情報を自分好みに見える化した話
Redmineの情報を自分好みに見える化した話Redmineの情報を自分好みに見える化した話
Redmineの情報を自分好みに見える化した話ToshiharuSakai
 
はじめてのアジャイル
はじめてのアジャイルはじめてのアジャイル
はじめてのアジャイルYoshihito Kuranuki
 
財務分析勉強会挨拶
財務分析勉強会挨拶財務分析勉強会挨拶
財務分析勉強会挨拶oranie Narut
 
失敗しないパッケージ導入1
失敗しないパッケージ導入1失敗しないパッケージ導入1
失敗しないパッケージ導入1小島 規彰
 
ソフトウェア開発の現場風景
ソフトウェア開発の現場風景ソフトウェア開発の現場風景
ソフトウェア開発の現場風景Koichi ITO
 
Prig 残業泥棒 - 01. プロローグ 120121 杉浦
Prig   残業泥棒 - 01. プロローグ 120121 杉浦Prig   残業泥棒 - 01. プロローグ 120121 杉浦
Prig 残業泥棒 - 01. プロローグ 120121 杉浦urasandesu
 
Handii スタートアップエンジニア開発課題LT day2
Handii スタートアップエンジニア開発課題LT day2Handii スタートアップエンジニア開発課題LT day2
Handii スタートアップエンジニア開発課題LT day2Yusuke Mori
 

Similar to 静的解析、しましょうか。 (20)

cecservices.pdf
cecservices.pdfcecservices.pdf
cecservices.pdf
 
cec_services.pdf
cec_services.pdfcec_services.pdf
cec_services.pdf
 
cecservices
cecservicescecservices
cecservices
 
cecservices
cecservicescecservices
cecservices
 
cec_Services.pdf
cec_Services.pdfcec_Services.pdf
cec_Services.pdf
 
【Dll3】scskプレゼン20170904
【Dll3】scskプレゼン20170904【Dll3】scskプレゼン20170904
【Dll3】scskプレゼン20170904
 
楽天市場で使われている技術、エンジニアに必要なコアスキルとはTechnology used in Rakuten, core skills neede...
楽天市場で使われている技術、エンジニアに必要なコアスキルとはTechnology used in Rakuten,  core skills  neede...楽天市場で使われている技術、エンジニアに必要なコアスキルとはTechnology used in Rakuten,  core skills  neede...
楽天市場で使われている技術、エンジニアに必要なコアスキルとはTechnology used in Rakuten, core skills neede...
 
トラブルシューティングのあれこれ Yoshihiko kamata
トラブルシューティングのあれこれ Yoshihiko kamataトラブルシューティングのあれこれ Yoshihiko kamata
トラブルシューティングのあれこれ Yoshihiko kamata
 
受託開発でテストファーストしたらXXXを早期発見できてハイアジリティになったはなし
受託開発でテストファーストしたらXXXを早期発見できてハイアジリティになったはなし受託開発でテストファーストしたらXXXを早期発見できてハイアジリティになったはなし
受託開発でテストファーストしたらXXXを早期発見できてハイアジリティになったはなし
 
マイクロサービスとは.pptx
マイクロサービスとは.pptxマイクロサービスとは.pptx
マイクロサービスとは.pptx
 
AWS Cognito makes old web apps available from anywhere
AWS Cognito makes old web apps available from anywhereAWS Cognito makes old web apps available from anywhere
AWS Cognito makes old web apps available from anywhere
 
Empirical Project Monitorの紹介
Empirical Project Monitorの紹介Empirical Project Monitorの紹介
Empirical Project Monitorの紹介
 
プログラミングLT 2019 Summer
プログラミングLT 2019 SummerプログラミングLT 2019 Summer
プログラミングLT 2019 Summer
 
Redmineの情報を自分好みに見える化した話
Redmineの情報を自分好みに見える化した話Redmineの情報を自分好みに見える化した話
Redmineの情報を自分好みに見える化した話
 
はじめてのアジャイル
はじめてのアジャイルはじめてのアジャイル
はじめてのアジャイル
 
財務分析勉強会挨拶
財務分析勉強会挨拶財務分析勉強会挨拶
財務分析勉強会挨拶
 
失敗しないパッケージ導入1
失敗しないパッケージ導入1失敗しないパッケージ導入1
失敗しないパッケージ導入1
 
ソフトウェア開発の現場風景
ソフトウェア開発の現場風景ソフトウェア開発の現場風景
ソフトウェア開発の現場風景
 
Prig 残業泥棒 - 01. プロローグ 120121 杉浦
Prig   残業泥棒 - 01. プロローグ 120121 杉浦Prig   残業泥棒 - 01. プロローグ 120121 杉浦
Prig 残業泥棒 - 01. プロローグ 120121 杉浦
 
Handii スタートアップエンジニア開発課題LT day2
Handii スタートアップエンジニア開発課題LT day2Handii スタートアップエンジニア開発課題LT day2
Handii スタートアップエンジニア開発課題LT day2
 

Recently uploaded

論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 

Recently uploaded (8)

論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 

静的解析、しましょうか。