Enviar pesquisa
Carregar
レガシーコード改善ガイド 第7章 いつまでたっても変更作業が終わりません
•
0 gostou
•
546 visualizações
T
Takahiro Okada
Seguir
Tecnologia
Denunciar
Compartilhar
Denunciar
Compartilhar
1 de 80
Baixar agora
Baixar para ler offline
Recomendados
Hudson (JJUG CCCにて)
Hudson (JJUG CCCにて)
Kohsuke Kawaguchi
Azureで、動け動け動けconcrete5 !!
Azureで、動け動け動けconcrete5 !!
Seiken Sato
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
JustSystems Corporation
安く・速く・安定したウェブを作る方法
安く・速く・安定したウェブを作る方法
Kei Mikage
JPOUG Advent Calendar 2017 Day11
JPOUG Advent Calendar 2017 Day11
竜馬 細谷
SQL Server replication overview (JP)
SQL Server replication overview (JP)
elanlilac
オンプレでもクラウドでも データベースサーバの運用
オンプレでもクラウドでも データベースサーバの運用
elanlilac
Craft CMSに最適なサーバはどんな環境?
Craft CMSに最適なサーバはどんな環境?
Kei Mikage
Recomendados
Hudson (JJUG CCCにて)
Hudson (JJUG CCCにて)
Kohsuke Kawaguchi
Azureで、動け動け動けconcrete5 !!
Azureで、動け動け動けconcrete5 !!
Seiken Sato
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
JustSystems Corporation
安く・速く・安定したウェブを作る方法
安く・速く・安定したウェブを作る方法
Kei Mikage
JPOUG Advent Calendar 2017 Day11
JPOUG Advent Calendar 2017 Day11
竜馬 細谷
SQL Server replication overview (JP)
SQL Server replication overview (JP)
elanlilac
オンプレでもクラウドでも データベースサーバの運用
オンプレでもクラウドでも データベースサーバの運用
elanlilac
Craft CMSに最適なサーバはどんな環境?
Craft CMSに最適なサーバはどんな環境?
Kei Mikage
JustTechTalk#10 React開発における自動テスト実践
JustTechTalk#10 React開発における自動テスト実践
JustSystems Corporation
実プロジェクトの経験から学ぶazureサービス適用パターン
実プロジェクトの経験から学ぶazureサービス適用パターン
Kuniteru Asami
DebianとWordPressでハッピーになろう!
DebianとWordPressでハッピーになろう!
Jun Nogata
Hudson 勉強会
Hudson 勉強会
InfraDNA
第9回Jenkins勉強会 超簡単Pipeline講座
第9回Jenkins勉強会 超簡単Pipeline講座
Hiroko Tamagawa
クラウド案件の作り方 for azureしなの4周年
クラウド案件の作り方 for azureしなの4周年
Kuniteru Asami
Jenkins 2.0 Pipeline & Blue Ocean
Jenkins 2.0 Pipeline & Blue Ocean
Akihiko Horiuchi
Functional Testing in #YAPCASIA
Functional Testing in #YAPCASIA
kyon mm
Microsoft Team Foundation Service 入門
Microsoft Team Foundation Service 入門
You&I
はじめてのTeam foundation server執筆裏話
はじめてのTeam foundation server執筆裏話
Kazushi Kamegawa
Gdd2011 ADK
Gdd2011 ADK
Takahiro Okada
オープントースター 2015 06-07おうちハック
オープントースター 2015 06-07おうちハック
Takahiro Okada
レガシーコードを改善した先にあるもの、それは継続的インテグレーション
レガシーコードを改善した先にあるもの、それは継続的インテグレーション
Masanori Satoh
美味しいトーストが食べたいです #おうちハック
美味しいトーストが食べたいです #おうちハック
Takahiro Okada
「納品のない受託開発」を支えるコードレビューの取り組み
「納品のない受託開発」を支えるコードレビューの取り組み
Masahiro Nishimi
どうしてコードはレガシーになるのか
どうしてコードはレガシーになるのか
Hiroshi Kikuchi
良質なコードを高速に書くコツ
良質なコードを高速に書くコツ
Shunji Konishi
納品のない受託開発を支える レガシーコードを作らない仕組み
納品のない受託開発を支える レガシーコードを作らない仕組み
Masahiro Nishimi
Test Yourself - テストを書くと何がどう変わるか
Test Yourself - テストを書くと何がどう変わるか
Takuto Wada
レガシーコード改善のススメ
レガシーコード改善のススメ
Akira Hirasawa
ソースコードの品質向上のための効果的で効率的なコードレビュー
ソースコードの品質向上のための効果的で効率的なコードレビュー
Moriharu Ohzu
組織にテストを書く文化を根付かせる戦略と戦術
組織にテストを書く文化を根付かせる戦略と戦術
Takuto Wada
Mais conteúdo relacionado
Mais procurados
JustTechTalk#10 React開発における自動テスト実践
JustTechTalk#10 React開発における自動テスト実践
JustSystems Corporation
実プロジェクトの経験から学ぶazureサービス適用パターン
実プロジェクトの経験から学ぶazureサービス適用パターン
Kuniteru Asami
DebianとWordPressでハッピーになろう!
DebianとWordPressでハッピーになろう!
Jun Nogata
Hudson 勉強会
Hudson 勉強会
InfraDNA
第9回Jenkins勉強会 超簡単Pipeline講座
第9回Jenkins勉強会 超簡単Pipeline講座
Hiroko Tamagawa
クラウド案件の作り方 for azureしなの4周年
クラウド案件の作り方 for azureしなの4周年
Kuniteru Asami
Jenkins 2.0 Pipeline & Blue Ocean
Jenkins 2.0 Pipeline & Blue Ocean
Akihiko Horiuchi
Functional Testing in #YAPCASIA
Functional Testing in #YAPCASIA
kyon mm
Microsoft Team Foundation Service 入門
Microsoft Team Foundation Service 入門
You&I
はじめてのTeam foundation server執筆裏話
はじめてのTeam foundation server執筆裏話
Kazushi Kamegawa
Mais procurados
(10)
JustTechTalk#10 React開発における自動テスト実践
JustTechTalk#10 React開発における自動テスト実践
実プロジェクトの経験から学ぶazureサービス適用パターン
実プロジェクトの経験から学ぶazureサービス適用パターン
DebianとWordPressでハッピーになろう!
DebianとWordPressでハッピーになろう!
Hudson 勉強会
Hudson 勉強会
第9回Jenkins勉強会 超簡単Pipeline講座
第9回Jenkins勉強会 超簡単Pipeline講座
クラウド案件の作り方 for azureしなの4周年
クラウド案件の作り方 for azureしなの4周年
Jenkins 2.0 Pipeline & Blue Ocean
Jenkins 2.0 Pipeline & Blue Ocean
Functional Testing in #YAPCASIA
Functional Testing in #YAPCASIA
Microsoft Team Foundation Service 入門
Microsoft Team Foundation Service 入門
はじめてのTeam foundation server執筆裏話
はじめてのTeam foundation server執筆裏話
Destaque
Gdd2011 ADK
Gdd2011 ADK
Takahiro Okada
オープントースター 2015 06-07おうちハック
オープントースター 2015 06-07おうちハック
Takahiro Okada
レガシーコードを改善した先にあるもの、それは継続的インテグレーション
レガシーコードを改善した先にあるもの、それは継続的インテグレーション
Masanori Satoh
美味しいトーストが食べたいです #おうちハック
美味しいトーストが食べたいです #おうちハック
Takahiro Okada
「納品のない受託開発」を支えるコードレビューの取り組み
「納品のない受託開発」を支えるコードレビューの取り組み
Masahiro Nishimi
どうしてコードはレガシーになるのか
どうしてコードはレガシーになるのか
Hiroshi Kikuchi
良質なコードを高速に書くコツ
良質なコードを高速に書くコツ
Shunji Konishi
納品のない受託開発を支える レガシーコードを作らない仕組み
納品のない受託開発を支える レガシーコードを作らない仕組み
Masahiro Nishimi
Test Yourself - テストを書くと何がどう変わるか
Test Yourself - テストを書くと何がどう変わるか
Takuto Wada
レガシーコード改善のススメ
レガシーコード改善のススメ
Akira Hirasawa
ソースコードの品質向上のための効果的で効率的なコードレビュー
ソースコードの品質向上のための効果的で効率的なコードレビュー
Moriharu Ohzu
組織にテストを書く文化を根付かせる戦略と戦術
組織にテストを書く文化を根付かせる戦略と戦術
Takuto Wada
Destaque
(12)
Gdd2011 ADK
Gdd2011 ADK
オープントースター 2015 06-07おうちハック
オープントースター 2015 06-07おうちハック
レガシーコードを改善した先にあるもの、それは継続的インテグレーション
レガシーコードを改善した先にあるもの、それは継続的インテグレーション
美味しいトーストが食べたいです #おうちハック
美味しいトーストが食べたいです #おうちハック
「納品のない受託開発」を支えるコードレビューの取り組み
「納品のない受託開発」を支えるコードレビューの取り組み
どうしてコードはレガシーになるのか
どうしてコードはレガシーになるのか
良質なコードを高速に書くコツ
良質なコードを高速に書くコツ
納品のない受託開発を支える レガシーコードを作らない仕組み
納品のない受託開発を支える レガシーコードを作らない仕組み
Test Yourself - テストを書くと何がどう変わるか
Test Yourself - テストを書くと何がどう変わるか
レガシーコード改善のススメ
レガシーコード改善のススメ
ソースコードの品質向上のための効果的で効率的なコードレビュー
ソースコードの品質向上のための効果的で効率的なコードレビュー
組織にテストを書く文化を根付かせる戦略と戦術
組織にテストを書く文化を根付かせる戦略と戦術
Semelhante a レガシーコード改善ガイド 第7章 いつまでたっても変更作業が終わりません
Stac2014 石川
Stac2014 石川
Tatsuya Ishikawa
2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション
2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション
Takahiro Okumura
Aurora MySQL HandMade Major VersionUp
Aurora MySQL HandMade Major VersionUp
Takafumi Nakahara
テストしなイカ? Seleniumで自動ブラウザテスト
テストしなイカ? Seleniumで自動ブラウザテスト
Ohishi Mikage
Eight meets AWS
Eight meets AWS
Tetsuya Mase
ビジネス的に高価値なアジャイルテスト
ビジネス的に高価値なアジャイルテスト
Tsutomu Chikuba
Openshift 20191128
Openshift 20191128
Yasushi Osonoi
kintoneの新機能を開発するお仕事
kintoneの新機能を開発するお仕事
Cybozu, Inc.
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1
Y Watanabe
テストファースト、自動テストを導入するという事について(@社内勉強会)
テストファースト、自動テストを導入するという事について(@社内勉強会)
kyon mm
TDDを一年やってみました ~シロート集団がTDDをやってはまったこと~
TDDを一年やってみました ~シロート集団がTDDをやってはまったこと~
Tomomi Kajita
ネットワークスイッチ構築実践 1.VLAN・LinkAggregation編
ネットワークスイッチ構築実践 1.VLAN・LinkAggregation編
株式会社 NTTテクノクロス
継続的デリバリー読書会資料 #1
継続的デリバリー読書会資料 #1
Yusuke HIDESHIMA
イノベーションスプリント2011 infragisticsにおける世界分散アジャイル開発事例~ communication matters ~
イノベーションスプリント2011 infragisticsにおける世界分散アジャイル開発事例~ communication matters ~
InnovationSprint2011
サイドプロジェクトで使う Azure DevOps
サイドプロジェクトで使う Azure DevOps
Shuhei Eda
Dockerとdev ops
Dockerとdev ops
Hiroshi Maekawa
CodeZineAcademy TDD実践講座PR資料
CodeZineAcademy TDD実践講座PR資料
Yasui Tsutomu
インフラエンジニアがk8sでアプリを作って見えた今後のインフラ
インフラエンジニアがk8sでアプリを作って見えた今後のインフラ
susumu tanaka
Google APP Engine vs リアルタイムウェブ
Google APP Engine vs リアルタイムウェブ
Hagiwara takayuki
MicroServiceArchitecture
MicroServiceArchitecture
Kaseya Hiroshi
Semelhante a レガシーコード改善ガイド 第7章 いつまでたっても変更作業が終わりません
(20)
Stac2014 石川
Stac2014 石川
2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション
2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション
Aurora MySQL HandMade Major VersionUp
Aurora MySQL HandMade Major VersionUp
テストしなイカ? Seleniumで自動ブラウザテスト
テストしなイカ? Seleniumで自動ブラウザテスト
Eight meets AWS
Eight meets AWS
ビジネス的に高価値なアジャイルテスト
ビジネス的に高価値なアジャイルテスト
Openshift 20191128
Openshift 20191128
kintoneの新機能を開発するお仕事
kintoneの新機能を開発するお仕事
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1
テストファースト、自動テストを導入するという事について(@社内勉強会)
テストファースト、自動テストを導入するという事について(@社内勉強会)
TDDを一年やってみました ~シロート集団がTDDをやってはまったこと~
TDDを一年やってみました ~シロート集団がTDDをやってはまったこと~
ネットワークスイッチ構築実践 1.VLAN・LinkAggregation編
ネットワークスイッチ構築実践 1.VLAN・LinkAggregation編
継続的デリバリー読書会資料 #1
継続的デリバリー読書会資料 #1
イノベーションスプリント2011 infragisticsにおける世界分散アジャイル開発事例~ communication matters ~
イノベーションスプリント2011 infragisticsにおける世界分散アジャイル開発事例~ communication matters ~
サイドプロジェクトで使う Azure DevOps
サイドプロジェクトで使う Azure DevOps
Dockerとdev ops
Dockerとdev ops
CodeZineAcademy TDD実践講座PR資料
CodeZineAcademy TDD実践講座PR資料
インフラエンジニアがk8sでアプリを作って見えた今後のインフラ
インフラエンジニアがk8sでアプリを作って見えた今後のインフラ
Google APP Engine vs リアルタイムウェブ
Google APP Engine vs リアルタイムウェブ
MicroServiceArchitecture
MicroServiceArchitecture
Mais de Takahiro Okada
201807 BIoTLT presentation - Socket, IoT and Blockchain
201807 BIoTLT presentation - Socket, IoT and Blockchain
Takahiro Okada
Maker Faire Shenzhen 2014 report
Maker Faire Shenzhen 2014 report
Takahiro Okada
2014 Shenzhen Visiting Factory Tour
2014 Shenzhen Visiting Factory Tour
Takahiro Okada
Smapon introduction
Smapon introduction
Takahiro Okada
tapioka-eng portfolio 2013
tapioka-eng portfolio 2013
Takahiro Okada
Kopanitsa portfolio 2013_09
Kopanitsa portfolio 2013_09
Takahiro Okada
Tizen developer conference 2013 report 5
Tizen developer conference 2013 report 5
Takahiro Okada
Tizen developer conference 2013 report 4
Tizen developer conference 2013 report 4
Takahiro Okada
Tizen developer conference 2013 report 3
Tizen developer conference 2013 report 3
Takahiro Okada
Tizen developer conference 2013 report 2
Tizen developer conference 2013 report 2
Takahiro Okada
Tizen developer conference 2013 report 1/5
Tizen developer conference 2013 report 1/5
Takahiro Okada
US electronics shop report
US electronics shop report
Takahiro Okada
Hackerspace(Biocurious), TechShop, Stanford report
Hackerspace(Biocurious), TechShop, Stanford report
Takahiro Okada
Maker faire bay area 2013 report
Maker faire bay area 2013 report
Takahiro Okada
ハードウェアをスマホ経由で世界につなぐ
ハードウェアをスマホ経由で世界につなぐ
Takahiro Okada
ガジェットナイト2012 - 大リーグボール養成スマホ
ガジェットナイト2012 - 大リーグボール養成スマホ
Takahiro Okada
Ltfes1009
Ltfes1009
Takahiro Okada
Theo Jansen BeastをADKで動かす
Theo Jansen BeastをADKで動かす
Takahiro Okada
Mais de Takahiro Okada
(18)
201807 BIoTLT presentation - Socket, IoT and Blockchain
201807 BIoTLT presentation - Socket, IoT and Blockchain
Maker Faire Shenzhen 2014 report
Maker Faire Shenzhen 2014 report
2014 Shenzhen Visiting Factory Tour
2014 Shenzhen Visiting Factory Tour
Smapon introduction
Smapon introduction
tapioka-eng portfolio 2013
tapioka-eng portfolio 2013
Kopanitsa portfolio 2013_09
Kopanitsa portfolio 2013_09
Tizen developer conference 2013 report 5
Tizen developer conference 2013 report 5
Tizen developer conference 2013 report 4
Tizen developer conference 2013 report 4
Tizen developer conference 2013 report 3
Tizen developer conference 2013 report 3
Tizen developer conference 2013 report 2
Tizen developer conference 2013 report 2
Tizen developer conference 2013 report 1/5
Tizen developer conference 2013 report 1/5
US electronics shop report
US electronics shop report
Hackerspace(Biocurious), TechShop, Stanford report
Hackerspace(Biocurious), TechShop, Stanford report
Maker faire bay area 2013 report
Maker faire bay area 2013 report
ハードウェアをスマホ経由で世界につなぐ
ハードウェアをスマホ経由で世界につなぐ
ガジェットナイト2012 - 大リーグボール養成スマホ
ガジェットナイト2012 - 大リーグボール養成スマホ
Ltfes1009
Ltfes1009
Theo Jansen BeastをADKで動かす
Theo Jansen BeastをADKで動かす
Último
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
FumieNakayama
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
Hiroshi Tomioka
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
Yuki Kikuchi
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
UEHARA, Tetsutaro
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
FumieNakayama
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NTT DATA Technology & Innovation
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
博三 太田
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
akihisamiyanaga1
Último
(8)
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
レガシーコード改善ガイド 第7章 いつまでたっても変更作業が終わりません
1.
第7章 いつまでたっても 変更作業が終わりません
Takahiro Okada レガシーコード改善ガイド読書会
2.
変更は 素早く行えるほど よいという話
3.
そもそも、 変更の理由とは?
4.
•変更の理由 –バグ修正 –機能追加
–仕様変更 –リファクタリング
5.
•変更の理由 –バグ修正 –機能追加
日々の業務 –仕様変更 –リファクタリング
6.
われわれの 日々の業務は、 コードの変更である。
7.
仕事を速く行うには?
8.
仕事を速く行うには? → 変更を速く行う。
9.
変更は 素早く行えるほど
よい
10.
小休止 (ここまでOK?)
11.
変更は 素早く行えるほど
よい
12.
現実には…
13.
「いつまでたっても 変更作業が 終わりません」
14.
なぜ?
15.
なぜ? 1. コードの内容が
理解出来ない。 2. 変更を行なってから、 結果を得るまでに時間がかかる。 他にあるかな・・・?
16.
1. コードの内容が
理解出来ない。
17.
1. コードの内容が理解出来ない • 変更方法を調査するのに時間がかかる。
– ある程度はしかたないこと。 – ただし、整理されたコードのほうが時間は短い。 • 変更自体に時間がかかる。 – レガシーコード特有の問題
18.
1. コードの内容が理解出来ない • 変更方法を調査するのに時間がかかる。
– ある程度はしかたないこと。 – ただし、整理されたコードのほうが時間は短い。 • 変更自体に時間がかかる。 – レガシーコード特有の問題 →「小さく、理解しやすく、適切なパーツに分割 されたシステム」
19.
1. コードの内容が理解出来ない • 変更方法を調査するのに時間がかかる。
– ある程度はしかたないこと。 – ただし、整理されたコードのほうが時間は短い。 • 変更自体に時間がかかる。 – レガシーコード特有の問題 →「小さく、理解しやすく、適切なパーツに分割 されたシステム」 →どうすればいい?
20.
詳細は後日 →第16章「変更できるほど十分に私 はコードを理解していません」 →第17章「私のアプリケーションには 構造がありません」
21.
2. 変更作業を行なって
から、結果を得るま でに時間がかかる 今日はこっちが本題
22.
2. 変更作業を行なってから、結果を得
るまでに時間がかかる 変更できた! コンパイル リンク パッケージング インストール テスト
23.
2. 変更作業を行なってから、結果を得
るまでに時間がかかる 変更できた! フルビルドして 40分 コンパイル リンク パッケージング インストール テスト
24.
2. 変更作業を行なってから、結果を得
るまでに時間がかかる 変更できた! フルビルドして 40分 コンパイル Flash image作って 10分 リンク パッケージング インストール テスト
25.
2. 変更作業を行なってから、結果を得
るまでに時間がかかる 変更できた! フルビルドして 40分 コンパイル Flash image作って 10分 リンク Boardに焼いて 10分 パッケージング インストール テスト
26.
2. 変更作業を行なってから、結果を得
るまでに時間がかかる 変更できた! フルビルドして 40分 コンパイル Flash image作って 10分 リンク Boardに焼いて 10分 パッケージング インストール Manual testして 30分 テスト
27.
2. 変更作業を行なってから、結果を得
るまでに時間がかかる 変更できた! フルビルドして 40分 コンパイル Flash image作って 10分 リンク Boardに焼いて 10分 パッケージング インストール Manual testして 30分 テスト やっぱりダメだった!
28.
2. 変更作業を行なってから、結果を得
るまでに時間がかかる 変更できた! コンパイル リンク パッケージング 10秒以内に! インストール テスト
29.
でも、どうやって?
30.
小休止 (ここまでOK?)
31.
どうやって 確認作業を早くする?
32.
どうやって 確認作業を早くする? 依存関係を排除する
33.
コンパイル・リンク範囲の減少 差分パッケージング/インストール
テスト範囲の減少 テストハーネスの使用 依存関係を排除する
34.
コンパイル・リンク範囲の減少 差分パッケージング/インストール
テスト範囲の減少 テストハーネスの使用 速い
35.
まとめると 依存関係を排除する
速い
36.
依存関係を排除する 1 テストにおける 依存関係を排除する。
37.
テスト時の依存関係を排除する • テストハーネスで必要なクラスのインスタンス
化を試みる。 • すなわち、テストに必要な周辺のクラスはす べて、テストハーネスで作成する。
38.
テストハーネスで必要なクラスの インスタンス化を試みる。 •
速度向上ポイント1 – コンパイル・リンクの速度が向上する。 • 速度向上ポイント2 – テストの速度が向上する。 – 外部リソース(DB / Network / HW etc)の呼び出し 時間を短縮できる。
39.
テストハーネスで必要なクラスの インスタンス化を試みる。 インスタンス化できない?
40.
テストハーネスで必要なクラスの インスタンス化を試みる。 インスタンス化できない? →第9章
「このクラスをテストハーネスに入れることができません」 →第10章 「このメソッドをテストハーネスで動かすことができません」
41.
依存関係を排除する 2 ビルドにおける 依存関係を排除する。
42.
そのまえに、小休止 (ここまでOK?)
43.
依存関係を排除する 2 ビルドにおける 依存関係を排除する。
44.
ビルド時の依存関係を排除する インターフェースを 抽出する。
45.
インタフェースの抽出(1/3)
Before
46.
インタフェースの抽出(2/3)
After
47.
インタフェースの抽出(3/3) 1. 適切な名前のインターフェースを作成する。 2. 抽出対象のクラスで、インタフェースを実装
する 3. 変更対象オブジェクトの使用箇所を変更して、 クラスの代わりにインターフェースを呼び出 すようにする。 4. コンパイルする。コンパイルで出たエラーを 取り除く。
48.
ビルド時の依存関係を排除する 実装を 抽出する。
名前を変えたくない場合など
49.
実装の抽出(1/2)
Before
50.
インタフェースの抽出(2/2)
After
51.
小休止 (次はちょっと長い)
52.
実践してみよう
53.
54.
こいつをビルドしたいだけなのに
55.
こいつをビルドしたいだけなのに 依存しているこいつもビルドしないと
56.
こいつをビルドしたいだけなのに 依存しているこいつもビルドしないと しかも、テストの際にDB接続必要?
57.
こいつをビルドしたいだけなのに 依存しているこいつもビルドしないと しかも、テストの際にDB接続必要? さらに、こいつが別クラスに 依存してて・・・
58.
これは遅い。
59.
実装を抽出する。
60.
これで、ビルドが速くなった ココ
ちなみに、Implっていう 名前はどうなの?
61.
これで、テストも速くなった これで、 ココ
62.
もっとやりたい?
ココ やりすぎはほどほどに。
63.
コンパイラのファイアウォール
64.
コンパイラの ファイアウォール
65.
コンパイラの
ファイアウォール 素早く変更し放題
66.
コンパイラの
ファイアウォール 素早く変更し放題
67.
これでおわり?
68.
よく見ると まだ依存が。
69.
依存を取り除く
70.
小休止 (ここまでOK?)
71.
ひとことででまとめると
72.
具象クラスに 依存するよりも インタフェースや 抽象クラスに 依存すべし
73.
いいかえると
74.
変更の少ないものに 依存すべし
75.
確かに 全体をビルドする時間は 増えるかもしれない
76.
けど、部分を ビルド/テストする時間は 大幅に減るはず
77.
構造が見えにくく なるかもしれないが
78.
妥当なオーバーヘッド
である。 ほんとかな
79.
パッケージ間の インターフェースを すべて抽象型に すると、何が起こる だろう?
80.
おわり
しかし、この本、 章と章の間の依存が強すぎて、 読むのがちょっと辛い。
Baixar agora