アジャイルサムライ読書会(湯島道場) 第五回 空の巻に参加してきた #agilesamurai #湯島道場
(写真:湯島道場開催回全ての会場となった株式会社アルティネット様会議室入り口にて1枚。)
先月から計5回、約1ヶ月半を掛けて行われた『アジャイルサムライ読書会in湯島道場』の予定最終回となった第5回。月末や業務都合等で直前キャンセル等もありましたが、その分これまでの回よりも若干座席スペースに余裕を持たせた形で会が進みました。

- 作者: Jonathan Rasmusson,西村直人,角谷信太郎,近藤修平,角掛拓未
- 出版社/メーカー: オーム社
- 発売日: 2011/07/16
- メディア: 単行本(ソフトカバー)
- 購入: 42人 クリック: 1,991回
- この商品を含むブログ (257件) を見る

The Agile Samurai: How Agile Masters Deliver Great Software (Pragmatic Programmers)
- 作者: Jonathan Rasmusson
- 出版社/メーカー: Pragmatic Bookshelf
- 発売日: 2010/10/05
- メディア: ペーパーバック
- クリック: 24回
- この商品を含むブログ (20件) を見る
『アジャイルサムライ』読書会公式&ポータルサイトはこちら。1
また、『アジャイルサムライ』読書会湯島道場に関するページは以下。
- <第2回 水の巻>:
- <第3回 火の巻>:
- <第4回 風の巻>:
読書会第5回の範囲は第5部(12章〜15章)。目次レベルの内容がこちら。
第V部 アジャイルなプログラミング 第12章 ユニットテスト:動くことがわかる 12.1 ラスベガスへようこそ! 12.2 はじめてのユニットテスト 第13章 リファクタリング:技術的負債の返済 13.1 どうしてこうなった 13.2 技術的負債 13.3 リファクタリングで技術的負債を返済する 第14章 テスト駆動開発 14.1 テストを先に書く 14.2 テストを使って複雑さに立ち向かう 第15章 継続的インテグレーション:リリースに備える 15.1 ショータイム 15.2 リリースに備える文化 15.3 継続的インテグレーションとは 15.4 どうすればうまくいくのか? 15.5 チェックイン手順を習慣づける 15.6 ビルドを自動化する 15.7 作業単位を小さくする 15.8 この先どこへ向かえばいいのか?
アイスブレイク
今回も前回同様初参加者メンバーは無し。そのままLTに進みました。
LT:アジャイルなプログラミング
前回に引き続き、今回も湯島道場の師範代である@t_wadaさんがご参加。しかも今回の対象範囲(12〜15章)は和田さんが書籍レビューを担当されたというこの上ない組み合わせ!となりました。
以下LTメモ。
- LT依頼は昨日言われました。
- 読書会の本質は座談会・ワールドカフェ。
- 質問を頂いて、それに対して喋る形で行きましょうか。
- 『アジャイルなプログラミング』
- ソフトウェア開発の3本柱
- バージョン管理:この書籍では記述が無い!
- バージョン管理は全ての開発の基盤であり、サムライは当然バージョン管理をするものである。
- あまりにエッセンシャル(Essential:欠く事が出来ない要素)なので書いてない。当たり前過ぎる。
- テスティング(第12章)
- 本書では、TDDでは無くコードでテストを書こう、という意味合いに近い?
- 自動化(第15章)
- テスト・リファクタリングだけでは片手落ち。
- 現在ではJenkinsが有名となっている。
- 自動化の意義
- (×)ツールを回す事
- (○)人がやる事をどれだけ機械が肩代わり出来るか
- バージョン管理:この書籍では記述が無い!
- Jenkins等のCIツールは、導入するまでの準備が必要な部分がある。
- 和田さんが現在携わっている直近のプロジェクトでは、一番自動化されているものは"シェルスクリプト"。
- 自動化:なだらかに進めて行くべき。
- 日々の暮らしから連続していくところに自動化がある。
- どこかに無駄、ミスが無いかを考え続ける事。
- TDD
- 本書第13章、第14章で触れている。
- 『動作する、綺麗なコードへ』
- この言葉の原典は『ピンクのXP本』らしい。
- 『動作する、綺麗なコードへ』
- 本書第13章、第14章で触れている。

XPエクストリーム・プログラミング導入編 ― XP実践の手引き (The XP Series)
- 作者: ロン・ジェフリーズ,アン・アンダーソン,チェット・ヘンドリクソン,平鍋健児,高嶋優子,藤本聖
- 出版社/メーカー: ピアソン・エデュケーション
- 発売日: 2001/08/10
- メディア: 単行本(ソフトカバー)
- クリック: 9回
- この商品を含むブログ (19件) を見る
-
- TDDのサイクル
- TDDと黄金の回転:ぐるぐる回す!回していく過程で…
- 実装に集中する。
- 綺麗にする事に集中する。
- 汚いところから綺麗なところへ突破するのは『リファクタリング』のみ。
-
- なぜTDDをするのか。その様々な理由。
- 完璧なプログラマではない
- 思い通りに掛けるほど賢くはない
- 対象は単純ではない
- :
- :
- なぜTDDをするのか。その様々な理由。
-
- テストは目的ではなく手段である。
- プロとしてのたしなみ
- 先にテストコードを書くのは難しい。思考の逆転が求められる
- 段々に書けるようになっていく
- 向かっていく意志が大事。
- スモールスタートで始めよう
- サムライならばテストコードを書こう。
-
- 沢山本を読もう
- 達人プログラマー、クリーンコード等、良書は沢山。
- 沢山本を読もう

- 作者: アンドリューハント,デビッドトーマス,Andrew Hunt,David Thomas,村上雅章
- 出版社/メーカー: ピアソンエデュケーション
- 発売日: 2000/11
- メディア: 単行本
- 購入: 42人 クリック: 1,099回
- この商品を含むブログ (347件) を見る

- 作者: Robert C. Martin,花井志生
- 出版社/メーカー: アスキー・メディアワークス
- 発売日: 2009/05/28
- メディア: 大型本
- 購入: 27人 クリック: 914回
- この商品を含むブログ (83件) を見る
-
- 写経から始めよう
- わからないので写すことからはじめる
- 最近だとHaskell読書会…さっぱり分からないので写経を実践中。
-
- テスト駆動開発入門
- を写すことから始めてみよう。
- テスト駆動開発入門

- 作者: ケントベック,Kent Beck,長瀬嘉秀,テクノロジックアート
- 出版社/メーカー: ピアソンエデュケーション
- 発売日: 2003/09
- メディア: 単行本
- 購入: 45人 クリック: 1,058回
- この商品を含むブログ (162件) を見る

リファクタリング―プログラムの体質改善テクニック (Object Technology Series)
- 作者: マーチンファウラー,Martin Fowler,児玉公信,平澤章,友野晶夫,梅沢真史
- 出版社/メーカー: ピアソンエデュケーション
- 発売日: 2000/05
- メディア: 単行本
- 購入: 94人 クリック: 3,091回
- この商品を含むブログ (312件) を見る
以上、画像はTDDBC福岡のものから拝借致しました。
- TDDBC Fukuoka Day1
- View more presentations from Takuto Wada
贅沢過ぎる位のクオリティ・ボリュームなLTでした。いやぁ〜、ここを聞けただけでも道場に訪れた価値があるってもんです。(だがしかしサプライズはこれだけではありませんでした…。)
座談会
LTでの和田さんの提案もあり、最初に幾つかの質問を梶浦さんの方から出席者全員に対して投げ掛け、それらの中からチョイスしつつ場を進めて行く方向で座談会開始。
- (質問)コードを書いている人、そうでない人は?
- (回答)ほぼ半々で書いている人/そうでない人に分かれた。
- (質問)リファクタリングとテスト駆動開発の関連について:どう思うか?
- (回答一覧)
- 『リファクタリングに汚名が着せられる』という記述が気になる。
- リファクタリングは難しい。
- リファクタリングをやらないと進めなかった。
- 技術的負債はコードだけじゃない(設計書等)。その辺の調整度合いについて気になる。
- リファクタリングを行ったらテストがコケた。難しい…。事前の設計が必要だ。
- コードは書いてない、リファクタリングには後々の為に時間を掛けている
- リファクタリングよりスクラップビルド派。常に荒海をかき分けて進んでいる。
- リファクタリングの判断基準・止め時を知りたい。
- コード自体、自社のものではない。リファクタリングするな!触るな!という現状。あまり変えたくても変えられない事が多かった。
- 今の会社に来る前まではフリーだった。師匠と一緒にXP的開発、リファクタリング重要。最初は動くコード重要。リファクタリングはやる。でないと後々大変。
- 期限が決められてないと続けてしまう。
- レガシーコード:手遅れの状態が多い、こまめに対処が必要
- 技術的腐敗=アーキテクトの問題?苦手な分野ではある
- クライアントアプリ:WindowsのGUIプログラムを触っている。全くテストコードが無い状態。GUIはテストが難しい?
- リファクタリングについては、コードレビューを事前に行い、リファクタリングをする知識を得たかった。コストを割けているとは言い難い。
- 今の現場でようやくリファクタリングという言葉が浸透。でもコピペ蔓延。→指摘するも『どうやっていいか分からない』。デザインパターンを押さえてないと難しい部分もある。
- (回答一覧)
これらを受けて和田さんのコメント。
- TDD/TDDBCを実践しています。
自分自身先日参加したTDDBCでまさにこの辺りの状況(リファクタリングより課題優先)に陥っていた節もあるので、身を以てこのコメントに共感し、痛感していました…^^;
それにしても、和田さんから『リファクタリング重要!』という言葉が聞けたのは新たな感動でした。この流れでまずは一番多かった『リファクタリングに関する判断』というテーマで議論が進みます。

リファクタリング―プログラムの体質改善テクニック (Object Technology Series)
- 作者: マーチンファウラー,Martin Fowler,児玉公信,平澤章,友野晶夫,梅沢真史
- 出版社/メーカー: ピアソンエデュケーション
- 発売日: 2000/05
- メディア: 単行本
- 購入: 94人 クリック: 3,091回
- この商品を含むブログ (312件) を見る
…と紹介をした時点で、和田さんが『あっ、これは朗読すれば良いんだね』と何と自ら書籍の該当箇所を朗読して頂けるというサプライズあり!
和田さん自身も以下の様に読書会終了後のつぶやきでコメントしておられます。
(※追記:写真は書籍『リファクタリング プログラミングの体質改善テクニック』該当15章の先頭ページ。自分もこの箇所を熟読したくて結局書籍を買っちゃいました。)
時間にすると5分程だったでしょうか。質問事項であった『リファクタリングの止め時』についての回答が得られると同時に、和田さんにその回答となる部分を読んで頂けるという何とも贅沢で貴重なひとときを今回湯島道場参加者は味わう事が出来ました☆
朗読内容は全て追う事が出来なかったので内容の全体像は割愛しますが、この箇所を読むためだけに書籍購入を検討しても良いかなと思ってます(まだ持ってない)。
- あなたがプログラミング、対象に諦観(おちつき)を得た時が止め時。
- 止める事はリファクタリングの中で最も難しい。
- 確信が持てない時が辞め時。改善されていれば良い。改善されてない場合は全部捨てる。
- リファクタリングは学習可能な技能。
以降、質疑応答を交えながら進んで行きます。
- 大前提として『いつでも辞められる』事が大事。
- 行っちゃったらやりきらないといけない…ルビコン川を渡るような状況が往々にしてある。

パターン指向リファクタリング入門~ソフトウエア設計を改善する27の作法
- 作者: ジョシュア・ケリーエブスキー,小黒直樹,村上歴,高橋一成,越智典子
- 出版社/メーカー: 日経BP社
- 発売日: 2005/08/04
- メディア: 単行本
- 購入: 11人 クリック: 313回
- この商品を含むブログ (130件) を見る
-
- リファクタリングをマスターするのは辞め時を知るとき。
- 元々テストが無いところをスクラップ・ビルド。
-
- きのこ本 No.7:ボーイスカウトルール
- キャンプ場でのルール『来たときよりも美しく。』
- きのこ本 No.7:ボーイスカウトルール

- 作者: 和田卓人,Kevlin Henney,夏目大
- 出版社/メーカー: オライリージャパン
- 発売日: 2010/12/18
- メディア: 単行本(ソフトカバー)
- 購入: 58人 クリック: 2,107回
- この商品を含むブログ (350件) を見る
-
-
-
- プログラミングにも当てはまる。
- 結構ラディカルな考え方かも。
- リファクタリングを日々のプログラミングに細かくまぶす。
-
-
- 自分アジャイルプロセスはいまいち。イメージが付かないけれども...
- ストーリーをこなす。と決める。
- その中でそのストーリーが出来た事が大事。
- リファクタリングはプロセスのいつに入れるか。時間を取るべきか?中に混ぜるか。
- ストーリーをこなす。と決める。
- 技術的負債…対処しないと大変な事に。
- リファクタリングが持っているコンテキスト
- 1.作りながら行うもの
- 2.あるものに対して(技術的負債)行うもの
- 放置することでどれ位のリスク、コストが掛かるのか?その辺の天秤度合い。
- リファクタリングが持っているコンテキスト
- 画面にテストが書けない。『詰んだ〜』というケース
- レガシーコード改善ガイド『テストがないコードはレガシーコードだ!』

レガシーコード改善ガイド (Object Oriented SELECTION)
- 作者: マイケル・C・フェザーズ,ウルシステムズ株式会社,平澤章,越智典子,稲葉信之,田村友彦,小堀真義
- 出版社/メーカー: 翔泳社
- 発売日: 2009/07/14
- メディア: 大型本
- 購入: 45人 クリック: 673回
- この商品を含むブログ (157件) を見る
-
- 一つは発生ベースで立ち向かう
- 必要なければやらない
- 必要が生じたら
- 自分が手を入れるところ『だけ』は安全にしておく
- テストが出来るようにしておく
- カプセル化を緩める
- 入れ替えられるようにすす
- テストが勧誘して、進められるようにしていく
- 熱い思いは大事だけど
- 自分の手を入れる部分だけでも安全に…
- フォーカスを絞って。
- レガシーコード改善ガイド重要!
- 『対レガシーコード』の議論は多い。
- 一つは発生ベースで立ち向かう
-
-
- 対レガシーは仕様化テストを書く事から始まる。
- まずはまるっとバージョン管理
- 仕様化テストを介入させる為の穴を開ける
- ここが『ピンチポイント』だ、と全体が通る細い道を探し、要所を探しだし介入させていく
- 安全ゾーンを増やしていく。陣取り合戦のように。
- 対レガシーは仕様化テストを書く事から始まる。
-
- アーキテクチャの見直すタイミングが来る。既存のレガシーコードに対する戦い方。
-
-
- システム自体は動き続ける粘土・アメーバである。
- 大きく変わる=ジャンプ。
- ジャンプしなきゃ行けない土台を作る事が大事。
- コードの重複を直す事が大事
- 色々な粒度のテストを用意しておく。
- システム自体は動き続ける粘土・アメーバである。
-
-
-
- アーキテクチャジャンプは生き残っていくために必要。
- 例えば既存のWebアプリを→Google Appsに置き換えるにしても…
- データ構造生き残る/言語的なのはばっさり無くなる、など対処が必要
- データ構造に関する部分は大きい。
-
-
- 引き返し可能・不可能な決定を判別しておく
- シンプルな設計=善、という訳でもない
- 『これに救われた』という知識を如何に含めていくか。※ログ、例外など
- 例)テストで全部守られているのでログ出力はありません!→うごかない→ログが無い…
- 経験に基づき、積めるものは積んでいく。
- プログラミングは、迷ったらシンプルに。
- データは、迷ったら分けておく。
- 引き返し可能・不可能な決定を判別しておく
- TDD導入について
- いきなりガッツリやるのは難しい。
- 基盤面で色々やらないと行けない。
- まずはバージョン管理から
- 大きい変化→なだからかな変化へ。
- いきなりガッツリやるのは難しい。
- TDDスキルのノウハウ蓄積・共有について。
-
- どう動いているかはコードを見れば分かる。
- なぜそうなったか、はコミットログに書く。
- diffとソースコードで分からない部分に考えを書く。
-
- きのこ本 No.17:ソースに書けない事をコミットログに書く。

- 作者: 和田卓人,Kevlin Henney,夏目大
- 出版社/メーカー: オライリージャパン
- 発売日: 2010/12/18
- メディア: 単行本(ソフトカバー)
- 購入: 58人 クリック: 2,107回
- この商品を含むブログ (350件) を見る
-
-
- コードは人のものではなくチームのものである
- ソフト依存のバグがある
- コードにコメントとして書く。
- コミットコメント見ても分からない。
-
- GitやSvnのコマンドには差分、履歴、コメントを一覧して見る事の出来るものもある。(例:git blame)
- 変更履歴を全てコメント化して残す…ツールを使えていない例の悪例。全て履歴を残さないと行けない、という恐怖から来る行動。
- 現代ではツールを上手く使う事で対応。
…と、この辺りで時間となり座談会終了。今回は流れ的には
休憩:スイーツタイム
今回のスイーツはこちら。岡山から取り寄せた『どら焼き』です。一見すると小振りで可愛らしいサイズのどら焼きですが…
横から見ると結構な厚さ(高さ)!食べるときに注意しないとアンコがあふれてしまいそうな位です。
どら焼き単品ではサイズの感覚が掴めないかなと思いまして、毎度おなじみの『RedBull』と並べて比較してみました(笑)
並べたRedBullは250mm缶です。手元の定規で測ってみたところ高さは約14cm。どらやきを1ポイントとすると大体3ポイント位の高さなのでどら焼き自体の高さは4cmちょいと言ったところでしょうか。アジャイル風な見積もりをしてみました。
ちなみにRedBullとどら焼きの食い合わせは…あまりよろしくなかったです(笑) どら焼き自体はとても美味しかったですよ!2個頂いちゃいました☆
また、休憩中にはアルティネット様の会社内にある関連本がズラリと持ち寄られて来たりも。こういう風に会社が理解があって良書を会社で揃えてくれる所は羨ましいですね〜。良書はえてしてボリュームも大きくなり、値段も高くなりがちですから。
ワールドカフェ開催前に、今回キャンセルで空きが出た事を受けてアルティネット様の社員の方が1名参戦されており、今回が初参戦という事でこのタイミングで自己紹介。
ワールドカフェ
上述のように、今回も座談会では『リファクタリング』に議論が集中した感もあったので、ワールドカフェではそれ以外のテーマで語り合う形になりました。
(お題としては12〜15章(ユニットテスティング/リファクタリング/TDD/CI)の中から1つ選ぶ)という形)
結果がこちら。今回は前回のようなツイート形式では無く、各チーム30秒程度での口頭発表でした。(テーマはCI×2、TDD×1でした)
お知らせ等
以上を持ちまして、アジャイルサムライ読書会in湯島道場も終了!と思いきやまだ続きがある模様で…
まず来週には、これまでの5回(第一回 地の巻/第二回 水の巻/第三回 火の巻/第四回 風の巻/第五回 空の巻)に続く第6回のイベントとして『かっぱ巻き』なるものが開催予定。こちらは湯島道場の全5回の振り返り、また9/18に行われる他流試合に向けての湯島道場参加メンバーの交流が主となる模様です。
9/18(日)の他流試合についても、大枠で内容は決まりつつあるようです。オラクル青山センターでの開催なので数多くの参加者が期待出来そうですね。楽しいイベントになりそうです。
また、これは確定では無いのですが湯島道場『2週目』もやるようなやらないような…。内容が気になるところですが、開催が決まれば、そして都合が合えば是非とも参加してみたいところですね。
(追記)前回8/24の話になってしまうのですが、以前TDDBC1.6(2011/07/31開催)の時に誓っていた『きのこ本に和田さんのサインを頂く』というタスクを先週晴れて完了出来ました!これで和田さんのサインは2つ目です☆(^o^) ありがとうございます!
懇親会
この日も懇親会に参加。都合、これまでの全5回全ての読書会&懇親会に参加した事になってしまいました。(^_^*)
前回のように夏休み期間中では無かったので11時過ぎにはおいとましましたが、今回も楽しいひと時を過ごすことが出来ました。
今回の『アジャイルサムライ』読書会はどの回も内容が濃かったですが、今回第5回の内容も濃かったですね。振り返りつつ情報を展開しつつ書き留めて行ったらあっという間に時間が過ぎてしまいました。今回第5回の内容は一際皆さんの心に刺さるものがあったようで(TLの熱さにそれが見て取れる)、内容についても皆さんと意見のやり取りが出来るとまた盛り上がりそうな気がします。