エフスタ in aizu...

189
「やっててよかったこの仕事」 と言えるようにやってきたこと 株式会社セカイネット 河野康隆

Upload: -

Post on 11-Jul-2015

633 views

Category:

Technology


4 download

TRANSCRIPT

Page 1: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

「やっててよかったこの仕事」 と言えるようにやってきたこと

株式会社セカイネット 河野康隆

Page 2: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

自己紹介• 名前:河野康隆(こうのやすたか)

• 株式会社セカイネット

• 主にGoogle App Engine / Javaでの

開発をしています。

• Facebook: kouno.yasutaka

Page 3: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

略歴

• 18歳まで福島県郡山市で過ごしてました。

• 27歳まで東京でSI系の会社に所属

• ~現在 仙台で起業

Page 4: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

AGENDA1. 初日に発覚した危険な兆候

2. チームをひっくり返す

3. 短納期で開発するために

4. まとめ

Page 5: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

注意事項• 他の方はマジメなお話の様ですので、すこし砕けた感じにしました。

• フィクションです。

• あえて悪役が登場します。

• 写真の人物はイメージです。

• 笑って聞いていただければ幸いです。

Page 6: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

1. 初日に発覚した危険な兆候

Page 7: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

2013年 10月 プログラマの募集が来る

Page 8: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

プロジェクトについて• 地震等の災害発生時に、職員の安否状況を報告・確認するためのサービスの作成

• マルチテナント・Webサービスとして提供する

• 災害時の急激なアクセス増加に対応するため、スケールアウトして分散処理を行う必要がある

Page 9: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

面談に行ってみよう

Page 10: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

プロジェクト参入時の前情報• Java EEによるWebシステムの開発 • 開発リーダーはJava EEの経験が豊富

• クラスタ構成の設計・製造ができる • 既存メンバーもJavaのスキルがある • 基本設計はほぼ終了している • 工数は25人月程度の見込み

Page 11: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

よくあるプロジェクトみたいだし問題無いだろう

Page 12: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

いざ、参入!

※ 写真の人物はイメージです。

Page 13: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

しかし、早くも初日に発覚する真事実

※ 写真の人物はイメージです。

Page 14: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

参入後に発覚した事実:1

基本設計はほぼ終了している ← はずだったが

実質は要件定義書(5p)のみ

Page 15: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

参入後に発覚した事実:2開発リーダーはJava EEの経験が豊富← はずだったが

以前にJavaでどんなシステム作ってたんですか?

……まぁ、いろいろと

フレームワークとか何使ってました?

……特には

Java書けます?

書いたりはしないかな※ 写真の人物はイメージです。

チーム・リーダー

Page 16: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

なんか怪しい

Page 17: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

参入後に発覚した事実:2既存メンバーもJavaスキルがある ← はずだったが

COBOL一筋20年!

組み込みのCを数年

COBOLとVBを少し、Javaは1周間研修しました!

Page 18: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

スキルがぜんぜん マッチしてない!

Page 19: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

参入後に発覚した事実:2

全員HTMLやJavaのスキルがない!

Page 20: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

参入後に発覚した事実:3工数は25人月程度の見込み ← はずだったが主にやること

• ビジネス・ロジックの設計・製造 • UIのデザイン・実装 • 複数台のサーバーによる分散システム設計・構築 • サーバーの死活監視・運用方法の確立・文章化 • メールの一斉配信・受信 • マルチテナント対応

この工数で足りてるの?

Page 21: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

参入後に発覚した事実:3

実質は予算から逆算した人月

工数は25人月程度の見込み ← はずだったが

Page 22: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

他にも、書けないことが多数…

Page 23: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

なにより、問題なのは 誰も危機感を抱いていないこと

Page 24: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

この状況を見て、感じました

Page 25: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

デスマの臭いがする…

※ 写真の人物はイメージです。

Page 26: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

デスマーチとは次のいずれかに該当するもの

1. 与えられた期間が、常識的な期間の半分以下である

2. エンジニアが通常必要な人数の半分以下である

3. 予算やその他のリソースが必要分に対して半分である

4. 機能や性能などの要求が倍以上である

※ Wikipediaからの引用

Page 27: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

デスマーチとは

平たく言えば明らかに失敗しそうなのに、

継続している(せざるを得ない)プロジェクトのこと

Page 28: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

初日にして、絶望

Page 29: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

しかし

Page 30: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

パンドラの箱の底には ひとつの希望が…

プ  ロ  ジ  ェ  ク  ト

Page 31: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

それは

Page 32: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

まだ、何も作っていない!

Page 33: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

昔、失敗したデスマ案件は、 プロジェクト末期で対処できなかった。

Page 34: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

今回のプロジェクトは 始まったばかり。

Page 35: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

これからの設計や管理次第で どうにかできないか?

Page 36: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

面白い!

Page 37: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

やってやろうじゃないか!

※ 写真の人物はイメージです。

Page 38: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

2. チームをひっくり返す

Page 39: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

とはいえ、今の自分に発言権はあまりない。

Page 40: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

プロジェクト体制

←イマココ

プロジェクト・マネージャー

プロダクト・オーナー

開発チーム・リーダー

開発チーム・メンバー

A社

B社

C社

Page 41: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

どう見ても外様です。 本当にありがとうございました。

Page 42: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

と、諦めたら試合終了なので

Page 43: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

プロジェクト体制プロジェクト・マネージャー

プロダクト・オーナー

開発チーム・リーダー

開発チーム・メンバー

A社

B社

C社

←イマココ

Page 44: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

偉い人の信頼を勝ち取る 作戦を開始

Page 45: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

作戦1:目的を確認する

Page 46: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

ステークホルダーが 何を気にしているか確認する

Page 47: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

A社のプロジェクト・マネージャーと相談

今回の案件で気にしてることって何ですか?

リリース後の運用とか保守だね。 あまり大きな体制はとれないから

あと、管理もアジャイルとか やってみたいんだけど、 経験がないから考え中だね

なるほど

A社 プロジェクト・マネージャー

※ 写真の人物はイメージです。

Page 48: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

B社のプロダクト・オーナーに相談

今回の案件で気にしてることって何ですか?

3月にプレゼンやるから、 それまでにデモが出来るようにしてほしい

3月以外はなにかあります?

B社 プロダクト・オーナー

特に無いよ。逆にリリース日は 決まってないから少しくらいなら調整できるかな

※ 写真の人物はイメージです。

Page 49: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

この情報を元に、 提案資料の作成を開始

Page 50: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

作戦2:危機感を共有する

Page 51: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

重要な問題点を 認識してもらう

Page 52: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

B社のプロダクト・オーナーに相談

メンバーって全員Java開発要員なんですよね?

C社の営業さんからはそう説明うけてるけど

みんなJavaできないらしいですよ?

B社 プロダクト・オーナー

えっ?

ちょっと確認してみますか

※ 写真の人物はイメージです。

Page 53: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

全員でJavaコーディング規約 読み合わせ会を実施

Page 54: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

当然、ボロが出る

Page 55: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

ちょっとC社営業と話してくる…

※ 写真の人物はイメージです。

Page 56: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

A社のプロジェクト・マネージャーと相談

スケジュールについて、確認したいことが…

どうしたの?

過去の経験からみて、スケジュールに かなり無理がありそうです

…わかった、確認してみる

根拠だけでも確認してもらえませんか?

A社 プロジェクト・マネージャー

※ 写真の人物はイメージです。

Page 57: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

2時間後

Page 58: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

なんの根拠もなかった

※ 写真の人物はイメージです。

Page 59: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

そして

Page 60: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

プロジェクトは序盤で早くも緊張状態に!

Page 61: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

これで次の作戦の 土壌が整った!

※ 写真の人物はイメージです。

Page 62: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

作戦3:解決策を提案する

Page 63: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

ひとしきり問題共有した ところで

Page 64: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

今後の方針について 検討しよう

A社 プロジェクト・マネージャー

※ 写真の人物はイメージです。

Page 65: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

待ってました!

Page 66: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

今回の要求に合わせて 提案書を用意しました

※ 詳細は次章で説明します

※ 写真の人物はイメージです。

Page 67: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

その結果

Page 68: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

それをベースに進めよう

※ 写真の人物はイメージです。

Page 69: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

そして、体制も変化

Page 70: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

プロジェクト体制プロジェクト・マネージャー

プロダクト・オーナー

開発チーム・リーダー

開発チーム・メンバー

A社

B社

C社

Page 71: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

プロジェクト体制プロジェクト・マネージャー

プロダクト・オーナー

開発チーム・リーダー

開発チーム・メンバー

A社

B社

C社↑イマココ

アーキテクト

Page 72: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

その時、事件が

Page 73: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

メンバーを残して まさかの 出社拒否

C社 チーム・リーダー

※ 写真の人物はイメージです。

Page 74: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

しかし

Page 75: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

これはチャンス!

Page 76: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

よろしければ いいリーダー 紹介しますよ

※ 写真の人物はイメージです。

Page 77: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

自社メンバーの参入に成功

※ 写真の人物はイメージです。

Page 78: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

プロジェクト体制

↑イマココ

プロジェクト・マネージャー

プロダクト・オーナー

開発チーム・リーダー

開発チーム・メンバー

A社

B社

C社

アーキテクト

New! →

Page 79: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

しかし、また事件が

Page 80: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

開発メンバーも 全員撤退させます!

※ 写真の人物はイメージです。

Page 81: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

その結果

Page 82: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

プロジェクト体制

↑イマココ

プロジェクト・マネージャー

プロダクト・オーナー

開発チーム・リーダー

A社

B社

開発チーム・メンバーC社

アーキテクト

New! →

Page 83: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

プロジェクト体制

↑イマココ

プロジェクト・マネージャー

プロダクト・オーナー

開発チーム・リーダー

A社

B社アーキテクト

New! →

Page 84: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

……

Page 85: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

ひっくり返しすぎた?

※ 写真の人物はイメージです。

Page 86: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

3. 短納期で開発するために

Page 87: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

長い前振り失礼しました

Page 88: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

ここからは わりとマジメな話です

Page 89: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

コントロール権は得ましたが、まだ、不安要素が山積みです

Page 90: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

現状の主な課題

1. 開発・運用コストを減らすための検討

2. 開発メンバーの調達・教育

3. 3月までにデモができるようにする

4. 短納期だが品質は落としたくない

Page 91: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

不安を解消するために リスクを取る

Page 92: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

課題1:開発・運用コストを減らす

Page 93: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

方策1:PaaS / IaaSを利用する

Page 94: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

初期段階の構想とか要求とか• サーバーのホスティングサービスを利用する

• 耐障害性等を考慮してクラスタ構成にする

• サーバーの死活監視等が行える

※ ただし、インフラエンジニアはいません。

Page 95: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

サーバー構成のイメージDBサーバーAPサーバーロードバランサー

死活監視

Page 96: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

時間も予算も無いんだよ

Page 97: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

ぜったい無理!

Page 98: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

なので

Page 99: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

Google App Engineを使用する

Page 100: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

Google App Engineの特徴

• 勝手にスケールアウトする

• 自動で複数データベース・サーバーに保存

• 同じ環境がすぐに、いくつでも作れる

• 使いやすい管理コンソールがある

Page 101: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

なにより、自分たちが得意

Page 102: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

インフラのことは 何も考えなくていい

Page 103: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

が、実装できない機能も

Page 104: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

それらはAWSを使用

Page 105: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

AWSを使用して実装した機能

• 気象庁から地震情報を受信するための

FTPサーバー機能

• 携帯キャリアメールへの一斉配信

Page 106: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

PaaS / IaaS を使用した結果

• インフラの設計・構築コストがほぼ0に

• 基本的に運用監視対象は

EC2インスタンス1つだけに

Page 107: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

課題2:開発メンバーの調達

Page 108: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

いろいろあって消えた3名分 メンバーを集める必要があります

Page 109: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

方々に募集をした結果 Java技術者2名採用できました

Page 110: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

メンバー教育の課題

• フレームワークと

Google App Engine データベースの習得

• HTML / JavaScript等のスキル不足

Page 111: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

方策1:1周間ペアプログラミング

Page 112: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

なぜ、1週間なのか

Page 113: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

プロジェクト・マネージャーとの会話

ペアプロでやってみようと思うのですが…

作業効率が半分になりそうで怖いな。期間も短いし、リスクとれないよ

では、教育のために一週間だけやらせてください

A社 プロジェクト・マネージャー

※ 写真の人物はイメージです。

教育やレビューのコストとトントンなのかもしれないけど…

Page 114: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

1周間ペアプログラミング• 参入後1周間だけペアプロする

• 教える側は、ツール、フレームワークの使い方や

なぜこのように作るのかなどの背景も

説明しながらコーディングする

• その人のクセや特徴を知る

• 1周間で完了できるストーリー(機能)※を選択する

Page 115: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

やってみた感想

チームに早く馴染むことができた

ドキュメントを読まされるより理解が早くて深い

コーディングの方針とかルールが共有できた

新メンバーのスキルレベルが分かった

1機能を通して作成の過程が見えたので、不安が減った

新メンバー 既存メンバー

Page 116: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

なかなか好評

Page 117: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

ペアプログラミングが 認められない場合に効果的

Page 118: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

方策2:作業範囲の限定

Page 119: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

新メンバーは HTML / JavaScript スキルが無い

Page 120: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

勉強してもらう時間もない ペアプロもできない

Page 121: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

ぶっちゃけ

Page 122: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

JavaScriptを多人数で いじりたくない

Page 123: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

なので

Page 124: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

Javaでビジネスロジックだけ 作ってもらうことに

Page 125: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

UIとビジネスロジックの分離UI : HTML / JavaScript Logic: Java

JSON-RPC

ビジネスロジックの呼出 ↑

メソッドを呼ぶだけ

ビジネスロジックの提供 ↑

メソッドを作るだけ

Page 126: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

疎結合にすることで 作業をシンプルに

Page 127: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

ログイン情報以外は ステートレスな(状態を持たない) 機能として提供する。

POINT

Page 128: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

課題3:3月までに デモができるようにする

Page 129: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

プロダクト・オーナーの要求

3月にユーザーが 実際に操作するデモを行う

プロダクト・オーナー

リスケは不可

デモで使用する機能に バグがないこと

※ 写真の人物はイメージです。

Page 130: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

実際のリリース予定は5月なので 3月は開発の中盤となる

Page 131: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

ウォーターフォール型だと ほぼ確実にできない!

Page 132: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

プロジェクト・マネージャーが 前に言ってたこと

管理もアジャイルとか やってみたいんだけど、 経験がないから考え中だね

プロジェクト・マネージャー

※ 写真の人物はイメージです。

Page 133: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

アジャイル開発で行こう!

Page 134: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

Scrum? XP?

Page 135: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

……

Page 136: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

経験者が一人もいない!

Page 137: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

……失敗しそう。

Page 138: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

なので、

Page 139: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

プラクティスを一部だけ適用

Page 140: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

開発イテレーション (1週間~2週間の期間)

���

• ���� �• ��'(�

���

• ���• �����• ��!1-87���

• PG/��.,0�• ��!�

��

• *.58+47/3�

&(#"(�

• �����• 26+.)�

• $%�� �

Page 141: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

適用プラクティスNo� fjY`W]� $1�

1� 3*[og� ���?I2,V0:7%�X`lo\inH"��CS]bokoV(�CS8�

2� "�� '"rs�+�H7��PFE@I7��PS@I7�5V�!CS8�

3� OR=<R� X`lo\inL �K7X`lo\inK�CSOR=<RV0;8�

4� `]b/ �� JUnit-V�)B7`]bL/ �V0;8�

5� �DONE� ]bokoP^]YM�K��BG:J?TN��I2JAJ:8p&�#>9S��M7DL^]YM.UFG:J:q�

6� X`lo\inah� X`lo\inL �K7��BEfmZjgLahV0:7"6�=QLeWocd_YV�S�

7� r�t�4� &#BJ:8�

Page 142: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

これだけ

Page 143: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

大切なのは混乱しないこと

• 今、何をすべきか明確にする

• 今、出来る作業量を明確にする

• 今、どこまで出来ているか明確にする

• 今、対処すべき問題があるか明確にする

Page 144: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

課題4:短納期だが 品質は落としたくない

Page 145: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

品質を保つために

• テストの自動化する

• メンテナンスできるコードを書く

Page 146: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

方策1: Spockの導入

Page 147: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

JUnit 書くのスゴくダルい

Page 148: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

ここがイヤだよJUnit

• 実コード以上に、読みやすいコードを

書くのが大変。メンテしづらい。

• パターンテストやデータ準備等の

凝ったテストを書くのが大変。

• 純粋に記述量が多すぎる。

Page 149: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

中盤ダレてくるとJUnitを 書かない・手抜きする人が続出

Page 150: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

そこで

Page 151: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

Spockを導入!

Page 152: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

Spockとは• Java・Groovyアプリケーション向けの

テスト・仕様フレームワーク

• 美しく表現力の高い仕様記述言語

• JUnitとして動作する。

既存のJUnitの機能は全て使える。

Page 153: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

Spockによるテストコードclass Math extends Specification { def “2つの値から、大きい値を取得できること" { expect: Math.max(a, b) == c ! where: a | b | c 1 | 3 | 3 0 | 0 | 0 7 | 4 | 4 } }

条件ミス (cは7が正解)

Page 154: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

Spockによるエラー通知2つの値から、大きい値を取得できること FAILED !Condition not satisfied: !Math.max(a, b) == c | | | | 7 4 | 4 false

Page 155: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

Groovyの習得に関して

• Javaのコードがほぼそのまま動くため、

とりあえず、すぐ使うことができた

• なれてくると、Groovyらしいコードが

書けるようになり、コード量が少なく

見やすいテストが書けるようになった

Page 156: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

本当にすばらしいので ぜひ実践してみてください

Page 157: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

方策2: リーダブルコード読書会

Page 158: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

しばらく開発していて 発覚した問題点

Page 159: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

コードレビューの 成果が出ない

Page 160: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

正しく動くけど、読みづらい、 変な設計のコードが増えていく

Page 161: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

このままだと メンテできなくなってしまう

Page 162: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

なので

Page 163: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと
Page 164: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

読書会の方針

• 毎日、定時後に1章ずつ(一時間程度)

• 持ち回りで担当者を決めて、解説してもらう

• 読んだ章について、ディスカッションする

Page 165: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

読書会の効果• 各メンバーが自分で読みやすいコードを

考えるようになった

• レビューの指摘の意図や根拠が

伝わりやすくなった

• 学習意欲の向上

Page 166: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

4. まとめ

Page 167: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

その後もいろいろな問題が 発生しましたが

Page 168: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

残業やトラブルもなく 無事、5月末にリリース できそうです。

Page 169: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

いろいろご紹介しましたが

Page 170: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

やっててよかった と言うためには

Page 171: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

積極的に動くこと!

Page 172: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

役割に縛られる必要は無い

Page 173: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

積極的に動くと 責任ばかり増えるのでは?

Page 174: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

ダメだとわかってて 放置するほうが無責任

Page 175: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

でも、がんばったって 給料は変わらないよ

Page 176: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

仕事の報酬は お金だけじゃない

Page 177: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

それは

Page 178: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

信頼

Page 179: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

次の仕事

Page 180: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

悪い仕事は、信頼を質にしてお金を借りているようなもの

Page 181: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

でも、失敗したらどうするの?

Page 182: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

失敗したって 100%ダメになる訳じゃない

Page 183: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

実際のところ 100%の成功も失敗もない

Page 184: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

大事なのは連敗しないこと

Page 185: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

プロジェクトの改善に 大鉈を振るう必要はない

Page 186: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

最初から完璧を目指すと 大抵、失敗する

Page 187: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

まずは、小さな信頼を 得るところから始めよう

Page 188: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

ご清聴、ありがとうございました

Page 189: エフスタ in Aizu 「やっててよかったこの仕事」と言えるようにやってきたこと

写真素材についてこの資料は、ぱくたそ(http://pakutaso.com)の写真素材を一部利用しています。この写真を継続して利用する場合は、ぱくたそ公式サイトからご自身でダウンロードしていただくか、ぱくたそのご利用規約(http://pakutaso.com)に同意していただく必要があります。同意しない場合は写真のご利用はできませんのでご注意ください。