アジャイル開発とは?|適したプロジェクトと契約形態も解説

アジャイル開発とは?|適したプロジェクトと契約形態も解説

ビジネス環境が目まぐるしく変わる現代において、仕様変更に強いアジャイル開発は従来型のウォーターフォール型の開発に代わり、今や世界的に主流となりつつある開発コンセプトです。国内SIerに開発を依存している企業が多いためか、日本での普及率はまだまだ低い模様……。ですが、日本で普及が遅れたアジャイル開発には、実は日本企業の生産方式が取り入れられています。

 

このテキストでは、アジャイル開発とはなにか、歴史やメリット・デメリットといった基礎知識から、アジャイル開発を成功させるポイント、相性のいい開発手法についても解説していきます。

アジャイル開発とは?

■ アジャイル開発とは?

「アジャイル(agile)」とは、敏捷・機敏など、行動が素早いことを意味する形容詞。アジャイル開発(agile software development)は迅速にソフトウェア開発ができるさまざまな開発手法群の総称であり、開発手法そのものの名称ではありません。

 

アジャイル開発は市場やビジネス環境の変化が著しい現代において、現在主流になりつつある開発コンセプトのことですが、開発するソフトウェアの機能を細かく分類し、それぞれに短い開発期間単位を採用します。機能ごとに短い開発期間を繰り返すことで一つ一つの機能を開発していくのがアジャイル開発の特徴です。この開発サイクルの反復のことをイテレーションやスプリントと呼びます。

 

短期間の機能開発が終了するごとに機能追加されたソフトウェアが出来上がっていく、とイメージするとわかりやすいのではないでしょうか。個々の機能開発が独立しているため、リスクを最小限にすることができます。

 

2001年、17名のソフトウェア開発者によって公開された「アジャイルソフトウェア開発宣言」にはこう書かれています。

"We are uncovering better ways of developing software by doing it and helping others do it.

Through this work we have come to value:

Individuals and interactions over processes and tools

Working software over comprehensive documentation

Customer collaboration over contract negotiation

Responding to change over following a plan

That is, while there is value in the items on the right, we value the items on the left more."

(私たちは、ソフトウェア開発の実践あるいは実践を手助けをする活動を通じて、よりよい開発方法を見つけだそうとしている。

この活動を通して、私たちは以下の価値に至った。

プロセスやツールよりも個人と対話を、

包括的なドキュメントよりも動くソフトウェアを、

契約交渉よりも顧客との協調を、

計画に従うことよりも変化への対応を、価値とする。

すなわち、左記のことがらに価値があることを認めながらも、私たちは右記のことがらにより価値をおく。)

※「アジャイルソフトウェア開発宣言」より引用。

アジャイル開発においての価値観が書かれており、「プロセスやツール」「包括的なドキュメント」「契約交渉」「計画に従うこと」よりも、「個人と対話すること」「動くソフトウェア」「顧客との協調」「変化に対応すること」が、より大きな価値があると定義されています。

 

このアジャイルソフトウェア開発宣言が公開されて以降、アジャイル開発のさまざまな手法が考案され、変化に強く生産性の向上が見込めるアジャイル開発は時代の流れに乗り、多くの企業が導入することとなりました。

 

冒頭でも触れたとおり、アジャイル開発は日本企業の生産方式がもとになっています。その企業とは、誰もが知る日本の有名企業、トヨタ自動車株式会社です。

 

■トヨタ生産方式(TPS)をもとにして作られたアジャイル開発

トヨタ自動車株式会社にはトヨタ生産方式(TPS)という生産手法があります。これは「お客様にご注文いただいたクルマを、より早くお届けするために、最も短い時間で効率的に造る」という目的のもと、確立された手法です。

 

各工程において、必要なものだけを素早く作る方式は、無駄を省き生産性を高めるとして、海外からも注目が集まりました。1980年代、アメリカではTPSの研究と、さまざまな分野への応用が進められ、TPSをソフトウェア開発に取り入れたのがアジャイル開発です。

 

■ 従来型のウォーターフォール型との違い

ウォーターフォール型の開発は、計画がもっとも重要となる開発手法です。ソフトウェアの開発は「要件定義」「分析」「設計」「実装」「テスト」といった工程に区分され、それを計画どおりに進めていかなければなりません。すべての工程が完了して初めてソフトウェアが使えるようになります。機能を初期に確定させなければならないため、開発の期間が長ければ長いほど時代遅れになってしまう可能性もあります。

 

とはいえ、ウォーターフォール型の開発にもメリットはあります。計画がきっちりと決まっているので、スケジュールや予算の見積もりが立てやすいだけでなく、工程ごとに担当をつけるため、さまざまな技術に精通した人材でなくてもその工程ごとにスペシャリストを養成、もしくは採用することで開発を進められます。

 

アジャイル開発はこの真逆の開発コンセプトですので、メリットとデメリットについてもウォーターフォール型とは全く異なります。メリットとデメリットについては次の項で解説します。

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

変化に対して柔軟に対応でき、生産性を高めることができるアジャイル開発。いいことばかりのように思えますが、メリットだけでなくデメリットも存在します。アジャイル開発のメリットとデメリットを確認しておきましょう。

 

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

何と言っても、変化に強いというのが大きなメリット。例えば不具合や仕様変更などが生じたとき、工数の戻りが少なく済みます。機能ごとの短い開発期間の中で計画から実装、テストまで行っているため、問題に気づいたらすぐに対応でき、ほかの機能への大きな影響がありません。

 

開発途中でも仕様変更に対応できるため、顧客のリアルタイムの要望にフィットしたものが作れる、というのもメリットの一つでしょう。

 

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

臨機応変さがアジャイル開発の持ち味ですが、それが裏目に出ることも。機能ごとのスケジュールを設定して開発を行うため、ウォーターフォール型に比べると予算やスケジュールの管理がしづらいというのが大きなデメリットです。

アジャイル開発の手法

アジャイル開発とは、迅速にソフトウェア開発ができるさまざまな開発手法群の総称であることは先に述べたとおりです。では、その開発手法にはどのようなものがあるのでしょうか。

 

アジャイル開発で用いられる代表的な開発手法が「スクラム」「エクストリーム・プログラミング(XP)」「ユーザー機能駆動開発(FDD)」の3つです。

 

■スクラム(Scrum)

チーム内のコミュニケーションに重点を置いたフレームワークが「スクラム」です。メンバーたち自身が短い期間での計画から設計、実装を行います。スクラムにおいて反復の単位は「スプリント」と呼ばれます。メンバー全員が一丸となって協力しなければスプリントにおける成果をリリースできないため、まさにスクラムを組むことが重要となります。

 

このスクラムの起源にも、実は日本人がかかわっています。下記は、1986年に竹内弘高氏、野中郁次郎氏によって発表された、新製品の開発手法について書かれた論文 “The New New Product Development Game”の一文です。

"In today’s fast-paced, fiercely competitive world of commercial new product development, speed and flexibility are essential. Companies are increasingly realizing that the old, sequential approach to developing new products simply won’t get the job done. Instead, companies in Japan and the United States are using a holistic method—as in rugby, the ball gets passed within the team as it moves as a unit up the field."

(新製品の開発にはスピードと柔軟性が不可欠です。新製品の開発においては従来のような逐次的なアプローチではうまくいかないという認識が企業の間で広がっています。日本やアメリカの企業においては、ボールがチーム内でパスされ、チームが一丸となってフィールドを移動するラグビーのような手法が採用されています。)

"The New New Product Development Game" by Hirotaka Takeuchi and Ikujiro Nonaka より引用

この論文ではスクラムという言葉も使われており、この論文に影響を受けたジェフ・サザーランドやケン・シュウェイバーがスクラム開発というフレームワークを作りました。2001年に発行された書籍“Agile Software Development with Scrum”においても、上記の一文が引用されています。

 

■エクストリーム・プログラミング(Extreme Programming)

XPとも呼ばれる手法です。コミュニケーションに重きをおいたスクラムとは異なり、エクストリーム・プログラミングは開発における柔軟性を重視しています。エクストリーム・プログラミングにおいては下記の4つの価値を共有する必要があります。

 

・コミュニケーション

・シンプル

・フィードバック

・勇気

 

ステークホルダーとのコミュニケーションを大事にすること、シンプルな設計を行うこと、テストとフィードバックを重視すること、仕様や設計の変更に立ち向かう勇気を持つこと、が4つの価値としてあげられています。

 

■ユーザー機能駆動開発(FDD)

FDDとも呼ばれるユーザー機能駆動開発という開発手法は「Feature Driven Development」の頭文字をとったもの。常にユーザーに対してデモが可能な最新システムを構築しておくことや、プロジェクト内外に対して目に見える形で進捗を報告するなど、顧客にとっての機能価値に重きをおいた開発手法です。

包括的なドキュメントよりも動くソフトウェアが重要というアジャイル開発の考えともリンクしています。

アジャイル開発を成功させるポイント・注意点

■アジャイル開発に向いているプロジェクトとは?

アジャイル開発を成功させるためには、当たり前ですがそのプロジェクトがアジャイル開発に向いているかどうかを見極めることが大きなポイントです。

 

アジャイル開発に向いているのは、「全体像が明確でないプロジェクト」や「開発途中で優先度が変化する可能性のあるプロジェクト」などです。全体像が明確でなくても、必要な機能から開発することができますし、開発途中での仕様変更などにも柔軟に対応できるからです。

 

■アジャイル開発の注意点

全体像が見えていないプロジェクトでも進めることができるのはアジャイル開発の長所でもありますが、全くのいきあたりばったりでプロジェクトにあたると、予算やスケジュールに無駄が生じます。変更の可能性があったとしても、ある程度の目的や最終形は決めておいた方がいいでしょう。

 

アジャイル開発はメンバーやクライアントなど、ステークホルダーとのコミュニケーションが非常に重要となってきます。チーム全体で足りない知識やスキルを補い合えるかどうか、クライアントもチームとして共に開発にあたってもらえるかを確認しておくのも重要なポイントです。

ラボ型開発との相性

全体像が見えていない開発にも対応できる反面、アジャイル開発は見積りが軽視されがちです。工数根拠などが原因でトラブルが起きることも。

そのようなトラブルを未然に防ぐことができ、アジャイル開発と相性が良いと言われているのがラボ型開発です。

 

ラボ型開発とは、オフショア開発における契約形態の一つであり、半年や一年といった契約期間中、特定のエンジニアチームにプロジェクトを担当してもらう契約のことです。見積もりがエンジニア人数×開発期間となるのでコストを抑えられる上に優秀な人材を一定期間確保でき、変化にも柔軟に対応してもらえます。アジャイル開発に向いている契約形態といえるでしょう。

日本企業のアジャイル開発事例

自動車部品メーカーのデンソーは、MaaS開発でアジャイル開発に取り組み成功した企業です。
デンソーは、従業員数168,391人で(連結)、愛知県の本社を構える自動車部品メーカーです。

 

■理由や背景

デンソーでは、これからの自動車関連のMaaSが、Webクラウド中心になると考えましたが、社内での開発をほとんど行っておりませんでした。
社内技術力を高め、迅速に顧客ニーズに応えられる体制構築を目指す必要がありましたが、従来のウォーターフォール型の開発では高速で、かつ繰り返しサービス改善を図ることが難しく、アジャイル開発への取り組みを開始したようです。

 

■概要

デンソーはアジャイル開発チームは、開発のフェーズを「立ち上げフェーズ」「顧客巻き込みフェーズ」「商用テストフェーズ」「商用リリースフェーズ」の4つに分けて、開発を進めて行きました。

アジャイル開発では、ウォーターフォールモデルとは異なり、初めに細かな工程までは決めずに開発を進めるため、状況に応じて顧客とコミュニケーションをとりながら開発を進める必要があります。そういった開発プロセスの違いはあるため、アジャイル開発では「顧客に理解」してもらうことが需要となります。
しかし、アジャイル開発を行うことでリリースまでの期間を短縮することでき、細かく区切って顧客との確認を行うため、品質向上にも繋がります。デンソーでは「ドキュメントではなく実際のソフトウェアを動作させる」「開発ルームで顧客と一緒に検討する」「外部顧問など第三者の識者を巻き込む」などでアジャイル開発を顧客に浸透させていきました。

 

組織の方針によってはアジャイル開発で進めることが困難な企業もあるかもしれんませんが、システムや製品に応じて開発方法を使い分けることが重要になります。

まとめ

市場やビジネス環境の変化が目まぐるしく変わる現代では、ソフトウェア開発にも臨機応変さが求められることもしばしば。海外に比べてアジャイル開発の普及率は低い日本ですが、これまでの開発手法では時代の変化に対応できないことも多くなっているため、今後アジャイル開発の普及率は爆発的でないにせよ、じわじわと上がっていくと考えられます。

その際に必要なのが、アジャイル開発を進めることのできる人材です。

工程ごとに担当者がいればよいウォーターフォール型の開発と違い、短期間の機能開発において計画から実装、テストまでを行う必要があるため、アジャイル開発では人材の確保も重要となってきます。

 

人材の確保についてお悩みのある方は、専門家に相談してみてはいかがでしょうか?「オフショア開発. com」では、オフショア開発の専門コンシェルジュに無料で相談することができます。

「オフショア開発の動向やトレンドについて知りたい」「国別の特徴や単価について比較検討したい」「ラボ型開発について聞きたい」…など、多岐にわたるご質問・ご相談にお応えいたします。

「オフショア開発. com」は、多数のオフショア開発企業とパートナー契約を結んでおりますので、御社にぴったりのオフショア開発企業をご紹介することも可能です。ぜひお気軽にお問い合わせください。


企業選定にお困りでしたら、オフショア開発. comの専門スタッフが無料相談を受け付けておりますので、お気軽にご利用ください。

このページを見た人は以下の記事も見ています。(関連記事)