こんにちは、まっさん(@Tera_Msaki)です。
この記事はSIベンダーで28年あまりシステムエンジニアとして、いろいろなシステムを開発してきた経験をもとにアプリ開発についてまとめたものです。
アプリケーション開発(アプリ開発)から遠ざかっていたせいか、久々にアプリ開発してみると、アプリ開発の敷居は随分下がったとように感じました。
これは開発する環境が整ってきたという意味で、要求される技術レベルが下がったという意味ではありません。むしろ、専門性が高くなり、技術の細分化が進み、一人でなんでもこなすには難しくなってきたと考えています。
少し昔を思い出しながらになりますが、
「アプリ開発するためにはどうすればいいのか」を掘り下げてみたいと思います。
・アプリ開発に興味がある人
・アプリ開発=プログラミングと思っている人
・SIベンダーのアプリ開発ってどんな感じ?を知りたい人
この記事を読めば、アプリ開発の大まかな流れが分かります。
アプリ開発のフェーズ
通常、アプリとそれが動く環境(ハードウェアやOS、ミドルウェアなど)をまとめてシステムと呼びます。
ここでは、わかりやすくアプリ(アプリケーション)と定義します。
つまり、広義ではアプリ開発ではなくシステム開発です。
アプリ開発のフェーズには、大きく分けて、5つ(※)のフェーズがあります。
※もう少し細分化されているのですが、SIベンダー固有の方言が存在します。
要件定義
アプリで実現したい機能=目的を定義します。
あと、動作する環境や求められる性能、条件などを合わせて整理します。
動作する環境や求められる性能、条件は、直接的に実現したい機能に結びつかないこともあり、非機能要件と呼ばれています。
要件定義の前に構想とか企画フェーズとかありますが、実現したい機能=目的が見えた段階がアプリ開発の始まりと考えています。
また、実務レベルでは、業務フローなどの業務要件、システムの各種構成、画面や帳票、バッチ、データ、インタフェースなどの各種要件を必要に応じて定義します。
基本設計
アプリで実現したい機能の実現方法を具体的に設計(デザイン)します。
画面や帳票の一覧やイメージ、画面や帳票に表示(出力)する内容や機能を具体的に記述します。
同意として概要設計、機能設計や外部設計などに細分化することもあります。
詳細設計
画面や帳票に表示(出力)する内容や機能をプログラム構成レベル(関数やロジック)まで設計します。
製造
プログラム構成レベルまで設計したものをコーディング(プログラミング)します。
テスト
コーディングしたものを実行して結果を確認します。
詳細設計で設計された内容を確認することを単体テストと呼び、基本設計で設計された内容を確認することを結合テストと呼ぶことが多いです。あと、アプリが動く環境でテストすることからシステムテストと呼ぶこともあります。
コラム
プロジェクトで目的がいつのまにか手段に置き換わっているケースがあります。
〇〇を解決するために ×× を導入するが、××を導入することが目的でゴールに置き換わる現象です。本来、プロジェクトの成功を評価すべきは、要件定義の目的が達成できているかです。
コラム
設計で実現方法(実装方式)が具体的でないケースがあります。
これは設計者が実現方法をイメージできていない、技術の調査や仕様の理解を十分にできていないことによるものです。設計の曖昧さは、後工程で作業の後戻り(やり直し)という形で顕在化することがあります。
次回は、このサイトを開設するにあたり、Androidアプリを開発してみたので、
それを題材に「アプリ開発するためにはどうすればいいのか」を具体化してみたいと思います。
アプリ開発に興味があって、最初の一歩が踏み出せない方には、オンラインで学べるスクールがおススメです。




開発したAndroidアプリのご紹介
このサイトを開設するにあたり、開発したAndroidアプリを紹介します。
Androidアプリの開発自体は今回初めてで、調査から開発の期間は約2か月です。
ダウンロードして動かしてもらえれば、うれしいです。
【無料アプリ】GPS走行記録アプリ Archive
ジムカーナなどのモータスポーツ向けのGPSを利用した走行データの記録やセッティング情報を記録するアプリです。

アプリで対応している機器です。アプリはいろいろな機器とつながることで可能性が生まれます。
【無料アプリ】 GPSタイム計測アプリ Laps
GPSの位置情報を利用して、事前に登録したゴール地点(2点間)を通過するまでの経過時間を計測するアプリです。

アプリで対応している機器です。性能を向上する手段として機器とつなげる方法もあります。
【無料アプリ】加速度・傾き計測アプリ Sensor
内蔵センサーを利用して、加速度と傾きをグラフ表示するアプリです。

コメント欄