scrum alliance regional gathering tokyo 2013 pub

34
あなたのプロジェクトでは、アンドンを引けますか。 Smalltalk という源流に学ぶ Scrum Alliance Regional Gathering Tokyo 2013 --- 僕だってCoplienの話を聞きたいよん --- 今野 ([email protected])

Upload: growth-xpartners-incorporated

Post on 28-May-2015

1.679 views

Category:

Documents


5 download

TRANSCRIPT

Page 1: Scrum alliance regional gathering tokyo 2013 pub

あなたのプロジェクトでは、アンドンを引けますか。

Smalltalkという源流に学ぶ

Scrum Alliance Regional Gathering Tokyo 2013

--- 僕だってCoplienの話を聞きたいよん ---

今野 睦([email protected])

Page 2: Scrum alliance regional gathering tokyo 2013 pub

アジャイルコミュニティでも TPSコミュニティでも

無所属旧人

1

Page 3: Scrum alliance regional gathering tokyo 2013 pub

こんな人らしい

2

Page 4: Scrum alliance regional gathering tokyo 2013 pub

1990年代のとある開発チーム の一日

• ssssssssss

3

http://aokilab.kyoto-su.ac.jp/documents/SmalltalkSoftwareDevelopment/SAscii02.html より引用。

作業履歴

Page 5: Scrum alliance regional gathering tokyo 2013 pub

1990年代とは

4

• Java 1.0a 1994

• Scrum OOPSLA 1995

• UML 1.0 1997

•XP

•J2EE 1.2 1999

• Java 1.4 (Fix and Continue) 2002

• Java 6(リフレクション) 2006

Page 6: Scrum alliance regional gathering tokyo 2013 pub

スクラムの原点 (Scrum:It’s All About Common Sense*より)

5

* http://silab.fon.rs/index2.php?option=com_docman&task=doc_view&gid=238&Itemid=5 http://www.danube.com/docs/certifiedScrum/csm.pdf

ジェフ・サザーランド たちが、いろんな考えを取り入れて

Smalltalk で動作するフレームワークを作り

Smalltalkを取り去って「なんでも入る箱」にした。

Page 7: Scrum alliance regional gathering tokyo 2013 pub

古文書の読み解き

6

The New New Product Development Game(1986) http://jeffsutherland.com/ScrumPapers.pdf

•不安定な状態を保つ

•プロジェクトチームは自ら組織化する

•開発フェーズを重複させる

•マルチ学習

•柔らかなマネジメント

•学びを組織で共有する

Borland Quattro Pro Windows (1993) http://users.rcn.com/jcoplien/Patterns/Process/QPW/borland.html

•ひとりあたり週1000ステップ(C++)の生産性

•組織パターン

•朝会の概念

インクリメンタルとイテレーティブ

•ラウンドトリップ開発 booch、 Rumbaugh -RUP

• RUPからリバースを対象に?

タイムボックス

•プロトタイピング、RAD

Page 8: Scrum alliance regional gathering tokyo 2013 pub

アンドンを引けますか

7

活き活きと働いています

• 自働

ラインが止まります

• あんどん(多能工)

Page 9: Scrum alliance regional gathering tokyo 2013 pub

“The New New Product Development Game” の事例で紹介されている企業の共通点 –富士ゼロックス

–キヤノン –本田技研工業 –日本電気 –セイコーエプソン –ブラザー工業 –3M –ゼロックス –ヒューレット・パッカードなど

8

Page 10: Scrum alliance regional gathering tokyo 2013 pub

かんばん方式の実施の前提条件

9

• 個別注文生産などには向かない

生産に継続性、反復性がある

• サイクルタイムの遵守

生産の小ロット化、平準化

• 不良が多い工程には使えない

工程・品質の安定

Page 11: Scrum alliance regional gathering tokyo 2013 pub

TPSをIT分野でトヨタのように成功させた企業をご存知ですか – リーンソフトウェア開発の提唱者は、以下のように述べている*。

• 製造工程に適用されているリーンのプラクティスを、そのままソフトウェア開発に移植できない 。

• ソフトウェアを作り出す活動は「製造プロセス(レシピに従って料理をつくること)」ではなく、「開発プロセス(レシピの作成)」であって、試行錯誤を含む学習プロセスだからだ。

• また、具体的適用については、「あるチームには薬でも、それが別のチームにとっては毒となる」。どのツールからどのようなプラクティスを 導き出し、どの程度実践するかは状況に応じて行われるべきだ。

10

* Lean Software Development: An Agile Toolkit

Page 12: Scrum alliance regional gathering tokyo 2013 pub

リーンソフトウェア開発22のツール 1. ムダを認識する 2. バリューストリーム・マップ 3. フィードバック 4. イテレーション 5. 同期 6. 集合ベース開発 7. オプション思考 8. 最終責任時点 9. 意思決定 10. プルシステム 11. 待ち行列理論 12. 遅れのコスト 13. 自発的決定 14. モチベーション 15. リーダーシップ 16. 専門知識 17. 認知統一性 18. コンセプト統一性 19. リファクタリング 20. テスティング 21. 計測 22. 契約 11

Page 13: Scrum alliance regional gathering tokyo 2013 pub

こんな人でもあります

12

Page 14: Scrum alliance regional gathering tokyo 2013 pub

とあるスクラムマスターからの忠告

• Scrumを説くのにSmalltalkがどうのこうのと言っている輩は、 –現実と対峙する方法であるScrum、 –対峙する立場のマスターという認識ではなく、

– Scrumという方法がどこかにあって、それを適用するという考えに囚われている。

–そのような理解をしていると、外部の組織とチームとの間に立って、外部と対峙する役目はうまく果たせないでしょう。

13

Page 15: Scrum alliance regional gathering tokyo 2013 pub

パロ・アルト研究所の成果 • ALTO • WIMP (windows, icons, menus,

pointers) インタフェース • WYSIWYGテキストエディタ • InterPress(解像度非依存のグラフィカルページ記述言語。

PostScriptの先駆け)

• イーサネット • Smalltalk

14

Page 16: Scrum alliance regional gathering tokyo 2013 pub

Smalltalkとは • Dynabookのソフトウェア環境

– VM上で稼働させる • Xerox Palo Alto Research Cente Dynabookプロジェクト – Alan Kay – Dan Ingalls – L Peter Deutsch – Adele Goldberg – Ted Kaehler – Scott Wallace – Glen Krasner

15

Page 17: Scrum alliance regional gathering tokyo 2013 pub

Smalltalkを取り去るということ

処理系としてのSmalltalkは取り去り、Artは残す

16

開発環境(OS)

言語 Art Smalltalk

Page 18: Scrum alliance regional gathering tokyo 2013 pub

The Art and Science of Smalltalk SCIENCE ART 第1章 はじめにいくつかのアドバイス 第2章 オブジェクトとは 第3章 Smalltalkとは 第4章 Smalltalk言語 第5章 Smalltalk開発環境 第6章 Smalltalkクラスライブラリ 第7章 コレクションクラス 第8章 ディペンデンシィ機構 第9章 MVCアーキテクチャ 第10章 プラガビリティとアダプタ

第11章 Smalltalkのアートとは 第12章 Smalltalkによる設計 第13章 Smalltalkのコーディング 第14章 開発ツールの利用 第15章 Smalltalkコードのデバッグ 第16章 Smalltalkプロジェクトの管理

17

Page 19: Scrum alliance regional gathering tokyo 2013 pub

環境としてのSmalltalk

18

ブラウザといってもwebブラウザとは違う

すべての変更点が自動的にバージョン管理

Smalltalkのデバック

バイトコード

Page 20: Scrum alliance regional gathering tokyo 2013 pub

ブラウザといってもwebブラウザとは違う

19

Page 21: Scrum alliance regional gathering tokyo 2013 pub

すべての変更点が 自動的にバージョン管理

20

Page 22: Scrum alliance regional gathering tokyo 2013 pub

Smalltalkのデバック

21

Page 23: Scrum alliance regional gathering tokyo 2013 pub

バイトコード(イメージファイル)

22

Page 24: Scrum alliance regional gathering tokyo 2013 pub

言語としてのSmalltalk

23

Smalltalk のオブジェクトモデル

すべてのものはオブジェクト

すべてのオブジェクトはクラスのインスタン

継承の連鎖をたどってメソッド

探索

すべてのクラスにスーパークラ

すべてはメッセージ送信

Page 25: Scrum alliance regional gathering tokyo 2013 pub

すべてのものはオブジェクト • つまり、クラスもオブジェクト

– (1 to: 10). – Interval from: 1 to:10 by: 1. – (1/3)+(1/3)+(1/3)

• プロッククロージャ – 遅延評価、制御構造、カプセル化、再帰

– | red | red := [Transcript cr; show: '赤']. red value. – #('赤' '青' '黄' ) do: [:each | Transcript cr; show: each printString]. – result := a > b

• ifTrue:[ 'aはbよりが大きい' ] • ifFalse:[ 'aはbよりl小さいか等しい' ].

24

Page 26: Scrum alliance regional gathering tokyo 2013 pub

すべてのオブジェクトはクラスのインスタンス

25

クラスはオブジェクトということは、すべてのオブジェクトはクラスのインスタンス

したがって、クラスもまた、あるクラスのインスタンス

クラスをインスタンス化するクラスはメタクラス

• メタクラス

• クラスに関するメタプログラミングが行える

• リフレクション

• 文字列(クラス名)を使ってクラスを生成したり、 メソッド名の文字列を使ってメソ ッドを呼び出したりできる。

Page 27: Scrum alliance regional gathering tokyo 2013 pub

すべてのクラスには スーパークラスがある

26

メタクラス独自の振る舞い(一部メッセージをクラスへ リダイレクト)

通常のクラスの振る舞い(スーパークラスとしての振る舞い やクラスカテゴリ)

(抽象クラス) - クラスの振る舞い(メソッドのコンパ イルやカテゴリ管理)

クラスの最低限の振る舞い(コンパイルされたメソッドの保持や インスタンス生成)

インスタンス・クラスの別なく、オブジェクトとしての普遍的な振る舞 い Object

Behavior

ClassDescription

Class

Metaclass

Page 28: Scrum alliance regional gathering tokyo 2013 pub

すべてはメッセージ送信で

27

すべてのメッセージを無視するNULLオブジェクトを生成できる

必要なメッセージだけを処理するイベントハンドラを実装できる

受け取ったメッセージをフィールドに委譲し一種の多重継承を実現できる

(フィールドへの委譲を利用し、動的な継承を実現できる

すべてのオブジェクトに対し使用可能なProxyオブジェクトを生成できる

メッセージを遅延送信できる

Page 29: Scrum alliance regional gathering tokyo 2013 pub

継承の連鎖をたどって メソッド探索

28

Object

anEllipse

Morph

initialize defaultColor openInWorld fullPrintOn:

EllipseMorph

defaultColor

BorderedMorph initialize fullPrintOn:

メッセージ送信 継承 lookup

anEllipse openInWorld

② ③

Page 30: Scrum alliance regional gathering tokyo 2013 pub

失われたSmalltalk

29

• 汎化→特化

不可逆性

• オープンなソースコード

• クラスごとの例題

• Smalltalkベストプラクティス・パターン

• たとえば、

• イテレータに渡すブロックの引数には、each を使おう。

• HowではなくWhatを名前にしよう

残せなかったアート

Page 31: Scrum alliance regional gathering tokyo 2013 pub

とあるXBreed開発チームの一日

• ssssssssss

30

スプリント

スプリントバックログ

プロダクトバックログ

XPのプラクティス ×計画ゲーム ○短期リリース ○メタファ ○シンプルな設計 ○テストファースト ○リファクタリング △ペアプログラミング ○共同所有 ○継続的インテグレーション △40時間労働 ×オンサイトのユーザー ○コーディング規約

メンバ

マスタ

Page 32: Scrum alliance regional gathering tokyo 2013 pub

その他の源流 哲学者kuhn

知的創造プロセス

複雑系科学

人類学

システム力学

心理学

アメリカンフットボールのメタファ

31

Page 33: Scrum alliance regional gathering tokyo 2013 pub

まとめ トヨタ工場見学に最低3回、いきましょう

TPSのソフトウェア開発への導入についてはメアリーらに

Scrumは新しいものではない

XBreedとなる?

継続的改善

Page 34: Scrum alliance regional gathering tokyo 2013 pub

ご清聴ありがとうございます

33

• Amber Smalltalk – http://amber-lang.net/

• Smalltalkのオープンソース実装”Pharo” – http://www.pharo-project.org/home