アジャイル開発に強い開発会社の選び方とは? 現役エンジニアが解説!|東京のWEB制作会社・ホームページ制作会社|株式会社GIG
BLOG
ブログ
アジャイル開発に強い開発会社の選び方とは? 現役エンジニアが解説!
2022-06-25 制作・開発
皆さんは、「アジャイル開発」というシステム開発の手法をご存知でしょうか?
経済産業省がDXレポートを公開して「2025年の崖」問題がクローズアップされる昨今、この崖を越えるためには、企業は急ぎデジタル変革に取り組む必要があります。デジタル変革を実践するには、迅速に変化に対応できるシステム開発体制を整えることが必要不可欠です。
こうした変化の速い時代に対応できる開発手法が、アジャイル開発です。
今回はこのアジャイル開発について、基本的なことやメリット・デメリット、開発会社の選び方などを解説します。
アジャイル開発とは?
アジャイル開発とは、システム開発を小さな単位に分け、プログラミングとテストを繰り返しながらプロジェクトを進める開発手法のことを指します。アジャイルという単語には、「素早い」や「俊敏な」という意味が含まれています。
アジャイル開発が広まった背景には、2001年にアメリカ・ユタ州に集まった17人のエンジニアがまとめた「アジャイルソフトウェア開発宣言」があります。アジャイル開発の細かな手法はいろいろありますが、この価値観はすべてに共通するものだといえます。
アジャイル開発では、基本的に開発途中に仕様変更があることは前提で、ユーザーからのフィードバックを得て繰り返し改善を行い、品質を高めていきます。
計画→設計→プログラミング→テストといった基本的な工程を繰り返すことが特徴で、この流れは「イテレーション」と呼ばれます。イテレーションには「反復」や「繰り返し」という意味があり、アジャイル開発で機能を実装するための短いサイクルのことを指します。 このイテレーション内で、優先順位が高い機能を中心に開発を進めていきます。
プロジェクトごとにイテレーション期間は異なりますが、多くの現場ではイテレーションを1週間~2週間単位で区切り、実行されます。
ウォーターフォール開発との違い
アジャイル開発と比較されるのが、「ウォーターフォール開発」と呼ばれる開発手法です。両者の大きな違いは、開発の進め方です。
ウォーターフォール開発は、上流工程から下流工程へと順を追って進み、基本的には工程の後戻りは発生しないことを前提に進めていきます。一方、アジャイル開発では、イテレーションという単位でフェーズを区切って機能単位でリリースできるようにし、スピード感を持って開発を繰り返していきます。
これまでのシステム開発の現場では、どのようなシステムを作るのかといった全体像を決め、全体を設計してから開発するウォーターフォール開発が主流でした。しかし、時代の変化が加速するにつれ、システム開発にも素早い仕様変更が求められるようになり、アジャイル開発が多くのプロジェクトで採用されはじめています。
また、デジタル技術を活用した新たな価値創出への取り組みであるデジタルトランスフォーメーション(DX)の過程でも、ウォーターフォール開発ではなくアジャイル開発による市場検証が求められています。
アジャイル開発のおもな手法
「アジャイル開発」というのは大きな概念で、その手法はさまざまです。ここでは代表的なアジャイル開発の手法について確認しておきましょう。
手法1. スクラム
「スクラム」とは、スクラムガイドによって定義されているアジャイル開発のフレームワークです。スクラムときくと、ラグビーをイメージされる方も多いかと思いますが、まさにそのラグビーのスクラム(セットプレーのひとつ)が語源です。
チームを組んで役割やタスクを明確化し、コミュニケーションを取りながら開発を行います。チーム全員で開発を進める手法のため、アジャイル開発の中でも特にチーム間のコミュニケーションが大切になってきます。
チームメンバー全員が自分の役割や何をすべきかを認識したうえで開発に取り組むため、さまざまな作業を同時に進めることができ、作業効率の向上も期待できます。一方で、コミュニケーション不足に陥ると、開発がスムーズに進行しないこともつながります。
とにかく「コミュニケーション第一」のアジャイル開発手法といえるでしょう。
手法2. エクストリーム・プログラミング(XP)
「エクストリーム・プログラミング」とは、プロジェクトの仕様が途中である程度変更されることを前提に、プロジェクト全体を細かいフェーズに分けて、1フェーズの開発サイクルを短くして作業を進めていく手法のことを指します。
柔軟性に優れており、スピード感をもって変化に対応することを重視した開発手法です。技術面を重視するため、プログラマー主導の開発手法ともいえます。トレンドに遅れないよう素早いリリースが求められるアプリ開発や、少人数のチームを組んで行う開発の場合などに最適な手法となるはずです。
手法3. ユーザー機能駆動開発(FDD)
「ユーザー機能駆動開発」とは、ユーザー目線で必要な機能を中心に開発を進める手法のことを指します。適切な間隔でソフトウェア(機能)の提供を繰り返すことが大きな特徴です。
「ユーザーにとっての機能価値」を重視して開発が進められるため、最初にビジネスプロセスモデリングを実施し、ユーザービジネスの「見える化」を行います。モデルに対してマイルストーン(中間目標点)を設定し、短期間の開発を繰り返しながら、適切なタイミングでユーザーに機能を提供していくことがポイントとなります。
アジャイル開発のメリット
アジャイル開発をすることによって、具体的にどのようなメリットが得られるのでしょうか。順を追って確認していきましょう。
メリット1. 開発スピードが速く、修正工数が少なくなる
アジャイル開発では、各機能を切り分けて、優先度の高い機能から開発・テストを完了させてその都度リリースします。開発に費やす時間を短縮できるので、リリーススピードを高めることにもつながります。
また、小さな機能単位で開発しているため、トラブル発生前の工程に戻って修正する工数が少なくなります。ウォーターフォール開発の場合は、まとめて開発しているぶん、トラブル発生箇所によっては逆戻りが多くなりやすいことが難点。設計をやり直すこともあります。
メリット2. 仕様変更しやすい
アジャイル開発は、スピード感を持って柔軟な対応を行うことを重視しているため、トレンドの移り変わりが激しいWebサービスやスマホアプリ開発とは非常に相性が良いです。
短いサイクルで完成した機能をリリースし、そこから得たユーザーのフィードバックなどを次のサイクルに活かすことが前提です。
トレンドに合わせたフレキシブルな開発が実現でき、仕様が不透明な場合でもすぐに対応できるのは、アジャイル開発ならではの魅力といえます。
メリット3. プロトタイプを作って運用できる
ソフトウェア開発の初期段階では、クライアントにおおざっぱなイメージしかない状態でヒアリングを行うケースはたくさんあります。
アジャイル開発では、その漠然としたクライアントの要求から、まずはテスト用のプロトタイプを作成。それをクライアントに運用してもらい、ニーズをくみ取って改良していく手法もとれます。
要件定義のフェーズから工数を十分に割いて、綿密に仕様を決めていくよりも、実際にクライアントが簡易なプロトタイプでも操作した結果からニーズに沿ったシステムを作るほうが、開発期間が短くなるケースもあります。
アジャイル開発のデメリット
アジャイル開発もメリットだけではありません。当然デメリットも存在しますので、デメリット部分に関しても確認しておきましょう。
デメリット1. プロジェクトの方向性がブレやすい
詳細な仕様を決めずにクライアントの要求に応えて改善を繰り返し、仕様の追加・変更を行う手法のため、プロジェクトが当初の計画から大幅に変わってしまうことも十分に考えられます。場合によっては、終わらない改善のループが発生することも。
そうなれば必然的に予算や工数オーバーが発生します。「最初の仕様だけはきちんと決めておけばよかった……」とならないよう注意してください。
デメリット2. 全体のスケジュール管理が難しい
アジャイル開発では、基本的には機能ごとにスケジュールを設けて開発を進めるため、プロジェクト全体のスケジュールや進捗状況を把握しにくい傾向があります。
ウォーターフォール開発でのプロジェクト管理に強いマネージャーでも、アジャイル開発の管理になるとその力を発揮できないこともあります。アジャイル開発にはアジャイル開発の管理ノウハウが必要です。
デメリット3. アジャイル開発が向かないシステムもある
アジャイル開発には、トレンドへの素早い対応が求められるWebサービスやスマホアプリ開発には向いています。一方で、アジャイル開発に向かないプロジェクトとしては、基幹系システムの開発などが挙げられます。
基幹系のシステム開発では、変化に対応することよりも、定められた仕様と納期を厳守してリリースすることが求められます。
開発する対象やクライアントの要求に合わせて、最適な開発手法を選択する検討する必要があります。いつでもアジャイル開発ではなく、プロジェクトの特性にあわせて、アジャイル開発とウォーターフォール開発を併用することもひとつの手段です。
アジャイル開発に強い会社選びのポイント
アジャイル開発を受注している会社は数多く存在します。しかし、できるだけ費用を抑え、質の高いシステムを開発してくれる会社を選びたいもの。ここでは、エンジニア目線で開発会社を選ぶ際のポイントを解説します。
ポイント1. アジャイル開発の経験がある
「アジャイル開発もウォーターフォール開発も同じシステムを作る手段だから、どこかのシステム会社に依頼すればいいだけでは?」と、簡単に考えてはいけません。
エンジニア目線で両者の発想の違いを解説すると、
・アジャイル開発 = プログラミングファースト
・ウォーターフォール開発 = ドキュメントファースト
といえます。
これは、「ドキュメント(仕様書など)を先に作ってからプログラミングを行うのか」、「ドキュメントを作ることよりもプログラミングを先にどんどんと進めて開発するのか」という意味で、同じシステム開発でも根本的な発想が違うのです。
そのため、プログラミングを先にどんどんと進める手法(=アジャイル開発)は、慣れていないとプログラムが場当たり的な感じになってしまい、バグだらけになります。アジャイル開発自体、ある程度のバグは許容するものですが、数があまりにも多いと修正にかなりの手間を要します。
アジャイル開発経験の有無は、開発会社選びの際に重要なポイントとなります。
ポイント2. 大手SIerよりもベンチャー企業が強い傾向
システム開発に限った話ではありませんが、 「業界大手に発注すればひとまず安心」というイメージありませんか? システム開発の場合、大手といえば大手SIerが該当します。
大手SIerにはどの案件でもカバーできるよう専門の部署が設けられ、優秀な社員やシステム開発のノウハウもたくさん持っているのは事実です。
ただ、受注案件の規模も大きいものがほとんどのため、ウォーターフォール開発で進めるのに適したプロジェクトを得意としているのが、大手SIerともいえます。
アジャイル開発はどちらかというと、技術力重視でプログラムを組める人をメインにしてプロジェクトを進めるので、プログラミングを得意とするエンジニアはベンチャー企業のほうが多く抱えている印象です。
大手SIerの社員は、プログラミングよりも要件定義や設計といった上流工程を担当することが多く、実際のプログラミング作業は下請け企業に丸投げすることが大半です。そこにはスクラムも何もなく、スピード感が必要なアジャイル開発に向いているとは思えません。
なおGIGでは、ご依頼いただいたプロジェクトはかならず社内の開発部署が担当し、開発内容に合わせて社内外のプロフェッショナルを巻き込んだチーム編成を行います。当然、丸投げはしていません。
ポイント3. ラボ型開発を採用している
アジャイル開発は、全体像が見えていない開発にも対応できる一方で、見積もりが軽視されがち。工数の根拠があいまいで、トラブルが起きることもあります。
そのようなトラブルを未然に防ぐことができ、アジャイル開発と相性が良いといわれているのが「ラボ型開発」です。
ラボ型開発とは、オフショア開発における契約形態のひとつです。半年~1年の契約期間を設け、専用のエンジニアチームにプロジェクトを担当してもらう契約のことです。
※オフショア開発:システム開発などの業務を海外企業に発注する手法。人件費の低い国の企業に発注することで、開発費用を抑えられる
見積もりがエンジニア人数×開発期間となるので、費用を抑えられるうえに優秀なエンジニアも一定期間確保でき、変化にも柔軟に対応できます。アジャイル開発に向いている契約形態といえるでしょう。
アジャイル開発はGIGにお任せください
求人サービスや不動産紹介サービスサイトの制作、膨大なデータを活用した大規模CRMの開発プロジェクトなど、GIGではこれまで培ってきたシステム開発のノウハウと知見を活かした支援のもと、高品質なシステム開発を実現してきております。
それぞれの企業様ときちんと向き合い、豊富なシステム開発の実績から最適なソリューションをご提供します。
システムのアジャイル開発を検討している方、すでに稼働しているシステムの保守・運用内容を見直してみたい方は、まずはお気軽にご相談ください。
WebやDXの課題、お気軽にご相談ください。
GIG BLOG編集部
株式会社GIGのメンバーによって構成される編集部。GIG社員のインタビューや、GIGで行われたイベントのレポート、その他GIGにかかわるさまざまな情報をお届けします。