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

CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 

Recently uploaded (8)

CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 

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