開発

アプリケーション開発の種類とそれぞれの特徴を解説

アプリケーション開発と聞いて、皆さんはどのような流れをイメージしますか?多くの方は開発するアプリの全体像を描き、ひたすらコードを書く(プログラミング)光景をイメージするのではないかと思います。アプリケーション開発では開発したいアプリの要件を定義して、コードを書くことでプロジェクトを進めます。ただし、開発モデルにはいくつかの種類があり、それぞれの流れと特徴が異なります。本記事では、開発初心者に向けて数あるアプリケーション開発の種類と、その特徴をご紹介します。

Microsoft PowerApps はじめてのアプリ開発

アプリケーション開発の種類は?

アプリケーション開発のスタイルは企業ごとに違います。決まったルールはありませんが、業界全体で標準化されたモデルや流れがあり、それに沿って開発を進めることで効率良くアプリを開発できます。本記事でご紹介するのは、以下5つの開発モデルです。

  1. ウォーターフォール
  2. アジャイル
  3. スクラム
  4. DevOps
  5. SRE

それでは順番に解説していきます。

1. ウォーターフォール

ウォーターフォールと呼ばれる開発モデルは非常に歴史が長く、1968年にはその原型が提唱されたと言われています。アプリケーション開発の現場では長年主流だったため、最もポピュラーな開発モデルでしょう。

特徴は、開発プロセスの中で上流工程と下流工程の関係性がハッキリしていて、プロジェクトが一連の流れに沿って進みます。アプリの要件定義に始まり、概要設計、詳細設計を経て開発に至り、テストが完了すると運用フェーズに入ります。各工程では明確な成果物が設定されており、品質を満たした時点で次のプロセスへと進みます。工程ごとに作成すべきドキュメントも設定されており、プロジェクト全体を通じて一貫性の高い開発を進められるのが利点です。

ちなみにウォーターフォールという言葉は、滝の水が上から下へと流れ落ちる光景から名付けられた呼称です。ウォーターフォールの難点は、まさに滝の水のように逆流できないことです。プロジェクト途中でのシステム要件・変更への対応が難しく、手戻りが発生すると多大な手間とコストがかかります。

2. アジャイル

ウォーターフォールに代わりアプリケーション開発現場の主流になりつつある開発モデルがアジャイルです。2001年にIT業界の有識者を集めた会議にて「アジャイルソフトウェア開発宣言」がまとめられ、その開発モデルは徐々に世界中へと浸透していきます。ちなみにアジャイルは「俊敏」という意味です。

アジャイルの特徴は、イテレーションと呼ばれる開発期間の中で要件ごとに区切った開発・テストを実行することです。ウォーターフォールはすべての要件を一連の流れで開発していきますが、アジャイルは要件ごとのイテレーションを設けて開発・テストを実行し、最終的に複数のコードを統合して1つのアプリを開発します。

アジャイルのメリットは開発したモジュール(要件ごとに開発したプログラム)をその場で確認できることと、プロジェクト途中での仕様・設計変更が生じても複数のイテレーションを設けていることから変更への対応が容易なことです。アプリケーション開発では必ず仕様・設計変更が生じることを全体に考えており、柔軟性を追求した開発モデルだと言えます。

ただし、アジャイルには経験豊富な開発園児なとチームとしてアプリケーション開発に取り組む体制が欠かせません。

3. スクラム

アジャイルの一種です。スクラムはチームコミュニケーションを中心に据えた開発モデルであり、優先順位の高い要件から開発・テストを実行するのがポイントとなります。ちなみにスクラムとは、ラグビーにおいて両チーム8人ずつの選手が肩を組み、ボールを奪い合うスクラムから命名されています。

スクラムを組むチームはビジネス上の責任を持つプロダクトオーナー、運用をサポートするスクラムマスター、プロダクトオーナーの要求を実装し作るべきアプリを作るチームから形成されています。開発を進める際のポイントは以下の通りです。

  1. 作成するシステムの優先順位を並べ替えてタスクを整理する「スプリント計画」
  2. システム開発にあたって必要なものは何か、クライアントやユーザーに提供すべき価値は何か、システムに必要な要素は何か、優先すべき順位と作業コストを計画した「プロダクトバックログ」
  3. 1~4週間の期間で区切られた「スプリント」と呼ばれる開発サイクル
  4. 開発・まとめ・レビュー・調整で構成されるスプリントごとに実現すべきことをまとめた個別のタスクリストである「スプリントバックログ」

一番大切なことは、メンバー全員が頻繁にコミュニケーションを取り、情報共有を常に行いながらプロジェクト全体の透明性を高めることです。プロジェクトの進捗を共有するには日次ミーティングを実施し、前日までの進捗と当日の予定、現時点での課題をチームで共有し滞りなく開発を進めていきます。

4. DevOps

デベロップメント(開発)とオペレーションズ(運用)の文字を取ったのがDevOpsです。この開発モデルは開発チームと運用チームが互いに協力して、アプリケーション開発の要件に素早く対応できる組織・仕組みを作ります。

開発現場では改善と修正を繰り返す開発チームと、アプリの安定稼働を使命としている運用チームとの間で対立関係が生じやすくなります。ところが、開発チームと運用チームは本来、アプリを通じてクライアントやユーザーのビジネス価値を高める、といった共通目標を持っています。協力こそしても、対立すべきではないのです。

そこでDevOpsが注目されるようになります。2009年に開催された年次カンファレンスのVelocity 2009にて、Frickrのエンジニアが初めてDevOpsについて紹介します。具体的な開発モデルというよりも、開発チームと運用チームが互いに尊重できる組織文化と、情報共有を促進するための仕組み、テストやレビューを効率化するためのツール活用にフォーカスした開発モデルとなっています。

5. SRE

SREはSite Reliability Engineering(サイト・リライアビリティ・エンジニアリング)の略です。Googleが提唱するアプリ管理及びサービス運用における開発モデルであり、開発スピードの向上という点ではDevOpsに共通するものがあります。ただし、SREは開発チームと運用チームの協力ではなく、開発も可能な運用チームの存在に重点を置いています。

一般的なSREはサイトサービスの信頼性を高めるために、積極的にコードを記述して可能ンな限りシステムの自動化を行い、属人化を起こさないためのドキュメント整備や情報共有を行うのが中心になります。

クラウドサービスに台頭によってインフラエンジニアがハードウェアの安定性を意識する必要が無くなり、故にインフラ技術だけでなくアプリケーション開発技術も求められるようになったことが背景にあります。Googleが実践している開発モデルということで、信頼性と人気が高く日本でもSREを採り入れている企業が増えています。

おわりに

いかがでしょうか?この他にもいくつか開発モデルはありますが、ひとまず以上5つの開発モデルを知っておけば問題ありません。アプリケーション開発と一口に言ってもその様態はさまざまなので、これから開発しようとするアプリによって適切な開発モデルを選択できるようにしましょう。

  • fb-button
  • line-button
  • linkedin-button

無料メルマガ

RELATED SITES

関連サイト

CONTACT

サイト掲載の
お問い合わせ

TOP