STAY-FOOLISH.COM

インターネット業界に居るのですが、情報収集ばかりで、”発信” 出来て無いなぁと思い、一念発起してみました。

もっと上手にアジャイル開発をする為の【8つのメトリクス】

      2016/05/24

ad_kijishita_pc

スポンサーリンク

メトリクスって、とっても大切です!

アジャイル開発にチャレンジしているけど、下記のような事で悶々としている!という方いらっしゃいませんか?

■自信が持てない
 アジャイル開発をやっているけど、「上手 にできているのか?効率よく 出来ているのか?」イマイチ自信が持てない

■周囲の理解を得られない
 チーム外の関係者(プロダクトオーナー、プロジェクトオーナー、お偉いさん・・・)に、何が何処まで完成しており、将来的に「何時までに何をリリース出来そうか?」を論理的に説明しきれず理解を得られない

■状況が良く分からない
 自分のチームがやっている活動について、何が問題なのか?どうすればもっと上手に活動できるのか? が分かんない

このような状況を打破し、もっと上手に!もっと効率よく!!システム開発を行い、チームのアジリティを向上する為の施策の1つとして、メトリクスの導入/活用 がオススメできます。

スポンサーリンク


    

何故メトリクスが大切なの?

何故メトリクスが必要か?という前に・・・

先ず、メトリクスとはなんぞや?というところをみてみましょう。

メトリクスの定義は、下記が一般的のようです。

メトリクスとは、様々な活動を定量化し、その定量化したデータを管理に使えるように加工した指標のこと。

つまるところは、メトリクスとは “指標” だと、いうことになりますね。

はい、では指標にはどんなものがありますかね?

  • もっとも身近な自分の身体に関する指標だと、 BMI。
  • 会社に関する指標だと、ROI、売上高営業利益率 などなど・・・
  • 経済に関する指標だと、CPI、小売売上高指数 などなど・・・
  • WEB Service 系の指標だと、CV、CTR などなど・・・

とても身近な身体に関する指標から、経済に関する指標まで。ほんとに様々な指標がありますよね。

では次に、これらの指標は、何のために存在するのでしょう?

  • BMI は「肥満度」を、定量的に見える化するため
  • ROI は「投資に対する効果」を定量的に見える化するため
  • CPI は「インフレなのかデフレなのか?」を定量的に見える化するため
  • CTR は「ユーザが広告に興味を持った度合い」を定量的に見える化するため

では、何故、「定量的に見える化」する必要があるのでしょう?これらの指標の目的は何なのでしょう??

これらの指標に共通する目的は「指標を取得した対象の健全度を定量的に見えるようにし、その傾向をウオッチし、カイゼンすること」だと思います。

つまるところ、メトリクスは、何かをもっと上手に、もっと効率よく、もっと良く、カイゼン するためのものということになります。

コンテキストを「アジャイル開発」に戻して、「何故メトリクスが必要なのか」を言葉にしてみますと・・・

メトリクスは、システム開発プロジェクトを もっと上手に、もっと効率よく、もっと良く、カイゼンする為に、必要なのだ!っという事が言えるかと思います。

    

アジャイル開発でメトリクスを活用しないのはとても勿体無いです!

何故、とてもとてもとても、勿体無いか?SCRUM を例に僕の考えを説明させて頂きます。

SCRUM では、1週間 〜 1ヶ月 位の「スプリント」を実施します。

スプリントのインプットを「要望」だとし、アウトプットは「動作するソフトウェア」となるとします。また、スプリントの最後には、カイゼンを目的とした「ふりかえり」を実施します。

上記を前提として、スプリント内でのチームのミッションを想定してみましょう。

分析、設計、開発、テスト、旧システムからのデータ移行、本番/検証環境へのリリース・・・などなど

ウォーターフォールなどの「イテレーティブでない」開発のやり方だと、1つのプロジェクトを通して実施する(ほぼ)全ての作業を、SCRUM では、たった 1 週間かそこらのスプリントの中で、(ほぼ)全部をちょっとづつ、やることになります。

ほぼ全ての作業をちょっとづつ実施するということは、ほぼ全ての作業をカイゼン出来るチャンスが同一プロジェクト内に存在する!【しかも何度も】ということになります。

ほぼ全ての作業をカイゼン出来るという事は、分析、設計 などの工程毎の部分最適を行うのではなく、要求を動くソフトウェアに仕上げるまでの 一連の流れを全体最適するチャンスがある ということになります。

せっかくのこのチャンス、出来る限り有効活用したいですよね?しないのは、とてもとても勿体無いと感じますよね?

・・・なので!

メトリクスを導入し、下記を実行することで、このチャンスを出来る限り有効活用するのです。

「プロジェクトの健全度を定量的に見えるようにし、その傾向をウオッチし、カイゼンする 」

    

ではメトリクスの目的を洗い出してみます

メトリクスを最大限活用する為には、「そのメトリクスを取得する目的」の明確化がとても大切 だと思うので、GQM を参考にして洗い出してみたいと思います。

GQM (じーきゅーえむ; Goal, Question, Metric)は、メリーランド大学のビクター・バシリ教授によって開発された、ソフトウェア工学における計測の枠組みおよびモデル化手法である。
ソフトウェア工学におけるあらゆる計測は、無目的にメトリクスやデータを集めるのではなく、何のために測定するのか、前提となるモデルは何か、結果をどう解釈するかなどを明確にした上で実施されるべきである。

wikipediaより

システム化の最上位の目的を「ROI の最大化」とし、それを実現する手段をブレイクダウンしてみました。

metrics_goal

どうでしょう?一番右の赤色の「3つの手段」。これを「メトリクス取得の目的設定のヒント」と出来そうです。

では、このヒントを元にメトリクスの目的を洗い出してみましょう。

■「0」を「1」にする

これは、新規サービスの立上げなどで、売上が「無い」状態から、売上が「生まれる」状態にすることを指しています。

この状態にする為に、開発プロジェクトとして貢献するにはどうすれば良いでしょう?

僕的なこの質問に対する答えは 【G1.必要最小限の機能で、少しでも早くシステムをローンチすること】 です。

■「1」を「∞」にする

これは、ローンチ済みのサービスへの機能追加などで、売上が「生まれた」状態から、売上が「充分に生まれる」状態にすることを指しています。

この状態にする為に、開発プロジェクトとして貢献するにはどうすれば良いでしょう?

僕的なこの質問に対する答えは 【G2.市場や競合の動向に併せて、スピーディにサービスをアップデートしていくこと】 です。

■ 生産性を上げる

システム開発のプロジェクトにおいて、生産性を上げる為にはどうすれば良いでしょう?

【G3.リリース時点で “仕掛り中の機能” を無くすこと】、【G4.技術的負債を無い状態を維持し続けること】、【G5.高品質な状態を維持し続けること】、【G6.チーム力を向上すること】 などがあると思います。

    

目的とメトリクスの整理

ではでは、いよいよ、洗いだした「6個の目的」とメトリクスを関連付けて整理してみましょう。文章だけだと分かりづらいかと思いましたので、表を作ってみました。

metrics_list_v1.0

注意すべきこと

最後になりますが、メトリクスを活用/運用していく上で、注意が必要だと “心得ておきたいこと” を 4 つあげさせていただきます。

■ メトリクスのみで、何が起きたか特定した気にならないこと。チームと会話をしなければ実際に何が起きているか特定出来ないことが多いことを覚えておきましょう

■ 個人ではなくチームを測定すること。個人を測定しようとすると良くない力が働き、測定結果が意味をなさなくなる可能性があります。

■ 上記と同じ理由から、メトリクスを個人の評価に利用しないこと。

■ プロジェクトのコンテキストやチームの成熟度に併せて、メトリクス自体をふりかえり、見直すこと。最初から欲張りすぎると大変ですし、最小限から初めてチームが必要だと自分たちで判断して追加していくことが理想型だと思います。

    

この記事を読まれたあなたに下記の記事もオススメです♪

★【アジャイル開発で学んだこと】アジリティ最大化の為の10のポイント

★アジャイル開発における契約前のコミュニケーション

★「失敗体験から学ぼう」一括請負でのアジャイル

 - 子育て・チーム作り ,