『アジャイルサムライ』読了

先日の @Ryuzee さんのイベントに行く途中の電車の中で読み終わりました。

アジャイルサムライ−達人開発者への道−

アジャイルサムライ−達人開発者への道−

ちょっと前のことですが、会社で"若手に学ばせたいスキル"というアンケート?みたいなものが回ってきました。
たぶん、どっかの研修会社からもらったものみたいです。

その中の "ソフトウェア開発手法" がちょっと突っ込みどころが多くてアレな感じです。

選択肢抜粋

他にもいくつか選択肢はあったのですが、この二つが同列に並ぶって一体…
さらに、他の人が回答した中に、その他として"アジャイルスクラム/XP/リーンなど)とかあってもう。

私自身、アジャイルな開発現場を経験している訳じゃないしアジャイルとは!とか力説できるほどの知識も経験もありません。

ですが、『アジャイルサムライ』読んだり読書会で他の方のお話を聞いたりする中で、アジャイルってプラクティスじゃない、個人のスキルだけじゃないという思いを強くしています。
極論すると、@Ryuzee さんの言われていた"態度重要"が全てじゃないかと思います。

でも会社の偉い人たちからすると、プラクティスを実践すればアジャイルになる、NTTデータもやってるからうちも、みたいな感じなんでしょう。

アジャイルサムライ』配るか。

『テスト駆動開発入門』を Ruby で写経する 1章〜8章

まとまった時間が取れたので、積読になっていた『テスト駆動開発入門』を、Ruby に読み換えながら写経しました。
TDD 力アップのため、まずは量をこなす予定。

やったこと

1章〜8章までの写経

テストコード

require 'test/unit'
require 'money'

class TC_Money < Test::Unit::TestCase
	def testMultiplication
		five = Money.dollar(5)
		assert_equal(Money.dollar(10), five.times(2))
		assert_equal(Money.dollar(15), five.times(3))
	end
	def testEquality
		assert(Money.dollar(5).equals(Money.dollar(5)))
		assert(!Money.dollar(5).equals(Money.dollar(6)))
		assert(Money.franc(5).equals(Money.franc(5)))
		assert(!Money.franc(5).equals(Money.franc(6)))
		assert(!Money.franc(5).equals(Money.dollar(5)))
	end
	def testFrancMultiplication
		five = Money.franc(5)
		assert_equal(Money.franc(10), five.times(2))
		assert_equal(Money.franc(15), five.times(3))
	end
end

プロダクトコード

class Money
	@amount
	def equals(obj)
		return @amount == obj.amount && self.class.equal?(obj.class)
	end
	def ==(obj)
		@amount == obj.amount
	end
	def self.dollar(amount)
		return Dollar.new(amount)
	end
	def self.franc(amount)
		return Franc.new(amount)
	end
end

class Dollar < Money
	def initialize(amount)
		@amount = amount
	end
	attr_accessor :amount
	def times(multiplier)
		obj = Dollar.new(@amount * multiplier)
		return obj
	end
end

class Franc < Money
	def initialize(amount)
		@amount = amount
	end
	attr_accessor :amount
	def times(multiplier)
		obj = Franc.new(@amount * multiplier)
		return obj
	end
end

はまったこと

感想とか

  • テストやプロダクトコード修正の単位が非常に小さい
    • この感覚を身につける
  • 写経じゃない場合、この過程を踏めるか疑問
    • まずは型としてやる!
  • Ruby の知識不足で、本筋以外で引っかかることが多い。
    • 写経しながら勉強あるのみ