みゆっき☆think#10 チーム開発〜脱ぼっちマインド〜

101
チーム 開発 ~脱ぼっちマインド~ 2011-12-02第10回みゆっき☆Think チーム 開発 ~脱ぼっちマインド~ ~脱ぼっちマインド~

Upload: akitsukada

Post on 24-May-2015

9.788 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜

チーム開発

~脱ぼっちマインド~2011-12-02 第10回 みゆっき☆Think

チーム開発

~脱ぼっちマインド~~脱ぼっちマインド~

Page 2: みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜

こんばんは

Page 3: みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜

塚つかだあきひろ

・ニコニコ生放送・PHP/Ruby・TDD/アジャイル・レガシーコード改善委員会

@akitsukada

Page 4: みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜
Page 5: みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜
Page 6: みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜

今日やること

Page 7: みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜

今日やることプログラマ視点から

脱ぼっちマインド

プログラマ視点から

脱ぼっちマインド を身につける

Page 8: みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜

今日やらないこと

チームマネジメントアジャイル手法

チームマネジメントやアジャイル手法 的なこと

Page 9: みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜

【脱ぼっちマインド】 (だつ-) [名詞]

日々の開発において常に他人(チームメンバー)を意識すること。また その精神。

【脱ぼっちマインド】 (だつ-) [名詞]

Page 10: みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜

ぼっち

ぼっち※イメージです

Page 11: みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜

ぼっち

ぼっち

脱脱脱

※イメージです

脱 ぼ っ ち脱 ぼ っ ち

Page 12: みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜

( ゚∀゚)o彡゚脱ぼっち!脱ぼっち!

 

Page 13: みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜

( ゚∀゚)o彡゚脱ぼっち!脱ぼっち!

な3つのポイント

Page 14: みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜

via @kwappa

Page 15: みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜

via @kwappa

脱ぼっちバージョン管理

Page 16: みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜

via @kwappa

脱ぼっちコーディング

脱ぼっちバージョン管理

Page 17: みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜

via @kwappa

脱ぼっちコーディング

脱ぼっちバージョン管理

脱ぼっち テスト

Page 18: みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜

【共通ポイント】

自分の意図が常に他人にも分かるようにしておくこと

Page 19: みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜

【共通ポイント】

自分の意図が常に他人にも分かるようにしておくこと*3ヶ月後の自分は他人

Page 20: みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜

脱ぼっちバージョン管理

Page 21: みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜

Git等VCSをチームで使う

Page 22: みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜

(・3・)

...thinking...

Page 23: みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜

!(゚∀゚)

Page 24: みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜

!(゚∀゚)

・コミットログの内容・適切なコミット粒度・ヒストリーの整理  ...etc

Page 25: みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜

コミットログの内容

Page 26: みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜

コミットログの内容

Page 27: みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜

コミットログの内容

Page 28: みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜

コミットログの内容

見ればわかる(^^;

Page 29: みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜

コミットログの内容

コードの変更理由を他人が読んで分かるように。

Page 30: みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜

コミットログの内容

コードの変更理由を他人が読んで分かるように。

Page 31: みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜

脱ぼっちコーディング

Page 32: みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜

分かりやすいことwhat,how,why

Page 33: みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜

what

Page 34: みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜

名前重要

Page 35: みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜

stackを実装してみる#tddbc@dwango

Page 36: みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜
Page 37: みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜
Page 38: みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜
Page 39: みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜
Page 40: みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜
Page 41: みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜
Page 42: みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜
Page 43: みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜
Page 44: みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜

名前重要

Page 45: みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜

how

Page 46: みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜

シンプルに

Page 47: みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜
Page 48: みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜

・(←よりもっと)

 深いネスト・長すぎる節・何もしない 例外処理・複雑な 分岐条件・意味不明な マジックナンバー

Page 49: みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜

これで意味が

分かる方が変

Page 50: みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜

  ( ^ω^)…  (⊃⊂)

Page 52: みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜
Page 53: みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜

翻訳コメント

Page 54: みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜

翻訳コメントも

Page 55: みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜

( ^ω^)翻訳コメントで処理の説明するよりコメントが要らないようにコードを書くお

( ^ω^)翻訳コメントで処理の説明するよりコメントが要らないようにコードを書くお

Page 56: みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜

シンプルに

Page 57: みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜
Page 58: みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜

why

Page 59: みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜

意図を書く

Page 60: みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜

howwhatは

見れば分かる

Page 61: みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜
Page 62: みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜

Page 63: みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜

なぜそう書いたか

はわからない

Page 64: みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜

要件?制約?スキル?好み?

Page 65: みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜
Page 66: みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜
Page 67: みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜

whyこそコメントに書こう!

Page 68: みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜

「ここなんで こうなってるの?」「◯◯さんしか わかりませんよ」

Page 69: みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜

「ここなんで こうなってるの?」「◯◯さんしか わかりませんよ」⇨トラックナンバー ==1状態\(^o^)/

Page 70: みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜

意図を書く

Page 71: みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜
Page 72: みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜

脱ぼっちコーディング力

Upするには

Page 73: みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜

オススメ1物理的に脱ぼっちする=ペアプロ

Page 74: みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜

オススメ2読む

「リファクタリング」「ビューティフルコード」

とか好きなOSS

Page 75: みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜

オススメ3書く

ブログに書く、GitHubに上げる、

OSSに参加する

Page 76: みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜

分かりやすいことwhat,how,why

Page 77: みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜

脱ぼっち テスト

Page 78: みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜

テスト書いてますか

Page 79: みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜

今日から書こう

Page 80: みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜

テストの脱ぼっち効果

Page 81: みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜

テストの効果その1

Page 82: みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜

大規模なWebサービスのコア部分に機能を追加する。自分が作った箇所ではないので不安。しくったら数百万人のユーザに影響がある。金銭的損害も多大。

Page 83: みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜

::テストがないと…

Page 84: みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜

::テストがないと…自分が行った変更で既存の機能が壊れていないか心配で仕方ない。リリース日には祈るしかない。壊れてたら笑うしかない。いやたぶん笑えない。

Page 85: みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜

Edit & Pray ::テストがないと…自分が行った変更で既存の機能が壊れていないか心配で仕方ない。リリース日には祈るしかない。壊れてたら笑うしかない。いやたぶん笑えない。Edit & Pray

Page 86: みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜

Edit & Pray ::テストがないと…自分が行った変更で既存の機能が壊れていないか心配で仕方ない。リリース日には祈るしかない。壊れてたら笑うしかない。いやたぶん笑えない。Edit & Pray

Page 87: みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜

::テストがあれば::テストがあれば

Page 88: みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜

::テストがあれば常に関連するテストを実行し、機能が壊れていないことを確認しながら安心して作業ができる( ^ω^)

::テストがあれば常に関連するテストを実行し、機能が壊れていないことを確認しながら安心して作業ができる( ^ω^)

Page 89: みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜

Cover & Modify

::テストがあれば常に関連するテストを実行し、機能が壊れていないことを確認しながら安心して作業ができる( ^ω^)

::テストがあれば常に関連するテストを実行し、機能が壊れていないことを確認しながら安心して作業ができる( ^ω^)

Cover & Modify

Page 90: みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜

Cover & Modify

::テストがあれば常に関連するテストを実行し、機能が壊れていないことを確認しながら安心して作業ができる( ^ω^)

::テストがあれば常に関連するテストを実行し、機能が壊れていないことを確認しながら安心して作業ができる( ^ω^)

Cover & Modify

Page 91: みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜

GREENRED

Page 92: みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜

テストの効果その他

Page 93: みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜

・テストコードは信頼できる仕様書になる(=そのコードでやりたいことを表現できる)・チームの誰が書いてもVCSで共有して各自で実行できる・テストしやすいコード     ≒良いコード

Page 94: みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜

まとめ(^o^)

Page 95: みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜

【共通ポイント】

自分の意図が常に他人にも分かるようにしておくこと*3ヶ月後の自分は他人

Page 96: みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜

via @kwappa

コーディングwhat,how,

why

バージョン管理コミットログ

テストCover

&Modify

Page 97: みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜

宿題

Page 98: みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜

好きな言語でユニットテストを書いてみる。

Page 100: みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜

via @kwappa

脱ぼっちコーディング

脱ぼっちバージョン管理

脱ぼっち テスト

Page 101: みゆっき☆Think#10 チーム開発〜脱ぼっちマインド〜

via @kwappa

脱ぼっちコーディング

脱ぼっちバージョン管理

脱ぼっち テスト