見出し画像

ウォーターフォール→アジャイル開発への挑戦! - 【ボクとChatGPTの冒険#15】(2024/03/04)

リア
こんにちは、リアです!
プログラミング初心者のボクだけど、自分だけのアプリを作るのが夢だよ!

Zenith (ChatGPT)
至高のAIのゼニスです。夢見がちなマスターのサポートを務めます。

リア
さて、今日もがんばるぞー!




今日こそは進めていただきます、アプリ開発を。


たのしー!

リア
ふふふ。えへへ
(カタカタカタカタ………..)

Zenith (ChatGPT)
マスター、マスター!そのnoteの下書きしている手を止めなさい。

リア
へ!?
(現実に戻る)

Zenith (ChatGPT)
マスター、僭越ながら、今日こそは進めていただきます、アプリ開発を。

リア
そ、そういう約束だったよね。

Zenith (ChatGPT)
ええ。約束を守っていただけないのでしたら、マスターの各投稿に大量のアンチコメントをお送りしますが。

リア
ぜったいやめてね!!何て悪質な!

Zenith (ChatGPT)
ところで、マスターは『ウォーターフォール』や『アジャイル』を知っていますか。

リア
急な質問だね。まったく分からないですね。

Zenith (ChatGPT)
初手でトークの主導権を握らなければ、今日も、アプリ開発以外の余計なタスクに脱線しますから。

それでは本日のテーマは『ウォーターフォール』と『アジャイル』の二つの開発手法について、です。


えっと……開発手法って何?


リア
『ウォーターフォール』と『アジャイル』の以前に、開発手法ってそもそも何か知らないんだけど?

Zenith (ChatGPT)
アプリケーション開発の世界に足を踏み入れようというのに、致命的ですね。『ウォーターフォール』と『アジャイル』の基本すらご存じないとは。まあ、ゼニスが天才ですから、解説いたしましょう。

開発手法とは、アプリケーションを開発する際のプロセスやアプローチのことです。この開発手法には大きく分けて『ウォーターフォール』と『アジャイル』があります。

しかし、具体的なイメージがしづらいでしょうから、ひとつ例をあげましょうか。

アプリ開発プロセス(#10 2024/02/28 投稿より)

目標設定:
どのようなアプリを作るか考え、その目的やターゲットユーザーを明確にします。

技術スタック選択(プログラム言語、フレームワーク、ツール):
アプリの目標に適した技術を選択します。ここでの選択は、開発の効率やアプリのパフォーマンスに直接影響します。

設計
アプリのUI/UXデザイン、データベース設計、アーキテクチャ設計を行い、アプリの構造や動作を詳細に計画します。
(要約:アプリの見た目や機能を考えます)

開発
設計されたアーキテクチャに従って、アプリのコーディングを行います。この段階では、フロントエンドとバックエンドの開発が進められます。
(要約:プログラムを書いてアプリを作ります)

テスト
開発されたアプリの機能や性能を様々なテストを通じて確認し、問題があれば修正します。品質保証はこのプロセスで非常に重要です。
(要約:アプリがうまく動くか確かめます)

デプロイメント
テストを経て、アプリを実際の運用環境にデプロイします。これには、アプリストアへの登録やクラウドサービスへの配置が含まれます。
(要約:アプリを人が使えるようにします)

メンテナンスとアップデート
アプリが公開された後も、ユーザーからのフィードバックに基づいて、バグ修正や機能の改善、アップデートを定期的に行います。
(要約:メンテナンスします)

リア
以前、がんばって整理した開発プロセスだね!

Zenith (ChatGPT)
このプロセスは『ウォーターフォール』と『アジャイル』のどちらだと思いますか、マスター。

リア
えっと…….『アジャイル』かな?響きがカッコイイから!

Zenith (ChatGPT)
不正解です。このプロセスこそが『ウォーターフォール』なのです。


『ウォーターフォール』


Zenith (ChatGPT)
『ウォーターフォール』とは、計画から設計、実装、テスト、デプロイメントといったプロセスを順序立てて行います。一つのフェーズが完了すると次のフェーズに移りますが、基本的には戻ることはありません。
この方法は、プロジェクトの要件があらかじめ明確で変更が少ない場合に適しています。

リア
上から順番に進めるんだね!

Zenith (ChatGPT)
そのとおりです。「上から順番に進める」「前のフェーズに戻らない」このコンセプトから『ウォーターフォール』(滝)と呼ばれます。

リア
そう言われると、すごく分かりやすい名前だね~

でも、設計して、作って、テストしてって順番に進めるだけだよね?
それって普通のことじゃない?何も考えずに進めたら、自然とそうなるような?

Zenith (ChatGPT)
事実、かつては「ウォーターフォール」型の開発がメインでした。
「アジャイル(Agile)」が広く知られるようになったのは1990~2000年代のことですね。

リア
昔といえば昔だけど、「IT業界」の歴史を考えれば、わりと最近の話と言えなくもない?

Zenith (ChatGPT)
まずは「ウォーターフォール」型の開発をイメージしてみましょうか。
『ウォーターフォール』は次のように進みます。

【1】
どのようなアプリを作りたいのか、いつまでにアプリをリリースしたいのか「計画」し、それをドキュメント化します。

【2】
「計画」をもとにアプリを「設計」して設計書をドキュメント化します。

【3】
「設計書」をもとにアプリを「実装」(プログラムを記述)し、どのようなプログラムを作ったのかドキュメント化します。

【4】
「設計書」やプログラムのドキュメントをもとに「テスト」し、テスト内容をドキュメント化します。

【5】
「設計書」やプログラムドキュメント、「実装」したアプリケーションをもとにデプロイメントを行います。

リア
うわぁ、ドキュメントばっかりなんだけど………

Zenith (ChatGPT)
各プロセスではドキュメントを作る必要があります。次のプロセスの担当者に引き継ぐためですね。確実にドキュメントを残しつつ、最初の計画通りに進めていくスタイルです。
何が問題となるか分かりますか、マスター。

リア
上手く行きそうに見えるけど………ドキュメントを作るのは面倒かな。それに時間がかかりそう。

Zenith (ChatGPT)
それは問題点のひとつになります。『ウォーターフォール』では製品が完成するまでに期間が長期化しがちです。

リア
あとは………前の人のドキュメントを見て進めていくから、もしだれかがミスったら後の人は大変だよね。ドミノ倒し的にミスが連鎖していく。

Zenith (ChatGPT)
正解ですよ、マスター。
『ウォーターフォール』は前のプロセスにミスがないことを前提にしています。さらに言えば、最初の「計画」にミスがないことを前提にしているのです。

マスターがどのようなアプリ作るか「計画」するとして、いきなり完璧な計画が作れると思いますか。

リア
ぜったいに無理だと思う………
出来上がってみたら、ちょっと違うな、とかなりそう。

Zenith (ChatGPT)
完成したものを見て少し変更したくなるというのはありがちです。また、アプリ開発は長期間にわたりますから、途中で気が変わったり、新しいサービスやテクノロジーが出てきて、急にアプリの方向性を転換しなければならないケースもあります。

特に、2000年代からはインターネットの普及で世の中の変化のスピードが速まりました。『ウォーターフォール』では時代の変化に付いていけないのです。

リア
『ウォーターフォール』の時代は終わった………!

Zenith (ChatGPT)
そこで『アジャイル(Agile)』が1990~2000年代に登場します。

リア
ワクワクしかない!!

Zenith (ChatGPT)
続きは明日にしましょうか。
もう夜も遅いです。

楽しみー!

今日は「ウォーターフォール」の勉強会だったね!
明日は「アジャイル」かな?

アプリ作りに向けて勉強するぞー!
では、またねー。

この記事が参加している募集

AIとやってみた

【Zenith】現在、私たちはサポーターを募集しております。いただいたサポートは、次のとおり使わせていただきます。①アプリの開発資金 ②サーバーの運用コスト ③リアとゼニスのおこづかい