"ordinary" system development

107
角谷 信太郎 KAKUTANI Shintaro; Eiwa System Management,Inc. “Ordinary” System Development - A Pattern Language To Make Your Project Agile (株)永和システムマネジメント [email protected] RubyWorld Conference 2010; 2010-09-06(Mon) ふつうの システム開発 ~Rubyを活用した受託開発を アジャイルにするためのパターンの紹介 201096日月曜日

Upload: shintaro-kakutani

Post on 01-Nov-2014

9 views

Category:

Technology


0 download

DESCRIPTION

 

TRANSCRIPT

Page 1: "Ordinary" System Development

角谷 信太郎KAKUTANI Shintaro; Eiwa System Management,Inc.

“Ordinary” System Development - A Pattern Language To Make Your Project Agile

(株)永和システムマネジメント [email protected]

RubyWorld Conference 2010; 2010-09-06(Mon)

ふつうのシステム開発~Rubyを活用した受託開発をアジャイルにするためのパターンの紹介

2010年9月6日月曜日

Page 2: "Ordinary" System Development

http://www.flickr.com/photos/t-seto/3740610277/

Kakutani Shintaro

2010年9月6日月曜日

Page 3: "Ordinary" System Development

Asakusa.rb

http://www.flickr.com/photos/takkanm/39784176692010年9月6日月曜日

Page 4: "Ordinary" System Development

http://www.flickr.com/photos/recompile_net/4932517324/

Akira Matsuda(@bitsweat in Asakusa)

2010年9月6日月曜日

Page 5: "Ordinary" System Development

http://www.sarahmei.com/blog/2010/09/01/asakusa-rb/2010年9月6日月曜日

Page 6: "Ordinary" System Development

2010年9月6日月曜日

Page 7: "Ordinary" System Development

http://www.flickr.com/photos/recompile_net/4935820587/

RubyKaigihttp://rubykaigi.org

2010年9月6日月曜日

Page 8: "Ordinary" System Development

http://togetter.com/li/467992010年9月6日月曜日

Page 9: "Ordinary" System Development

提 供

おかげさまで30周年情報化技術を通じて社会と共生する

2010年9月6日月曜日

Page 10: "Ordinary" System Development

角谷 信太郎KAKUTANI Shintaro; Eiwa System Management,Inc.

“Ordinary” System Development - A Pattern Language To Make Your Project Agile

(株)永和システムマネジメント [email protected]

RubyWorld Conference 2010; 2010-09-06(Mon)

ふつうのシステム開発~Rubyを活用した受託開発をアジャイルにするためのパターンの紹介

2010年9月6日月曜日

Page 11: "Ordinary" System Development

Head Firstふつうのシステム開発株式会社 永和システムマネジメントhttp://www.esm.co.jp

RubyKaigi2010 2010/08/27http://d.hatena.ne.jp/nawoto/20100830/12831364102010年9月6日月曜日

Page 12: "Ordinary" System Development

http://www.flickr.com/photos/hsbt/4931708053/2010年9月6日月曜日

Page 13: "Ordinary" System Development

http://www.flickr.com/photos/y_ogagaga/4941878035/2010年9月6日月曜日

Page 14: "Ordinary" System Development

http://www.flickr.com/photos/hsbt/4932277668/2010年9月6日月曜日

Page 15: "Ordinary" System Development

ふつうのシステム開発

2010年9月6日月曜日

Page 16: "Ordinary" System Development

Ruby

2010年9月6日月曜日

Page 17: "Ordinary" System Development

Agile Software Development

http://www.flickr.com/photos/long-mai/3569550298/2010年9月6日月曜日

Page 18: "Ordinary" System Development

2010年9月6日月曜日

Page 19: "Ordinary" System Development

2005 2006 2007 2008 2009

043

117130 150

711

12 16

Ruby,Rails関連プロジェクト数と売上高(単位:百万)の推移

2010年9月6日月曜日

Page 20: "Ordinary" System Development

2010年9月6日月曜日

Page 21: "Ordinary" System Development

http://www.tbray.org/talks/RW09.pdf

Javaが中心だったころ✓オブジェクト指向やJava,UMLの技術支援

✓ 2次請けが多い✓パートナー比率が高め✓ 8~10人の開発メンバー

2010年9月6日月曜日

Page 22: "Ordinary" System Development

http://www.tbray.org/talks/RW09.pdf

Rubyが中心になってから✓技術を使って価値のあるソフトウェアを届ける

✓お客さまと近い仕事✓自社メンバーが中心✓ 2~4人の開発メンバ ー

2010年9月6日月曜日

Page 23: "Ordinary" System Development

ふつうのシステム開発

2010年9月6日月曜日

Page 24: "Ordinary" System Development

ふつうのシステム開発

✓ 投資効果のある、✓ ちゃんと動くソフトウェアを、✓ 期待される期間内に提供し、✓ それを維持・変更し続けられる

2010年9月6日月曜日

Page 25: "Ordinary" System Development

ふつうのシステム開発✓ 私たちは良い仕事をしたい✓ ソフトウェアは人が人のためにつくっている

✓ みんなで力を合わせて成果をあげるのが仕事

✓ 仕事に見合った報酬を得たい2010年9月6日月曜日

Page 26: "Ordinary" System Development

http://www.rubyworld-conf.org/ja/2010年9月6日月曜日

Page 27: "Ordinary" System Development

http://www.amazon.co.jp/o/ASIN/4873113636/kakutani-222010年9月6日月曜日

Page 28: "Ordinary" System Development

http://www.flickr.com/photos/recompile_net/3901074695/

“プログラムを書いたことのないシステムエンジニアが威張っているような会社は早晩亡びる。竹内郁雄「推薦のことば」(『ビューティフル・コード』)

2010年9月6日月曜日

Page 29: "Ordinary" System Development

http://www.flickr.com/photos/recompile_net/4934007508/2010年9月6日月曜日

Page 30: "Ordinary" System Development

Ruby

2010年9月6日月曜日

Page 31: "Ordinary" System Development

信頼2010年9月6日月曜日

Page 32: "Ordinary" System Development

楽しさ2010年9月6日月曜日

Page 33: "Ordinary" System Development

http://www.rubyworld-conf.org/ja/2010年9月6日月曜日

Page 34: "Ordinary" System Development

BruceA.Tateat RubyWorld Conference 2009in Matz-e, Japan

2010年9月6日月曜日

Page 35: "Ordinary" System Development

http://www.rubyworld-conf.org/ja/program/abstract/a-2/2010年9月6日月曜日

Page 36: "Ordinary" System Development

http://www.rubyworld-conf.org/ja/program/abstract/a-2/2010年9月6日月曜日

Page 37: "Ordinary" System Development

http://www.rubyworld-conf.org/ja/program/abstract/a-2/2010年9月6日月曜日

Page 38: "Ordinary" System Development

2010年9月6日月曜日

Page 39: "Ordinary" System Development

2010年9月6日月曜日

Page 40: "Ordinary" System Development

2010年9月6日月曜日

Page 41: "Ordinary" System Development

2010年9月6日月曜日

Page 42: "Ordinary" System Development

開発プロセス

2010年9月6日月曜日

Page 43: "Ordinary" System Development

Agile Software Development

http://www.flickr.com/photos/long-mai/3569550298/2010年9月6日月曜日

Page 44: "Ordinary" System Development

http://www.amazon.co.jp/o/ASIN/487311392X/kakutani-222010年9月6日月曜日

Page 45: "Ordinary" System Development

『Head First ソフトウェア開発』

“プロセスとは、どのような図、文書、テストを実行すべきかに関する形式的な一連の規則というよりも…実は実行すべきことや実行すべきときを表すものにすぎないのです。また、頭文字も必要ありません…適切に機能すればよいのです。

2010年9月6日月曜日

Page 46: "Ordinary" System Development

『Head First ソフトウェア開発』

“自分のチームと自分のプロジェクトに役立つプロセスを選び…そのプロセスが生み出した成果物を自分の顧客の要望に合うように調整します。

2010年9月6日月曜日

Page 47: "Ordinary" System Development

http://www.amazon.co.jp/o/ASIN/4873113636/kakutani-222010年9月6日月曜日

Page 48: "Ordinary" System Development

協力すること考えること

計画することリリースすること開発すること2010年9月6日月曜日

Page 49: "Ordinary" System Development

1.ペアプログラミング2.活き活きとした仕事3.情報満載の仕事場4.根本原因分析5.ふりかえり6.信頼7.全員同席8.真の顧客の参加9.ユビキタス言語10. スタンドアップ ミーティング11.コーディング標準12.イテレーションデモ13.報告14.「完全Done」

15. バグなし16. バージョン管理17. 10分ビルド18. 継続的インテグレーション19. コードの共同所有20. ドキュメント21. ビジョン22. リリース計画23. 計画ゲーム24. リスク管理25. イテレーション管理26.ゆとり27.ストーリー28.見積り

29. インクリメンタルな 要件30.顧客テスト31.テスト駆動開発32.リファクタリング33.シンプルな設計34.インクリメンタルな 設計とアーキテクチャ35.スパイク ソリューション36.パフォーマンスの 最適化37.探索的テスト

2010年9月6日月曜日

Page 50: "Ordinary" System Development

パターン2010年9月6日月曜日

Page 51: "Ordinary" System Development

http://www.flickr.com/photos/goldenpixel/2037394498/

パターンは事物ではなく、繰り返し起こる出来事や関係に名前をつけたものである

2010年9月6日月曜日

Page 52: "Ordinary" System Development

1.ペアプログラミング2.活き活きとした仕事3.情報満載の仕事場4.根本原因分析5.ふりかえり6.信頼7.全員同席8.真の顧客の参加9.ユビキタス言語10. スタンドアップ ミーティング11.コーディング標準12.イテレーションデモ13.報告14.「完全Done」

15. バグなし16. バージョン管理17. 10分ビルド18. 継続的インテグレーション19. コードの共同所有20. ドキュメント21. ビジョン22. リリース計画23. 計画ゲーム24. リスク管理25. イテレーション管理26.ゆとり27.ストーリー28.見積り

29. インクリメンタルな 要件30.顧客テスト31.テスト駆動開発32.リファクタリング33.シンプルな設計34.インクリメンタルな 設計とアーキテクチャ35.スパイク ソリューション36.パフォーマンスの 最適化37.探索的テスト

2010年9月6日月曜日

Page 53: "Ordinary" System Development

http://flickr.com/photos/automania/97936640/

すべての蜘蛛の巣はユニークだが、ひとつのプロセスに従っている

2010年9月6日月曜日

Page 54: "Ordinary" System Development

強いセンターになるパターン

2010年9月6日月曜日

Page 55: "Ordinary" System Development

ふつうのシステム開発のプロセスのための強いパターン✓ フィーチャ単位で仕事をすすめる✓ タイムボックスで区切った仕事を積み重ねる

✓ 頻繁に情報を同期する✓ “具”を詰める✓ コミュニティの一員になる

2010年9月6日月曜日

Page 56: "Ordinary" System Development

フィーチャ単位で仕事をすすめる

http://www.flickr.com/photos/soldiersmediacenter/3948272458/2010年9月6日月曜日

Page 57: "Ordinary" System Development

http://www.amazon.co.jp/o/ASIN/4839924023/kakutani-222010年9月6日月曜日

Page 58: "Ordinary" System Development

計画の基準: フィーチャ(タスクではない)‣ フィーチャ(Feature): ソフトウェアの機能、特性や特徴、性能目標、見た目や使い勝手など、いわゆる「売り文句」を総称するもの

‣ 要求仕様, 機能要件, 大機能, ユースケースとよく似ている‣ ユーザに価値を提供するものがフィーチャ

‣ 性能要件やセキュリティといった非機能要件もフィーチャになりうる

‣ フィーチャの“実装”手段はさまざま‣ ユーザーストーリー, ストーリーカード‣ Issue Tracking Systemに登録されたチケット‣ Excelの表‣ ユースケース記述の変異したもの

2010年9月6日月曜日

Page 59: "Ordinary" System Development

ストーリーカード2010年9月6日月曜日

Page 60: "Ordinary" System Development

http://www.pivotaltracker.com/2010年9月6日月曜日

Page 61: "Ordinary" System Development

http://blog.mountaingoatsoftware.com/advantages-of-the-as-a-user-i-want-user-story-template2010年9月6日月曜日

Page 62: "Ordinary" System Development

ユーザーストーリーの形式✓ As a/an <type of user>,✓ 販売管理部門の担当として、

✓ I Want To <some goal>✓ 先月の締め日以降の今月の売上金額と数量を見たい

✓ So That <some reason>✓ 経理部門にレポートを提出するために必要だから

2010年9月6日月曜日

Page 63: "Ordinary" System Development

http://agileproductdesign.com/blog/the_new_backlog.html2010年9月6日月曜日

Page 64: "Ordinary" System Development

見積り2010年9月6日月曜日

Page 65: "Ordinary" System Development

見積り2010年9月6日月曜日

Page 66: "Ordinary" System Development

http://www.flickr.com/photos/loungerie/236645752/

タイムボックスで区切った仕事を積み重ねる

2010年9月6日月曜日

Page 67: "Ordinary" System Development

インクリメンタル開発の流れマイルストーン1 マイルストーン2

...

イテレーション

マイルストーン: マイルストーンは契約の単位です。1つのマイルストーンにつき、1回以上リリースするものとします。

リリース: リリースプランニングを通じて、リリースに含める内容を優先順位にしたがって各イテレーションに割り当てます。含められる分量は、過去のイテレーション実績をもとに決定します。

イテレーション: 1~2週間をタイムボックスとして、リリース計画で割り当てられた作業を実施します。状況の変化に応じて優先順位の変更に適応します。

リリース1 リリース2 リリース3

1 2 3 4 5 6 7 8 9

リリース4

イテレーション イテレーション

10 11 ...イテレーション

2010年9月6日月曜日

Page 68: "Ordinary" System Development

複数レベルの計画づくり戦略

ポートフォリオプロダクトリリース

イテレーション

今日

2010年9月6日月曜日

Page 69: "Ordinary" System Development

http://www.amazon.co.jp/o/ASIN/4839924023/kakutani-222010年9月6日月曜日

Page 70: "Ordinary" System Development

http://www.amazon.co.jp/o/ASIN/4798120405/kakutani-222010年9月6日月曜日

Page 71: "Ordinary" System Development

http://www.flickr.com/photos/stephenhackett/3289703976/

頻繁に情報を同期する

2010年9月6日月曜日

Page 72: "Ordinary" System Development

タイムボックスに応じた、適切な長さの情報同期ポイント✓朝会, 夕会✓ チーム内の作業状況を共有する✓イテレーションレビュー✓ タイムボックスの成果の認識を合わせる✓ふりかえり✓ 状況に応じてプロセスを見直す

2010年9月6日月曜日

Page 73: "Ordinary" System Development

2010年9月6日月曜日

Page 74: "Ordinary" System Development

2010年9月6日月曜日

Page 75: "Ordinary" System Development

http://www.flickr.com/photos/yto/4573526038/

“具”を詰める

2010年9月6日月曜日

Page 76: "Ordinary" System Development

枠組みに対して、実際に手を動かしてふつうのシステム開発を可能にする✓テスト駆動開発(TDD)✓リファクタリング✓継続的インテグレーション✓ “設計”と“実装”は不可分✓ペアプログラミング

2010年9月6日月曜日

Page 77: "Ordinary" System Development

Ruby

2010年9月6日月曜日

Page 78: "Ordinary" System Development

特にRubyはテスティングととても相性がよい✓柔軟なオブジェクト機構✓ Meta Programming for Rest of Us

✓テスティングDSL✓ rspec, rr, steak, cucumber, capybara

✓fixture replacement✓ factory_girl, machinist, fabrication,dbcleaner

2010年9月6日月曜日

Page 79: "Ordinary" System Development

2010年9月6日月曜日

Page 80: "Ordinary" System Development

2010年9月6日月曜日

Page 81: "Ordinary" System Development

2010年9月6日月曜日

Page 82: "Ordinary" System Development

コミュニティの一員になる

http://pixdaus.com/single.php?id=1041502010年9月6日月曜日

Page 83: "Ordinary" System Development

2010年9月6日月曜日

Page 84: "Ordinary" System Development

organizer, speaker

subeventLT on JRubyKaigisubevent

subevent, staffsubevent, staff

speaker, subevent

subevent

2010年9月6日月曜日

Page 85: "Ordinary" System Development

Ruby Commuity on github

http://lumberjaph.net/blog/index.php/2010/03/25/github-explorer/

Yeah! I’m here!

2010年9月6日月曜日

Page 86: "Ordinary" System Development

コミュニティの一員になる✓ “コミュニティ標準”に倣う✓ 採用バージョン, 規約, 利用ツール✓ みんなのコードを良くしよう✓ バグ報告,パッチ,pull request...

✓ “みんなに知らせる”✓ 発表,書籍,記事,blog,twetter,irc...

✓ The Netへのポートを閉じない!✓ ssh, git, irc, web filtering...

2010年9月6日月曜日

Page 87: "Ordinary" System Development

2010年9月6日月曜日

Page 88: "Ordinary" System Development

まとめ2010年9月6日月曜日

Page 89: "Ordinary" System Development

ふつうのシステム開発のプロセスのための強いパターン✓ フィーチャ単位で仕事をすすめる✓ タイムボックスで区切った仕事を積み重ねる

✓ 頻繁に情報を同期する✓ “具”を詰める✓ コミュニティの一員になる

2010年9月6日月曜日

Page 90: "Ordinary" System Development

フィーチャ単位で仕事をすすめる

http://www.flickr.com/photos/soldiersmediacenter/3948272458/2010年9月6日月曜日

Page 91: "Ordinary" System Development

http://www.flickr.com/photos/loungerie/236645752/

タイムボックスで区切った仕事を積み重ねる

2010年9月6日月曜日

Page 92: "Ordinary" System Development

http://www.flickr.com/photos/stephenhackett/3289703976/

頻繁に情報を同期する

2010年9月6日月曜日

Page 93: "Ordinary" System Development

http://www.flickr.com/photos/yto/4573526038/

“具”を詰める

2010年9月6日月曜日

Page 94: "Ordinary" System Development

コミュニティの一員になる

http://pixdaus.com/single.php?id=1041502010年9月6日月曜日

Page 95: "Ordinary" System Development

http://www.flickr.com/photos/goldenpixel/2037394498/

パターンは事物ではなく、繰り返し起こる出来事や関係に名前をつけたものである

2010年9月6日月曜日

Page 96: "Ordinary" System Development

http://flickr.com/photos/automania/97936640/

すべての蜘蛛の巣はユニークだが、ひとつのプロセスに従っている

2010年9月6日月曜日

Page 97: "Ordinary" System Development

http://www.flickr.com/photos/recompile_net/3901074695/

“プログラムを書いたことのないシステムエンジニアが威張っているような会社は早晩亡びる。竹内郁雄「推薦のことば」(『ビューティフル・コード』)

2010年9月6日月曜日

Page 98: "Ordinary" System Development

http://www.rubyworld-conf.org/ja/2010年9月6日月曜日

Page 99: "Ordinary" System Development

http://www.flickr.com/photos/recompile_net/4934007508/2010年9月6日月曜日

Page 100: "Ordinary" System Development

Ruby

2010年9月6日月曜日

Page 101: "Ordinary" System Development

信頼2010年9月6日月曜日

Page 102: "Ordinary" System Development

楽しさ2010年9月6日月曜日

Page 103: "Ordinary" System Development

ふつうのシステム開発

✓ 投資効果のある、✓ ちゃんと動くソフトウェアを、✓ 期待される期間内に提供し、✓ それを維持・変更し続けられる

2010年9月6日月曜日

Page 104: "Ordinary" System Development

ふつうのシステム開発✓ 私たちは良い仕事をしたい✓ ソフトウェアは人が人のためにつくっている

✓ みんなで力を合わせて成果をあげるのが仕事

✓ 仕事に見合った報酬を得たい2010年9月6日月曜日

Page 105: "Ordinary" System Development

ふつうのシステム開発

2010年9月6日月曜日

Page 106: "Ordinary" System Development

提 供

おかげさまで30周年情報化技術を通じて社会と共生する

2010年9月6日月曜日

Page 107: "Ordinary" System Development

生きている花をつくろうとすれば、ピンセットで細胞を一つ一つ物理的に組み立てるのではなく種から育てるであろう。

http://www.flickr.com/photos/claudio_ar/2601700491/

クリストファー・アレグザンダー『時を超えた建設の道』

2010年9月6日月曜日