ようやく読み終えました。日本語訳が出る前に購入してしまっていたので、折角なので原著のまま読破しようと挑戦したのですが、暇を見てダラダラ読んでいた為時間が掛かってしまいました。読書会で読み切った人達マジパネェっす。
ということで、読書感想文を「やるやらコンビ」でお送りします。
___
/ ⌒ ⌒\
/ (⌒) (⌒)\ やっと読み終えたお!
/ ///(__人__)///\ いやー、購入してから一年以上
| u. `Y⌒y'´ | かけてダラダラ読んでしまったけど、
\ ゙ー ′ ,/ 長かったお!
/ __|___ さすが400p越しはパネェッス。
| l.. /l legacy `l
ヽ 丶-.,/ |__ _code |
/`ー、_ノ / ̄ ̄ ̄ ̄/
/ ̄ ̄\
/ ノ ヽ /\'ー、 ,, ..,、 ウム。
| ( ●)( / .\` 、 . // / では早速レビューに・・・
. | (__人/ \ヽ、,.// ../ 進みたいところだが、
| ` / ``77 / amazonのレビュー内容を参照
. ヽ / / / / してくれれば問題ないだろJK。
ヽ.. / fヽ、/ / , -,./ 実際msakamoto-sf自身の読感
/./ r-、 ヽ ∨,ノ / もamazonのレビューと大差ないしな。
|. \ 〈\.\,〉 `, f
| . \ (ヽ ヽ `.. | 只、若干msakamoto-sf自身「この本どうなの?」
| .\ \ ノ ってゆー点もあったようだが。
____
/ \
/ ─ ─\ 三行でkwsk。
/ (●) (●) \
| (__人__) |
./ ∩ノ ⊃ /
( \ / _ノ | |
.\ “ /__| |
\ /___ /
/7
//
// 1.(英語の)文章が読みづらい感じがする。
__ // 2.技法の名前紹介と詳細説明が相前後
. /ノ ヽ\ .// しているため、真面目に追おうとすると
. / (●)(●〉/ 行ったり来たりしてしまう。
l (__人_,//l 3.とにかくページ数が多い。
. | `⌒// ノ
l // ./
. ヽ r-‐''7/)/
/ と'_{'´ヽ
/ _.、__〉 ト,
{ 、__} |.i
ヽ _,.フ .|.|
/ ̄ ̄\ 「1.(英語の)文章が読みづらい感じがする」
/ ヽ、_ \ についてだが、実際amazon.com側のレビュー
. ( (● ) | でもお星様2つのレビューで「Hard to read,
. (人__) | annoying editorial errors」とあるから、
r-ヽ | 英語ネイティブの人でも読みづらい感が
(三) | | あることは確かなようだ。誤植もあるようだし。
> ノ /
/ / ヽ / とはいえ、「テストコードの書きづらさ」という人間の
/ / へ> < 主観や感情部分の記述も混ざるので、技術文書
|___ヽ \/ ) の竹を割ったような英語しか読まない
|\ /| msakamoto-sfには少しレベルが高すぎたかも知れない。
| \_/ |
/ ̄ ̄\
/ _ノ \ 「2.」の相前後している、という点については
| ( ー)(ー) 構成上仕方ない点もある。テストコードを書く為の
. | (__人__) リファクタリング技法の詳細をPartIIIにもってきて、
| ` ⌒´ノ 状況別のcase studyをPartIIに持ってきた以上、
. | nl^l^l PartII側でPartIIIに出てくる技法名を紹介するのは
. ヽ | ノ 仕方ない。
ヽ ヽ く しかし、最初から順を追って理解していきたい人には
/ ヽ \ 読みづらさとして受け取られかねないな。
___
/ \ 「1」と「2」は分かったけど、
/ _ノ '' 'ー \ 「3.とにかくページ数が多い。」っていうのは
/ (●) (●) \ msakamoto-sfの単なるひがみじゃないかお?
| (__人__) | 本自体の評価とは関係ない気がするお・・・
\ ` ⌒´ /
/ ̄ ̄\
/ _ノ \ 読みやすい文章でページ数が多いのは構わない
| ( ●)(●) んだけどな。「1」でも挙げたが、読みづらい文章で
. | (__人__) ページ数が多いのは正直辛い。
| ` ⌒´ノ
. | } なまじ豊富なPartIIのcase studyが仇となって、本書中
. ヽ } もっとも「サクサク読める」PartIIIのリファクタリング技法
ヽ ノ mm の解説が325pから、というのは精神的に
/  ̄ ̄ ̄ つノ 辛かったぞ。
| | ̄ ̄ ̄
/ ̄ ̄ ̄\
/ \ なるほど、正直確かにそんな感じはあったお。
/ ─ ─ ヽ
| (●) (●) |
\ ∩(__人/777/
/ (丶_//// \
___
/ \ ・・・でも、それ以上にmsakamoto-sfが
/ _ノ ヽ、_ \ 気になる点があった。
/ /⌒) ‐=・=- \ それを隠せると思ったかお?
|::::::::/ /(__人__):::::::::::::|
\:/ /:::::トェェェイ`::::::::/
`―‐'
/ ̄ ̄\
/ ⌒ \ ・・・バレたか。
| ミィ赱、i .i_r赱
. | ::::::⌒ (__人__)
. | トエエエイ
. ヽ `""´}
ヽ ノ
/ く
/ ̄ ̄\
/ _ノ \
| ( ⌒)(⌒) 確かに内容は素晴らしいんだよ、この本。
| (__人__) レガシーコードをxUnitに組み込む手法や
| ` ⌒´ノ case studyが、著者の実体験を元に書かれている
,| } のも評価出来る。
/ ヽ }
く く ヽ ノ 現場の技術者が、この本を読んでテストコードを
\ `' く 書くきっかけや意欲を持つのも無理ないだろ。
ヽ、 |
| |
. ___
. / ―\ けど、
./ノ (●)\
| ( ●) ⌒)l 「テストコードを書くのはこれほど大変なのか」
} (_ノ ̄ i
| / という点が一番の障害だと思えるんだよな。
\ _ノ オブジェクト指向に限らず、言語の機能を熟知し、
/´ `、 インターフェイスを上手く分離して・・・って。
/ ,___ ,. i はっきり言って「入門者向き」のテクニックじゃない。
( 、__⌒) ノ
ヽ、 i⌒i⌒i
i i i_
. \_)_)
/ ̄ ̄\
/ _ノ .ヽ、\ そんな、技術も知識も経験も必要な
| (●)(●) | 「レガシーコードの改善」を、
| (__人__) .| 一技術者のモチベーションだけでどこまで
| ` ⌒´ ノ 現場で広め、やり通すことができるのか?
r─一'´ ̄`<ヽ }
`ー‐ァ , ) , -'~⌒ヽ、 本当に難しいのは、そっちだろうな。
ノ {. ,ヘ ,l. ゝ、_ .'ヽ).
/, 、 _ /. | . ', . .. .ヽ、
(/ / // / / ...| ...|\..\\ \_)
/ // / / . . \_\_)、_)
ー' {_/ノ ."´
/ ̄ ̄\ 1.まずテストコードを書かなくてはならない。
rヽ / ノ \ \ 2.テストコードを書く習慣を広める。
i ! | (●)(●) | 3.テストコードを書けるように組織の技術者の
r;r‐r/ |. | (__人__) | レベルを底上げする。
〈_L (`ヽ .} | ` ⌒´ ノ 4.テストコードを書く作業を組織の開発
l` ( ``/ . | } プロセスに組み込む。
ヽ l . ヽ } 5.テストコードによる改善作業を「継続」する。
|,. l /⌒ ー‐ ィ ヽ
___
/ \
/ ヽ / 丶 ウッ・・・確かにそう考えると、「実際の現場」
/ (●) (●) ヽ 「実際の組織」で浸透させるのが何よりも難しそうだお。
l::::⌒(__人__)⌒:::u:l
\ |r┬-| / ベンチャーや少人数の組織で、独立性が高い場合は
/ `ー'´ ヽ ともかく、大規模なプロジェクトで適用するのは
し、 ト、ノ 大変そうだお。
| _ l
!___/´ ヽ___l
/ ̄ ̄\
/ ⌒ \ まぁアジャイルにせよ、XPにせよ、その辺の事情
( へ)( へ) | は変わらないだろう。
.(__人__) |
l` ⌒´ .|msakamoto-sf個人としては、むしろプログラミングの
{ .| イロハとしてTDDを教えてしまった方が良いと思うんだな。
{ _ |
(ヽ、ヽ / )|
| ``ー―‐'| ..ヽ|
ゝ ノ ヽ ノ
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
___ ━┓
/ ― \ ┏┛
/ (●) \ヽ ・ 「イロハ」で教えるのかお?
/ (⌒ (●) / さっき「技術も経験も必要になる」って
/  ̄ヽ__) / 言ったばかりじゃないかお?
. /´ ___/
| \
| |
., ──‐、 「TDD」やテストコードを書きやすいプログラムというのは
/ \ 「インターフェイス」や「委譲」がキーになるんだが、
. .| _ノ ヽ 実際問題、インターフェイスや適切に委譲されている
| ( ●) (●) ソフトというのは一般的に「良い設計」と考えられる。
| (__人__) , -―ーっ
| ` ⌒´ノ ( ゝ彡 ̄ インターフェイスや委譲、abstractやvirtual、
. ン } ゙| ̄'| 関数ポインタの入れ換えやRuby/Python/JavaScript
/⌒ヽ、 ノ .|, | で使えるOpenClassというのは、知識単独で学ぶと
__/ ノ \_ィ ´ー‐ィ' ∫ 「どこで使うの?」ってなるんだが、
| | / / r_____ ∬ テストコードを書く時にフル活用することになる。
| | / / |i ┌‐┐
| | ( 〆⌒'──r─≒、.((| |
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄└‐┘ ̄ ̄ ̄ ̄ ̄ ̄
/ ̄ ̄\ OOPの習得が難しい、というのには、
/ ヽ、. _ノ \ より良いOOPを書く練習が難しい点にあると
| (●)(●) | msakamoto-sfは考えている。
| (__人__) |
| ` ⌒´ | ある程度フレームワークやライブラリを自分で
| } 作ってみないと、「インターフェイス」や「委譲」による
ヽ } OOPの効果を実感出来ない。
人_____ノ"⌒ヽ
/ \ しかし現場でテストコードを書くことでも、
/ へ \ そうしたOOPのコツを掴めるようになる筈だ。
( ヽγ⌒) | \ \
 ̄ ̄ ̄\__/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
{;;;;;;;}
L;;;;」
____
/ ⌒ ^\ なるほど、テストコードを書くことは、
/ ( ●) (●) OOPを勉強する良い実地練習ということかお!
/ ::::::⌒(_人__)⌒ヽ
| |r┬-| | それならイロハとして教えちゃうのも納得だお!
\ `ー'´ /
/ ̄ ̄\ もちろん、新人一人に任せるのではなくて
/ ⌒ \ ペアプログラミングというのが前提だろ。
( ●)( ●) |
.(__人__) | UIやI/O、Socketが絡む部分などで依存性を
l` ⌒´ .| 断ち切ってxUnitに組み込むなど、「匙加減」や
{ .| 「経験と勘」が必要な部分はあるからな。
{ _ |
(ヽ、ヽ / )| そういう所は経験者がサポートして、ペアで
| ``ー―‐'| ..ヽ| 進めていくと良いだろ。
ゝ ノ ヽ ノ
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
/ ̄ ̄\
/ ⌒ \ OOPの勉強になるし、
| ミィ赱、i .i_r赱 依存性の低いインターフェイスはどちらにせよ
. | ::::::⌒ (__人__) 使いやすいことは間違いない!
. | トエエエイ
. ヽ `""´} 組織の技術レベルとソフトウェアの品質、
ヽ ノ どちらも高めることができる一石二鳥の策だろ!!
/ く
/ ̄ ̄\
/ _ノ ヽ .____ いつまでも悲観的になっていても仕方ないお!
| ( ⌒)(⌒)/⌒ ⌒\
. | (__人__) .(●) ( ●)\ 新しいメリットも見出せたことだし、徐々に
| ` ⌒ノ ⌒(__人__)⌒:::::\ TDDが浸透していくと期待するだろ、JK・・・
. ヽ } . |r┬-| . |
.ゝ_,. ノ____`ー'´___./
-(___.)-(__)___.)─(___)─
____
/⌒ ⌒\ というわけで、TDDへのwktk感が止まらない
/( ●) (●)\ そこの君、今すぐこのページTOPの
|:::::⌒(__人__)⌒::| amazonリンクをクリック、
| 「匸匸匚| '"|ィ' レッツBUY!だろ!
, ヘー‐- 、 l | /^''⌒| | 常識的に考えて!!!
-‐ノ .ヘー‐-ィ ヽ !‐}__,..ノ ||
''"//ヽー、 ノヽ∧ `ー一'´ / |
//^\ ヾ-、 :| ハ  ̄ / ノ |
,ノ ヽ,_ ヽノヽ_)ノ:l 'ーー<. / |.
/ <^_,.イ `r‐'゙ :::ヽ \ `丶、 |
\___,/| ! ::::::l、 \ \|
____
/ヽ /\
/(●) (●)丶 そこにオトスかお・・・。
/::⌒(__人__)⌒:::uヽ
l |r┬-| l
\ `ー'´ /
/ ヽ
し、 ト、ノ
| _ l
!___/´ ヽ___l