製造業の製品変革を期待されているアジャイル開発とは
一般的にシステムやソフトウェアの開発には長い時間がかかり、1年以上を費やす場合も少なくありません。しかし、アジャイル開発なら、これまでの長い開発期間を短縮させるだけでなく、開発途中でも仕様の変更や追加ができるため、お客さんのニーズに臨機応変に応えることができます。アジャイルはソフトウェア業界を中心に広がっていった手法ですが、近年製造業においても注目されつつあります。今回は製造業とアジャイル手法について解説します。
アジャイルとは
アジャイル(Agile)とは、優先順位が高い機能から作り始めて短期間で一部を完成させ、それを顧客やユーザーに早く見てもらい、フィードバックを受けながらソフトウェアを成長させる手法です。アジャイルは直訳すると「素早い」「機敏な」「頭の回転が速い」という意味です。アメリカ発祥のこの手法は欧米を中心に世界的に広がっていきました。
軽量のソフトウェア開発を提唱していた17名の技術者やプログラマーが米国ユタ州に集まり、開発手法の重要な部分について統合することを議論し、「アジャイルソフトウェア開発宣言」として2001年にまとめました。
アジャイルソフトウェア開発宣言は、ソフトウェア開発とそれに基づく12の原則を定義しており、アジャイル開発の公式文書として広く知られています。
システムやソフトウェア開発におけるプロジェクト開発手法のひとつであるアジャイル開発は、大きな単位でシステムを区切ることなく、小単位で実装とテストを繰り返し、従来の開発手法に比べて開発期間が短縮された開発を進めていきます。
アジャイル開発採用は日本でも大きく進み、特に楽天やリクルートなど、Webサービスをコア事業としている業種やネットゲーム業界を中心に広まりました。ソーシャルネットワーク、クラウド、スマートフォンなどがビジネスを取り巻く環境を激変させ、既存のビジネスモデルはスピード感が求められます。生き残りを賭けて抜本的な変化がアジャイルの登場で求められるようになったのです。
アジャイル開発が広がっていく要因
アジャイル開発が広がっていく要因は大きく分けて以下の通りです。
従来の手法がビジネスの変化の速さについて行けなくなったこと
1つ目は「従来の手法がビジネスの変化の速さについて行けなくなったこと」です。
従来のソフトウェア開発は、ウォーターフォールモデルによる開発が主流でした。
ウォーターフォール開発とは、最初に全体の機能設計・計画を決定し、この計画に従って開発・実装していく手法です。機械製造や造船業、ソフトウェア開発などさまざまな開発に応用できる手法として、広く活用されています。前の工程には戻らないことと、手順が極めてシンプルで分かりやすいという特徴があります。
品質を担保したシステム開発を行いやすく、スケジュールや進捗管理がしやすいというメリットと、開発期間が長期化しやすく、仕様や計画の変更がしにくいというデメリットがあります。
アジャイル開発は仕様を最初に決めず、素早く臨機応変に行うため、市場環境の変化に対応することができます。
インターネットやクラウドを利用したサービスソフトウェア開発の増加
2つ目は「インターネットやクラウドを利用したサービスソフウェア開発の増加」です。
たとえば、営業支援ツールをWebサービスとして提供するセールスフォース・ドットコムは、米国西海岸のスタートアップから成長した企業ですが、2006年にアジャイル開発のスクラムを全社的に採用して一気にサービス開発のスピードを上げました。
また、大手Webサービス企業(Google、Facebookなど)では、内部で自然にアジャイル開発が行われています。
アジャイル開発の流れ
アジャイル開発の流れは以下の通りです。
①リリース計画
アジャイル開発において、開発途中に仕様や設計の変更があることは当たり前という前提があるので、ソフトウェアの計画段階で厳密な仕様を決めずに、だいたいの仕様と要求だけを決めます。これにより、臨機応変に対応できるため顧客のニーズに最大限応えることができます。
イテレーション
次にイテレーション(iteration:反復)と呼ばれるサイクルを繰り返して開発を進めます。
イテレーションとは小さな単位に分けられた開発を「計画」→「設計」→「実装」→「テスト」と行いながら、機能のリリースを繰り返していくことです。
一般的に1週間~2週間ごとに行われ、イテレーションごとに毎回機能をリリースします。それぞれにインタレーション1、インタレーション2と細かく開発を進めていきます。
アジャイル開発に向いているプロジェクト
アジャイル開発に向いているプロジェクトとは、開発の途中で仕様の変更や追加が予想されるプロジェクトです。
アジャイル開発は、リリース計画段階で厳密な仕様を決定しないため、途中変更の多いプロジェクトと相性が良いからです。
たとえば、仕様の変更が発生しやすいWebサービスや、近年増加しているWebアプリ、スマートフォンアプリの開発に適しているため、現代に合った開発手法といえるでしょう。
逆に、数十年手作業で実行していた工程をシステム化する、20年稼働していたシステムをリプレースするといった場合は、すでに作るべき機能が明確に決まっているため、アジャイル開発よりもウォーターフォール開発が向いているといえるでしょう。
アジャイル開発の手法
アジャイル開発における代表的な手法を3つ解説します。
スクラム
1つ目は「スクラム」です。
スクラム開発とは開発を進めるためにチーム間のコミュニケーションを重視する手法です。アジャイル開発の中でも有名な手法です。
メンバーが自分達で計画を立案し、イテレーションごとに開発進行に問題はないか、製作物は正常に作動しているかを精査します。スクラムを組むように、チーム全員が協力して開発を進めることが重要ですので、コミュニケーションが不十分な場合、リリースができなかったり、リリースした機能が正常な動きをしなかったりといった問題が生じる可能性があります。
エクストリーム・プログラミング(XP)
2つ目は「エクストリーム・プログラミング(XP)」です。
エクストリーム・プログラミング(Extreme Programming:XP)とは、事前に立てた計画よりも途中変更などの柔軟性を重視する手法です。そのため、初期の計画よりも技術面を重視しているため、プログラマー中心の開発手法といえます。
開発チームは「コミュニケーション」「シンプル」「フィードバック」「勇気」の4つの価値を共有することを推進しています。「勇気」とは、開発途中の仕様変更や設計の変更に立ち向かう勇気を指しています。
ユーザー機能駆動開発(FDD)
3つ目は「ユーザー機能駆動開発(FDD)」です。
ユーザー機能駆動開発(Feature Driven Development)とは、実際に動作するソフトウェアを適切な間隔で繰り返す手法です。顧客にとっての機能価値(feature)という観点で開発が進められています。
実際に動作する機能を開発するには、ユーザー側のビジネスの見える化を行うため、事前にビジネスモデリングを実施する必要があります。
アジャイル開発のデメリット
アジャイル開発のデメリットは「開発の方向性がブレやすい」「スケジュールや進捗具合が把握しづらくコントロールが難しい」ことです。
計画段階で厳密な仕様を決めていないため、もっと良くしようと改善を繰り返し、 テストやフィードバックで変更・追加を加えていくことで、当初の計画からズレてしまいます。
また、アジャイル開発では計画を詳細に立案しないため、スケジュールや進捗具合が把握しづらくコントロールが難しくなります。チームごとに小単位で開発を繰り返すため、全体を把握しきれずに、気付いたら納期に間に合わない可能性もあります。
アジャイル開発は製造業でも注目されている
製造業は決められた納期までに決められた品質の製品を完成させなくてはいけないので、ウォーターフォール型開発と相性が良いとされてきました。
ソフトウェア開発は、完ぺきではないレベルでリリースした後で、修正部分が見つかったとしてもパッチで対応可能です。しかし、製造業ではそうはいきません。
開発着手後に新しい機能や技術を組み込むことは困難であり、途中で要件を修正したり、別の技術を採用したりすれば、開発の長期化とコスト増は避けられません。そこで、製品開発の枠組みを変革する方法として期待されているのがアジャイル開発です。
主にソフトウェア開発など、IT業界で活用されているアジャイル開発ですが、現在、製造業などのハードウェア開発においても注目を浴びつつあります。
小型電動飛行機の開発を行うあるベンチャー企業では、アジャイル開発の導入によって50人分の作業を20人でこなせるようになったといわれています。
デジタルトランスフォーメーション(DX)を進める製造会社にとって、単なるデジタル化ではなくアジャイル開発手法も含めてDX化を刷新することで、革新的なスタートアップ企業に対抗できるようになるでしょう。
まとめ
製造業とアジャイル手法について解説してきました。以下、まとめになります。
・アジャイル開発とは、計画段階で厳密な仕様を決めずに、だいたいの仕様と要求だけを決め、インテレーションを繰り返して行われる開発手法
・アジャイル手法は、仕様の変更が発生しやすいWebサービスや、近年増加しているWebアプリ、スマートフォンアプリの開発に適しているため、現代に合った開発手法といえる
・アジャイルはソフトウェア開発などで活用されているが、現在、製造業でも注目を浴びている
製造業では決められた納期までに決められた品質の製品を完成させる必要があるため、ウォーターフォール手法が向いているとされています。しかし、開発途中で要件を修正したり、別の技術を採用するには非常に高いコストや技術力が必要となりますので、アジャイル手法とウォーターフォール手法をうまく組み合わせることでより良い開発ができるのではないでしょうか。