-
Notifications
You must be signed in to change notification settings - Fork 0
development methodology
ここでは、アプリをどうやって作るのかについて学んでいきます。
「どうやって作るのか」というと、「プログラミング言語はC言語で、この関数とライブラリを使って・・・」などと考えると思いますが、ここでするのはそういった細かい実装の話ではなく、もう少し大きな枠組みについての話です。
まず、皆さんがプログラムを書くと聞いて、最初に何を思い浮かべますか?
きっと多くの人は大学のプログラミング課題を思い浮かべると思います。
しかし、アプリ開発は、大学のプログラミング課題と以下の点が異なります。
違い1. コードの行数が多い
違い2. 複数人で協力して開発する
違い3. 実際に世の中に公開する
実は、このような「本格的な(?)」プログラムを作るには、そのための「開発手法」というものが確立されているのです。
ソフトウェア開発では、ウォーターフォール開発とアジャイル開発という主に2つの開発手法があります。
ウォーターフォール開発とは、その名の通り、滝が流れるように一方向に開発していく手法のことです。
設計→実装→テスト→運用・保守の順番で開発を進め、基本的に一度終わったプロセスに戻ることはしません。非常に分かりやすいので、大規模システムや伝統的なプロジェクトでよく使われます。
一方、アジャイル開発とは、開発期間をいくつかに分けて細かな修正を繰り返します。そこまで大規模ではない開発や比較的新しいサービスでよく使われます。
アプリ開発でよく使われるのは「アジャイル開発」ですが、理工展アプリは特殊で、1年に1度の理工展のために作るので、定期的な細かい修正を必要としません。
よって、現時点ではウォーターフォール開発を採用しています。
ここで、さっきの違い1~3を振り返りながら、なぜウォーターフォール開発が必要かを見てみましょう。
大学の課題の場合は、コード行数は長くて数百行くらいだと思います。
一方、アプリ開発の場合は合計で数万行単位のコードを書くことになります(参考:2019年のAndroid理工展アプリは約10000行のコードを書きました)。
とても思いつき・ぶっつけ本番でコードを書くことはできません(大体行数が100行超えたあたりから、どこに何を書いたか覚えられなくなってきます)。
そのため、ウォーターフォール開発では、事前にどういったプログラムを作るかという「設計」を綿密に行ってから、「実装(プログラミング)」に入ります。
大学の課題は、1人でやることがほとんどだと思います。
しかし、アプリ開発では、前述のようにプログラムが大規模なので、複数人で手分けして開発をします。
そのため、ウォーターフォール開発の「設計」で打ち合わせをしたり、SlackやGitHubなどの複数人で共同開発するためのツールを使います。
大学の課題の場合、もし作ったプログラムが正常に動かなくても、成績が下がるなど、不利益を被るのは自分だけです。
しかし、一般公開したアプリにそのような不具合があった場合は違います。
自分たちだけでなく理工展連絡会の他局の人や、各参加団体、ユーザーなど様々な人たちに迷惑がかかります。
そのため、ウォーターフォール開発ではリリース前にバグがないかを調べる「テスト」を行います。