プログラマとデザイナで時計を作るvisual studioハッカソン ~...
DESCRIPTION
プログラマとデザイナで時計を作るVisual Studioハッカソン × TDDBC 大阪 for C# 2013/01/19 http://atnd.org/events/34779 http://atnd.org/events/34780TRANSCRIPT
biacBluewaterSoft
TDDの考え方を開発全体に応用してみよう!
2013/1/19 Visual Studio ハッカソン 1
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
連載「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
2013/1/19 Visual Studio ハッカソン 4
Claudia Clock© HATSUNE, Akira
Leotard Clock© Pie Dey
2013/1/19 Visual Studio ハッカソン 5
Clover Clock© Kimamano Yuu, Inc.
ミク時計© UsusWin8AppsProjects
2013/1/19 Visual Studio ハッカソン 6
BarbarClock© tkinugaw
ClockCompass© www.duruofei.com
2013/1/19 Visual Studio ハッカソン 7
Hover Clock 3D© Xoanan Industries, LLC.
My 3D Clock© Axilesoft
…と、その前に。
プログラムの作り方 (開発プロセス) について、おさらいしておきましょう。
2013/1/19 Visual Studio ハッカソン 8
スペック
決定
•外観
•機能1、機能2、・・・
制作
•外観 (画像制作、プログラミング)
•機能1プログラミング、機能2プログラミング、・・・
検証
•外観
•機能1、機能2、・・・
2013/1/19 Visual Studio ハッカソン 9
完成
何を作るか?完璧に決める
決めたとおりにひたすら作る
最初に決めたとおりに出来たか?
はっきり言って、このやり方はクリエイティブじゃない。・途中で思いついたアイデア → 却下!・飽きる。テンションを維持できない。・1発で最高のモノが出来上がる!?
Test Driven Development テスト駆動開発= テストファースト + リファクタリング
テストファースト失敗する自動化されたテストを書く ⇒ 新しいコードを書いてパスさせる ⇒
リファクタリングAll Greenを維持したまま改良 ⇒
2013/1/19 Visual Studio ハッカソン 10
スペック
決定
• テストケース1、テストケース2、テストケース3
制作• コーディング、 コーディング、 コーディング
検証• 自動テスト1、 自動テスト2、 自動テスト3、
2013/1/19 Visual Studio ハッカソン 11
完成
ちょっとずつ完成させる・テストケース(スペックの例示)を1つ書く・そのテストケースをパスするだけのコードを書く・新しいテストケースが考え出せなくなったら、完成
ハードウェアの開発
開発者のアウトプット=図面
試作 (開発中の図面で製造)コストも時間も掛かる
完成品のカタチにならないとテストしにくい
試作回数を減らしたい!!かわりに、計画やレビューをきっちりやるぜ!
ソフトウェアの開発
開発者のアウトプット=ソースコード
試作 (コンパイル/ビルド)コストも時間もほぼゼロ
機能ごとに作ってテストが可能、自動化も容易
試作回数増、ウェルカム!!走りながら考えたっていいじゃないか!
2013/1/19 Visual Studio ハッカソン 12
スペック
決定
•外観、 機能1、 機能2、 ・・・、追加機能
制作•外観、 機能1、 機能2、 ・・・、追加機能
検証•外観、 機能1、 機能2、 ・・・、追加機能
2013/1/19 Visual Studio ハッカソン 13
i&i : インクリメンタル & イテレーティブ・途中で思いついたアイデア → 取り込みやすい・飽きない(飽きるヒマが無いw)。1イテレーション=2週間前後・1発で最高のモノが出来上がったりするはずないと分かっている。
ウソです! (wやっぱり最初に、全体の構想を考えます。
キッチリ考えるのは、そのイテレーションに入ってから。
そういういわば「ハイブリッド」なやり方も i&i と呼んでいます。
2013/1/19 Visual Studio ハッカソン 14
ついでに言っておくと、
i & i + 顧客主導 = アジャイル
ソフトウェア開発の特性:試作コスト=ほぼゼロ、テストの自動化も容易
⇒ インクリメンタル&イテレーティブ可能
テストファーストは、コーディングレベルの i&i だと言える。
2013/1/19 Visual Studio ハッカソン 15
インクリメンタル&イテレーティブ (i&i) を意識してみよう
最初に全体の構想と、機能の洗い出し
個々の機能を実装するときに、あらためてキチンと打ち合わせをする。このときは、ゴールを明確に
当初の予定とは違うことをやりたくなるはず! それが当たり前
2013/1/19 Visual Studio ハッカソン 16
アイデアソンで全体の構想を決める
【デザイナー】 外観、機能を決定する
【開発者】機能の実現可能性を見積もる※ ハッカソンの時間内に完成できそう?
2013/1/19 Visual Studio ハッカソン 17
開発者の意見を参考に…
細かいことは後回し、と言ったけど…。開発者は、実現可能性の判断に必要なことは聞き出すべし!たとえば「秒針が動く」でも、「ス~っと動く」か「カチ、コチと動く」かでアーキテクチャが変わるぞ!!
ハッカソン開始: 最初のイテレーション計画
【デザイナー】・最初に開発してもらう機能を選ぶ・自分の作業の段取りも考える
【開発者】・もしも機能の開発順序に制約があるなら、説明する・開発中に画像が必要になるタイミングがあるなら、説明する
2013/1/19 Visual Studio ハッカソン 18
イテレーション開始
【デザイナー】このイテレーションで作る機能を説明する (場合によっては変更する)
【開発者】実装できると確信できるまで、機能の聞き取りをする。ゴールも明確に。
2013/1/19 Visual Studio ハッカソン 19
この最初の打ち合わせの時に、「デザイナーの作業中に、機能に関する質問をしてもいいかどうか」も、決めてください。OKなら、「だいたい分かった♪」で作り始めても良いのですが…。デザイナーもプログラマーも、多くはフローを断ち切られるとガックリ生産性が落ちる人種なのです。
どうぞ遠慮なく訊いてください
2013/1/19 Visual Studio ハッカソン 20
全体@biac
TDD@irof @datsuns
ペアプロ@daiksy
C#@moririring @Posaune
2013/1/19 Visual Studio ハッカソン 21
本日のメインディッシュは、コレ♪開発プロセスだのTDDだのは、 オマケだからねっ!!
TDDの考え方を開発全体に応用してみよう!
2013/1/19 Visual Studio ハッカソン 22