BLOG

アジャイル開発とは?オフショア開発との相性を解説

on 20/12/11 7:30

IT用語でよく耳にするようになったアジャイル開発。最近ではオフショア開発とアジャイル開発の組み合わせが注目されています。

 

この記事では、まず基本のアジャイル開発とはどういうものなのか?から、オフショア開発との相性を考察。オフショア開発とアジャイル開発を組み合わせる時の注意点などを解説していきます。

 

【目次】

◆アジャイル開発とは

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

・アジャイル開発のメリット:今の時代にマッチした開発手法】

・アジャイル開発のデメリット:先が見えない開発

◆アジャイル開発の具体的な成功例

◆アジャイル開発とオフショア開発

◆まとめ:オフショア開発のコンサルティングが重要

 

※NADJAでは開発についての無料相談をさせて頂いております

⇒無料でNADJAに相談する

 

◆アジャイル開発とは

アジャイルは、英語で「agile」と書きます。アジャイルとは「素早い」「すばしっこい」「俊敏」といった意味を持ちます。「quick」「fast」の類語と考えると、分かりやすくイメージできると思います。

 

アジャイル開発。つまり、素早く俊敏な開発とは何なのでしょうか。アジャイル開発とは、システム開発においての開発手法の名前ですが、大まかなイメージとしては、小さな単位でシステムを実装していくという開発手法です。

 

ソフトウェア開発というと、代表される開発手法はウォーターフォールモデルです。ウォーターフォールモデルは、最初にシステム全体を設計し、開発して、最後にシステム全体を完成させるというものです。

 

アジャイル開発は、それとは対照的に、システムの一部を開発し、完成させ、また次のシステムの一部を開発し、組み込んでいくということを繰り返していく。という形を取ります。

 

ウォーターフォールモデルでは要求定義、設計、コーディング、テストと工程が推移していきますが、アジャイル開発の場合は、それが何回も繰り返し行われていきます。

 

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

アジャイル開発には、どんなメリットとデメリットがあるのでしょうか。それぞれ見ていきましょう。

 

・アジャイル開発のメリット:今の時代にマッチした開発手法

 

スマートフォンアプリの開発では、世の中のトレンドや時勢を見る。また、先読みしながら、世の中のトレンドや時勢に合ったソフトウェアを作ることが重要です。開発期間を長くとってしまうと、その時のトレンドが終わってしまうというデメリットがあります。

 

システムの全てを最初に設計し、開発が終わった時にはシステムの全てが一気に出来上がった状態になるという、ウォーターフォールモデルでの開発では開発期間は長くなりがちです。

 

終わった時にはトレンドが過ぎ去っていて、世の中の関心は他の事に移り変わっている。ということもあります。そういったリスクは開発期間が長ければ長いほど高まります。

 

アジャイル開発の場合は、システムの一部だけを作り、逐次実装していくという運用が可能です。なので、システムがリリースされ、世の中に出回る時間だけで考えると、ウォーターフォールモデルの何倍も早くリリースすることができるのです。

 

このアジャイル開発の特徴は、今のSNS社会と相性が抜群なことです。世の中のトレンドや時勢をシステムに反映させる時のラグを最小限に抑える開発が出来るからです。

 

トレンドに合わせた一部の機能をリリース、実装する。そうすることで、システム全体の一部にトレンドにあった機能があるとしても、その機能をメインで使う層からのシステム需要は増えるでしょう。

 

そして、トレンドが過ぎ去って、その機能が陳腐化したとしても、長く使っているシステムは利用者には使いやすいものです。慣れ親しんだシステムを使い続ける人は、少なくはないでしょう。

 

そして、また次のトレンドにあったサブシステムを開発、実装すれば、次の循環が生まれます。その循環を繰り返していくことで、システムは徐々に多機能になっていき、システム自体のクオリティも上がっていきます。

 

さらにもう一つ、今の時代にマッチしたメリットが、アジャイル開発にはあります。昨今では日に日にSNSが発展を遂げ、人々の生活に入り込んでいます。そして、SNSからは、要望やクレームのメールでは吸い上げられないような願望、欲求を見つけ出すことができます。

 

リリースまでの期間が短いということは、そういった、SNS等からの願望や欲求にも素早く応えることができるということです。SNS時代、人類総ジャーナリスト時代の今の時代に、素早くリリースできるというのは、大きなメリットになります。

 

こういったことから、最初から全てを決めないアジャイル開発は、今の時代にマッチした開発手法となっています。

 

・アジャイル開発のデメリット:先が見えない開発

 

アジャイル開発のデメリットは、完成形が全く見えないことです。基本的にはアジャイル開発では、最終的ににどういったシステムになるのかは分かりません。

 

最初に大まかなロードマップがあったとしても、途中で頻繁に変更が入るでしょう。また、何があっても最初の構想通りにやってしまってはアジャイル開発の旨みが消えてしまいます。


もしも、最終完成形が完全に見えている開発であれば、ウォーターフォールモデルでの開発をおすすめします。



システムごとに開発ができて、フレキシブルなアジャイル開発は、何にでも適用したくなってしまいます。しかし、フレキシブルだからこそ、迷走やブレが生じてしまう、コントロールが難しい開発手法でもあります。



仕様変更が発生した場合にはアジャイル開発の方が便利な面もありますが、アジャイル開発だからという気の緩みから、行き当たりばったりで組み込んだり止めたりを繰り返すことになりがちです。最終的に、工数が膨らみ、納期が延びてしまうことにもなりかねません。



また、システムごとに要求定義、設計、コーディング、テストを繰り返すということは勿論、進捗関係もシステムごとに決めることになります。そうなれば、全体の納期は無いようなものとなり、いつまでに仕上がるのかを把握するのは不可能です。



最初から完成形がきっちりと決まっている。例えば既存の手作業の自動化は、最初にきっちりと仕様を固定すれば、フィードバックはほぼ要りません。また、ユーザー数も一定なので、開発期間が長くなるほど利益は少なくなるでしょう。



こういった、トレンドを読む必要も無いし、限られた人のために作られるようなシステムの場合はアジャイル開発だと、むしろやりにくいかもしれません。ウォーターモデルでの開発が無難です。

 

◆具体的なアジャイル開発の成功例

例えば、鉄道の乗り換え案内のアプリがあるとしましょう。そのアプリを開発していく中で、周辺のグルメ情報を入れたら便利で面白そうだということになった場合、ウォーターフォールモデルでは、元々のシステム開発計画を修正する必要が発生します。仕様変更に伴う大幅な工数の増加が考えられます。

 

対して、アジャイル開発では、新たにサブシステムの開発を始めます。なので、元のシステムがそもそも存在しないため、仕様変更に右往左往することはありません。サブシステムを、最初から設計するだけでいいのです。変更ではなく追加なので、無駄な工数は発生しないのです。

 

アジャイル開発の成功例としては、もはや、全世界の殆どの人が知っているであろう有名な通販サイト「amazon」が挙げられます。

 

amazonは、最初は書籍や映像ソフトを販売する、ゲオやツタヤのようなサイトでした。しかし、それ以外の、食品や衣料等の通販を行うようになり、今では世の中のほとんどの物をamazonで買えるようになりました。

 

さらに最近では、サーバーやシステムをレンタル、運用するAWSも手掛けています。こちらも利用者が増え続け、クラウドサービス市場でもトップシェアの企業となりました。

 

逐次、時代に合ったサービスを実装し、メインのシステムに組み込むという、アジャイル開発の手法。それを最大限に活かした結果、amazonは更に大きな会社になっています。タイミングを見逃さずにチャンスをものにするという、お手本のようなアジャイル開発の成功例ですね。

 

◆アジャイル開発とオフショア開発

では、海外にアウトソーシングを行うオフショア開発にはアジャイル開発は向いているのでしょうか。これについては、一長一短があり、一概に向いている向いていないとは言えないのが実情です。

 

オフショア開発は、ひとことで表わせば海外アウトソーシングです。その時々の世界情勢や、国による違いが大きな開発手法なので、振れ幅が大きく、オフショア開発とひとくくりに言っても、その開発環境は多岐にわたるのです。

 

そのため、アジャイル開発に向いている場合もあれば、ウォーターフォールモデルでの開発が向いている場合もあります。その時々で判断をし、適切な開発手法が使うのがベターでしょう。

 

例えば、英語の普及率が低く、コミュニケーションが十分に取りづらい国の場合には、頻繁に要求定義や設計工程が発生するアジャイル開発はやりにくいかもしれません。

 

英語の普及率が低い国の場合、現地語に翻訳する手間と費用が普通よりも多くなる場合が殆どです。また、翻訳する過程で重要な情報が抜け落ちたり、伝わりにくいということも考えられます。

 

ウォーターフォールモデルであれば、一度要求や仕様を伝えてしまうと、後は微調整を行いつつアウトソーシング先での開発が行われることになり、コミュニケーションは、それほど必要では無くなります。

 

しかし、アジャイルの開発手法で開発を行う場合、システムごとに要求定義や設計を繰り返すことになるので、綿密な打ち合わせは必要不可欠です。

 

なので現地語でのコミュニケーションが必要になる場合には、アジャイル開発では、デメリットが多くなりがちです。

 

とはいっても、それも一概に決めつけられることではありません。オフショア開発では、まだまだIT技術が未熟な国にアウトソーシングする場合も多々ありますが、オフショア開発はウォーターフォールモデルでの開発を何度も繰り返すという性質の開発手法です。なので、その分だけ、一連の開発経験を多く積むことができます。

 

真面目で勤勉な国柄のアウトソーシング先では、開発を行っている最中に技術者がグングンと急激に育つということも多々、起こります。そういった、育成面での将来性に目を向けた場合、英語の普及率が低い国ほど、そういったチャンスが埋もれているということでもあります。

 

◆まとめ:オフショア開発のコンサルティングが重要

オフショア開発では、運用したいシステムや、開発したいソフトウェアによって国を選ぶことが重要ですが、それと同じで、開発手法も全体にマッチした選出を行うといいでしょう。

 

世界情勢や、国によっての技術者の特徴は、専門家でないと掴みにくい部分があります。自社でそういったスキルを持つ人材を確保するというのは、ハードルが高い場合が多いです。

 

その辺りは、オフショア開発のコンサルタントに相談、見積もりをお願いしてみるのがベターでしょう。国際情勢に精通した事業開発コンサルタルティングサービスは、今や様々な企業で取り扱っています。

 

今の時代に合っていて便利なアジャイル開発手法。そして、同じくIT技術が発展している最中の今だからこそ出来る、オフショア開発。二つが噛み合えば相乗効果は期待できますが、手放しで組み合わせると思わぬデメリットも発生してしまいます。

 

オフショア開発とアジャイル開発の組み合わせは、ウォーターフォールモデルでの開発と比べると、まだまだ事例が少なく、未知の部分が多く存在します。チャレンジし甲斐がありますが、大きなリスクが伴う可能性も大きいです。

 

とはいえ、基本的な考え方はどの時代も、どういう時勢でも同じです。適切なアウトソーシングと適切な開発手法のチョイスで、効率良くシステム開発を行いましょう。

 

>>無料で開発について相談する<<

 

濱口 雄太
Posted by 濱口 雄太

NADJAの代表 HubSpotを愛してやまないマーケター。 ブリッジSEとして開発の上流工程も担当。

Topics: ソフトウェア開発, エンジニア