弊社がアジャイル開発に取り組むことへの思いと意味

弊社がアジャイル開発に取り組むことへの思いと意味

弊社、メンバーズエッジカンパニーは、システム開発会社として「継続的なプロダクトの成長を必要としているお客様との直接契約のみで、開発スタイルはアジャイル開発を採用する」というサービスを設立当初から展開してきました。

このビジネスモデルを採用した裏には、弊社代表の塚本がアジャイル開発に特化したシステム開発チームの立ち上げに関わり、アジャイル開発を通じてお客様と向き合って、ビジネス価値そのものをアジャイル開発チームが作り上げていく、という方法に感銘を受けたという背景があります。

このようにアジャイル開発を創業のアイデンティティとして掲げるほどアジャイル開発について熱い思いを持つ私たちが、いま改めてアジャイル開発の概要、特徴、メリットやデメリット、企業における具体的な実践方法について解説します。

アジャイル開発とはどのような手法なのか

アジャイル開発とはどのような手法なのか

アジャイル開発とはソフトウェア開発におけるプロジェクト開発手法の一種で、個々の機能別などの細かい単位にシステムを区切り、「設計→実装→テスト→リリース」という一連の開発サイクルを何度も繰り返すことでシステムやソフトウェアを構築していく方法のことです。

従来のシステム・ソフトウェア開発においてはウォーターフォール型の手法が一般的でしたが、2000年前後にアジャイル開発が登場し、その後メジャーになっていきました。

アジャイルとは「機敏な」「素早い」という意味を持つ言葉で、その名の通り、従来の手法に比べると開発期間が短く、変化に対応しやすいという特徴があります。

アジャイル開発の定義

なお、「アジャイル開発」という言葉の厳密な定義としては下記に引用した「アジャイルソフトウェア開発宣言」に記載された価値観に則っておこなわれる開発スタイルのことを指します。

===引用===
プロセスやツールよりも個人と対話を、
包括的なドキュメントよりも動くソフトウェアを、
契約交渉よりも顧客との協調を、
計画に従うことよりも変化への対応を、
価値とする。すなわち、左記のことがらに価値があることを
認めながらも、私たちは右記のことがらにより価値をおく。
======

この「アジャイルソフトウェア開発宣言」は、2001年に、当時いわゆるアジャイル的なソフトウェア開発を提唱していた17名の技術者が米国ユタ州に集まり、その開発プロセスのエッセンスについて議論した結果をまとめたもので、アジャイル開発の公式文書として広く知られています。

この宣言やアジャイル開発という開発手法が誕生した背景には、2000年代以降の産業の変化とソフトウェア開発手法の歴史的な変遷があります。アジャイル開発という手法の特徴をさらに深く理解するために、アジャイル以前のソフトウェア開発手法とその変遷を追っていきましょう。

プロジェクト手法の変遷から見るアジャイル開発の特徴

ウォーターフォール型

1970年代から存在する代表的な開発プロセスのひとつにウォーターフォール・モデルがあります。

ウォーターフォール型は、プロジェクト全体の工程を「設計→実装→テスト」などの工程に分割して、各工程ごとに順番に進めていくことでシステムを構築する開発プロセスです。建築や機械製造などの開発手法を参考にしたもので、各工程が分かれているのでプロジェクトの管理がしやすい点が特徴です。

一方で、システムがリリースされるタイミングはすべての機能が開発された後になるので、実際にシステムが稼働し始めるまでに時間がかかる上に、仕様ミスに気づきにくく、修正コストも大きくなりやすいです。また、開発途中での仕様変更への対応も難しいという欠点がありました。

スパイラル型

ウォーターフォール型の問題点を受けて、その問題点を1980年代後半に解決すべく登場したのがスパイラル型という開発手法です。

スパイラルモデルでは、「設計→実装→テスト」というシステム開発のステップを、プロジェクト全体ではなく、いくつかの機能別に区切り、重要な機能から構築します。これによって、ウォーターフォール型開発で生じていたデメリットである、システム稼働までの遅さ、仕様ミスの発見の遅れや修正コストの大きさをカバーできるようになりました。

アジャイル開発

1990年代後半に入ると、Webの普及により、多くの人がソフトウェアを使うようになりました。その結果、より変化とスピードが要求される環境に対応するため、スパイラル型の開発手法の特徴である機能ごとの開発サイクルの細分化をさらに推し進めて、重要な機能から五月雨式にリリースしていくという開発手法が支持されるようになってきました。これがいわゆるアジャイル開発です。

アジャイル開発という手法は、2000年代の後半くらいから日本国内においても実践されるようになりました。
弊社代表の塚本も当時アジャイル開発に出会い、その後、アジャイル開発を採用したプロジェクトを率いてきました。現在では弊社のすべてのチームがアジャイル開発のエッセンスであるスクラムやXP、RADをベースとしたDSDM、FDD、かんばんなどの各手法を各開発チームごとに実践しています。

アジャイル開発の流れと特徴

アジャイル開発の流れについて、弊社の実例も交えつつ、以下でご説明します。

アジャイル開発の流れと特徴

計画

先述したように、アジャイル開発では開発途中にユーザーやマーケットの動きに合わせた変化があることを前提にしているので、厳密な要件定義はおこないません。ユーザーやマーケットに合わせた仮設(ゴール)を決めて実装フェーズに移ります。

実際に弊社では、開発が始まる前にはお客様と「年間目標」や「1年経ったときにあるべき姿」をすり合わせ、利益やユーザー数などからKPI/KGIを作成するところからご支援をしています。

あくまでもお客様が実現・達成したいことをチーム全員で理解し、ビジネス成果創出・向上の視点を合わせることに重きをおいています。

開発・改善

ゴールを決めたら「設計→実装→テスト」を一単位とするスプリントと呼ばれるサイクルの中で開発を進めていきます。一回のスプリントのサイクルはプロジェクトにもよりますが、最短1〜最長4週間程度の期間で設定されることが多いです。

このように小さな単位に分けた期間ごとに目標(実装・改善すべき機能)を設定し、リリースを繰り返しながらシステム・ソフトウェアを開発していきます。

弊社での実際の開発でも、目標を実現するために必要なことをお客様を交えて議論した上でスプリントゴールとして設定し、開発、テスト、リリースまでを1週間単位のスプリントで実行する、といったかたちでプロジェクトを進行しています。

最初に立てた目標とは一致しない部分が出てきた場合には、目標を実現するためはどうすればよいか検討しますが、意見出しをしても目標に到達できなさそうだとわかった時点で目標の修正をおこなうこともあります。

アジャイル開発のメリット・デメリット

採用する開発手法を判断するにあたっては、各開発手法の特徴やメリット・デメリットを理解することが重要です。

アジャイル開発のメリット・デメリット

アジャイル開発により期待されるメリット

プロダクトの品質向上

アジャイル開発では機能を小さく分割して、短期の開発期間で開発していきます。その過程で機能ごとにテストを実施する上に、弊社のような開発会社であればリリースごとにお客様にその機能を確認していただくことになります。

機能のリリースごとにチェックが実施されるので、適切に品質管理がおこなわれ、品質向上に繋がります。

開発効率の向上とそれに伴う開発期間の短縮

アジャイル開発では、まず何よりもビジネス成果創出に重要となる機能から開発し、重要度が低い機能については開発の優先度を下げます。また、開発自体に取り組まないという判断をすることもあるでしょう。このようにアジャイル開発には不必要な工数が発生することを避ける思想があるので、開発効率が高まります。

また、実装した機能に不具合が発覚した場合に戻る工数が少ない点もメリットです。従来のウォーターフォール型開発では、トラブルの種類や箇所によっては大きく工数を割かないと修復できないおそれもありました。しかし、アジャイル開発では1スプリントごとにテストをおこなうので、不具合が発生した場合でも、その工数分を戻るだけで済みます。

満足度の向上

アジャイル開発ではお客様やユーザーとのコミュニケーションを増やして細かく実装した機能の確認を取りながら開発を進めます。

仕様変更や追加にも柔軟に対応できるので、早く・多く改善することが可能となり、結果として顧客やユーザーの満足度が高くなります。

市場の需要や要求に素早くプロダクトをフィットさせていけるので、検証結果を反映して即座に効果を生むことができます。そのようなかたちでお客様に貢献して喜んでいただけることが弊社としても嬉しい点です。

対話コミュニケーションによるエンジニアの働きがい向上

ウォーターフォール型の開発体制に代表されるようなレガシーなシステム開発のアプローチでは、プロジェクトマネージャーがトップで、要件定義や設計をするシステムエンジニアがその下、そしてプログラマーやテスターは最下層に位置付けられる、ピラミッドのような組織構造になっており、エンジニアは指示を受けた機能を作成するだけというかたちになりがちです。

一方で、上述したように、アジャイル開発では開発チームとお客様との対話を重要視します。対話コミュニケーションを通じてエンジニアがプロダクトづくりに参加できる環境があることで、エンジニアの働きがい・モチベーション向上にも貢献します。また、その結果として、エンジニアとしてもビジネスへ主体的に貢献する意識が生まれるので、成果物のクオリティの向上につながる側面もあります。

アジャイル開発におけるデメリットやリスク

開発途中で差し込まれる修正によって、追加的な工数が発生することがある

アジャイル開発ではスプリントごとにリリースをし、プロダクトユーザーの実際の反応を見ながら効果検証をおこないます。その過程で機能の改善や修正をする必要が出てくることがあり、その場合は開発チームにおいてスケジュールの再調整などの追加的なコストが発生することとなります。

プロジェクトのマネージャーはこれを工数に織り込み、対応する必要がある一方で、このようにユーザーからのフィードバックに対してリアルタイムで改善できることこそがアジャイル開発の最大の強みなので、開発チームとして適切に対処できればさらにプロダクトの品質を上げるチャンスとなるでしょう。

開発の方向性が定まっていないとリスクが大きい

アジャイル開発では当初の計画を厳密に作成しないため、開発に一貫性がなくなってしまうというリスクがあります。先述したように、アジャイル開発では不具合によって戻らなくてはいけなくなる工数は少ないです。しかし、全体の方向性が定まっていないと、個々の機能はうまく実装されているものの、一貫性に欠けるサービスやシステムができてしまいます。

その場合でもアジャイル開発の場合は問題に気づきにくく、場当たり的であっても開発が続いてしまうので、それを後から修正しようとすると工数が大きくなってしまいます。

なお、上記のようなリスクを回避するためには、チーム内の透明性を高めて、不確実・不明瞭な要素を排除することが必要になります。具体的には、スプリントやデイリー毎の具体的な状況確認・目標設定・フィードバック、議事録の作成と公開、クライアントとのこまめなコミュニケーション、チーム内で使用する言葉の定義の明確化、情報の全体共有の仕組み化などが挙げられるでしょう

ビジネスの成長を加速させるならアジャイルが最適

アジャイル開発の概要からメリット・デメリットまで、弊社の実例を交えつつ解説してきました。

アジャイル開発では、開発チームがお客さまと共に設計をして、短い開発サイクルで機能のリリース・改善をしていくことが特徴です。仕様の変更が発生しやすい現代のシステム・ソフトウェア開発に適した開発手法と言えるでしょう。

一方で、スケジュール調整が難しい、エンジニアに主体性が求められるなど、アジャイル開発の経験が少ないチームで一朝一夕に導入するには困難を伴う面も想定されます。その場合は比較的小さなプロジェクトからアジャイル化を始めてみるなどの工夫をしてみましょう。

プロジェクトを円滑に進行するために、本稿を参考にしつつ、アジャイル開発の導入を検討してみてください。

記事監修:早坂貴大(メンバーズエッジカンパニー)


お問い合わせ

チーム型プロダクト開発やスクラム導入に関するお問い合わせは下記ページよりお気軽にお問い合わせください。