サイト内の現在位置を表示しています。

アジャイル開発

~顧客を巻き込みチーム一丸となってプロジェクトを推進する~ (後編)

先端技術ソリューション事業部 メディアソリューショングループ 金丸真之と申します。
前回、ご紹介しました『アジャイル開発 ~顧客を巻き込みチーム一丸となってプロジェクトを推進する~』の後編を、ご説明できなかったスクラムの役割等を含め、スクラムをどのように進めて行ったら良いかという観点でご紹介させていただきます。

スクラムの役割について

スクラムの役割として以下の様なものが定義されています。

プロダクトオーナー

作成するプロダクトに対する、最終決定権と責任を持つ人です。
プロダクト全体の機能優先順である『プロダクトバックログ』を常に最新の状態に管理する責任があります。
同時にプロダクトに対する情熱を持ち、スクラムチームと綿密な議論を交わし、プロダクトの価値を最大限にしようと常に努力します。

スクラムマスター

スクラムの理解と実践を推進し、プロジェクトを円滑に進めることに責任を持つ人です。
スクラムをスクラムチーム全員が正しく理解した上で開発を実践していることを常にチェックします。
また、チームの自律的な行動を引き出し、成果を最大限に引き出すことに注力します。

チーム

ウォーターフォール型開発では、概要設計者・詳細設計者・実装者・テスターなど役割が決まっていますが、スクラム開発では全ての開発に関わる人を『チーム』と呼びます。
役割として名前を分けず、『チーム』と呼ぶのは、チーム一丸となって最大の価値を提供する、ということに重点を置くためです。

スクラムの役割や概要をまとめた図を以下に示します。(*1)

スクラムの役割や概要

スクラムマスターに対するよくある勘違い

スクラムマスターという役割に対する注意すべき点は、ウォーターフォール型開発のプロジェクトマネージャーと混同されがちだということです。
ウォーターフォール型開発の場合、プロジェクトマネージャーはプロジェクトのリーダーであり、意思決定、スケジュール管理、チーム管理を行い、全体の取りまとめ役となります。また、そのプロジェクトが成功するためのビジネス上の絶対的な責任者です。
スクラムの場合、プロジェクトマネージャーは存在しません。
スクラムマスターは、トップダウンで意思決定や作業指示を行うことはせず、プロダクトオーナーと開発チームがプロジェクトを円滑に進めるためのサポートをします。 
問題が起きた時は、プロダクトオーナーと開発チームが意思決定出来る場を設け、プロジェクトが止まってしまうことを回避します。
または、その前兆を事前に察知し、プロジェクトが止まってしまいそうな障害を先回りして取り除くことに努めます。

当社の事例(スクラムマスター)

スクラムマスターの仕事は、非常に多岐に渡ります。プロジェクトはたいていの場合、多くの問題を抱えることが多いからです。しかし新米のスクラムマスターは特に、任命された直後に何をしたら良いか分からない、という状態に陥ってしまうという問題がありました。
スクラムを理解し、プロジェクトを円滑に進めることを推進する、という役割であると言っても、実際にどのような問題がチームにあるのか、円滑に進んでいない要因はどこにあるのか等、ある程度開発の勘所を理解したメンバーで無ければ、スクラムマスターとして立ち振る舞うことができませんでした。

このような状態に陥ってしまった場合は、スクラムマスター宣言(*2)を読み返すことをおすすめします。
スクラムマスター宣言では、スクラムマスターとしての12の原則を以下のように定義しています。
原則を念頭に置いた上で活動を行うことで、立ち振る舞いを変えることができるでしょう。
( *右側括弧() 内は、筆者が和訳し追記したものです。間違い等ありましたらご指摘ください。)

  1. Dedicated Delivery Improver (改善に熱心であれ)
  2. Foster Continuous Improvement (継続的な改善を促進せよ)
  3. Help Continuous Improvement (継続的な改善を助けよ)
  4. Empower Coach Deliver (コーチングの提供を向上せよ)
  5. Nurtures The Team (チームを育成せよ)
  6. Transparent Team Helper (透過的なチームの支援者であれ)
  7. Commitment To Excellence (卓越へのこだわりを持て)
  8. Empathetic Evangelistic Guide (共感的な伝道師であれ)
  9. Resistant Persistent Dedicated (抵抗し、根気強く、献身的であれ)
  10. Help the Team (チームを助けよ)
  11. Awareness Then Improvement (気づき、そして改善せよ)
  12. Agile Driving Force (アジャイルを推進せよ)

当社の事例(適用プロジェクト)

さてここで、当社がビッグローブ株式会社様と協業で、実際にスクラム開発を行ってリリースしたサービスの一部を紹介させていただきます。

ポチ(現在はクローズ)

Webサービス投げ銭システム。役に立ったWebサイトに対して、投げ銭という形でお礼を形にするサービス。
12名の開発チームでスクラム開発を行いました。スクラムの基本を遵守し、品質の高いプロダクトを作ることに成功しました。

ゆかりんのーと

Twitterまとめサービス。ゆかりのある人達との思い出を一冊のノートにまとめ、いつでも読み返すことのできるサービス。
最大15名の開発チームでスクラム開発を行いました。スプリントを1週間-4週間まで変動的に変更したり、リファクタスプリントを設け品質向上を図ったり、タスク管理をRedmineのプラグインを用いて電子化したりと、様々なチャレンジングな試みを行いました。

RingReef(現在はクローズ)

写真を中心としたコミュニケーションアプリ。Android版、iPhone版を同一のチームとして並行開発しました。
リファクタスプリントや、プロダクトオーナーを巻き込んで全員で企画を練る等、スクラムの枠を超えた活動でアイデアを引き出すことに成功しました。

上記プロジェクト以外にも、さまざまなプロジェクトにこのスクラム開発を取り入れるとともに、社内勉強会、社外発表等の機会を活用し、スクラム開発を行う人数を徐々に拡大して行きました。

スクラム開発で得られる効果

ウォーターフォール開発で問題となりやすい点と、スクラム開発を行ったことで得られた効果を以下にまとめます。

  1. 開発体制の問題

    指示待ち体質、体制になってしまう。
    スピード感のあるPJ運営のためには立場を超えた積極的な協調が必要。
    → 上下関係のない役割付け、フラットな開発体制を構築。積極性を引き出し、チームの潜在能力を引き出す。

  2. 要件管理の問題

    プロジェクト初期の要件網羅に限界がある。
    必要となる全要件を立ち上げ時に網羅することは非常に困難。
    → ゴールを小さく分割設定し、繰り返し実施優先順に機能実装、効果検証しつつ優先順位を見直す。

  3. 負荷平準化の問題

    期間集中と属人的作業に偏ってしまう。
    デスマーチ発生と属人的知識の偏りによる要員への負荷是正が必要に。
    → 設計・実装等作業をペア作業し品質を向上、設計や各種ノウハウをその場で共有し属人的作業を分散する。

  4. 品質の問題

    機能追加により実装設計が混乱してしまう。
    連続的な追加開発が発生した場合も可読性の高いシンプルな実装が必要。
    → テストフレームワークを活用し、機能コードを書くと同時にテストコードを書く。
    1度実装したテストコードは自動化ツールにより日常繰り返し実行。

個人的な見解と今後

スクラム開発を数プロジェクト実践してみた、個人的な見解を述べさせていただきます。
まず、チーム全体が生き生きとします。これはスクラム開発を実践してみて間違いなく実感したことです。チーム全体が活性化し、個人個人がプロダクトをより良い物にしようと自ら考え、行動するようになります。
問題が起きた場合にそれを隠そうとせず、チームを巻き込んで解決しようとします。
今後は、まだスクラム開発を経験したことのない社内プロジェクト、仕様書ベースでやり取りしている社外のお客様等に適用を拡大していきたいと考えています。



NEC デジタル変革支援サービス

NEC デジタル変革支援サービスは、DXの実現にむけたデジタル化ビジョンの策定と、
目指す価値の実現・検証を行うサービスです。
当社のDXエンジニアがアイデアのプロトタイピングをおこない、お客様が実現したいことを見える形にします。やってみて、そこから学んで、またやってみる、アジャイル型でゴールを目指します。

詳細を見る