プログラマとデザイナで時計を作るvisual studioハッカソン ~...

22
biac BluewaterSoft TDDの考え方を開発全体に応用してみよう! 2013/1/19 Visual Studio ハッカソン 1

Upload: yasuhiko-yamamoto

Post on 28-May-2015

1.303 views

Category:

Technology


3 download

DESCRIPTION

プログラマとデザイナで時計を作るVisual Studioハッカソン × TDDBC 大阪 for C# 2013/01/19 http://atnd.org/events/34779 http://atnd.org/events/34780

TRANSCRIPT

Page 1: プログラマとデザイナで時計を作るVisual studioハッカソン ~ TDDの考え方を開発全体に応用してみよう!

biacBluewaterSoft

TDDの考え方を開発全体に応用してみよう!

2013/1/19 Visual Studio ハッカソン 1

Page 2: プログラマとデザイナで時計を作るVisual studioハッカソン ~ TDDの考え方を開発全体に応用してみよう!

biac (山本 康彦)

BluewaterSoft http://www.bluewatersoft.jp/

略歴- 名古屋大学工学部(修士)- HONDA R&Dで自動車設計- 1994~ ソフトウェア業界- 2012~ BluewaterSoft

著書「速攻入門 C#」(2012/3) 技術評論社、共著「ソフトな彼女とハードな彼氏。」(2012/3) アジャイルマインドvol.1掲載

2013/1/19 Visual Studio ハッカソン 2

Page 3: プログラマとデザイナで時計を作るVisual studioハッカソン ~ TDDの考え方を開発全体に応用してみよう!

連載「C#でTDD入門」 CodeZine「WinRT/Metro Tips」 @IT .NET開発者中心

WebTDD.NET http://www.tdd-net.jp/biac の それさえもおそらくは幸せな日々@nifty

http://bluewatersoft.cocolog-nifty.com/blog/

Win8やWP8のアプリを作ってます

2013/1/19 Visual Studio ハッカソン 3

Page 4: プログラマとデザイナで時計を作るVisual studioハッカソン ~ TDDの考え方を開発全体に応用してみよう!

2013/1/19 Visual Studio ハッカソン 4

Claudia Clock© HATSUNE, Akira

Leotard Clock© Pie Dey

Page 5: プログラマとデザイナで時計を作るVisual studioハッカソン ~ TDDの考え方を開発全体に応用してみよう!

2013/1/19 Visual Studio ハッカソン 5

Clover Clock© Kimamano Yuu, Inc.

ミク時計© UsusWin8AppsProjects

Page 6: プログラマとデザイナで時計を作るVisual studioハッカソン ~ TDDの考え方を開発全体に応用してみよう!

2013/1/19 Visual Studio ハッカソン 6

BarbarClock© tkinugaw

ClockCompass© www.duruofei.com

Page 7: プログラマとデザイナで時計を作るVisual studioハッカソン ~ TDDの考え方を開発全体に応用してみよう!

2013/1/19 Visual Studio ハッカソン 7

Hover Clock 3D© Xoanan Industries, LLC.

My 3D Clock© Axilesoft

Page 8: プログラマとデザイナで時計を作るVisual studioハッカソン ~ TDDの考え方を開発全体に応用してみよう!

…と、その前に。

プログラムの作り方 (開発プロセス) について、おさらいしておきましょう。

2013/1/19 Visual Studio ハッカソン 8

Page 9: プログラマとデザイナで時計を作るVisual studioハッカソン ~ TDDの考え方を開発全体に応用してみよう!

スペック

決定

•外観

•機能1、機能2、・・・

制作

•外観 (画像制作、プログラミング)

•機能1プログラミング、機能2プログラミング、・・・

検証

•外観

•機能1、機能2、・・・

2013/1/19 Visual Studio ハッカソン 9

完成

何を作るか?完璧に決める

決めたとおりにひたすら作る

最初に決めたとおりに出来たか?

はっきり言って、このやり方はクリエイティブじゃない。・途中で思いついたアイデア → 却下!・飽きる。テンションを維持できない。・1発で最高のモノが出来上がる!?

Page 10: プログラマとデザイナで時計を作るVisual studioハッカソン ~ TDDの考え方を開発全体に応用してみよう!

Test Driven Development テスト駆動開発= テストファースト + リファクタリング

テストファースト失敗する自動化されたテストを書く ⇒ 新しいコードを書いてパスさせる ⇒

リファクタリングAll Greenを維持したまま改良 ⇒

2013/1/19 Visual Studio ハッカソン 10

Page 11: プログラマとデザイナで時計を作るVisual studioハッカソン ~ TDDの考え方を開発全体に応用してみよう!

スペック

決定

• テストケース1、テストケース2、テストケース3

制作• コーディング、 コーディング、 コーディング

検証• 自動テスト1、 自動テスト2、 自動テスト3、

2013/1/19 Visual Studio ハッカソン 11

完成

ちょっとずつ完成させる・テストケース(スペックの例示)を1つ書く・そのテストケースをパスするだけのコードを書く・新しいテストケースが考え出せなくなったら、完成

Page 12: プログラマとデザイナで時計を作るVisual studioハッカソン ~ TDDの考え方を開発全体に応用してみよう!

ハードウェアの開発

開発者のアウトプット=図面

試作 (開発中の図面で製造)コストも時間も掛かる

完成品のカタチにならないとテストしにくい

試作回数を減らしたい!!かわりに、計画やレビューをきっちりやるぜ!

ソフトウェアの開発

開発者のアウトプット=ソースコード

試作 (コンパイル/ビルド)コストも時間もほぼゼロ

機能ごとに作ってテストが可能、自動化も容易

試作回数増、ウェルカム!!走りながら考えたっていいじゃないか!

2013/1/19 Visual Studio ハッカソン 12

Page 13: プログラマとデザイナで時計を作るVisual studioハッカソン ~ TDDの考え方を開発全体に応用してみよう!

スペック

決定

•外観、 機能1、 機能2、 ・・・、追加機能

制作•外観、 機能1、 機能2、 ・・・、追加機能

検証•外観、 機能1、 機能2、 ・・・、追加機能

2013/1/19 Visual Studio ハッカソン 13

i&i : インクリメンタル & イテレーティブ・途中で思いついたアイデア → 取り込みやすい・飽きない(飽きるヒマが無いw)。1イテレーション=2週間前後・1発で最高のモノが出来上がったりするはずないと分かっている。

Page 14: プログラマとデザイナで時計を作るVisual studioハッカソン ~ TDDの考え方を開発全体に応用してみよう!

ウソです! (wやっぱり最初に、全体の構想を考えます。

キッチリ考えるのは、そのイテレーションに入ってから。

そういういわば「ハイブリッド」なやり方も i&i と呼んでいます。

2013/1/19 Visual Studio ハッカソン 14

ついでに言っておくと、

i & i + 顧客主導 = アジャイル

Page 15: プログラマとデザイナで時計を作るVisual studioハッカソン ~ TDDの考え方を開発全体に応用してみよう!

ソフトウェア開発の特性:試作コスト=ほぼゼロ、テストの自動化も容易

⇒ インクリメンタル&イテレーティブ可能

テストファーストは、コーディングレベルの i&i だと言える。

2013/1/19 Visual Studio ハッカソン 15

Page 16: プログラマとデザイナで時計を作るVisual studioハッカソン ~ TDDの考え方を開発全体に応用してみよう!

インクリメンタル&イテレーティブ (i&i) を意識してみよう

最初に全体の構想と、機能の洗い出し

個々の機能を実装するときに、あらためてキチンと打ち合わせをする。このときは、ゴールを明確に

当初の予定とは違うことをやりたくなるはず! それが当たり前

2013/1/19 Visual Studio ハッカソン 16

Page 17: プログラマとデザイナで時計を作るVisual studioハッカソン ~ TDDの考え方を開発全体に応用してみよう!

アイデアソンで全体の構想を決める

【デザイナー】 外観、機能を決定する

【開発者】機能の実現可能性を見積もる※ ハッカソンの時間内に完成できそう?

2013/1/19 Visual Studio ハッカソン 17

開発者の意見を参考に…

細かいことは後回し、と言ったけど…。開発者は、実現可能性の判断に必要なことは聞き出すべし!たとえば「秒針が動く」でも、「ス~っと動く」か「カチ、コチと動く」かでアーキテクチャが変わるぞ!!

Page 18: プログラマとデザイナで時計を作るVisual studioハッカソン ~ TDDの考え方を開発全体に応用してみよう!

ハッカソン開始: 最初のイテレーション計画

【デザイナー】・最初に開発してもらう機能を選ぶ・自分の作業の段取りも考える

【開発者】・もしも機能の開発順序に制約があるなら、説明する・開発中に画像が必要になるタイミングがあるなら、説明する

2013/1/19 Visual Studio ハッカソン 18

Page 19: プログラマとデザイナで時計を作るVisual studioハッカソン ~ TDDの考え方を開発全体に応用してみよう!

イテレーション開始

【デザイナー】このイテレーションで作る機能を説明する (場合によっては変更する)

【開発者】実装できると確信できるまで、機能の聞き取りをする。ゴールも明確に。

2013/1/19 Visual Studio ハッカソン 19

この最初の打ち合わせの時に、「デザイナーの作業中に、機能に関する質問をしてもいいかどうか」も、決めてください。OKなら、「だいたい分かった♪」で作り始めても良いのですが…。デザイナーもプログラマーも、多くはフローを断ち切られるとガックリ生産性が落ちる人種なのです。

Page 20: プログラマとデザイナで時計を作るVisual studioハッカソン ~ TDDの考え方を開発全体に応用してみよう!

どうぞ遠慮なく訊いてください

2013/1/19 Visual Studio ハッカソン 20

全体@biac

TDD@irof @datsuns

ペアプロ@daiksy

C#@moririring @Posaune

Page 21: プログラマとデザイナで時計を作るVisual studioハッカソン ~ TDDの考え方を開発全体に応用してみよう!

2013/1/19 Visual Studio ハッカソン 21

本日のメインディッシュは、コレ♪開発プロセスだのTDDだのは、 オマケだからねっ!!

Page 22: プログラマとデザイナで時計を作るVisual studioハッカソン ~ TDDの考え方を開発全体に応用してみよう!

TDDの考え方を開発全体に応用してみよう!

2013/1/19 Visual Studio ハッカソン 22