eXtremeProgramming入門

809 views
741 views

Published on

第49回名古屋アジャイル勉強会のワークショップ資料。
http://blogs.yahoo.co.jp/nagoya_agile_study_group/37140321.html

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
809
On SlideShare
0
From Embeds
0
Number of Embeds
76
Actions
Shares
0
Downloads
8
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

eXtremeProgramming入門

  1. 1. eXtreme Programming 入門 2013/01/25 第49回 名古屋アジャイル勉強会 You&I1
  2. 2. ジコ、ショウカイ。 H/N: You&I(読み:ユーアンドアイ) 出身: 生まれも育ちも名古屋市 年齢: 30代中盤 本職: 商学部出身の職業プログラマ 言語: C++, C#, VB6.0, 日本語COBOL 日記: http://d.hatena.ne.jp/youandi/ 所属: プログラミング生放送 名古屋支部 名古屋アジャイル勉強会2
  3. 3. ATTENTION 本資料は後日公開致します。 資料の内容について全ての メモを取る必要はありません。 セッション内容に集中して 頂ければ幸いです。3
  4. 4. AGENDA1. はじめに2. アジャイル開発とは3. eXtremeProgrammingとは4. ワークショップ5. まとめ 4
  5. 5. AGENDA1. はじめに2. アジャイル開発とは3. eXtremeProgrammingとは4. ワークショップ5. まとめ 5
  6. 6. 1. はじめに 今回のテーマ「XP入門」ですが、このテーマを選ん だ目的や動機について。 告知ページにも書いた通り、昨年はScrumを テーマにした勉強会を開催しました。近年 ScrumとXPを組み合わせて利用される事が多 い割にはXPについては語られる機会は少なく感じ ます。 また次回が丁度第50回目の節目を迎える事も あり、第2回のテーマをもう一度と考えました。6
  7. 7. AGENDA1. はじめに2. アジャイル開発とは3. eXtremeProgrammingとは4. ワークショップ5. まとめ 7
  8. 8. 8
  9. 9. 2.アジャイル開発とは (2/3)アジャイル開発という言葉はとても広い意味を持っ ています。それは2001年に公開されたアジャイルマニフェストと いう原則に則っていれば、どんな行為・行動も基 本的にはアジャイルであると見なせるからです。また、アジャイルマニフェストに則った様々なアジャイ ルプラクティスが存在します。アジャイルマニフェスト が指針であるとすると、アジャイルプラクティスはそ の指針を実行・実践する手段の一つです。9
  10. 10. 2.アジャイル開発とは (3/3) なんだかモヤっとした説明になってしまいましたが、 私が理解するアジャイル開発について説明しまし た。 アジャイル開発とは、コレをやったらアジャイルだ! とか、こうしなければいけない!とか、コレをやれば 良い!といった類いのものではありません。 アジャイル開発では、顧客を第一に考え、顧客に とって価値のあるものをチームが一丸となって提供 し続ける為に日々切磋琢磨します。10
  11. 11. AGENDA1. はじめに2. アジャイル開発とは3. eXtremeProgrammingとは4. ワークショップ5. まとめ 11
  12. 12. 3. XPとは (1/14) XP(eXtremeProgramming)とは、先述のア ジャイルマニフェスト公開の2001年よりも前の 1999年にKent Beck氏の著書「eXtreme Programming explained」としてまとめられた ものです。 アジャイル開発と同様にXPにも原則とプラクティス がありますが、XPの場合はプラクティス(TDD, CI, ペアプログラミング, リファクタリング, etc…)の方が 良く知られていますね。12
  13. 13. 3. XPとは (2/14) XPの価値 1. コミュニケーション(Communication) 2. シンプルさ(Simple) 3. フィードバック(Feedback) 4. 勇気(Courage) 5. 尊重(Respect) 価値とは理念である。何を考え何を行うのかを判 断するのに使用する大まかな基準である。13
  14. 14. 3. XPとは (3/14) XPの原則 (1/2) 1. 人間性 2. 経済性 3. 相互利益 4. 自己相似性 5. 改善 6. 多様性 7. 反省 8. フロー 9. 機会14
  15. 15. 3. XPとは (4/14) XPの原則 (2/2) 10. 冗長性 11. 失敗 12. 品質 13. 小さなステップ 14. 責任の受け入れ 価値は抽象的な概念であるので、この原則がXP を行っていく上での指針となる。何をすべきなのか 迷った時にはこの原則に立ち返るべきである。15
  16. 16. 3. XPとは (5/14) XPのプラクティス (1/3)  基礎プラクティス (1/2) 1. 全員同席 2. チーム全体 3. 情報豊富な作業空間 (見える化・可視化) 4. 活気のある仕事 5. ペアプログラミング 6. ペアプログラミングと個人の空間 7. ストーリー (ユーザーストーリー) 8. 1週間サイクル (イテレーション) 9. 四半期サイクル (リリース)16
  17. 17. 3. XPとは (6/14) XPのプラクティス (2/3)  基礎プラクティス (2/2) 10. ゆとり 11. 10分ビルド 12. 常時結合 (CI) 13. テストファーストプログラミング (TDD) 14. インクリメンタル設計 (リファクタリング)  応用プラクティス (1/2) 1. 実顧客の参加 (オンサイト顧客) 2. インクリメンタル配置 3. チームの継続17
  18. 18. 3. XPとは (7/14) XPのプラクティス (3/3)  応用プラクティス (2/2) 4. チームの縮小 5. 根本原因の分析 (なぜなぜ分析) 6. コードの共有 7. コードとテスト 8. 単一のコードベース 9. 日時配置 (自動化) 10. 協議によるスコープ契約 11. 利用分支払い プラクティスは原則を実践形態で表現したもの。18
  19. 19. 3. XPとは (8/14) ここで、もう一度整理しますと・・・  XPの価値  価値とは理念である。何を考え何を行うのかを判断するのに 使用する大まかな基準である。  XPの原則  原則はXPを行っていく上での指針となる。何をすべきなのか 迷った時にはこの原則に立ち返るべきである。  XPのプラクティス  プラクティスは原則を実践として表現したもの。 大事なのは、XPとは単なるプラクティスの寄せ集 めではないという事です。19
  20. 20. 3. XPとは (9/14) さて今日紹介したなかで、アレ?アレはどこ行った の?と思う方もいらっしゃるかも知れません。 例えば・・・  週40時間労働  スタンドアップミーティング  コーディング規約  メタファ(比喩) ※最近ではユビキタス言語  計画ゲーム  スパイク(計画スパイク、スパイクソリューション)20
  21. 21. 3. XPとは (10/14) 先程の説明はXP入門第2版をベースに紹介しま した。これは初版から第2版の間に、XP自身も フィードバックされ、改善していった結果だと思いま す。価値・原則・プラクティスそれぞれに変更が 入っています。 ではXPを実践するにあたり、基盤となるものに変 化・変更があるのに、どのようにして現場に導入す る事ができるのでしょうか? その解となるのが、価値に上がっている「シンプル さ」「フィードバック」です。21
  22. 22. 3. XPとは (11/14) 人の手が入り続けているものは変化に強い。とい う考え方があります。 例えば法律や法案の場合、影響範囲やバッチサ イズ(手順)が大きい為に変更し辛いですが、それ に対してシンプルに小さく対応するものが条例です ね。 開発プロセスも小さく・シンプルにする事で、変化 に強くなり、更にフィードバックで軌道修正し続け ます。22
  23. 23. 3. XPとは (12/14) XPの導入の話に戻りますが、そもそも導入が難し いというのは、XPの書籍を読んだりしても、何をす べきかはハッキリと書かれていないからだと思います。 まず始めにやるべき事は、現状分析です。自分 達の今を知り、足りないものを見つけ、理想を設 定し、それに向かう目標を立てて、実践してフィー ドバックする。これを継続的に行う事こそがXPやア ジャイル開発の目指すものだと思います。23
  24. 24. 3. XPとは (13/14) また、XPのプラクティスやアジャイルのプラクティスは 単体で利用するのではなく、色々と組み合わせる 事によって相乗効果がもたらされます。 では何と何を組み合わせると良いのでしょうか? 現状の分析やプラクティスの組み合わせを考える 上で役立つ手法がマッピングです。過去の名古 屋アジャイル勉強会でも頻繁にマッピングを行う ワークショップを行っています。  第47回本会 サッカーマッピング  第45回本会 PMBOK知識エリアマッピング  第39回本会 テスト手法マッピング24
  25. 25. 3. XPとは (14/14) 最後に、冒頭で紹介したScrumと組み合わせる 事が多いという点について、Scrumは人とのコミュ ニケーションだったり、作業のチェックポイントとして のイベントなどが定義されています。それに対して XPは技術的なプラクティスが多いので組み合わさ れる事が多いのかなと、私は思います。 ただ、私が今回XPについて色々調べた中で感じ たのはXPのプラクティスはチームを意識したもので あると言う事です。アジャイル開発で大事なのは チームとして行動できるかが大事だと感じました。25
  26. 26. AGENDA1. はじめに2. アジャイル開発とは3. eXtremeProgrammingとは4. ワークショップ5. まとめ 26
  27. 27. 自己紹介 (1/4) ワークショップを始める前に各テーブルで自己紹介 を行いましょう。 今回は朝会方式で自己紹介を行って頂きたいと 思います。  朝会(あさかい)  スタンドアップミーティング  デイリースクラム27
  28. 28. 自己紹介 (2/4) 朝会とは? 1. 毎日決まった時間と場所で立ったまま行う十数分以 内のチームミーティング。 2. プロジェクトの状況を示すバーンダウンチャートやタスク ボードの前で行う。 3. 3つの事について話す。 1. 前回の朝会から今までに何をやったか 2. 次の朝会までに何をするか 3. 作業の妨げや問題になっている事はなにか 4. 朝会の場では議論をしない。必要なら朝会後に。 5. チーム外の人の立ち会いは認めるが発言権はない。28
  29. 29. 自己紹介 (3/4) 自己紹介の内容は以下の3つで行って下さい。 1. 前回の晩ご飯のメニューは何か? 2. 今回の勉強会に参加した目的 3. 自分の職場等で朝会や朝礼は実施しているか? 通常は前もって朝会の発言内容を準備しておき ます。今から自己紹介の内容を考える時間を設 けます。その時間で自己紹介内容を考えて下さ い。用紙に書き出しても良いです。 時間:2分間29
  30. 30. 自己紹介 (4/4) それではスタンドアップ!ご起立下さい。 通常は司会進行役を設けますが、今回はなしと します。私から向かって左前の方から時計回りで 自己紹介を行って下さい。お名前の紹介の後に 以下の3つ事柄について話をして下さい。 1. 前回の晩ご飯のメニューは何か? 2. 今回の勉強会に参加した目的 3. 自分の職場等で朝会や朝礼は実施しているか? 時間:8分間30
  31. 31. ワークショップ1 - 朝会(1/6) たった今、XPのプラクティスを一つ実践して頂きま した。いかがでしたでしょうか? この朝会の目的としては以下のものが挙げられま す。  チーム内の情報共有  チーム内のコミュニケーション促進  問題の早期発見  無駄な会議の抑止  傾聴31
  32. 32. ワークショップ1 - 朝会(2/6) 傾聴!?  「傾聴」とは、カウンセリングやコーチングにおけるコミュニ ケーションスキルの一つです。  人の話をただ聞くのではなく、注意を払って、より深く、 丁寧に耳を傾けること。自分の訊きたいことを訊くので はなく、相手が話したいこと、伝えたいことを、受容的・ 共感的な態度で真摯に“聴く”行為や技法を指します。  それによって相手への理解を深めると同時に、相手も 自分自身に対する理解を深め、納得のいく判断や結 論に到達できるようサポートするのが傾聴の狙いです。 http://kotobank.jp/word/%E5%82%BE%E8%81 %B432
  33. 33. ワークショップ1 - 朝会(3/6) ちゃんと自分以外の方の自己紹介の内容を聞い ていましたか? どれだけちゃんと聞いていたのか、用紙に書き出し てみましょう!!! カンニングはしないように!!! 時間:6分間33
  34. 34. ワークショップ1 - 朝会(4/6) 答え合わせ?  各テーブルで自分が書き出した内容について1人ずつ 確認してみましょう。  聞く・伝えるこれらにもシンプルさが求められます。 時間が余ったら朝会についてディスカッションしてみ ましょう。  やっている・やっていない  司会の持ち回り  マンネリ化していないか 時間:10分間34
  35. 35. ワークショップ1 - 朝会(5/6) 朝会の目的  チーム内の情報共有  誰が何をしているか。  チーム内のコミュニケーション促進  毎日誰とも会話しないで出社・帰宅してないか?  問題の早期発見  嘘やごまかし隠し事はないか?  無駄な会議の中止  要点と問題のみを報告。  傾聴  毎日同じ事を言い続けているメンバーはいないか?35
  36. 36. ワークショップ1 - 朝会(6/6) 朝会はXPのプラクティスの中でも、お手軽に導入 できるプラクティスです。まだ導入していないなら是 非やってみましょう。 朝会と組み合わせるべきプラクティスは、先程も紹 介した、バーンダウンチャート(タスクの消化グラフ) やタスクボード(担当毎の作業状況)によるプロ ジェクトの見える化です。 オブジェクト倶楽部 - プロジェクトファシリテーション  http://objectclub.jp/community/pf/36
  37. 37. ワークショップ2 - ペアプロ(1/11) ペアプログラミングとは  ペアプログラミングは、1953年~1956年頃に初めて 実践された。  ペアプログラミングとは、2人のプログラマが、横並びに 1台のPCに向かい、同じ設計、アルゴリズム、コード、 テストについて継続的に共同作業する事。  1人が「ドライバー」としてPC操作や設計の書き下ろし を行う。  もう1人が「ナビゲーター」としてドライバーの作業を監 視し、戦術的・戦略的な欠陥を見つける。37
  38. 38. ワークショップ2 - ペアプロ(2/11) ペアプログラミングのやり方  朝会にて一日のペアのスケジュールを決めます。チーム 全員が揃う時間帯にのみ、複雑なタスクをペアプロで 集中的に実施するやり方もあります。  ドライバーとナビゲーターは、大体1分間隔で「ハァ」な どの言葉にならない声でコミュニケーションを取ります。  ドライバーとナビゲーターの役割を定期的に交代します。 ペアプログラミングの効果  ペアプロによる工数の増加は2倍ではなく1.15倍という 統計結果が出ています。  http://blogs.itmedia.co.jp/hiranabe/2012/ 01/pair-programming.html から引用38
  39. 39. 39
  40. 40. ワークショップ2 - ペアプロ(4/11) まずはテーブル内で2人1組でペアを作りましょう。 余る場合は3人1組で作りましょう。 ペア同士で熱い握手を交わしましょう。40
  41. 41. ワークショップ2 - ペアプロ(5/11) 今日はパソコンを持ってきていないので、擬似的 なペアプロとして、ペアでお絵かきをして頂きます。 ペアでうまくコミュニケーションをとりながら絵を完成 させて下さい。 1つ制限事項として、各ペアで同時に使えるペン は1本のみとします。これにより2人同時には絵 を描けません。41
  42. 42. ドライバーペンを使ってお絵かきする。レイアウト設計も担当する。ナビゲータードライバーの作業を監視し、戦術的・戦略的欠陥を見つける。進め方ドライバーが逐次何をするか独り言のように語りながら手を動かす。ナビゲーターはそれに対して相槌等の反応を返す。適宜ペアローテーションも行いましょう。制限事項各ペアで同時に使えるペンは1本のみとします。2人が同時にお絵かきを行ってはいけません。ペンの色は自由に変えて良い。 時間:5分間 42
  43. 43. ワークショップ2 - ペアプロ(7/11) さあ描けましたか? 描いた絵を皆さんで共有してみましょう。  構図は合っていますか?  うまくいった点  うまくいかなかった点  改善点  顧客に価値を提供しているか?  ペアで描いた絵の売りは何か?こだわった点は?43
  44. 44. ワークショップ2 - ペアプロ(8/11) 実は、プラクティスとしてペアプロ以外に今、イテ レーション、ふりかえりも行いました。 アジャイル開発とは、モナリザの絵で例えると、デッ サン、下書き、色塗りといった全体をなぞって仕上 げるイメージであると言う紹介もあります。  Jeff Patton, ThoughtWorks, Successful Incremental Releases, P.40 - P.44  http://www.agileproductdesign.com/down loads/patton_incremental_releases_hando uts.pdf44
  45. 45. 45
  46. 46. 46
  47. 47. ワークショップ2 - ペアプロ(11/11) ペアプロの目的  コミュニケーション  技術交流 イテレーションの目的  タイムボックス管理  期間固定化による作業見積もり ふりかえりの目的  PCDAの実践  ナレッジの共有47
  48. 48. AGENDA1. はじめに2. アジャイル開発とは3. eXtremeProgrammingとは4. ワークショップ5. まとめ 48
  49. 49. まとめ マッピングで現状分析する事により、自分達の今 を知り、足りないものを見つけ、理想を設定し、そ れに向かう目標を立てて、実践してフィードバック する。 でもその理想形を追い求めるにも個々のプラクティ スについて知っている必要があります。その為のプ ラクティスとしてスパイク(実験)を行ったり、イテレー ション0などで準備を行ったりします。 今日は少しのプラクティスしかできませんでした。 是非皆さんも色々試してみて下さい。49
  50. 50. 本日ご参加の皆さんに朗報! 今日少ししかできなかったXPのプラクティスをもっと 体験できる場が来週あります。  わんくま同盟 名古屋勉強会 #26&ドメイン駆動設 計読書会@名古屋合同勉強会  http://www.wankuma.com/seminar/  日時:2013年2月2日(土) 13:00~17:30  場所:名古屋ソフトウェアセンター(最寄り駅:金山) TDD、ペアプロ、アジャイルモデリング、メタファーと いったXPプラクティスが体験できます。50
  51. 51. 参考文献(赤色はお薦め) エクストリーム・プログラミング入門 第1版、第2版  978-4894712751, 978-4894716858 エクストリーム・プログラミング実行計画  978-4894713413 エクストリーム・プログラミング適用編  978-4894715554 実践eXtremeプログラミング  978-4901676625 アート・オブ・アジャイル デベロップメント  978-487311395151

×