Share
「アジャイル開発」という言葉をよく耳にするようになりました。20年ぐらい前からソフトウェア開発において取り入れられている開発手法です。
ソフトウェア開発を、海外に業務委託する「オフショア開発」でもよく採用されています。
そもそも「アジャイル開発」とは一体どんな開発方法か
アジャイルにはどんなメリット・デメリットがあるか
どんなプロジェクトがアジャイルに向いているか
この記事ではこういった疑問についてわかりやすく解説します。
アジャイル(Agile)とは「俊敏な・素早い」という意味の英単語で、「アジャイル開発」とは一言でいうと、短いサイクルで開発とリリースを繰り返していくというソフトウェア開発手法のことです。
アジャイル開発には、もともとはトヨタ生産方式の製造業における考え方が取り入れられていて、1990年代にトヨタ生産方式の考え方に基づき、どうすればソフトウェアの開発を改善できるか、さまざまな研究が重ねられました。
そして2001年に17人の専門家がアメリカ合衆国のユタ州に集まって提唱されたのが「アジャイルソフトウェア開発宣言」です。
以下は、アジャイルソフトウェア宣言の引用です。
私たちは、ソフトウェア開発の実践
あるいは実践を手助けをする活動を通じて、
よりよい開発方法を見つけだそうとしている。
この活動を通して、私たちは以下の価値に至った。
プロセスやツールよりも個人と対話を、
包括的なドキュメントよりも動くソフトウェアを、
契約交渉よりも顧客との協調を、
計画に従うことよりも変化への対応を、
価値とする。すなわち、左記のことがらに価値があることを
認めながらも、私たちは右記のことがらにより価値をおく。
引用:https://agilemanifesto.org/iso/ja/manifesto.html
ここで提出されているのは、従来のやり方に価値があることを認めながらも、より一層ユーザーを意識し、変化に柔軟に素早く対応することに重きが置かれるようになるという考え方です。
さらにこのときに出された「アジャイル宣言の背後にある12原則」を見ると、顧客のために改善を繰り返し、チームでプロジェクトを進める、といった考え方が提唱されています。
2000年代以前のソフトウェア開発は、リリースがゴールの「売り切り型」が主流となっていました。しかし、インターネットの普及に伴い、継続的なアップデート、サブスクリプション等、ソフトウェアビジネスは「売り切り型」から「継続的に価値を提供し続ける形」へと変化しています。
このようにアジャイル開発は、IT市場の変化に合わせ、顧客のフィードバックを受けながら素早く柔軟に改善するというサイクルを基本として、近年の主要なソフトウェア開発方法になっています。
また、アジャイル開発は従来の開発方法に比べてプロジェクトの成功率が高いといわれています。
ここで、従来の開発方法であったウォーターフォール開発との違いに注目してみましょう。
ウォーターフォール開発とはそのイメージの通り、水が上から落ちるように、上流の工程から下流の工程に一方方向で進む開発過程を現しています。
ウォーターフォール開発では、最初に要件を定め、その要件に基づいて範囲・期間・費用を見積もります。工程単位で成果物を完成させ、次の工程へと進みます。役割分担は工程単位で分かれます。基本的に工程は後戻りできません。
実際のところほとんどのプロジェクトにおいて、プロジェクトが当初の計画通りスムーズに進むということはなく、何がしかの変更点が加えられることが多いと言われています。その場合プロジェクトの進捗が遅れたり、契約の見直しが必要になったり、納期に間に合わせるために品質の担保がないがしろになったり、といったデメリットが生じています。
一方アジャイル開発では、少単位でサイクルを回していくためプロジェクトの最中で仕様に変更が生じても柔軟に対応することができます。
さらに、詳細な要件が固まっていなくても開発に進めるため、完成までのスピードも早く、必要な機能だけ組み込んでリリースを行なうことができます。リリースの後にフィードバックを受けて改善しながら、必要な機能を加えていったり、不必要な機能を削除したりすることも可能です。
アジャイル開発は以下の2つの工程に分けることができます。
リリース計画
イテレーション
リリース計画とは他の開発方法でも行われている、システム開発の全体計画のことです。どんな製品にするかいつリリースするかといった計画を立てます。
しかし、アジャイル開発においてはこの段階では厳密な仕様を決めるところまではしません。おおまかな打ち合わせをするにとどまります。これは何度も計画からテストまでを繰り返して開発を行うため、開発の途中で変更が生じることを前提にプロジェクトを進めていくためです。
リリース計画ではおおまかな開発内容と大体の方向性を決めます。
次にイテレーションに進みます。
イテレーションとは「反復する・繰り返す」という意味で、「計画」→「設計」→「実装」→「テスト」の短いサイクルを反復します。
イテレーションは一般的に1〜2週間の期間で区切られ、イテレーションごとに各機能をリリースしていきます。イテレーションを繰り返し実施することによりそれぞれの機能を開発していきます。
次にアジャイル開発の主な手法について見ていきましょう。
実は「アジャイル開発」という一つの開発方法があるわけではなく、さまざまな手法を総称して「アジャイル」と呼んでいます。ここではその中でも有名な、アジャイル開発の3つの手法についてご紹介します。
スクラム
エクストリーム・プログラミング(XP)
かんばん
スクラムはアジャイルで一番用いられているフレームワークです。
「スクラム」ときいて、ラグビーを思い浮かべられた方もいらっしゃるのではないでしょうか。「スクラム」はラグビーでスクラムをガッツリ組むようにチームが一つになって全員が協力することが求められます。
とりわけチーム内のコミュニケーションは重要です。計画、進捗、制作物の品質の精査など逐次コミュニケーションを取って確認し合うことが必要です。朝会などのミーティングを小まめに開いてコミュニケーションの機会を作り出します。
コミュニケーションがしっかり取れていないと、リリースができなかったり、制作物が正常に動かなかったりと、重大な問題が発生する可能性があります。
エクストリーム・プログラミング(Extreme Programming)は、1990年代後半に提唱された変更を前提とした柔軟な開発方法です。XPと略されます。
プログラマーを中心とした開発手法で、技術面を重視します。
「コミュニケーション・シンプル・フィードバック・勇気・尊重」の5つの価値を重視し、19の実践方法を提唱しています。
特徴的な実践方法として、テスト主導型の開発やペア・プログラミングなどが挙げられます。
タスクを見える化したこの「kanban」方式はトヨタ生産方式から生み出されました。
チームはタスクに集中し、期間や時間にはそれほど縛られません。
作業を視覚化しタスクに書いてボードに貼ります。
優先順位を決め、集中するタスクの数(WIP)に制限を設けます。
タスクを完了した時間を図り、効率化を図る。
このように、開発者に過剰な負担をかけずに効率化を図る方法として、取り入れられています。
アジャイル開発では仕様変更に柔軟に対応できるため、ユーザーの満足度の高い製品を開発することができます。短期間でシステムを修正することが可能です。
また、チームで開発を行なっていくラボ型オフショア開発との相性がよく、多くの現場で用いられています。役割を固めてしまうのではなく、チーム全体で協力しながら開発を進めます。
クライアントからフィードバックを取ったり、チームの中で意見を交換しながらシステムをより良いものにしていける点もメリットであると言えます。
もし要件が最初から固まっていて、仕様を変更する予定がないのであればアジャイル開発を利用するメリットはあまりないかも知れません。その場合はウォーターフォール開発の方が向いているでしょう。
また、アジャイル開発は最初に要件を固めてしまわないことから、全体像が見えにくいというデメリットもあります。顧客の要求を聞きすぎてコンセプトがブレてしまうこともあります。
さらに少単位で開発を繰り返すため、全体進捗の把握ができず、トラブルが発生しやすくなるというデメリットもあります。
このようにアジャイル開発にはメリット・デメリットがあるので、その特徴をよく生かして案件に取り込んでいくことが必要になります。
アジャイル開発は途中で仕様の変更や追加が生じる案件に向いているといえます。
モバイルアプリなど、リリースしてフィードバックを受け取って改善していく案件
AIなどの最新技術を用いたサービス
要件がしっかり定まっていない案件
こうした、案件はアジャイル開発のほうが向いていると言えるでしょう。
この記事では「アジャイル」という開発方法について概観してきました。
アジャイル開発とは
短いサイクルで開発とリリースを繰り返していく開発方法
途中で仕様変更が生じても柔軟に対応できる
IT市場の変化に対応して、継続的に価値を提供する
チームの連携を重視したラボ型オフショア開発との相性が良い
全体像が把握しにくく、当初のコンセプトがブレる可能性も
こうした特徴があります。
アジャイル開発は多くのIT開発プロジェクトの現場で取り入れられています。
プロジェクトの特性をよく見て、取り入れるならアジャイル開発はプロダクトに対して最大の価値を引き出す優れたソリューションになるに違いありません。
Rabiloo(ラビロー)はベトナム・ハノイに拠点を置くソフトウェア開発企業です。
ラビローのラボ型オフショア開発サービスではアジャイル開発を取り入れています。
これまで、いくつもの日本企業とのアジャイル開発プロジェクトを経験し、ノウハウを蓄積してきました。
スモールスタートでウォーターフォール開発の小さな案件から始めていただくことも可能です。
どうぞお気軽にお問い合わせください。
Share