SlideShare a Scribd company logo
1 of 33
Download to read offline
レガシーコード
との付き合い方
と
テストでの話
9/27  レガシーコード改善勉強会  #wewlc_jp
井芹洋輝 @goyoki
1
自己紹介
•  井芹 洋輝(@goyoki)
– 医療機器や自動車の組み込み開発・テスト
•  開発屋7割、テスト屋3割
– 最近はコンサルや技術支援に従事
– 社外で各種講演や執筆活動に従事
•  「Androidアプリテスト技法」「テスト自動化標準ガイド(翻訳中)」
「テスト駆動開発/振る舞い駆動開発を始めるための基礎知識」等
•  テスト自動化研究会コミッタ、Concolic  Testing研究会など
2
レガシーコードとの付き合い
•  プログラマとして苦しんだ要因No.1
•  「レガシーコード改善ガイド」との因縁
– 初めてのIT勉強会が原著(WEwLC)読書会
•  そこでt_wadaさん達がいて、テストやTDDに染めあげられ、
今のような姿に
– 翻訳レビューに協力しました
3
今日の話
•  以下についてのドメインに依存しない
お話をさせて頂ければと考えています
– 割と汎用的・概念的な考え方
– テストでの具体例
4
今日のお話:目的
•  レガシーコード対応で
– どのような問題があるか、
– 問題に対しどのような目標・方針で対処していくのか
  について役立てればと考えています
5
アウトライン
•  レガシーコード対応における
人
•  問題/目標/方針  
環境
•  問題/目標/方針  
開発のアプローチ
•  問題/目標/方針  
6
レガシーコード対応における
「人」
レガシーコードに立ち向かうため
のコミュニケーション
7
人	
問題	
 目標	
 方針	
環境	
問題	
 目標	
 方針	
アプローチ	
問題	
 目標	
 方針
「人」をとりまく問題
•  正しいものは正しく、
間違っているものは間違っている、
と道義を通せる環境は大事
•  しかし・・
8
人	
問題	
 目標	
 方針	
環境	
問題	
 目標	
 方針	
アプローチ	
問題	
 目標	
 方針
「人」をとりまく問題
9
このコードを書いた●●は本当にクソだ	
●●の書いたコードは本当にクソだ	
人	
問題	
 目標	
 方針	
環境	
問題	
 目標	
 方針	
アプローチ	
問題	
 目標	
 方針
「人」をとりまく問題
10
このコードを書いた●●は本当にクソだ	
●●の書いたコードは本当にクソだ	
●●のせいで本当に大変だ	
  
自分の責任じゃない	
人	
問題	
 目標	
 方針	
環境	
問題	
 目標	
 方針	
アプローチ	
問題	
 目標	
 方針
「人」をとりまく問題
11
このコードを書いた●●は本当にクソだ	
●●の書いたコードは本当にクソだ	
本当に大変だ	
  
自分の責任じゃない	
•  保身に走る	
  
•  協力しなくなる	
  
•  言い訳と見なされる	
  
•  適切なサポートを得られない	
•  地雷原ではリスキーな状態
•  道義を通すにも工夫が必要
レガシーコード	
人	
問題	
 目標	
 方針	
環境	
問題	
 目標	
 方針	
アプローチ	
問題	
 目標	
 方針
「人」について注力が必要な目標
•  プロジェクト成功のために必要な
人的サポートを確保する
– 役立つ人を敵にせず、役立ってもらう
– 状況を理解してもらい、適切なフィードバックを得る
12
人	
問題	
 目標	
 方針	
環境	
問題	
 目標	
 方針	
アプローチ	
問題	
 目標	
 方針
「人」についての方針
1.  コミュニケーションの基礎を作る
– 要因をよく把握する
– 理解を得るための証拠で武装する
– 属人性を排除して問題を共有する
2.  協力を得ながらレガシーコードに
立ち向かう
13
人	
問題	
 目標	
 方針	
環境	
問題	
 目標	
 方針	
アプローチ	
問題	
 目標	
 方針
「人」についての方針:基礎を作る
要因をよく知る
•  レガシーコード誕生の要因は一般的に複合的
–  テストでの要因:
テストベースの問題、進め方やプロセスの問題、
テスト対象の問題、計画・管理の制約
•  コミュニケーションの材料確保のため、要因はよく分析し
理解しておく
14
Whyツリー	
 SaPIDの問題構造図	
人	
問題	
 目標	
 方針	
環境	
問題	
 目標	
 方針	
アプローチ	
問題	
 目標	
 方針
「人」についての方針:基礎を作る
理解を得るための証拠で武装する
•  「問題や改善の必要性」「改善の効果」の根拠を、
蓄積・共有し、状況を理解してもらう
–  一般的なメトリクスの確保
•  眉唾物になりがちだが、レガシーコードでは露骨な異常値がでる
•  Ex)構造、生産性、不具合の傾向
–  有用な定性的意見の指標化
•  Ex)アンケート集計、キーマンからの意見収集
–  実証
•  Ex)類似プロジェクト・理想状態との比較検証、フィージビリティ・スタディ
15
人	
問題	
 目標	
 方針	
環境	
問題	
 目標	
 方針	
アプローチ	
問題	
 目標	
 方針
「人」についての方針:基礎を作る
属人性を排除して問題を共有する
16
•  このコードを書いた●●は本当にクソだ	
  
•  ●●の書いたコードは本当にクソだ	
直接の攻撃	
人	
問題	
 目標	
 方針	
環境	
問題	
 目標	
 方針	
アプローチ	
問題	
 目標	
 方針
「人」についての方針:基礎を作る
属人性を排除して問題を共有する
17
•  このコードを書いた●●は本当にクソだ	
  
•  ●●の書いたコードは本当にクソだ	
•  そのコードを書かざるを得なかった状
況や環境は本当に糞だ	
•  そのコードを書いてしまった自分たち
のチームは糞だ。改善しなければ	
直接の攻撃	
制約のせいにする	
自分も含めたみんなのせいにする	
☓	
人	
問題	
 目標	
 方針	
環境	
問題	
 目標	
 方針	
アプローチ	
問題	
 目標	
 方針
「人」についての方針
協力を得ながらレガシーコードに立ち向かう
•  相談や嘆願でなく改善の提案・担当を
–  Ex)テスタビリティ改善では、具体的な改善の提
案や、直接の改善を行う
•  Give&Take
–  開発者に対するデバッグ支援、バグ混入防止
活動支援等、直接的に協力する
–  開発者に横展開できる改善成果を生み出す
•  チームとして改善
–  チームとして問題共有・改善成果共有を行う
18
属人性の排除	
証拠の	
  
武装・展開	
要因の理解	
基礎	
人	
問題	
 目標	
 方針	
環境	
問題	
 目標	
 方針	
アプローチ	
問題	
 目標	
 方針
レガシーコード対応における
「環境」
レガシーコード対応を支える
環境作り
19
人	
問題	
 目標	
 方針	
環境	
問題	
 目標	
 方針	
アプローチ	
問題	
 目標	
 方針
「環境」をとりまく問題
•  レガシーコード対応では、環境改善による
作業効率化が強力に求められる
– 工数は新規開発より大きく削減される
– 試行錯誤と立て直しが要求される
– そもそも環境に致命的な問題を持つことが珍しくない
20
人	
問題	
 目標	
 方針	
環境	
問題	
 目標	
 方針	
アプローチ	
問題	
 目標	
 方針
「環境」について注力すべき目標
•  環境による生産性向上のサポートは必須
– レガシーコード対応を支えるツールやプラクティスは
すでに様々なものが普及している
– 活かさないのは、今や罪
21
人	
問題	
 目標	
 方針	
環境	
問題	
 目標	
 方針	
アプローチ	
問題	
 目標	
 方針
環境についての方針
•  現代的な開発の前提である三種の神器は
レガシーコード対応の大前提
22
バージョン管理	
 当たり前。説明割愛	
  
自動テスト	
 当たり前。説明割愛	
  
自動化	
 当たり前。説明割愛	
人	
問題	
 目標	
 方針	
環境	
問題	
 目標	
 方針	
アプローチ	
問題	
 目標	
 方針
人	
問題	
 目標	
 方針	
環境	
問題	
 目標	
 方針	
アプローチ	
問題	
 目標	
 方針	
環境についての方針
•  テストでも同様
23
テストのバージョン管理	
 ・当たり前	
  
テストの検証自動化	
 ・テストのCIをしよう	
  
・テストの品質を評価しよう	
  
各種カバレッジの計測・性能評価	
  
・テストの妥当性を評価しよう	
  
ミューテーションテストや、モデル駆動・ドメイン駆
動で妥当性を評価しよう	
  
各種テスト作業の	
  
自動化	
・テスト設計や実行、保守等、全領域で自動
化しよう
環境についての方針
テストの自動生成
24
•  レガシーコード対応で有効なアプローチ
–  テストオラクル問題が深刻にならず、仕組みを作ってしまえば
応用が容易
人	
問題	
 目標	
 方針	
環境	
問題	
 目標	
 方針	
アプローチ	
問題	
 目標	
 方針	
構造ベース	
・制御パス・カバレッジベース、規約ベース、型ベース等	
  
Concolic	
  Tes4ng、構造モデルベーステスト、静的解析との連携、動的解析	
仕様ベース	
・仕様モデルベース、DSLベース、データ・キーワード駆動等	
  
仕様モデルベーステスト、データ駆動テスト、キーワード駆動テスト	
経験ベース	
・外部モデルや標準ベース、実使用ベース等	
  
ファジング、キャプチャ&リプレイ	
  
レガシーコード対応における
「開発のアプローチ」
レガシーコードに
惑わされないための考え方
25
人	
問題	
 目標	
 方針	
環境	
問題	
 目標	
 方針	
アプローチ	
問題	
 目標	
 方針
開発のアプローチをとりまく問題
•  行き当たりばったりだとよりカオスに
•  カオスの解消も難しい・コスパ確保が困難
– なしのつぶて
– 全て捨てて作りなおすのも無理
26
人	
問題	
 目標	
 方針	
環境	
問題	
 目標	
 方針	
アプローチ	
問題	
 方針	
目標
開発のアプローチで実現すべき目標
•  “備えてから進む”
– 品質リスクに備えてからコードに手を付ける
•  ミスの流出の防止
–  Cover  &  Modify
– レガシーコード本で常識なので割愛
•  アプローチの妥当性を確保
–  探索的・実証的(Mikado  Method)、フロントローディング的(XDDP等)
•  ピンポイントの保守性の確保
– Ex)変更ミスを防ぐ変更性の作り込み、リグレッションテストを
作れるようにするテスタビリティ
27
人	
問題	
 目標	
 方針	
環境	
問題	
 目標	
 方針	
アプローチ	
問題	
 目標	
 方針
開発のアプローチ:保守性の確保の方針
2つの方向性
•  トップダウン
–  保守性の要求を体系的に分析し、
計画的に保守性を確保する
•  リスクやロードマップの分析
•  ボトムアップ
–  作業上必要な保守性を適用的に確保
•  プログラマ主体のCover&Modify
•  ボーイスカウトルールの実施
–  当たり前なので割愛
28
長期的・大規模・組織的	
短期的・適用的・個人	
  
人	
問題	
 目標	
 方針	
環境	
問題	
 目標	
 方針	
アプローチ	
問題	
 目標	
 方針
トップダウンの保守性改善
リスクベースのアプローチ
•  品質リスクで保守性対策を優先付けする
29
事象	
 ダメージ	
 重大度	
 発生確率	
 リスク	
  
レベル	
プロセッサの
ディスコン	
Q:タイミング設計起因の	
  
不具合発生	
3	
 しばしば	
 II	
プロセッサの
ディスコン	
C:ハードウェア依存部の変更	
 2	
 しばしば	
 II	
・リスクレベルに応じて保守性対策
を検討する	
  
・リスクを俯瞰して対策を検討する	
人	
問題	
 目標	
 方針	
環境	
問題	
 目標	
 方針	
アプローチ	
問題	
 目標	
 方針
トップダウンの保守性改善
リスクベースのアプローチ
•  品質リスクで保守性対策を優先付けする
30
事象	
 ダメージ	
 重大度	
 発生確率	
 リスク	
  
レベル	
プロセッサの
ディスコン	
Q:タイミング設計起因の	
  
不具合発生	
3	
 しばしば	
 II	
プロセッサの
ディスコン	
C:ハードウェア依存部の変更	
 2	
 しばしば	
 II	
リスク分析の観点	
  
・構造(コンポーネント、IF)	
  
・制約(スケジュール、メンバー)	
  
・要求(顧客要求、ビジネス状況)	
  
・リスクレベルに応じて保守性対策
を検討する	
  
・リスクを俯瞰して対策を検討する	
人	
問題	
 目標	
 方針	
環境	
問題	
 目標	
 方針	
アプローチ	
問題	
 目標	
 方針
トップダウンの保守性改善
リスクベースのアプローチ
•  品質リスクで保守性対策を優先付けする
31
事象	
 ダメージ	
 リスク	
  
レベル	
リスクの軽減策	
 軽減した	
  
リスク	
  
レベル	
プロセッサ
のディスコン	
Q:タイミング設計起
因の不具合発生	
II	
 ・動的解析ツールAを
導入。ツールに合わ
せてIF追加	
  
II	
プロセッサ
のディスコン	
C:ハードウェア依存
部の変更	
II	
 変更部分をラッピング
し、旧ハードウェア依
存部を一コンポーネ
ントに集中させる	
II	
人	
問題	
 目標	
 方針	
環境	
問題	
 目標	
 方針	
アプローチ	
問題	
 目標	
 方針
開発のアプローチ:保守性の確保の方針
保守性改善手段はいろいろな観点で
32
観点	
 テストでの保守性改善手段	
要求	
 •  テストの要求、テスト設計の根拠を明確化	
  
•  内部品質含めテストの品質要求を識別・定義	
設計	
 •  テスト要求からテスト実装まで合理的で	
  
一貫したアプローチを取る	
  
•  Ex)ゆもつよメソッド、HAYST法等	
  
•  保守性に優れた構造をテスト設計・実装で	
  
実現	
  
実装	
 •  保守性を支えるプログラミングテクニックの適用	
人	
問題	
 目標	
 方針	
環境	
問題	
 目標	
 方針	
アプローチ	
問題	
 目標	
 方針
ご清聴ありがとうございました
•  レガシーコード対応における
人
•  問題/目標/方針  
環境
•  問題/目標/方針  
開発のアプローチ
•  問題/目標/方針  
33

More Related Content

What's hot

Agile Quality アジャイル品質パターン (QA2AQ)
Agile Quality アジャイル品質パターン (QA2AQ)Agile Quality アジャイル品質パターン (QA2AQ)
Agile Quality アジャイル品質パターン (QA2AQ)Hironori Washizaki
 
QAアーキテクチャの設計による 説明責任の高いテスト・品質保証
QAアーキテクチャの設計による説明責任の高いテスト・品質保証QAアーキテクチャの設計による説明責任の高いテスト・品質保証
QAアーキテクチャの設計による 説明責任の高いテスト・品質保証Yasuharu Nishi
 
ユーザーストーリー駆動開発で行こう。
ユーザーストーリー駆動開発で行こう。ユーザーストーリー駆動開発で行こう。
ユーザーストーリー駆動開発で行こう。toshihiro ichitani
 
What is quality culture? Is it something tasty?
What is quality culture? Is it something tasty?What is quality culture? Is it something tasty?
What is quality culture? Is it something tasty?Yasuharu Nishi
 
インセプションデッキ: やらないことリストと トレードオフスライダーをやってる話
インセプションデッキ:やらないことリストとトレードオフスライダーをやってる話インセプションデッキ:やらないことリストとトレードオフスライダーをやってる話
インセプションデッキ: やらないことリストと トレードオフスライダーをやってる話Nobuhiro Yoshitake
 
Agile開発でのテストのやり方~私の場合~
Agile開発でのテストのやり方~私の場合~Agile開発でのテストのやり方~私の場合~
Agile開発でのテストのやり方~私の場合~Mineo Matsuya
 
探索的テスト入門
探索的テスト入門探索的テスト入門
探索的テスト入門H Iseri
 
メトリクスによるソフトウェア品質把握と改善- 演習を交えた品質測定評価の落とし穴とコツの習得 -
メトリクスによるソフトウェア品質把握と改善- 演習を交えた品質測定評価の落とし穴とコツの習得 -メトリクスによるソフトウェア品質把握と改善- 演習を交えた品質測定評価の落とし穴とコツの習得 -
メトリクスによるソフトウェア品質把握と改善- 演習を交えた品質測定評価の落とし穴とコツの習得 -Hironori Washizaki
 
私にとってのテスト
私にとってのテスト私にとってのテスト
私にとってのテストTakuto Wada
 
例外設計における大罪
例外設計における大罪例外設計における大罪
例外設計における大罪Takuto Wada
 
スクラムマスター3ヶ月生がチームの自己組織化に挑戦して
スクラムマスター3ヶ月生がチームの自己組織化に挑戦してスクラムマスター3ヶ月生がチームの自己組織化に挑戦して
スクラムマスター3ヶ月生がチームの自己組織化に挑戦してKouki Kawagoi
 
開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)mosa siru
 
組織にテストを書く文化を根付かせる戦略と戦術
組織にテストを書く文化を根付かせる戦略と戦術組織にテストを書く文化を根付かせる戦略と戦術
組織にテストを書く文化を根付かせる戦略と戦術Takuto Wada
 
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」Takuto Wada
 
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)NTT DATA Technology & Innovation
 
What should you shift left
What should you shift leftWhat should you shift left
What should you shift leftYasuharu Nishi
 
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!mosa siru
 
シリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのかシリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのかAtsushi Nakada
 
CIが分からない PE(SETエンジニア)の1年生がWebAPIの負荷テストを 背伸びしてCI運用した
CIが分からないPE(SETエンジニア)の1年生がWebAPIの負荷テストを背伸びしてCI運用したCIが分からないPE(SETエンジニア)の1年生がWebAPIの負荷テストを背伸びしてCI運用した
CIが分からない PE(SETエンジニア)の1年生がWebAPIの負荷テストを 背伸びしてCI運用したssuser0be501
 
マイクロサービスにおけるテスト自動化 with Karate
マイクロサービスにおけるテスト自動化 with Karateマイクロサービスにおけるテスト自動化 with Karate
マイクロサービスにおけるテスト自動化 with KarateTakanori Suzuki
 

What's hot (20)

Agile Quality アジャイル品質パターン (QA2AQ)
Agile Quality アジャイル品質パターン (QA2AQ)Agile Quality アジャイル品質パターン (QA2AQ)
Agile Quality アジャイル品質パターン (QA2AQ)
 
QAアーキテクチャの設計による 説明責任の高いテスト・品質保証
QAアーキテクチャの設計による説明責任の高いテスト・品質保証QAアーキテクチャの設計による説明責任の高いテスト・品質保証
QAアーキテクチャの設計による 説明責任の高いテスト・品質保証
 
ユーザーストーリー駆動開発で行こう。
ユーザーストーリー駆動開発で行こう。ユーザーストーリー駆動開発で行こう。
ユーザーストーリー駆動開発で行こう。
 
What is quality culture? Is it something tasty?
What is quality culture? Is it something tasty?What is quality culture? Is it something tasty?
What is quality culture? Is it something tasty?
 
インセプションデッキ: やらないことリストと トレードオフスライダーをやってる話
インセプションデッキ:やらないことリストとトレードオフスライダーをやってる話インセプションデッキ:やらないことリストとトレードオフスライダーをやってる話
インセプションデッキ: やらないことリストと トレードオフスライダーをやってる話
 
Agile開発でのテストのやり方~私の場合~
Agile開発でのテストのやり方~私の場合~Agile開発でのテストのやり方~私の場合~
Agile開発でのテストのやり方~私の場合~
 
探索的テスト入門
探索的テスト入門探索的テスト入門
探索的テスト入門
 
メトリクスによるソフトウェア品質把握と改善- 演習を交えた品質測定評価の落とし穴とコツの習得 -
メトリクスによるソフトウェア品質把握と改善- 演習を交えた品質測定評価の落とし穴とコツの習得 -メトリクスによるソフトウェア品質把握と改善- 演習を交えた品質測定評価の落とし穴とコツの習得 -
メトリクスによるソフトウェア品質把握と改善- 演習を交えた品質測定評価の落とし穴とコツの習得 -
 
私にとってのテスト
私にとってのテスト私にとってのテスト
私にとってのテスト
 
例外設計における大罪
例外設計における大罪例外設計における大罪
例外設計における大罪
 
スクラムマスター3ヶ月生がチームの自己組織化に挑戦して
スクラムマスター3ヶ月生がチームの自己組織化に挑戦してスクラムマスター3ヶ月生がチームの自己組織化に挑戦して
スクラムマスター3ヶ月生がチームの自己組織化に挑戦して
 
開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)
 
組織にテストを書く文化を根付かせる戦略と戦術
組織にテストを書く文化を根付かせる戦略と戦術組織にテストを書く文化を根付かせる戦略と戦術
組織にテストを書く文化を根付かせる戦略と戦術
 
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
 
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
 
What should you shift left
What should you shift leftWhat should you shift left
What should you shift left
 
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
 
シリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのかシリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのか
 
CIが分からない PE(SETエンジニア)の1年生がWebAPIの負荷テストを 背伸びしてCI運用した
CIが分からないPE(SETエンジニア)の1年生がWebAPIの負荷テストを背伸びしてCI運用したCIが分からないPE(SETエンジニア)の1年生がWebAPIの負荷テストを背伸びしてCI運用した
CIが分からない PE(SETエンジニア)の1年生がWebAPIの負荷テストを 背伸びしてCI運用した
 
マイクロサービスにおけるテスト自動化 with Karate
マイクロサービスにおけるテスト自動化 with Karateマイクロサービスにおけるテスト自動化 with Karate
マイクロサービスにおけるテスト自動化 with Karate
 

Viewers also liked

テストとリファクタリングに関する深い方法論 #wewlc_jp
テストとリファクタリングに関する深い方法論 #wewlc_jpテストとリファクタリングに関する深い方法論 #wewlc_jp
テストとリファクタリングに関する深い方法論 #wewlc_jpkyon mm
 
レガシーコード改善のススメ
レガシーコード改善のススメレガシーコード改善のススメ
レガシーコード改善のススメAkira Hirasawa
 
納品のない受託開発を支える レガシーコードを作らない仕組み
納品のない受託開発を支える レガシーコードを作らない仕組み納品のない受託開発を支える レガシーコードを作らない仕組み
納品のない受託開発を支える レガシーコードを作らない仕組みMasahiro Nishimi
 
リーン開発の本質 公開用
リーン開発の本質 公開用リーン開発の本質 公開用
リーン開発の本質 公開用ESM SEC
 
Nyandoc: Scaladoc/Javadoc to markdown converter
Nyandoc: Scaladoc/Javadoc to markdown converterNyandoc: Scaladoc/Javadoc to markdown converter
Nyandoc: Scaladoc/Javadoc to markdown convertertod esking
 
概観テキストマイニング
概観テキストマイニング概観テキストマイニング
概観テキストマイニングtod esking
 
「レガシーコード」とはいったい?
「レガシーコード」とはいったい?「レガシーコード」とはいったい?
「レガシーコード」とはいったい?Hiroyuki Ohnaka
 
精神論によるいきいきとした組織づくりのご提案
精神論によるいきいきとした組織づくりのご提案精神論によるいきいきとした組織づくりのご提案
精神論によるいきいきとした組織づくりのご提案tod esking
 
貧者のための入力デバイス
貧者のための入力デバイス貧者のための入力デバイス
貧者のための入力デバイスtod esking
 
仕様変更で死なないためのユニットテスト
仕様変更で死なないためのユニットテスト仕様変更で死なないためのユニットテスト
仕様変更で死なないためのユニットテストtod esking
 

Viewers also liked (10)

テストとリファクタリングに関する深い方法論 #wewlc_jp
テストとリファクタリングに関する深い方法論 #wewlc_jpテストとリファクタリングに関する深い方法論 #wewlc_jp
テストとリファクタリングに関する深い方法論 #wewlc_jp
 
レガシーコード改善のススメ
レガシーコード改善のススメレガシーコード改善のススメ
レガシーコード改善のススメ
 
納品のない受託開発を支える レガシーコードを作らない仕組み
納品のない受託開発を支える レガシーコードを作らない仕組み納品のない受託開発を支える レガシーコードを作らない仕組み
納品のない受託開発を支える レガシーコードを作らない仕組み
 
リーン開発の本質 公開用
リーン開発の本質 公開用リーン開発の本質 公開用
リーン開発の本質 公開用
 
Nyandoc: Scaladoc/Javadoc to markdown converter
Nyandoc: Scaladoc/Javadoc to markdown converterNyandoc: Scaladoc/Javadoc to markdown converter
Nyandoc: Scaladoc/Javadoc to markdown converter
 
概観テキストマイニング
概観テキストマイニング概観テキストマイニング
概観テキストマイニング
 
「レガシーコード」とはいったい?
「レガシーコード」とはいったい?「レガシーコード」とはいったい?
「レガシーコード」とはいったい?
 
精神論によるいきいきとした組織づくりのご提案
精神論によるいきいきとした組織づくりのご提案精神論によるいきいきとした組織づくりのご提案
精神論によるいきいきとした組織づくりのご提案
 
貧者のための入力デバイス
貧者のための入力デバイス貧者のための入力デバイス
貧者のための入力デバイス
 
仕様変更で死なないためのユニットテスト
仕様変更で死なないためのユニットテスト仕様変更で死なないためのユニットテスト
仕様変更で死なないためのユニットテスト
 

Similar to レガシーコードとの付き合い方とテストでの話

テストを分類してみよう!
テストを分類してみよう!テストを分類してみよう!
テストを分類してみよう!Kenji Okumura
 
19-B-4 開発品質向上のための、ASQ/ALMソリューション
19-B-4 開発品質向上のための、ASQ/ALMソリューション19-B-4 開発品質向上のための、ASQ/ALMソリューション
19-B-4 開発品質向上のための、ASQ/ALMソリューションDevelopers Summit
 
開発品質向上のための、ASQ/ALMソリューション ~品質向上策・活用していないのは何故ですか?~
開発品質向上のための、ASQ/ALMソリューション ~品質向上策・活用していないのは何故ですか?~開発品質向上のための、ASQ/ALMソリューション ~品質向上策・活用していないのは何故ですか?~
開発品質向上のための、ASQ/ALMソリューション ~品質向上策・活用していないのは何故ですか?~mafujiwara
 
アジャイルテスト -高品質を追求するアジャイルチームにおけるテストの視点-
アジャイルテスト  -高品質を追求するアジャイルチームにおけるテストの視点-アジャイルテスト  -高品質を追求するアジャイルチームにおけるテストの視点-
アジャイルテスト -高品質を追求するアジャイルチームにおけるテストの視点-Satoshi Masuda
 
AgileTourOsaka2011 関係者に理解してもらえるアジャイル開発にむけて
AgileTourOsaka2011 関係者に理解してもらえるアジャイル開発にむけてAgileTourOsaka2011 関係者に理解してもらえるアジャイル開発にむけて
AgileTourOsaka2011 関係者に理解してもらえるアジャイル開発にむけてShuji Morisaki
 
#STAC2014 状態遷移を活用した自動テストのテスト戦略とデプロイメントパイプライン
#STAC2014 状態遷移を活用した自動テストのテスト戦略とデプロイメントパイプライン#STAC2014 状態遷移を活用した自動テストのテスト戦略とデプロイメントパイプライン
#STAC2014 状態遷移を活用した自動テストのテスト戦略とデプロイメントパイプラインkyon mm
 
アジャイル×テスト開発を考える
アジャイル×テスト開発を考えるアジャイル×テスト開発を考える
アジャイル×テスト開発を考えるyasuohosotani
 
How to Develop Experiment-Oriented Programs
How to Develop Experiment-Oriented ProgramsHow to Develop Experiment-Oriented Programs
How to Develop Experiment-Oriented ProgramsKenta Oono
 
テスト初心者Androiderのためのソフトウェアテスト入門
テスト初心者Androiderのためのソフトウェアテスト入門テスト初心者Androiderのためのソフトウェアテスト入門
テスト初心者Androiderのためのソフトウェアテスト入門Satoshi Watanabe
 
SWEBOKにみるソフトウェアエンジニアリングの全体、および、 つながる時代のソフトウェアモデリング&品質
SWEBOKにみるソフトウェアエンジニアリングの全体、および、 つながる時代のソフトウェアモデリング&品質 SWEBOKにみるソフトウェアエンジニアリングの全体、および、 つながる時代のソフトウェアモデリング&品質
SWEBOKにみるソフトウェアエンジニアリングの全体、および、 つながる時代のソフトウェアモデリング&品質 Hironori Washizaki
 
ヒンシツ大学セミナー ゴール指向の測定と品質保証活動 -メトリクス解説およびGqm法のワークショップ-
ヒンシツ大学セミナー ゴール指向の測定と品質保証活動 -メトリクス解説およびGqm法のワークショップ-ヒンシツ大学セミナー ゴール指向の測定と品質保証活動 -メトリクス解説およびGqm法のワークショップ-
ヒンシツ大学セミナー ゴール指向の測定と品質保証活動 -メトリクス解説およびGqm法のワークショップ-Hironori Washizaki
 
TDDはじめる前に
TDDはじめる前にTDDはじめる前に
TDDはじめる前にYasui Tsutomu
 
Gui自動テストツール基本
Gui自動テストツール基本Gui自動テストツール基本
Gui自動テストツール基本Tsuyoshi Yumoto
 
テスト計画の立て方 WACATE2019 夏
テスト計画の立て方 WACATE2019 夏テスト計画の立て方 WACATE2019 夏
テスト計画の立て方 WACATE2019 夏Naoki Nakano
 
ソフトウェアテストことはじめ2016年ver
ソフトウェアテストことはじめ2016年verソフトウェアテストことはじめ2016年ver
ソフトウェアテストことはじめ2016年verKosuke Fujisawa
 
「トピックモデル」を使った「バグチケットの自動タグ付け」
「トピックモデル」を使った「バグチケットの自動タグ付け」「トピックモデル」を使った「バグチケットの自動タグ付け」
「トピックモデル」を使った「バグチケットの自動タグ付け」Koichi Tanizaki
 
モダンアジャイル - Agile Japan 2017 地方サテライト版 #agilejapan
モダンアジャイル - Agile Japan 2017 地方サテライト版 #agilejapanモダンアジャイル - Agile Japan 2017 地方サテライト版 #agilejapan
モダンアジャイル - Agile Japan 2017 地方サテライト版 #agilejapan満徳 関
 
Et west テスト自動化_公開版
Et west テスト自動化_公開版Et west テスト自動化_公開版
Et west テスト自動化_公開版Noriyuki Mizuno
 

Similar to レガシーコードとの付き合い方とテストでの話 (20)

テストを分類してみよう!
テストを分類してみよう!テストを分類してみよう!
テストを分類してみよう!
 
19-B-4 開発品質向上のための、ASQ/ALMソリューション
19-B-4 開発品質向上のための、ASQ/ALMソリューション19-B-4 開発品質向上のための、ASQ/ALMソリューション
19-B-4 開発品質向上のための、ASQ/ALMソリューション
 
開発品質向上のための、ASQ/ALMソリューション ~品質向上策・活用していないのは何故ですか?~
開発品質向上のための、ASQ/ALMソリューション ~品質向上策・活用していないのは何故ですか?~開発品質向上のための、ASQ/ALMソリューション ~品質向上策・活用していないのは何故ですか?~
開発品質向上のための、ASQ/ALMソリューション ~品質向上策・活用していないのは何故ですか?~
 
アジャイルテスト -高品質を追求するアジャイルチームにおけるテストの視点-
アジャイルテスト  -高品質を追求するアジャイルチームにおけるテストの視点-アジャイルテスト  -高品質を追求するアジャイルチームにおけるテストの視点-
アジャイルテスト -高品質を追求するアジャイルチームにおけるテストの視点-
 
AgileTourOsaka2011 関係者に理解してもらえるアジャイル開発にむけて
AgileTourOsaka2011 関係者に理解してもらえるアジャイル開発にむけてAgileTourOsaka2011 関係者に理解してもらえるアジャイル開発にむけて
AgileTourOsaka2011 関係者に理解してもらえるアジャイル開発にむけて
 
#STAC2014 状態遷移を活用した自動テストのテスト戦略とデプロイメントパイプライン
#STAC2014 状態遷移を活用した自動テストのテスト戦略とデプロイメントパイプライン#STAC2014 状態遷移を活用した自動テストのテスト戦略とデプロイメントパイプライン
#STAC2014 状態遷移を活用した自動テストのテスト戦略とデプロイメントパイプライン
 
アジャイル×テスト開発を考える
アジャイル×テスト開発を考えるアジャイル×テスト開発を考える
アジャイル×テスト開発を考える
 
How to Develop Experiment-Oriented Programs
How to Develop Experiment-Oriented ProgramsHow to Develop Experiment-Oriented Programs
How to Develop Experiment-Oriented Programs
 
テスト初心者Androiderのためのソフトウェアテスト入門
テスト初心者Androiderのためのソフトウェアテスト入門テスト初心者Androiderのためのソフトウェアテスト入門
テスト初心者Androiderのためのソフトウェアテスト入門
 
品質基礎知識
品質基礎知識品質基礎知識
品質基礎知識
 
SWEBOKにみるソフトウェアエンジニアリングの全体、および、 つながる時代のソフトウェアモデリング&品質
SWEBOKにみるソフトウェアエンジニアリングの全体、および、 つながる時代のソフトウェアモデリング&品質 SWEBOKにみるソフトウェアエンジニアリングの全体、および、 つながる時代のソフトウェアモデリング&品質
SWEBOKにみるソフトウェアエンジニアリングの全体、および、 つながる時代のソフトウェアモデリング&品質
 
ヒンシツ大学セミナー ゴール指向の測定と品質保証活動 -メトリクス解説およびGqm法のワークショップ-
ヒンシツ大学セミナー ゴール指向の測定と品質保証活動 -メトリクス解説およびGqm法のワークショップ-ヒンシツ大学セミナー ゴール指向の測定と品質保証活動 -メトリクス解説およびGqm法のワークショップ-
ヒンシツ大学セミナー ゴール指向の測定と品質保証活動 -メトリクス解説およびGqm法のワークショップ-
 
TDDはじめる前に
TDDはじめる前にTDDはじめる前に
TDDはじめる前に
 
Gui自動テストツール基本
Gui自動テストツール基本Gui自動テストツール基本
Gui自動テストツール基本
 
テスト計画の立て方 WACATE2019 夏
テスト計画の立て方 WACATE2019 夏テスト計画の立て方 WACATE2019 夏
テスト計画の立て方 WACATE2019 夏
 
ITS fidel
ITS fidelITS fidel
ITS fidel
 
ソフトウェアテストことはじめ2016年ver
ソフトウェアテストことはじめ2016年verソフトウェアテストことはじめ2016年ver
ソフトウェアテストことはじめ2016年ver
 
「トピックモデル」を使った「バグチケットの自動タグ付け」
「トピックモデル」を使った「バグチケットの自動タグ付け」「トピックモデル」を使った「バグチケットの自動タグ付け」
「トピックモデル」を使った「バグチケットの自動タグ付け」
 
モダンアジャイル - Agile Japan 2017 地方サテライト版 #agilejapan
モダンアジャイル - Agile Japan 2017 地方サテライト版 #agilejapanモダンアジャイル - Agile Japan 2017 地方サテライト版 #agilejapan
モダンアジャイル - Agile Japan 2017 地方サテライト版 #agilejapan
 
Et west テスト自動化_公開版
Et west テスト自動化_公開版Et west テスト自動化_公開版
Et west テスト自動化_公開版
 

Recently uploaded

LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルCRI Japan, Inc.
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Gamesatsushi061452
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイスCRI Japan, Inc.
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...Toru Tamaki
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Hiroshi Tomioka
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video UnderstandingToru Tamaki
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 

Recently uploaded (11)

LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 

レガシーコードとの付き合い方とテストでの話