Skip to content

ReadingAgileSamuraiInShibuya20110907

norry-gogo edited this page Sep 9, 2011 · 12 revisions

第12章 ユニットテスト:動くことがわかる

12.1 ラスベガスへようこそ!

[コメント] fukumori

テストは命綱。コードの修正や追加をするときに、既存のユニットテスト群が警告を出してくれたおかげでバグを作りこまずに済んだことが何度もある。

[コメント] shishi

テストによるフィードバックは短いほうが良い。コミット時よりもはやく、保存時にテストが実行されるようにテストの実行を自動化すれば、 より早く気づきの機会が得られる。

[会場での意見]

各言語でのツール例

  • ruby: autotest, spork
  • php: Stargehand_TestRunner, MakeGood
  • autoprove, Test::Continuous

テストを書く能力、読む能力、読み易くある為の書く能力

12.2 はじめてのユニットテスト

[感想] norry_gogo

テストが書きづらい…でもそれは設計がまずいのかもしれない(p241) テスティングフレームワークを知ると共に、オブジェクト指向やデザインパターン等の知識もあったほうが良いと感じた

[会場での意見]

オブジェクト指向の理解やデザインパターンの理解は、アジャイルな開発をしていく中で「行き着く先」という認識でもよい、とにかくできる事からやっていく事が大事

テストをしっかり書くとプロダクトコードより多くなりませんか? → なる(「行き着く先」に近づいていると言う事)

第13章 リファクタリング:技術的負債の返済

13.1 どうしてこうなった

13.2 技術的負債

[感想] shishi

まずいコードは「負債」なので、もう終わりが見えていて破棄されるもの、大きすぎるもの以外は「負債を返さなければいけない」 という意識が必要と再認識

[会場での意見]

技術的負債

13.3 リファクタリングで技術的負債を返済する

[コメント] fukumori

「リファクタリングとは、(...)少しずつ継続的に設計を改善していく手順の総称だ。」の「少しずつ」という言葉が重要。「まとめて一気にリファクタリングする機会を設けよう」とかいう話が出たら「なにか変だ」と思わないと。

[感想] norry_gogo

書籍の中盤までは「今考えなくてよい事は後で考える」な考え方が示されたが、リファクタリングは「後回しにしない」という考え方が示されている。それは技術的負債はこっそりと忍び寄る(p250)からで、日々の開発では物ができていく事には気が向くけど、その裏で積み重なっていく負債には、認識できても後回しにしたりしていた…結果としてスパゲティー→汚名(p257)…よくないパターン、ありました。

###[感想] angler_ishikoro Agile Conference」で「Martin Fowle」氏からも以下のコメントがありました In software development, “perfect” is a verb, not an adjective. ソフトウェア開発においては、完璧というのは形容詞ではなく、限りなく改善を続けるという意味の動詞である。 「To Perfct」ってことでしょうか。何より続けることが大事なんだと思いました。

第14章 テスト駆動開発

###p261 「どうやったらそんなにわかりやすくて見通しのよい、きれいなコードが書けるんだい?」の"きれいなコード"は、原著ではClean Codeとなっている。Beautiful Codeとかではないことに注意されたい @remore

14.1 テストを先に書く

[会場での意見]

動的言語では、テストファーストでテストがまずコケる事を確認するのは大事

14.2 テストを使って複雑さに立ち向かう

[感想] norry_gogo

ペアプロ、良いですよね。

[会場での意見]

なんでペアプロすんの? → ちょっと解らないと事か聞けるから

第15章 継続的インテグレーション:リリースに備える

15.1 ショータイム

[感想] suginoy

先週末のXP祭りのLTで"常にDemo Ready"という言葉を知ってかっこいいと思いました。(下記スライド16ページ目)

アジャイルなでしこへの道

[会場での意見]

"常にDemo Ready" これができないと良いものは作れないよね

15.2 リリースに備える文化

15.3 継続的インテグレーションとは

[感想] hirowatari

とは言え大きな機能を作る際には、マージの間隔が長くなってしまう。もっと機能を細かく分割すべきかな。

[会場での意見]

デイリーで各ブランチにトランクの変更を取り込んでから終業する様に習慣づければ良い

15.4 どうすればうまくいくのか?

15.5 チェックイン手順を習慣づける

###p280 この図は大事な手順が足りない。1の最新のコードを取得したら、テストがオールグリーンであることを次に確かめなければならない。そうでないと、以後の変更によってテストが落ちたのかどうかがわからなくなる。 -- @HIROCAST

こういうことやる人はプログラマと名乗らないで欲しい。具体的な例(あるある -- @HIROCAST

  • 手元でテスト通るの確認しないでpushしてくる
  • ビルド、テストが落ちた状態で帰宅する
  • ビルド、テストが落ちてるのに修正せずに他のコードをコミットする
  • テストが遅いからコメントアウトする。だったら、早くしろよ。
  • テストが通らないからコメントアウト(削除)する。もうプログラマ辞めた方が良いですよ。

15.6 ビルドを自動化する

###いくつか具体的に書いておく -- @HIROCAST

  • 代表的なビルドエージェントは Jenkins 大抵の環境、大抵の言語、大抵のことはできる
  • リポジトリ(git,svn)を監視して変更があればビルドして、メール、IRC、Skype、Growlで通知
  • デプロイの自動化は capistrano が王道 大抵の環境に適応できる
  • push → ビルド(テスト)→ オールグリーン → Capistranoでステージングへデプロイ を自動化すれば非エンジニアがいつでも確認できてフィードバックしてもらえる

[会場での意見]

上記の様な環境をイテレーションゼロで用意しよう

つまらないバグなんて出しているヒマはない、CIがないとアジャイル(イテレーション)は難しい

15.7 作業単位を小さくする

###p285 これらの4つ(ユニットテスト、リファクタリング、テスト駆動開発、継続的インテグレーション)を実践することなしにアジャイル開発を成功させることはかなり難しい。本当に難しい。難しい。難しい。 -- @HIROCAST

[コメント] suginoy

1日1回の夜間ビルド程度だと、他人のチェックイン(例:DBスキーマ変更)で自分のテストが落ちる(そして犯人扱いされる)ということがあるので、できるだけ細かくビルドしたいところ。「自分のコード」というのがなくなるくらいコードの共同所有が進んでいればいいんですが、なかなかそういう現場は見ませんよね。

[感想] norry_gogo

リファクタリングについても同様に言えるけど、日々これらのプラクティスを規律正しく実践(p302)していく姿勢がBushibo(p299)の精神だったり「サムライ」っぽい。

15.8 この先どこへ向かえばいいのか?

###P286 誰かにアジャイル開発をおしつけるのはだめだ。何をするべきか口で言うだけじゃいけない。具体的に行動して、君が模範を示すんだ。 -- @HIROCAST

[質問] norry_gogo

強力で危険な知識とノウハウ(p285)、「危険」について皆さんの意見をうかがいたいです。

[会場での意見]

  • 上手じゃなくても完璧じゃなくてもやらないよりやった方がいい
  • 結局やんなきゃ変わらない
  • 問題点を明言しよう、マインドとメリットを伝えて吹き込む(最初はアジャイルアジャイル言わない方がよい)
  • テスト書く事に許可なんていらない
  • 考えて、振り返る、考えて、振り返る、だんだん良くなっていくからク・ジ・ケ・ナ・イ
  • 初めなければ現状の変化はゼロのまま、目の前の現実に向かう!

付録A アジャイルソフトウェア開発の原則

##A.1アジャイルソフトウェア開発宣言

##A.2 アジャイルソフトウェア開発の12の原則

付録B オンラインリソース

付録C 参考資料

監訳者あとがき

[感想] norry_gogo

「もっとソフトウェアをうまく作りたい」という情熱・思い・価値、ちゃんと伝えられる様に実践で試行錯誤していきたいです

[雑談] suginoy

p304 「でもやるんだよ」は根本敬氏の言葉らしい。町山智浩氏がよく使う。

ジャック・ブラック¥ 980
ジャック・ブラック¥ 1,200

p306 師を仰ぎ、師を追いかけ、師に歩調を合わせ、師の意図を組み、そして自らが師になるのだ -- @HIROCAST

KPT

Keep

付箋写真

  • 大塚さんお疲れ様でした、話が面白かったです
  • 胸を打たれた
  • 明日から(すぐにでも実践するぞ)っていう空気
  • Shibuya-Agile として To be cont.
  • 次回も何かやる・出席する
  • Wiki 新規ページ作ってみた
  • 1回の欠席以外は全部これた

Problem

付箋写真

  • 遅刻
  • 週一の平日夜はちょっとキツかった…
  • うまくまわせなかった(ファシリテータ) ←そんな事なかった、GJ!

Try

付箋写真

  • 会場提供できるかも、何かのイベントの時はお声かけ下さい
  • テスティングフレームワークやツールを試す
  • Jenkins、Capistrano、Chef、Redmineとかを試したい・深く使いたい
  • CI、コミットからデプロイまでを自動化する
  • アジャイルのメリットをもっとわかりやすく説明する(社内で)
  • 現場を変えていきます!!(少しずつ…)
  • アジャイルを自分の運用業務に活用する
  • アジャイル体験談を話せるように
  • Shibuya-Agileの題材募集
Clone this wiki locally