SlideShare a Scribd company logo
1 of 31
Download to read offline
エクストリーム・エンジニアへの道
(Ruby編)第5回
リファクタリング	
  
テクノロジックアート	
  
⻑⾧長瀬  嘉秀	
  
•  リファクタリング	
  
•  設計改善	
内容	
  
リファクタリングとは 	
•  外部から見たときの振る舞いを保ちつつ、	
理解や修正が簡単になるように、ソフトウェアの	
内部構造を変化させること (出典:リファクタリング)	
Aを実現する	
コード	
Bを実現する	
コード	
Cを実現する	
コード	
Aを実現する	
コード	
Bを実現する	
コード	
Cを実現する	
コード	
共通コード	
リファクタリングのイメージ	
振る舞いA	
 振る舞いB	
 振る舞いC	
振る舞いA	
 振る舞いB	
 振る舞いC	
  
リファクタリング前	
 リファクタリング後
•  リファクタリングのきっかけとなる、設計上
の問題	
コードの臭い(code	
  smell)	
  	
  
臭い	
 状態	
重複したコード	
 同じ処理が複数個所に存在する	
長すぎるメソッド	
 一つのメソッドに多くの処理が記述されている	
巨大なクラス	
 あるクラスが、責務を多く持ちすぎている	
多すぎる引数	
 メソッドに渡す引数の数が多すぎる	
変更の発散	
 1つのクラスがさまざまな変更要求の影響を被る	
変更の分散	
 1つの変更要求によって、複数のクラスが影響を被る	
属性、操作の横恋慕	
 自クラスより他クラスの属性、操作と関連が深い	
データの群れ	
 数個のデータがグループとなって各所に現れる	
基本データ型への執着	
 基本データ型を使用し、複雑なロジックが記述されている	
スイッチ文	
 スイッチ文により設計が複雑化、硬直化している	
パラレル継承	
 あるクラスの継承ツリーと、他のクラスの継承ツリーに関連がある。	
表. コードの臭いの例	
出典:リファクタリング
リファクタリングの意義	
  
実装済み	
ツールのサポート	
単純ミスの回避	
自動化	
実装済み	
コード	
臭い	
リファクタリング	
コード	
修正しやすい	
理解しやすい	
カタログ	
臭い	
省力化	
対象の発見	
状態の共有	
解決法の共有	
デザインパターン	
例)Eclipse
リファクタリング	
リファクタリングの位置づけ	
動作しなくなる	
危険性	
自動テスト	
バージョン管理システム	
常に検証	
変更破棄の	
場合もある	
デザインパターン	
指針	
YAGNI原則	
同時に行わない	
 パフォーマンス	
チューニング	
機能の追加	
こまめに	
コミット
進化的設計とリファクタリング	
  
•  進化的設計	
–  仕様・設計の変更にともない、コードの修正が多発する	
•  コストとリスクを抑える必要がある	
– TDD	
  
– リファクタリング	
•  これらの手法を学び、適用することで、「コストとリスクを抑えて」	
  
進化的設計(アジャイル開発)を実現する
オブジェクト指向とカプセル化①	
  
•  オブジェクト指向、非オブジェクト指向のソフトウェアの構成の差異	
データ
処理	
非オブジェクト指向	
 オブジェクト指向	
メッセージ	
カプセル化	
データ	
処理
オブジェクト指向とカプセル化②	
  
•  オブジェクトのカプセル化とは	
データや処理をオブジェクト外部から隠蔽すること	
定められた「可視性」に
よって外部からアクセス
できる。	
エンジン	
色	
車名	
走る	
曲がる	
止まる	
車オブジェクト	
振る舞い	
(処理)	
属性	
(データ)
オブジェクト指向とカプセル化③	
  
•  インターフェースとは	
– オブジェクトが実行できる振る舞いを表明
したもの	
電源を入れる	
電源を入れる	
チャンネルを変える	
メッセージ	
振る舞い	
(処理)
オブジェクト指向とカプセル化④	
  
•  クラスは属性と振る舞い(操作)を持っている	
•  クラスは実体を持たない	
•  オブジェクトはクラスをインスタンス化することで生成される実体	
クラス	
鯛焼きの型	
鯛焼き	
作る	
インスタンス化	
オブジェクト	
(インスタンス)
オブジェクト指向とカプセル化⑤	
  
•  インターフェースと	
  
  実装の分離	
処理1  処理2	
処理3  処理4	
データA	
クラスA	
処理1   	
処理3   	
インターフェース1	
      処理2	
インターフェース2	
クラスB	
クラスC	
処理1、処理3が

できるということ

しか知らない	
処理2ができると

いうことしか

知らない	
クライアント
クライアント	
オブジェクト指向とカプセル化⑥	
  
•  クライアントは、扱うオブジェクトが求める	
  
インターフェースにしたがっている限り、	
  
そのオブジェクトの型を知らなくてすむ。	
•  クライアントは、これらのオブジェクトを実装
しているクラスを知らなくて済む。クライアン
トは	
  
インターフェースについてのみ知っていれば
よい。	
•  当該インターフェースの振る舞いさえ保たれ	
  
れば、クライアントは、オブジェクトの内部実
装が変化しても影響は無い。	
クラスB	
クラスC	
処理1、処理3が

できるということしか

知らない	
処理2ができるというこ
としか知らない	
リファクタリングのポイント	
!
実装	
実装	
オブジェクト指向とカプセル化⑦	
  
•  コンポーネントの形成	
クラスA	
処理1   	
処理3   	
インターフェース1	
      処理2	
インターフェース2	
一つのクラスでもよい	
クラスの集合体でもよい	
または	
コンポーネント
カプセル化とリファクタリング	
  
•  リファクタリングとは	
–  外部から見たときの振る舞いを保ちつつ、理解や修正が簡単になるように、
ソフトウェアの内部構造を変化させること (出典:リファクタリング)	
コンポーネント単位で、これを適用する	
振る舞い:コンポーネントとして提供するインターフェース	
内部構造:クラス構造
臭
い	
きれい	
臭
い	
きれい	
パターン適⽤用の意義①	
  
•  リファクタリングとパターンの関係	
同じようなクラス構造が	
よく出てくる…	
  
・分析・抽出	
・一般化	
・カタログ化	
リファクタリング	
コード	
 臭い	
コード	
 きれい	
リファクタリング	
コード	
 臭い	
コード	
 きれい	
過去	
 現在	
デザインパターン	
指針
•  リファクタリングとパターンの関係	
パターン適⽤用の意義②	
  
リファクタリング規模	
小	
 大	
リファクタリング・	
カタログ	
(出典:リファクタリング)	
デザインパターン	
(GoF)	
・Factory	
  Method	
  
・State	
  	
  	
  	
  	
  	
  	
  	
  	
  など	
領
域
	
   カタログやデザインパターンはリフ
ァクタリング全体の中では一部である	
!
まとめ	
  
• オブジェクト指向	
• カプセル化	
• インターフェースと実装の分離	
• コンポーネントの生成	
• リファクタリング	
• コンポーネント内部のリファクタリング	
• クラス構造のリファクタリング	
デザイン	
パターン	
指針
•  第2回のコード	
例例題	
  
例例題  社⻑⾧長のコード	
  
shain	
  =	
  Tanto.new(100)	
puts	
  shain.standup	
puts	
  "私の給料は#{	
  shain.calculate_salary}円です。"	
  	
  	
 	
shain	
  =	
  Shunin.new(100)	
shain.standup	
puts	
  "私の給料は#{	
  shain.calculate_salary}円です。"	
 	
shain	
  =	
  Bucho.new(100)	
shain.standup	
puts	
  "私の給料は#{	
  shain.calculate_salary}円です。"
•  デザインパターンでリファクタリング	
ファクトリーメソッド	
  
パターンを適⽤用	
  
社⻑⾧長コード	
  
ファクトリーを作成	
  
factory	
  =	
  ShainFactory.new	
  	
  
社員の役職を引数でファクトリークラスに渡す	
 	
shain	
  =	
  factory.create(“Tanto”,100)	
 	
部長の生成	
 	
shain	
  =	
  factory.create(“Bucho”,100)
社員コード	
  
module Salary	
def calculate_salary	
kihon + teate	
end	
def kihon	
@kihonkyu	
end	
def teate	
0	
end	
end	
class Shain	
include Salary	
def initialize(kihonkyu)	
@kihonkyu = kihonkyu	
end	
end	
class Tanto < Shain	
def standup	
"新入社員は慌てて起立しました"	
end	
end	
第2回のコード
•  まずはテストの作成	
  
•  Rspecを使用	
テスト	
  
# -*- coding: utf-8 -*-	
require_relative './shain'	
describe ShainFactory do	
let(:shain_factory) {ShainFactory.new}	
it ' Tantoオブジェクトを生成しているかどうかをチェックする' do	
expect(shain_factory.create('Tanto',100)).to be_an_instance_of Tanto	
end	
  
end
•  ShainFactoryクラスを作っていないのでエラー	
テスト  はじめはエラー	
  
class ShainFactory	
def create(type,kihonkyu)	
shain = nil	
if type == 'Tanto'	
shain = Tanto.new(kihonkyu)	
  
	
  	
  	
  	
  end	
shain	
end	
end
Rspecでテスト	
  
yoshi$	
  rspec	
  -­‐-­‐format=d	
  test_spec.rb	
  
ShainFactory	
  
	
  	
  Tantoオブジェクトを生成しているかどうかをチェックする
•  主任、部長、取締役も作成してください。	
演習	
  
•  車とトラックのクラスがあり、前進させるメソ
ッドを持っています。さらに、タイヤを回転さ
せます。	
  
•  このプログラムをリファクタリングして、重複
をなくしてください。	
演習2	
  
演習2  ⾞車車、トラック、タイヤクラス	
  
class Tire	
def spin_car	
"spinning car tire"	
end	
def spin_truck	
"spinning truck tire"	
end	
end	
class Vehicle	
def initialize	
@tire = Tire.new	
end	
end	
class Car < Vehicle	
def move_forward	
puts "前進する"	
return @tire.spin_car	
end	
end	
class Truck < Vehicle	
def move_forward	
puts "前進する"	
return @tire.spin_truck	
end	
end
演習2  RSpec	
  
# -*- coding: utf-8 -*-	
require_relative './vehicle'	
describe Car do	
let(:car) {Car.new}	
it ' spining car tireを返すかどうかをチェックする' do	
expect(car.move_forward).to eq 'spinning car tire'	
end	
end	
describe Truck do	
let(:truck) {Truck.new}	
it ' spining truck tireを返すかどうかをチェックする' do	
expect(truck.move_forward).to eq 'spinning truck tire'	
end

More Related Content

What's hot

st2でシステム管理
st2でシステム管理st2でシステム管理
st2でシステム管理You&I
 
Elastic Team Building
Elastic Team BuildingElastic Team Building
Elastic Team BuildingYuki Nanri
 
エンタープライズアジャイル内製プロジェクトを立ち上げる前に考慮すべき3つのこと
エンタープライズアジャイル内製プロジェクトを立ち上げる前に考慮すべき3つのことエンタープライズアジャイル内製プロジェクトを立ち上げる前に考慮すべき3つのこと
エンタープライズアジャイル内製プロジェクトを立ち上げる前に考慮すべき3つのことHiromasa Oka
 
Case study of DevOps for Hadoop in Recruit.
Case study of DevOps for Hadoop in Recruit.Case study of DevOps for Hadoop in Recruit.
Case study of DevOps for Hadoop in Recruit.Recruit Technologies
 
データをどこに溜めよう?ローカル?クラウド?どのデータベース?
データをどこに溜めよう?ローカル?クラウド?どのデータベース?データをどこに溜めよう?ローカル?クラウド?どのデータベース?
データをどこに溜めよう?ローカル?クラウド?どのデータベース?- Core Concept Technologies
 
IoTデバイスデータ収集の難しい点
IoTデバイスデータ収集の難しい点IoTデバイスデータ収集の難しい点
IoTデバイスデータ収集の難しい点Tetsutaro Watanabe
 
Microsoft ではじめる AI DLラボ パートナープログラムご紹介
Microsoft ではじめる AI DLラボ パートナープログラムご紹介Microsoft ではじめる AI DLラボ パートナープログラムご紹介
Microsoft ではじめる AI DLラボ パートナープログラムご紹介Hirono Jumpei
 
IoT導入のお客様要望とその事例(データ取得編)
IoT導入のお客様要望とその事例(データ取得編)IoT導入のお客様要望とその事例(データ取得編)
IoT導入のお客様要望とその事例(データ取得編)- Core Concept Technologies
 
社内問い合わせ&申請・承認業務の 管理方法 - Jira Service Management 事例紹介 -
社内問い合わせ&申請・承認業務の 管理方法 - Jira Service Management 事例紹介 -社内問い合わせ&申請・承認業務の 管理方法 - Jira Service Management 事例紹介 -
社内問い合わせ&申請・承認業務の 管理方法 - Jira Service Management 事例紹介 -MicroAd, Inc.(Engineer)
 
ビックデータ処理技術の全体像とリクルートでの使い分け
ビックデータ処理技術の全体像とリクルートでの使い分けビックデータ処理技術の全体像とリクルートでの使い分け
ビックデータ処理技術の全体像とリクルートでの使い分けTetsutaro Watanabe
 
早稲田大学 理工メディアセンター 機械学習とAI セミナー: 機械学習中級編
早稲田大学 理工メディアセンター 機械学習とAI セミナー: 機械学習中級編早稲田大学 理工メディアセンター 機械学習とAI セミナー: 機械学習中級編
早稲田大学 理工メディアセンター 機械学習とAI セミナー: 機械学習中級編Daiyu Hatakeyama
 
【de:code 2020】 Microsoft 365 E5 を活用したセキュア リモート ワーク環境の構築
【de:code 2020】 Microsoft 365 E5 を活用したセキュア リモート ワーク環境の構築【de:code 2020】 Microsoft 365 E5 を活用したセキュア リモート ワーク環境の構築
【de:code 2020】 Microsoft 365 E5 を活用したセキュア リモート ワーク環境の構築日本マイクロソフト株式会社
 
【17-E-4】GitHub Enterpriseユーザ企業登壇!企業文化にイノベーションを起こすモダンなソフトウェア開発環境とは?
【17-E-4】GitHub Enterpriseユーザ企業登壇!企業文化にイノベーションを起こすモダンなソフトウェア開発環境とは?【17-E-4】GitHub Enterpriseユーザ企業登壇!企業文化にイノベーションを起こすモダンなソフトウェア開発環境とは?
【17-E-4】GitHub Enterpriseユーザ企業登壇!企業文化にイノベーションを起こすモダンなソフトウェア開発環境とは?Developers Summit
 
フューチャースタンダードCEO鳥海登壇 【 第103回InfoTalk 】「IoTと画像処理で未来のフツウをつくる」講演資料 (Jul. 21st, 2017)
フューチャースタンダードCEO鳥海登壇 【 第103回InfoTalk 】「IoTと画像処理で未来のフツウをつくる」講演資料 (Jul. 21st, 2017)フューチャースタンダードCEO鳥海登壇 【 第103回InfoTalk 】「IoTと画像処理で未来のフツウをつくる」講演資料 (Jul. 21st, 2017)
フューチャースタンダードCEO鳥海登壇 【 第103回InfoTalk 】「IoTと画像処理で未来のフツウをつくる」講演資料 (Jul. 21st, 2017)Future Standard
 
Idcfクラウドはこんな人に向いている
Idcfクラウドはこんな人に向いているIdcfクラウドはこんな人に向いている
Idcfクラウドはこんな人に向いているTakayuki Saito
 
Chainer x Azure Machine Learning service - Hackathon
Chainer x Azure Machine Learning service - HackathonChainer x Azure Machine Learning service - Hackathon
Chainer x Azure Machine Learning service - HackathonDaiyu Hatakeyama
 
【de:code 2020】 Microsoft が考える新しいハイブリッドクラウドの形とは
【de:code 2020】 Microsoft が考える新しいハイブリッドクラウドの形とは【de:code 2020】 Microsoft が考える新しいハイブリッドクラウドの形とは
【de:code 2020】 Microsoft が考える新しいハイブリッドクラウドの形とは日本マイクロソフト株式会社
 

What's hot (20)

st2でシステム管理
st2でシステム管理st2でシステム管理
st2でシステム管理
 
Elastic Team Building
Elastic Team BuildingElastic Team Building
Elastic Team Building
 
エンタープライズアジャイル内製プロジェクトを立ち上げる前に考慮すべき3つのこと
エンタープライズアジャイル内製プロジェクトを立ち上げる前に考慮すべき3つのことエンタープライズアジャイル内製プロジェクトを立ち上げる前に考慮すべき3つのこと
エンタープライズアジャイル内製プロジェクトを立ち上げる前に考慮すべき3つのこと
 
Case study of DevOps for Hadoop in Recruit.
Case study of DevOps for Hadoop in Recruit.Case study of DevOps for Hadoop in Recruit.
Case study of DevOps for Hadoop in Recruit.
 
データをどこに溜めよう?ローカル?クラウド?どのデータベース?
データをどこに溜めよう?ローカル?クラウド?どのデータベース?データをどこに溜めよう?ローカル?クラウド?どのデータベース?
データをどこに溜めよう?ローカル?クラウド?どのデータベース?
 
IoTデバイスデータ収集の難しい点
IoTデバイスデータ収集の難しい点IoTデバイスデータ収集の難しい点
IoTデバイスデータ収集の難しい点
 
Microsoft ではじめる AI DLラボ パートナープログラムご紹介
Microsoft ではじめる AI DLラボ パートナープログラムご紹介Microsoft ではじめる AI DLラボ パートナープログラムご紹介
Microsoft ではじめる AI DLラボ パートナープログラムご紹介
 
IoT導入のお客様要望とその事例(データ取得編)
IoT導入のお客様要望とその事例(データ取得編)IoT導入のお客様要望とその事例(データ取得編)
IoT導入のお客様要望とその事例(データ取得編)
 
社内問い合わせ&申請・承認業務の 管理方法 - Jira Service Management 事例紹介 -
社内問い合わせ&申請・承認業務の 管理方法 - Jira Service Management 事例紹介 -社内問い合わせ&申請・承認業務の 管理方法 - Jira Service Management 事例紹介 -
社内問い合わせ&申請・承認業務の 管理方法 - Jira Service Management 事例紹介 -
 
ビックデータ処理技術の全体像とリクルートでの使い分け
ビックデータ処理技術の全体像とリクルートでの使い分けビックデータ処理技術の全体像とリクルートでの使い分け
ビックデータ処理技術の全体像とリクルートでの使い分け
 
早稲田大学 理工メディアセンター 機械学習とAI セミナー: 機械学習中級編
早稲田大学 理工メディアセンター 機械学習とAI セミナー: 機械学習中級編早稲田大学 理工メディアセンター 機械学習とAI セミナー: 機械学習中級編
早稲田大学 理工メディアセンター 機械学習とAI セミナー: 機械学習中級編
 
IoTで成果を出す
IoTで成果を出すIoTで成果を出す
IoTで成果を出す
 
【de:code 2020】 Microsoft 365 E5 を活用したセキュア リモート ワーク環境の構築
【de:code 2020】 Microsoft 365 E5 を活用したセキュア リモート ワーク環境の構築【de:code 2020】 Microsoft 365 E5 を活用したセキュア リモート ワーク環境の構築
【de:code 2020】 Microsoft 365 E5 を活用したセキュア リモート ワーク環境の構築
 
【17-E-4】GitHub Enterpriseユーザ企業登壇!企業文化にイノベーションを起こすモダンなソフトウェア開発環境とは?
【17-E-4】GitHub Enterpriseユーザ企業登壇!企業文化にイノベーションを起こすモダンなソフトウェア開発環境とは?【17-E-4】GitHub Enterpriseユーザ企業登壇!企業文化にイノベーションを起こすモダンなソフトウェア開発環境とは?
【17-E-4】GitHub Enterpriseユーザ企業登壇!企業文化にイノベーションを起こすモダンなソフトウェア開発環境とは?
 
Yahoo! JAPANを支えるビッグデータプラットフォーム技術
Yahoo! JAPANを支えるビッグデータプラットフォーム技術Yahoo! JAPANを支えるビッグデータプラットフォーム技術
Yahoo! JAPANを支えるビッグデータプラットフォーム技術
 
フューチャースタンダードCEO鳥海登壇 【 第103回InfoTalk 】「IoTと画像処理で未来のフツウをつくる」講演資料 (Jul. 21st, 2017)
フューチャースタンダードCEO鳥海登壇 【 第103回InfoTalk 】「IoTと画像処理で未来のフツウをつくる」講演資料 (Jul. 21st, 2017)フューチャースタンダードCEO鳥海登壇 【 第103回InfoTalk 】「IoTと画像処理で未来のフツウをつくる」講演資料 (Jul. 21st, 2017)
フューチャースタンダードCEO鳥海登壇 【 第103回InfoTalk 】「IoTと画像処理で未来のフツウをつくる」講演資料 (Jul. 21st, 2017)
 
Idcfクラウドはこんな人に向いている
Idcfクラウドはこんな人に向いているIdcfクラウドはこんな人に向いている
Idcfクラウドはこんな人に向いている
 
Chainer x Azure Machine Learning service - Hackathon
Chainer x Azure Machine Learning service - HackathonChainer x Azure Machine Learning service - Hackathon
Chainer x Azure Machine Learning service - Hackathon
 
【de:code 2020】 Microsoft が考える新しいハイブリッドクラウドの形とは
【de:code 2020】 Microsoft が考える新しいハイブリッドクラウドの形とは【de:code 2020】 Microsoft が考える新しいハイブリッドクラウドの形とは
【de:code 2020】 Microsoft が考える新しいハイブリッドクラウドの形とは
 
ビッグデータ
ビッグデータビッグデータ
ビッグデータ
 

Viewers also liked

エクストリームエンジニア4
エクストリームエンジニア4エクストリームエンジニア4
エクストリームエンジニア4T-arts
 
エクストリームエンジニア3
エクストリームエンジニア3エクストリームエンジニア3
エクストリームエンジニア3T-arts
 
プロダクトマネジメント入門
プロダクトマネジメント入門プロダクトマネジメント入門
プロダクトマネジメント入門You&I
 
Pfpws w22 事例紹介_ペアマインドマップ
Pfpws w22 事例紹介_ペアマインドマップPfpws w22 事例紹介_ペアマインドマップ
Pfpws w22 事例紹介_ペアマインドマップnishikawa_makoto7
 
アジャイルサムライ横浜道場「リファクタリング:技術的負債の返済」
アジャイルサムライ横浜道場「リファクタリング:技術的負債の返済」アジャイルサムライ横浜道場「リファクタリング:技術的負債の返済」
アジャイルサムライ横浜道場「リファクタリング:技術的負債の返済」Hiroyuki Ohnaka
 
命名の話(ソースコードは読み物です)
命名の話(ソースコードは読み物です)命名の話(ソースコードは読み物です)
命名の話(ソースコードは読み物です)Akihiro Nakahara
 
Jackson beyond JSON: XML, CSV
Jackson beyond JSON: XML, CSVJackson beyond JSON: XML, CSV
Jackson beyond JSON: XML, CSVTatu Saloranta
 
オブジェクト指向っぽい話
オブジェクト指向っぽい話オブジェクト指向っぽい話
オブジェクト指向っぽい話Tomohiro Shinden
 
レガシーコードを改善した先にあるもの、それは継続的インテグレーション
レガシーコードを改善した先にあるもの、それは継続的インテグレーションレガシーコードを改善した先にあるもの、それは継続的インテグレーション
レガシーコードを改善した先にあるもの、それは継続的インテグレーションMasanori Satoh
 
Perl 6 Object-Oliented Programming
Perl 6 Object-Oliented ProgrammingPerl 6 Object-Oliented Programming
Perl 6 Object-Oliented Programmingrisou
 
Officeで使うPerl Excel編
Officeで使うPerl Excel編Officeで使うPerl Excel編
Officeで使うPerl Excel編risou
 
北斗の拳の世界をオブジェクト指向で
北斗の拳の世界をオブジェクト指向で北斗の拳の世界をオブジェクト指向で
北斗の拳の世界をオブジェクト指向でyaju88
 
今日からはじめるリファクタリング
今日からはじめるリファクタリング今日からはじめるリファクタリング
今日からはじめるリファクタリングJunya Shimazu
 
レジリエンスで高める組織づくり
レジリエンスで高める組織づくりレジリエンスで高める組織づくり
レジリエンスで高める組織づくりYou&I
 
200円から始めるプロジェクトファシリテーション
200円から始めるプロジェクトファシリテーション200円から始めるプロジェクトファシリテーション
200円から始めるプロジェクトファシリテーションMasaya Yamamoto
 
0410_agilejapan2010_hanyudasan
0410_agilejapan2010_hanyudasan0410_agilejapan2010_hanyudasan
0410_agilejapan2010_hanyudasanAkiko Kosaka
 
ペアプロどうでしょう?
ペアプロどうでしょう?ペアプロどうでしょう?
ペアプロどうでしょう?hiroyuki Yamamoto
 
AgileJapan-Saga-Prefecture
AgileJapan-Saga-PrefectureAgileJapan-Saga-Prefecture
AgileJapan-Saga-Prefectureguesta72ed241
 
第2回勉強会 オブジェクト指向
第2回勉強会 オブジェクト指向第2回勉強会 オブジェクト指向
第2回勉強会 オブジェクト指向hakoika-itwg
 

Viewers also liked (20)

エクストリームエンジニア4
エクストリームエンジニア4エクストリームエンジニア4
エクストリームエンジニア4
 
エクストリームエンジニア3
エクストリームエンジニア3エクストリームエンジニア3
エクストリームエンジニア3
 
プロダクトマネジメント入門
プロダクトマネジメント入門プロダクトマネジメント入門
プロダクトマネジメント入門
 
しょうぎアプリ
しょうぎアプリしょうぎアプリ
しょうぎアプリ
 
Pfpws w22 事例紹介_ペアマインドマップ
Pfpws w22 事例紹介_ペアマインドマップPfpws w22 事例紹介_ペアマインドマップ
Pfpws w22 事例紹介_ペアマインドマップ
 
アジャイルサムライ横浜道場「リファクタリング:技術的負債の返済」
アジャイルサムライ横浜道場「リファクタリング:技術的負債の返済」アジャイルサムライ横浜道場「リファクタリング:技術的負債の返済」
アジャイルサムライ横浜道場「リファクタリング:技術的負債の返済」
 
命名の話(ソースコードは読み物です)
命名の話(ソースコードは読み物です)命名の話(ソースコードは読み物です)
命名の話(ソースコードは読み物です)
 
Jackson beyond JSON: XML, CSV
Jackson beyond JSON: XML, CSVJackson beyond JSON: XML, CSV
Jackson beyond JSON: XML, CSV
 
オブジェクト指向っぽい話
オブジェクト指向っぽい話オブジェクト指向っぽい話
オブジェクト指向っぽい話
 
レガシーコードを改善した先にあるもの、それは継続的インテグレーション
レガシーコードを改善した先にあるもの、それは継続的インテグレーションレガシーコードを改善した先にあるもの、それは継続的インテグレーション
レガシーコードを改善した先にあるもの、それは継続的インテグレーション
 
Perl 6 Object-Oliented Programming
Perl 6 Object-Oliented ProgrammingPerl 6 Object-Oliented Programming
Perl 6 Object-Oliented Programming
 
Officeで使うPerl Excel編
Officeで使うPerl Excel編Officeで使うPerl Excel編
Officeで使うPerl Excel編
 
北斗の拳の世界をオブジェクト指向で
北斗の拳の世界をオブジェクト指向で北斗の拳の世界をオブジェクト指向で
北斗の拳の世界をオブジェクト指向で
 
今日からはじめるリファクタリング
今日からはじめるリファクタリング今日からはじめるリファクタリング
今日からはじめるリファクタリング
 
レジリエンスで高める組織づくり
レジリエンスで高める組織づくりレジリエンスで高める組織づくり
レジリエンスで高める組織づくり
 
200円から始めるプロジェクトファシリテーション
200円から始めるプロジェクトファシリテーション200円から始めるプロジェクトファシリテーション
200円から始めるプロジェクトファシリテーション
 
0410_agilejapan2010_hanyudasan
0410_agilejapan2010_hanyudasan0410_agilejapan2010_hanyudasan
0410_agilejapan2010_hanyudasan
 
ペアプロどうでしょう?
ペアプロどうでしょう?ペアプロどうでしょう?
ペアプロどうでしょう?
 
AgileJapan-Saga-Prefecture
AgileJapan-Saga-PrefectureAgileJapan-Saga-Prefecture
AgileJapan-Saga-Prefecture
 
第2回勉強会 オブジェクト指向
第2回勉強会 オブジェクト指向第2回勉強会 オブジェクト指向
第2回勉強会 オブジェクト指向
 

Similar to エクストリームエンジニア5

デザインパターンを用いたリファクタリング
デザインパターンを用いたリファクタリングデザインパターンを用いたリファクタリング
デザインパターンを用いたリファクタリングkei takakuda
 
C#とILとネイティブと
C#とILとネイティブとC#とILとネイティブと
C#とILとネイティブと信之 岩永
 
ドメインロジックの実装方法とドメイン駆動設計
ドメインロジックの実装方法とドメイン駆動設計ドメインロジックの実装方法とドメイン駆動設計
ドメインロジックの実装方法とドメイン駆動設計Tadayoshi Sato
 
私がドメイン駆動設計をやる理由
私がドメイン駆動設計をやる理由私がドメイン駆動設計をやる理由
私がドメイン駆動設計をやる理由増田 亨
 
三位一体の自動化で壊せ DevとOpsの壁~アラサーエンジニアの挑戦~
三位一体の自動化で壊せ DevとOpsの壁~アラサーエンジニアの挑戦~三位一体の自動化で壊せ DevとOpsの壁~アラサーエンジニアの挑戦~
三位一体の自動化で壊せ DevとOpsの壁~アラサーエンジニアの挑戦~Rakuten Group, Inc.
 
2014 08-30 life with roslyn
2014 08-30 life with roslyn2014 08-30 life with roslyn
2014 08-30 life with roslynshibuki
 
XP祭り関西2011 森崎 修司「プラクティスが有効にはたらく前提は明らかになっていますか?」
XP祭り関西2011 森崎 修司「プラクティスが有効にはたらく前提は明らかになっていますか?」XP祭り関西2011 森崎 修司「プラクティスが有効にはたらく前提は明らかになっていますか?」
XP祭り関西2011 森崎 修司「プラクティスが有効にはたらく前提は明らかになっていますか?」Shuji Morisaki
 
Code for Japan 勉強会 Vol.1 CKAN入門 プロジェクトのFork、デプロイ、CIまで
Code for Japan 勉強会 Vol.1 CKAN入門 プロジェクトのFork、デプロイ、CIまでCode for Japan 勉強会 Vol.1 CKAN入門 プロジェクトのFork、デプロイ、CIまで
Code for Japan 勉強会 Vol.1 CKAN入門 プロジェクトのFork、デプロイ、CIまでNaoyuki Yamada
 
ドメイン駆動設計の学習曲線とブレークポイント
ドメイン駆動設計の学習曲線とブレークポイントドメイン駆動設計の学習曲線とブレークポイント
ドメイン駆動設計の学習曲線とブレークポイント増田 亨
 
わかると楽しいInfrastructure as code
わかると楽しいInfrastructure as codeわかると楽しいInfrastructure as code
わかると楽しいInfrastructure as codeShohei Kobayashi
 
Visual Studio 2019 Updates Pickup!
Visual Studio 2019 Updates Pickup!Visual Studio 2019 Updates Pickup!
Visual Studio 2019 Updates Pickup!Hiroyuki Mori
 
電光掲示板のコード C#で画像処理
電光掲示板のコード C#で画像処理電光掲示板のコード C#で画像処理
電光掲示板のコード C#で画像処理Takuya Negishi
 
ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版DIVE INTO CODE Corp.
 
ソフトウェア工学2023 03 下流工程
ソフトウェア工学2023 03 下流工程ソフトウェア工学2023 03 下流工程
ソフトウェア工学2023 03 下流工程Toru Tamaki
 
DOO-015_Azure/Windows Server 2016 から学ぶ Windows 系インフラ エンジニアのための DevOps
DOO-015_Azure/Windows Server 2016 から学ぶ Windows 系インフラ エンジニアのための DevOpsDOO-015_Azure/Windows Server 2016 から学ぶ Windows 系インフラ エンジニアのための DevOps
DOO-015_Azure/Windows Server 2016 から学ぶ Windows 系インフラ エンジニアのための DevOpsdecode2016
 
社内 DDD 勉強会 #4
社内 DDD 勉強会 #4社内 DDD 勉強会 #4
社内 DDD 勉強会 #4shingo suzuki
 

Similar to エクストリームエンジニア5 (20)

デザインパターンを用いたリファクタリング
デザインパターンを用いたリファクタリングデザインパターンを用いたリファクタリング
デザインパターンを用いたリファクタリング
 
C#とILとネイティブと
C#とILとネイティブとC#とILとネイティブと
C#とILとネイティブと
 
ドメインロジックの実装方法とドメイン駆動設計
ドメインロジックの実装方法とドメイン駆動設計ドメインロジックの実装方法とドメイン駆動設計
ドメインロジックの実装方法とドメイン駆動設計
 
私がドメイン駆動設計をやる理由
私がドメイン駆動設計をやる理由私がドメイン駆動設計をやる理由
私がドメイン駆動設計をやる理由
 
勉強会 - 1
勉強会 - 1勉強会 - 1
勉強会 - 1
 
三位一体の自動化で壊せ DevとOpsの壁~アラサーエンジニアの挑戦~
三位一体の自動化で壊せ DevとOpsの壁~アラサーエンジニアの挑戦~三位一体の自動化で壊せ DevとOpsの壁~アラサーエンジニアの挑戦~
三位一体の自動化で壊せ DevとOpsの壁~アラサーエンジニアの挑戦~
 
2014 08-30 life with roslyn
2014 08-30 life with roslyn2014 08-30 life with roslyn
2014 08-30 life with roslyn
 
PHP版レガシーコード改善に役立つ新パターン #wewlc_jp
PHP版レガシーコード改善に役立つ新パターン #wewlc_jp PHP版レガシーコード改善に役立つ新パターン #wewlc_jp
PHP版レガシーコード改善に役立つ新パターン #wewlc_jp
 
XP祭り関西2011 森崎 修司「プラクティスが有効にはたらく前提は明らかになっていますか?」
XP祭り関西2011 森崎 修司「プラクティスが有効にはたらく前提は明らかになっていますか?」XP祭り関西2011 森崎 修司「プラクティスが有効にはたらく前提は明らかになっていますか?」
XP祭り関西2011 森崎 修司「プラクティスが有効にはたらく前提は明らかになっていますか?」
 
Code for Japan 勉強会 Vol.1 CKAN入門 プロジェクトのFork、デプロイ、CIまで
Code for Japan 勉強会 Vol.1 CKAN入門 プロジェクトのFork、デプロイ、CIまでCode for Japan 勉強会 Vol.1 CKAN入門 プロジェクトのFork、デプロイ、CIまで
Code for Japan 勉強会 Vol.1 CKAN入門 プロジェクトのFork、デプロイ、CIまで
 
ドメイン駆動設計の学習曲線とブレークポイント
ドメイン駆動設計の学習曲線とブレークポイントドメイン駆動設計の学習曲線とブレークポイント
ドメイン駆動設計の学習曲線とブレークポイント
 
わかると楽しいInfrastructure as code
わかると楽しいInfrastructure as codeわかると楽しいInfrastructure as code
わかると楽しいInfrastructure as code
 
Visual Studio 2019 Updates Pickup!
Visual Studio 2019 Updates Pickup!Visual Studio 2019 Updates Pickup!
Visual Studio 2019 Updates Pickup!
 
C# 3.0 以降
C# 3.0 以降C# 3.0 以降
C# 3.0 以降
 
電光掲示板のコード C#で画像処理
電光掲示板のコード C#で画像処理電光掲示板のコード C#で画像処理
電光掲示板のコード C#で画像処理
 
ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版ゼロからのプログラミングRails講座 Codeanywhere版
ゼロからのプログラミングRails講座 Codeanywhere版
 
広がる .Net
広がる .Net広がる .Net
広がる .Net
 
ソフトウェア工学2023 03 下流工程
ソフトウェア工学2023 03 下流工程ソフトウェア工学2023 03 下流工程
ソフトウェア工学2023 03 下流工程
 
DOO-015_Azure/Windows Server 2016 から学ぶ Windows 系インフラ エンジニアのための DevOps
DOO-015_Azure/Windows Server 2016 から学ぶ Windows 系インフラ エンジニアのための DevOpsDOO-015_Azure/Windows Server 2016 から学ぶ Windows 系インフラ エンジニアのための DevOps
DOO-015_Azure/Windows Server 2016 から学ぶ Windows 系インフラ エンジニアのための DevOps
 
社内 DDD 勉強会 #4
社内 DDD 勉強会 #4社内 DDD 勉強会 #4
社内 DDD 勉強会 #4
 

エクストリームエンジニア5