108
ソフトウェア開発の 現場風景 (株) 永和システムマネジメント サービスプロバイディング事業部 アジャイルグループ 伊藤 浩一 2012.01.13 (Fri) 20号館5階 名古屋工業大学 コミュニケーションルーム オブジェクト指向勉強会

Scenes of Software Development

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Scenes of Software Development

ソフトウェア開発の現場風景

(株) 永和システムマネジメントサービスプロバイディング事業部

アジャイルグループ伊藤 浩一

2012.01.13 (Fri)20号館5階名古屋工業大学コミュニケーションルーム

オブジェクト指向勉強会

Page 2: Scenes of Software Development

御礼

Page 3: Scenes of Software Development
Page 4: Scenes of Software Development

Copyright (c) 2011 Eiwa System Management, Inc.

私たちは「お客さまに価値を提供し続けるシステム」を構築します。お客様の環境やビジネスの変化に適応するシステムを、お客さまと一緒に育てていきます。私たちは、ソフトウェア開発のプロフェッショナルとしての誠実な態度と、アジャイル開発のアプローチを通じてこれを達成します。そして、そのための手段としてオブジェクト指向スクリプト言語Rubyが有効だと信じて行動しています。

永和システムマネジメントサービスプロバイディング事業部について

要求  R(t)システム  S(t)

チーム(t)R(t) S(t)

Δ

Δ t

不明確かつ不安定な要求

Page 5: Scenes of Software Development

Copyright (c) 2011 Eiwa System Management, Inc.

投資効果のある、ちゃんと動くソフトウェアを、期待される期間内に提供し、それを維持・変更し続けられるベンダであり、ソフトウェアは、人が人のために作っているというシステム開発を実現します。

私たちのミッション

Page 6: Scenes of Software Development

Copyright (c) 2011 Eiwa System Management, Inc.

0

2

4

6

8

10

0 6 12 18 24 30

人数

期間 (月)

Ruby x Agileの実績

decoblog.ne.jp

c-team.jp

Page 7: Scenes of Software Development

Copyright (c) 2011 Eiwa System Management, Inc.

適用分野

BtoCサービス52%業務システム

31%

R&D17%

Page 8: Scenes of Software Development

Copyright (c) 2011 Eiwa System Management, Inc.

社員の活動書籍

コミュニティオブラブ日本XPユーザグループ日本Rubyの会 Asakusa.rb

Page 9: Scenes of Software Development

自己紹介•プログラマ兼現場リーダー•たまに講演、まれに執筆•XPやオブジェクト指向で人生が曲がって2004年から現職

•好きなオブジェクト指向関係の書籍は『アジャイルソフトウェア開発の奥義』

Page 10: Scenes of Software Development

私の関心事

Page 11: Scenes of Software Development

ソフトウェア開発とは何か

Page 12: Scenes of Software Development

ソフトウェアは人が人のために作るもの

―Kenji Hiranabe

Page 13: Scenes of Software Development

本日はよろしくお願いします

Page 14: Scenes of Software Development

本編

Page 15: Scenes of Software Development

親兄弟にも説明の難しいソフトウェア開発の仕事について話します。今回はソフトウェア開発の現場で、私の目に届く範囲の開発者が実践していることや、私の身の回りで起きていることを題材に話を進めたいと考えています。標本となるプロジェクトはアジャイルと言われる開発手法を用いた事例から引用します。特に少人数での開発の進め方に対して、何かしら持ち帰って頂ける話にできればと思います。

概要

Page 16: Scenes of Software Development

個人とチームの話

Page 17: Scenes of Software Development

お品書き

•本編における少人数開発•現場の一日•現場の一週間•いち技術者として

Page 18: Scenes of Software Development

お品書き

•本編における少人数開発•現場の一日•現場の一週間•いち技術者として

Page 19: Scenes of Software Development

現場

Page 20: Scenes of Software Development

開発風景

Page 21: Scenes of Software Development

http://www.slideshare.net/t_wada/the-only-one-big-thing-every-programmer-should-know/58だいたい2~4人からの規模

Page 22: Scenes of Software Development

プロジェクト別

Page 23: Scenes of Software Development

プロジェクト単位で会話がしやすいように座席配置

座席の配置

Page 24: Scenes of Software Development

2~4人?

Page 25: Scenes of Software Development

プロジェクトにはステークホルダーがいっぱい

Page 26: Scenes of Software Development

業務

○○に期待

サービスインフラ提供

ご近所さん

Page 27: Scenes of Software Development

業務

○○に期待

サービスインフラ提供

利害関係別

Page 28: Scenes of Software Development

業務

○○に期待

サービスインフラ提供

ここ

話の中心

Page 29: Scenes of Software Development

本編における少人数開発•同一場所の開発体制2~4人•顧客や他社ベンダーなどを含めると見た目以上の要員が関わる

•東京都心が中心だが、プロジェクトによって中部、北陸、海外に分散してのリモート開発

Page 30: Scenes of Software Development

お品書き

•本編における少人数開発•現場の一日•現場の一週間•いち技術者として

Page 31: Scenes of Software Development

現場の一日

Page 32: Scenes of Software Development

現場の活動例朝会

夕会

プログラミング

ディスカッション

15%

5%

25%

5%

40%

10%

昼休 午後夕会 その他朝会 午前

10:00

18:00

Page 33: Scenes of Software Development

チーム開発の一日は朝会ではじまる

Page 34: Scenes of Software Development

朝会

Page 35: Scenes of Software Development

•デイリースタンドアップ•2人~4人で5分~10分くらい•昨日の行ったこと、今日行うこと、そして、問題点を共有する

•ありのままを、正直に伝える

朝会

Page 36: Scenes of Software Development

•簡単なアドバイスで解決できる問題であれば、その場で解決

•大きな問題で時間がかかる議論が必要であれば、別途の場となる分科会を設ける

•朝会自体はライトウェイトに

問題が出た!

Page 37: Scenes of Software Development

問題が出ない!?•本当に問題はないの?•プロジェクトは本質的に火事•メンバーは仕事中ぼやいていないか?

•あなたにとって小さな問題がチームにとって大きな問題かも

Page 38: Scenes of Software Development

プログラミング

Page 39: Scenes of Software Development

あなたならどちらを選ぶ?

•A)年末の冬休みに緊急障害が発生し、真夜中に1メソッド2000行のCodeの解読に頭を痛め「ひゃはー!これはひどい、Codeだぜ!」と思った瞬間

•B)自分よりできる奴が書いたコードを読んで「あ!こんな記述できるんだ。こりゃCoolだぜ!」と思った瞬間

http://patterns00-haru01.heroku.com/#57

プログラマーがコードリーディングしている時

Page 40: Scenes of Software Development

動くきれいなコードを目指す

Page 41: Scenes of Software Development

「静的解析とはつまりソースコードの解析だ。そしてソースコードの解析とは名前の調査である。ファイル名・関数名・変数名・型名・メンバ名など、プログラムは名前のかたまりだ。」

ものには、すべて名前がある

-Rubyソースコード完全解説 (青木 峰郎)

Page 42: Scenes of Software Development

名前重要

Page 43: Scenes of Software Development

―Takuto Wada (t-wada)http://www.slideshare.net/t_wada/the-only-one-big-thing-every-programmer-should-know/58

Page 44: Scenes of Software Development

RSpecdescribe Array, "when empty" do before do @empty_array = [] end

it "should be empty" do @empty_array.should be_empty endend

http://jp.rubyist.net/magazine/?0021-Rspec編注: 現在の RSpec ではコマンド名が spec から rspecになっています

Page 45: Scenes of Software Development

t-wada先生の写経術

Page 46: Scenes of Software Development

継続は力なり

Page 47: Scenes of Software Development

チームのインフラ

Page 48: Scenes of Software Development

(D)SCM•技術者の基礎技術•私の系譜は CVS→SVN→Git•ローカルからリポジトリにコミットすることで個人のコードからチームのコードになる

•プロジェクトの歴史に名を残す責任

Page 49: Scenes of Software Development

最近の動向

Page 50: Scenes of Software Development
Page 51: Scenes of Software Development
Page 52: Scenes of Software Development

自動化•繰り返し発生するコンピュータを使った作業をプログラミング

•例えばビルド、テスト、アセンブリ、デプロイなどは定型作業

•誰でもオペレーションミスなく同じようにコマンド実行

Page 53: Scenes of Software Development

コンピュータの仕事と人の仕事の住み分け

Page 54: Scenes of Software Development

継続的インテグレーション•リポジトリに変更を補足して、ビルド、テスティングを実行

•ビルド結果を IRC やメール等で通知

•ビルドを壊したことをいち早く見つけて小さい差分のうちに対処

Page 55: Scenes of Software Development

http://speakerdeck.com/u/kenchan/p/devlove201112?slide=34詳しくは、リンク元の @kenchan による『DevLOVE201112 ビルドをだいじに』を参照してください

Page 56: Scenes of Software Development

ホワイトボード

Page 57: Scenes of Software Development

会話風景

Page 58: Scenes of Software Development

何を話しているの?•困った時はメンバーに相談•仕様の理解の意識合わせ•設計方針の議論•利用技術の相談

Page 60: Scenes of Software Development

http://www.slideshare.net/t_wada/the-only-one-big-thing-every-programmer-should-know/58

共通項を探せ⦆!

Page 61: Scenes of Software Development

http://www.slideshare.net/t_wada/the-only-one-big-thing-every-programmer-should-know/58

同じ物を見る

Page 62: Scenes of Software Development

•触媒 (PC、壁、ホワイトボード) を使って問題を見える化する

Problem vs UsYou vs Me

問題の見える化

That’s You!きみ、

きちんとお互いのイメージが合った状態で

話してる?

その作りだと○○の時の振る舞いが足りなくな

いですか

いま考えている設計を書き出してみると、こんな感じ

なのね

Page 63: Scenes of Software Development

Problem vs Us•個人についてではなく問題に対して意見をする

•You vs Me ではなく、Problem vs Us の形にする

Page 64: Scenes of Software Development

情報の伝達

鮮度の高い情報は時間が過ぎると乖離する

Page 65: Scenes of Software Development

報連相は社会人の基本

人生の師匠の言葉

Page 66: Scenes of Software Development

情報伝達の重要性•ステークホルダーがいっぱい•壮大な伝言ゲーム•正しい情報を正しく伝える•間違った情報に対して正しく作ってしまうと、顧客が欲しいものを提供できない

Page 67: Scenes of Software Development

•メーリングリストで時々の情報の発信をする (スレッド)

•Wikiでまとめ情報を参照できるようにする (スタック)

メールとWiki

Page 68: Scenes of Software Development

早めにズレを修正時間の経過▶

情報の同期は頻繁にズレはどこまでも時間経過

勘違い、忘れた、欲しい物の内容や優先順が変わった、連絡がないとそもそも何を考えしてるのか

分からず不安

信頼関係の低下▶

Page 69: Scenes of Software Development

相手に分かる言葉で•文章に不安があれば、メンバー間でのレビューは有効な手段

•大きな質疑はキャッチボールで•“伝える事柄と伝える方法は車の両輪だと考えること” と達人プログラマーにもあるよ

Page 70: Scenes of Software Development

こんな大人はやだ•「言った」「言ってない」問題•大人として恥ずかしい•伝えるための努力をしよう

Page 71: Scenes of Software Development

お品書き

•本編における少人数開発•現場の一日•現場の一週間•いち技術者として

Page 72: Scenes of Software Development

Copyright (c) 2011 Eiwa System Management, Inc.

イテレーション (1週間) の流れ要求

リリース可能なソフトウェア

Ship It!

次のイテレーションへ

内部リリース

ふりかえり KPTベロシティ

バックログ

タスクプログラミング

機能バグデータ移行ドキュメント環境構築性能ジョーカー

受入テストを書く 受入テストを

する

完了基準

TDD CI

仕様の確認 見積り スパイク

ふりかえりやバックログの優先度付けなどはお客さまにご協力いただきながら進めていきます。

Page 73: Scenes of Software Development

開発打ち合わせ

Page 74: Scenes of Software Development

開発打ち合わせ•デモとフィードバック•要望のヒアリング•作業の完了条件を共有する•問題点、課題点の共有•全体スケジュールの確認

これらは一例

Page 75: Scenes of Software Development

見積りと計画づくり

Page 76: Scenes of Software Development

見積りは計画を立てるための視点

Page 77: Scenes of Software Development

見積りと計画づくり•開発メンバー全員で、•作業を洗い出して、•作業が終わるのにどれだけかかるかを見積って、

•優先順位をつけてならべる

Page 78: Scenes of Software Development

プランニングポーカー

Page 79: Scenes of Software Development

数字が合わない!•ゲームではなく見積り•数字合わせではない•どうなればその作業が終わるかの認識が合っているか話し合おう

•まわりが見落としている作業にきみだけが気づいているかも

Page 80: Scenes of Software Development

Pivotal Trackerwww.pivotaltracker.com

Page 81: Scenes of Software Development

変化ヲ抱擁セヨ

Page 82: Scenes of Software Development

ふりかえり

Page 83: Scenes of Software Development

Problem vs Us•個々での気づきや問題を共有•原則チーム全員が参加する•反省会ではなくふりかえり•過去から学んで、いまの状況を確認して、次への改善行動に繋げる

Page 84: Scenes of Software Development

関連した他の

Page 85: Scenes of Software Development
Page 86: Scenes of Software Development

なぜチームか?

Page 87: Scenes of Software Development

何事もひとりでは成し遂げられない

Page 88: Scenes of Software Development

敬意

Page 89: Scenes of Software Development

まだ時間は大丈夫ですね?

Page 90: Scenes of Software Development

お品書き

•本編における少人数開発•現場の一日•現場の一週間•いち技術者として

Page 91: Scenes of Software Development

どんな人と仕事をしたいですか?

Page 92: Scenes of Software Development

人に注目する•同僚•プロジェクトメンバー•コミュニティ•プロダクトやサービスの製作者•興味ある技術発信をしている人

Page 93: Scenes of Software Development

発信http://ja.wikipedia.org/wiki/ファイル:2002東京タワー塗装作業中.jpg

Page 94: Scenes of Software Development

外部発信•Web日記

•勉強会•執筆•ソフトウェアの公開、パッチ•コミュニティ

Page 95: Scenes of Software Development

Web日記

Page 96: Scenes of Software Development

ソースコード

Page 97: Scenes of Software Development

情報発信•アウトプットを出すことで整理できる

•パブリックな職務経歴書•誰(どんな人)と仕事をしたいか•仕事をしたいと思われるか•中の人の顔が見える組織

Page 98: Scenes of Software Development

誰と重要by Ryo Amano

Page 99: Scenes of Software Development

何ができれば一人前と呼ばれるでしょうか?

Page 100: Scenes of Software Development

専門職

Page 101: Scenes of Software Development

少人数開発と多能工

Page 102: Scenes of Software Development

現場技術の一部•Linux•ソースコードの読み書き•文書の読み書き•見積りと計画作り•(D)SCM、テスト、自動化

まだまだあるぞ!

Page 103: Scenes of Software Development

一朝一夕には成せない

Page 104: Scenes of Software Development

継続は力なり

Page 105: Scenes of Software Development

1.自らの技術に関心を持つこと2.あなたの仕事について考えること!

1.君は学ぶことが心から好きだ

2.君はソフトウェアのことを大切に思っている

アジャイルサムライJonathan Rasmusson

達人プログラマーDavid Thomas, Andrew Hunt

名著が語る重要なこと

Page 106: Scenes of Software Development

予習復習研究はこちら

http://www.amazon.co.jp/dp/4774134538

受託開発の極意

アジャイルサムライ

http://www.amazon.co.jp/dp/4274068560

達人プログラマー

http://www.amazon.co.jp/dp/4894712741David Thomas, Andrew Hunt

岡島 幸男

西村直人, 角谷信太郎(監訳)近藤修平, 角掛拓未(訳)

Jonathan Rasmusson

Page 107: Scenes of Software Development

誇りと希望

Page 108: Scenes of Software Development