公開日:2021/05/20 最終更新日:2023/09/25
アジャイル開発とは?|適したプロジェクトと契約形態も解説
ビジネス環境が目まぐるしく変わる現代において、仕様変更に強いアジャイル開発は従来型のウォーターフォール型の開発に代わり、今や世界的に主流となりつつある開発コンセプトです。国内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の専門スタッフが無料相談を受け付けていますので、お気軽にご利用ください。
- 工数とは?ビジネスにおける意味や計算方法・おすすめツールを解説
- 進捗状況の確認の方法は?マナーや注意点、進捗管理のツールも紹介!
- リスクヘッジとは?意味やビジネスにおける使い方をわかりやすく解説!
- クリティカルパスとは?意味や求め方・工程表の書き方をわかりやすく解説!
- チームとグループの違いは?チームワーク強化のメリットやポイント、方法も解説
- チームビルディングゲーム10選|チーム力を高めるおすすめゲームを紹介
- OKRとは?企業導入の具体例から設定方法のポイントまで簡単に解説!
- 効果的なRFPの書き方と成功するためのポイント
- バリューチェーンとは何か?基本と重要性を解説
- デザイン思考のすべて:基礎から実践までの完全ガイド
- ビジネスモデルとは|事業の設計図
- データドリブンとは – 意思決定を変革する新たなアプローチ
- ベンダーとは – IT業界の基礎知識
- シンギュラリティとは?2045年問題や社会への影響について解説!
- ICTとは?基本から最新の活用事例まで詳しく解説!
- IoTとは?基本概念から活用事例、導入方法まで徹底解説
- SIerとは?SESの違い、業界別分析、適性とスキル、業界の未来
- Linuxとは?種類やインストール方法まで紹介
- テスト実施の流れ -準備と実施手順-
- Vue.jsとは?Web開発を効率化するJavaScriptフレームワークの魅力を徹底解説!
- ディープラーニングとは?人工知能の進化を支える革新技術をわかりやすく解説!
- NFTゲームとは?遊びながら稼げるゲームの魅力を徹底解説!
- 【初心者向け】web開発とは?学習方法や必要なスキルを徹底解説!
- オフショアとは?意味やビジネス利用時の具体例を解説!
- オンショアとは?オフショアとの違いやポイントを解説
- iOSアプリ開発のための主なプログラミング言語を紹介
- 請負開発とは?メリットとデメリットを詳しく解説!
- チャットGPTの危険性とは?情報漏洩のリスクや注意点を解説
- フロントエンドとバックエンドの違いは?おすすめのプログラミング言語を解説
- アドホックテストとは?全貌と効果的な活用法
- レグレッションテストとは?効率的なテスト戦略の構築と実施方法
- 【ITアウトソーシング完全ガイド】メリット・デメリット・成功への鍵
- アプリ開発言語の完全ガイド:最適な言語の選び方とその特徴
- システム開発の工程とは?最新の方法とその特徴を徹底解説
- V字モデルの基本と活用方法:詳細ガイド
- モンキーテストの完全ガイド:定義、他のテストとの違い、および最適な実施方法
- オンサイトとは?その意味、メリット・デメリット、他の用語との違い
- Spring Frameworkとは?Java開発者のための完全ガイド
- CI/CDとは?その重要性と現代開発における役割
- デプロイとは?その定義、種類、自動化のメリットを解説
- SSO(シングルサインオン)とは|認証の仕組みとメリットデメリット
- ウォーターフォール開発とは|メリット・デメリット&アジャイルとの比較
- オフショア開発の検討と活用が加速する!ベトナム現地視察レポート
- DAO(分散型自律組織)とは?将来性や仕組みを事例を通してわかりやすく紹介
- チャイナ・プラスワンとは|IT業界はベトナムが最右翼か?!
- SESとは?持続可能な内製化に向けたオフショア活用の可能性
- 中小企業の物流DXを加速する…WMS(倉庫管理システム)とは?
- マイグレーションとは?マイグレーションを阻む課題と解決策
- 基幹システムとは|DXに伴い基幹システムはクラウド化すべきなのか?
- 受け入れテスト(UAT)とは|重要項目・課題・注意点・実施方法
- クロスプラットフォームのメリット・デメリット|トレンドとアプリ開発事例
- 金融業界におけるDXの課題と取り組み事例
- 予約システム開発|開発方法の比較と費用を抑えるためには
- Unity開発でおすすめのオフショア開発企業 3選
- サーバーレスとは?メリットデメリットを事例も交えて解説
- 開発手法比較でわかるプロトタイプ開発|メリットデメリットと向いている開発案件
- ネイティブアプリとは?ハイブリッドアプリ・Webアプリ開発との比較
- AI開発でおすすめのオフショア開発企業 4選
- Go言語(golang)とは?できること、将来性、アプリ事例を紹介
- SPA(シングルページアプリケーション)とは?開発事例やメリットデメリット
- EdTech(エドテック)とは?注目される背景、市場感、取り組み事例を紹介
- 組み込みシステム開発でおすすめのオフショア開発企業 5選
- スクラッチ開発は時代遅れ?パッケージ開発との比較とメリットデメリット
- SaaSの開発方法とは?SaaSビジネスの市場規模やビジネスモデルを解説
- JavaScriptフレームワークまとめ(React・Angular・Vue比較)
- SAP アドオン開発(ABAP)でおすすめのオフショア開発企業 5選
- APIの仕組みと使い方をわかりやすく解説!連携で活用できる機能・事例
- デザイン思考とは?DX時代における企業の取り組み事例も紹介
- それぞれの特徴は?AWS・Azure・GCP 3大クラウド比較!
- React Nativeのアプリ開発が強いオフショア開発企業 5選
- PM(プロジェクトマネージャー)人材育成のプロによる、「PM力の鍛え方」
- Flutterのシステム開発でおすすめのオフショア開発企業 4選
- プロジェクトマネジメントとは?求められるスキル、PM手法、ツール、資格
- 画像解析の基礎知識|仕組み、活用事例・サービス、開発ツール
- NFT(非代替性トークン)とは?ブロックチェーンとの関連や活用事例
- Pythonのシステム開発でおすすめのオフショア開発企業 5選
- スクラム開発とは?アジャイル開発との違いやメリットを解説
- オフショア開発におけるコミュニケーションの課題と解決方法
- アプリ開発で起業|重要なマネタイズプランとエンジニアいない問題
- 24/365とは?システム運用と保守との違いも解説
- ニアショアとは?オフショア開発との違い&メリットデメリット
- RFPとは?提案依頼書を作る意味と書き方を解説
- エンジニア・DX人材採用における課題と人材確保のポイント
- PHPのシステム開発が強いオフショア開発企業 6選
- Rubyのシステム開発でおすすめのオフショア開発企業 4選
- MVP開発とは?ビジネス上のメリット・デメリットと事例
- 海外エンジニア&オフショア開発活用が必須!「AI開発」のメリット・ポイント・成功事例
- DXで進むシステム内製化の動き|メリット・デメリットと課題
- ローコード開発とは?メリットデメリットやおすすめのツール
- パッケージシステムとは?スクラッチ開発との比較
- アプリ開発の進め方は?アプリの種類とメリット・デメリット
- ブロックチェーンとは?業界別・国別の事例やトレンドも紹介
- システム開発・アプリ開発の見積もりの見方|妥当性・見積り根拠を見極めるポイント
- 【発注前に要チェック】システム開発会社の選び方|発注先の選定プロセスと注意点
- 要件定義とは?|開発の失敗を防ぐための基礎知識
- PWAとは?ネイティブアプリとの違い・メリットデメリット・導入事例
- PoC開発とは|システム開発上のPoCの目的・メリットデメリット
- クラウドとオンプレミスの比較|それぞれの違いとクラウド移行のメリット
- Uber、With、Airbnbなど、ニーズ急増!マッチングアプリ/サービスのオフショア開発(メリット・注意点・成功事例)
- RPA導入を成功させるために知っておくべきメリットデメリットや導入の進め方を解説
- 【2021年最新版】システムテスト / ソフトウェアテストが強いオフショア開発企業 4選
- アジャイル開発とは?|適したプロジェクトと契約形態も解説
- ノーコード(NoCode)とは|メリットデメリット&今後のIT開発の展望
- チャットボットの開発方法とは?|導入事例・導入メリット
- DX人材とは?|迫る「2025年の崖」DX人材育成・確保のポイントは?
- レガシーシステムとは?|脱却できないと生じる問題点やリスク
- DXとは?|推進するために取り組むべき課題
- ポストベトナムはどの国に? オフショア開発「新興国」ランキング
- IT人材を確保するためには?!IT人材不足の現状と今後の見込みも解説
- Rubyとは?PHPとの違いやRuby on Railsを解説!
- 組み込み開発の基礎知識|最新動向とIoTとの関連も解説
- 【基礎知識】PHPとは|PHPでできること / 向いている開発案件
- CMSの基礎知識|開発会社選定のポイントも解説
- 【ラボ型推奨】オフショアでのパッケージソフトウェアシステムの開発・カスタマイズ
- アプリ開発の費用や期間 | 開発会社を選ぶポイントとは?
- なぜ「ソフトウェアテスト」は必要なのか?|オフショア開発成功の鍵
- VR/ARのオフショア開発について
- 失敗しないオフショア開発会社の選び方
- オフショア開発で失敗する原因は?注意点と改善・対策
- 【失敗事例から学ぶ】オフショア開発成功のカギ
- オフショア開発の準委任契約とは
- オフショア開発の課題・問題点
- オフショア開発の成功事例
- オフショア開発の現状・動向
- オフショア開発のITエンジニア(IT技術者)の特徴