みなさん、おはようございます!タカハシ(@ntakahashi0505)です。
こちらの記事は、タカハシが音声メディアVoicyの「スキルアップラジオ」にて放送した内容から、ピックアップしてお届けします!
今回のテーマは、アジャイル開発を中学生にもわかるように解説してみるです。
なお、以下で実際にお聴きいただくこともできます!
では、よろしくお願いいたします!
ソフトウェア開発の2つの手法
アジャイル開発という言葉を中学生にもわかるように解説してみたいと思います。
先日のソフトウェア開発を中学生にもわかるように解説してみるの続きになるので、そちらもごらんいただけると良いかなと思います。
簡単におさらいすると、ソフトウェア開発というのはいくつかの手順にしたがって進められます。
どういうソフトウェアを作るかを決める要件定義、どうやってソフトウェアを作るかを決める設計、そのあとに実際にコードを書いてプログラムを作る実装、作ったプログラムが正しく動くかを確認するテスト、このような4つの手順で行われます。
そしてこの4つの手順をどう進めるかで開発手法は2つのパターンに分かれます。
2つのパターンとはウォーターフォール開発とアジャイル開発です。今回はこの2つの開発手法についてお伝えしていきます。
ウォーターフォール開発
まずウォーターフォール開発から。ウォーターフォールというのは、英語で滝という意味です。
要件定義の段階で、作成するソフトウェアのすべての機能を洗い出して決めます。それが終わったら設計の段階に入り、ソフトウェア全体をどうやって作るか決めて、次にコードを書いて全部のプログラムをつくります。実装ですね。最後に全部のテストをします。このように順番に進めていきます。
ウォーターフォールの特徴は、前の手順に戻らないということなんです。今やっている手順を完全に終わらせてから次の手順にうつります。
滝の水は上流から下流に流れる、落ちた水が戻ることはないですよね。なのでウォーターフォール開発と呼ばれています。
前の手順に戻らないのは当たり前では?と思うかも知れないですが、後でアジャイルについて説明をするので、その点はそこで納得していただけると思います。
アジャイル開発
アジャイルというのは英語で「機敏な」という意味、つまり素早くということです。
ソフトウェアを部分部分に分けて、部分単位で開発を進めていきます。部分単位で要件定義→設計→実装→テストと開発を進めてしまうわけですね。
なので最初にできあがったソフトウェアは必要最低限で全然機能が少ないという感じです。
そのできあがりを見て、次にどの部分に着手するか、どの機能を追加するかを決めて、その部分についてまた要件定義→設計→実装→テストをして、追加の開発をしていく。このような流れになります。
つまりウォーターフォール開発では、ソフトウェア全体を要件定義して、全体を設計して…と大きな1回のサイクルで開発を完了するのに対し、アジャイル開発ではソフトウェアを小さな単位ごとに分けて、サイクルを何度も回転させて開発を進めるんです。
この2つの開発手法は両方とも日本でも世界でも使われていますが、それぞれメリット・デメリットがあります。
メリット・デメリット
ウォーターフォール開発のメリット・デメリット
まずウォーターフォール開発について考えてみると、最初にどんなソフトウェアを作るか全体が決まるので、計画が立てやすいというメリットがあります。全体の見通しがきくということです。
つまり、完成までどれくらい期間がかかるとか、完成させるためにどれだけの人がどれくらい働く必要があるのか、またそれによってどれだけお金がかかるのかというのが見えやすいわけです。
会社というものは、いつ完成するかもわからないし、いくらお金がかかるかもわからない、そういったものにゴーサインを出すのは難しくできているので、そういった意味ではウォーターフォール開発は進めやすいということが言えるのではと思います。
別の視点では、前の手順が完全に終わってから次のステップにいくので、手順ごとに別の会社が担当するみたいなことも可能です。例えば自分の会社では手が足りないので、次のステップからはほかの会社さんにお願いしようということが可能になります。
これは良いことばかりではないのだけど、まあそれは別の機会にお話したいと思います。
こんなメリットのあるウォーターフォール開発ですが、一方で弱点もあります。すべてを一気に作り上げるので、完成までに時間がかかるということなんですね。全部を作り上げるので、世の中にお目見えするまでに時間がかかってしまうんです。
また、後から「やっぱこういう機能必要だった」と気づいても、計画を変更するのが難しい。そういったデメリットもあります。
アジャイル開発のメリット・デメリット
アジャイル開発はその点をむしろ得意にしています。
最低限で完成させてしまうので、ソフトウェアが世に出るスピードがものすごく早い。
世に出たときに実際出来上がったものを見たり、ソフトウェアの利用者、ユーザーの反応をみて、次にどの機能をつくるか、どのようにつくるかを柔軟に練り直せたりして方向性を見極めることができるわけです。
ただし、都度都度計画が変更されるので、いつまでにどこまでが実現されるのか、いったいこれからお金がいくらかかるのかというのが見えづらくて説明しづらいんです。
それにもかかわらず会社にお金を使っていいよとゴーサインを出してもらったり、チームメンバーの仕事の量や内容をその都度調整したり、と、アジャイル開発を進めるのはなかなか難易度は高いです。
今の時代は、時代そのものの変化が激しく、先々の予測が難しくなってきているといわれています。
それでいうと、状況に応じてすばやく柔軟に変更が加えられるアジャイル開発のほうが、ソフトウェア開発としては向いているのではないか?という意見が増えてきています。
変化に応じて素早く対応、調整してものごとを進めていく。ソフトウェア開発に限らず、すべての活動においてそのような力が求められているのではないかと思います。
ただし先ほどお話したように、先々がなかなか見えないことにまわりのゴーサインを出してもらったり、説明して納得してもらったり、その都度チームメンバーの仕事の量や内容を調節してもらったり、そういった難しい進め方が必要です。なのでそこをどうしていくかという力が求められていると思います。
ウォーターフォール開発とアジャイル開発
ウォーターフォール開発はソフトウェア全体を要件定義からテストまで1回のサイクルで開発する手法。こちらは手戻りは無いです。
一方でアジャイル開発はソフトウェアを部分に分けて、何回も要件定義からテストを回して開発を進めていく手法となります。
まとめ
ということで、今日はVoicy「スキルアップラジオ」の放送から「アジャイル開発を中学生にもわかるように解説してみる」をお届けしました。
タカハシのVoicyの放送はこちらからお聴きいただけます。
チャンネルのフォロー、コメント、SNSでのシェアなどなど、楽しみにお待ちしております。
では、また。