とあるSEの適当日記(仮)

その時のプロジェクトで必要になって調べた技術や読んだ書籍についてメモしていく場です。誰かの役にたったらいいなくらいのものです。最近の関心事は、「スクラム」「アジャイル」です。

Amazonで「スクラム」で検索してヒットした書籍のうち、評価の高い3書籍のイントロ部分だけを読んでみた感想

ども、絶賛10連休中のひぐちぇです(゜д゜)ノ

家族サービスの合間を縫って、ちょっとは自己研鑽しておりまして、、
今回は、「スクラム」について、Amazonで検索した結果で、評価の高い3冊の書籍のイントロ部分だけを読んでみて、主に「アジャイルスクラム)開発をやる意味」として書かれている箇所だけを理解してまとめてみました。

書籍からの引用もありますが、基本、私自身がその書籍を読んで理解した内容を端的に書いております。

SCRUM BOOT CAMP THE BOOK

SCRUM BOOT CAMP THE BOOK

SCRUM BOOT CAMP THE BOOK

ソフトウェアを作る上で本当に大事なことは、「出来上がったソフトウェアを使って実際の利用者が便利になったり、お金を稼いだりといった成果をあげれること」です。そのソフトウェアの作成過程で、当初つくろうと思っていたものよりも良いアイデアが出てくれば、目的を達成するためにそれを受け入れながら、つくるものを変えていく。そうすることでその成果を最大化できるようになる。

アジャイル開発とは、
・関係者は目的の達成のためにお互いに協力し合いながら進める。
・利用者の反応や関係者からのフィードバックを継続的に得ながら、計画を調整する。
・一度にまとめてではなく、少しずつつくる。そして、出来上がったものが求めているものと合っているかを頻繁に確認する。

スクラム開発とはアジャイル開発手法の1つで、以下の特徴がある
・要求を常に順番に並べ替えて、その順にプロダクトを作ることで成果を最大化します。
スクラムでは実現される価値やリスクや必要性を基準にします。固定の短い時間に区切って作業を進めます。この期間のことをタイムボックスと呼びます。
・現在の状況や問題点を常に明らかにします。これを透明性と呼びます。
・定期的に進捗状況や作っているプロダクトが正しいのか、仕事の進め方に問題がないかどうかを確認(これを「検査」と呼ぶ)します。
・やり方に問題があったり、もっとうまくできる方法があったりすれば、やり方そのものを替えます(これを「適応」と呼ぶ)。

これらを継続的に実施してプロジェクトを進めていくのがスクラムです。

【感想】
とてもシンプルでわかり易いですねー。「アジャイル開発とは」「スクラム開発とは」といった部分も元々から知っていることばかりでしたが、復習になります。全体的にシンプルに書かれており、とてもわかり易かったです。

エッセンシャルスクラム

「複雑な領域」「込み入った領域」「単純な領域」「カオスな領域」「無秩序」「割り込み駆動の作業」の6つに分類しており、この中の「複雑な領域」にこそ、スクラムは合うという事を書かれていました。
「複雑な領域」というのは、「わかっていることよりも、わからないことの方が多い」といった状態で、探索して(調査)、理解し(検査)、反応する(適応)しながら業務を進めていくことになるので、こういったときにスクラムが合うということのようです。

【ちょっと補足】
「複雑な領域」「込み入った領域」「単純な領域」「カオスな領域」「無秩序」という分類はクネビンフレームワーク(Cynefin Framework)という世の中で発生しうる問題を分類したものです。
successpoint.co.jp

【感想】
情報量多くって、結論が分かりづらくなんか読みづらいなって感じでしたが、根気よく読み解いていくと、私が知らなかったことも書かれており、勉強になりました。こういった分類のやり方について調べてみると、「クネビンフレームワーク」というキーワードに行き着き、それに基づいてアジャイルの必要性を語っている資料なども見つかり、とても勉強になりました。

初めてのアジャイル開発 ~スクラム、XP、UP、Evoで学ぶ反復型開発の進め方~

初めてのアジャイル開発 ?スクラム、XP、UP、Evoで学ぶ反復型開発の進め方?

初めてのアジャイル開発 ?スクラム、XP、UP、Evoで学ぶ反復型開発の進め方?

製造には、2種類あって、1つ目は、携帯電話のような新しいことや変化がほとんどなく、全く同じか殆ど同じ製造を高速に繰り返すことができるという「大量生産」・「予測可能な製造」と、2つ目は、注文住宅を構築するときのように真新しさや創造性が求められ、変化が大きく、見積もりやスケジュールのベースとなる前例がないような「新製品開発」・「創造的プロジェクト」であり、ソフトウェア開発プロジェクトが抱える問題は、後者の「新製品開発」・「創造的プロジェクト」である。

ウォーターフォール」的に仕様や見積もりや計画を大規模に作成する方法は、予測可能な製造にのみ適用すべきだが、後者の「新製品開発」・「創造的プロジェクト」にも適用されてしまっている。

事前に仕様を作成できない要因として、以下があると述べている。

・クライアントやユーザーが自分の望んでいることをきちんと把握していない
・クライアントやユーザーが自分の望んでいることや知っていることを上手く伝えられない
・クライアントやユーザーの要望の細かい部分は、開発してみないと明らかにならない
・細かい部分が複雑すぎて理解しづらい
・開発途中の製品を見て、クライアントやユーザーの気が変わる
・外からの影響(競合の製品やサービスなど)によって要求が変わったり増えたりする

『ソフトウェア構築とは、複雑で、変化の度合いの大きい新製品開発であり、予測可能な製造ではない。その認識こそがアジャイルな反復型手法を導入する理由の核心である』と述べられていました。

【感想】
↑の「・」の1つ目~4つ目までは、クライアントやユーザーを対象とした認識違いの『リスク』を示したものです。
この書籍だと、ウォーターフォールなど既存の開発手法がこの辺のリスクに対応できていないように書かれているのですが、なんだかなぁっと思いました。既存の開発手法でもこの辺のリスクについては色んな人が懸念しており、様々なナレッジや手法が試されているはずですよねぇ。
「・」の5つ目と6つ目の内容こそが、『不確実性』と呼ばれるもので、これについては既存の開発手法では無視されてきているものであり、アジャイルスクラム)開発をやる大きな意味だと理解しています。

まとめ

今回、3つの書籍のイントロだけ読んでみて、「アジャイルスクラム)開発をやる意味」について、理解を深めてみましたが、私としては、クネビンフレームワーク(問題領域の分類化)から、「アジャイルスクラム)開発をやる意味」を説明していくやり方についてはちょっと無理があるのではないかと感じています。理由は、「複雑な領域」でもウォーターフォールの開発手法をとった方が良い場合もあると思っているからです。その理由は↓過去の記事読んで頂ければわかると思います。
junhiguchi.hatenablog.jp

やっぱ、「リスク」と「不確実性」の話から、「アジャイルスクラム)開発をやる意味」を説明していく方がわかり易そうだなって思いました。。。

プライバシーポリシー お問い合わせ