こんにちは、まっさん(@Tera_Msaki)です。
この記事はSIベンダーで28年あまりシステムエンジニアとして、いろいろなシステムを開発してきた経験をもとにアプリ開発についてまとめたものです。
今回は、「アプリ開発するためにはどうすればいいのか」を具体化してみたいと思います。
前回ご紹介したAndroidアプリ「GPS走行記録アプリ Archive」を題材にしたいと思います。
この記事を読めば、アプリ開発の設計が分かります。
アプリ開発の設計
設計と聞くと、設計書を書くことを思い浮かべますが、考えや、すべきことを整理する、仕様や思いをメンバや未来の自分に共有することが目的ですので、アウトプットにこだわる必要はありません。
ただし、実務レベルでは、成果物や納品物となることが多いので作成が必要になってきます。
また、フェーズを段階的に進めることをウォーターフォール開発、フェーズを短いサイクルで繰り返し回していくことをアジャイル開発と呼んでいます。
フェーズ自体に違いはありませんので、開発に適したアウトプットや開発手法を選択すればよいと思います。
なお、アジャイル開発の中には、スクラム、XP、FDDといった開発手法が細分化されています。
要件定義
今回開発したアプリの要件は、以下のとおりです。
・ジムカーナの練習会や競技会でクルマのセッティング情報を紙に書いて残しているけど、データとして整理したい
・クルマのセッティング情報のほかに、走行データ(GPSの走行軌跡、加速度)も一緒に記録したい
・走行時の条件下データとして温度や湿度や天候などを記録したい
・データ入力はできるだけ省力化したい(できれば自動設定)
・ノートPCでEXCELやnotepadに記録するのでもよいが、スマホだと便利
・自分が使っているスマホはAndroidなのでAndroidで動作する
・GPSの走行軌跡データをメールで送信して、解析ソフト(LAP+)で読み込めるようにしたい
・GPSの走行軌跡データは1秒間に5回ぐらいは記録したい
これを要件定義として、分類、一覧化します。
・ジムカーナの練習会や競技会でクルマのセッティング情報を紙に書いて残しているけど、データとして整理したい
・クルマのセッティング情報のほかに、走行データ(GPSの走行軌跡、加速度)も一緒に記録したい
・GPSの走行軌跡データをメールで送信して、解析ソフト(LAP+)で読み込めるようにしたい
・走行時の条件下データとして温度や湿度や天候などを記録したい
・データ入力はできるだけ省力化したい(できれば自動設定)
これは、実現したい機能(目的)に該当します。
・ノートPCでEXCELやnotepadに記録するのでもよいが、スマホだと便利
・自分が使っているスマホはAndroidなのでAndroidで動作する
これは、動作する環境に該当します。
・GPSの走行軌跡データや加速度は1秒間に5回は記録したい
これは、求められる性能に該当します。
基本設計
基本設計では、要件定義で検討できていない部分を、もう少し掘り下げて検討します。
基本設計の構成は、以下のとおりです。
システム方式
ハードウェア構成図
ソフトウェア構成図
ネットワーク構成図
画面設計
画面一覧
画面遷移図
画面レイアウト
画面入出力項目一覧
画面アクション定義
テーブル・ファイル設計
テーブル関連図
テーブル・ファイル一覧
テーブル定義
CRUD図
外部インターフェース設計
外部システム関連図
外部インターフェース一覧
外部インターフェース定義
動作する環境は、Androidスマホ
・Androidのアプリを開発するには、android stadio(無償)が必要(ダウンロードで入手、インストール)
・android stadioで扱える言語は、JavaとKotlinがあり、汎用性の高いJavaを採用
クルマのセッティング情報と走行データを記録する機能
・走行データ(GPSの走行軌跡)を記録する
・走行軌跡を表示は、散布図が扱えるライブラリを利用する
・AndroidでGPSデータを扱えるライブラリを使用して、走行軌跡を取得する
・Android内蔵の加速度センサーと磁気センサーを使用して、加速度、傾きを取得する
・Android内蔵の圧力センサーを使用して、気圧を取得する
・Android内蔵のカメラを使用して、コース図を撮影する
・データの保存先として、外部ストレージ(SDカード)を使用する
・画像データやGPSの走行軌跡データはファイル、ファイルの管理はデータベース(Room)を使用する
・走行データを補完入力する、表示する画面を用意する
・動作に必要なパラメータを設定する画面を用意する
・走行データとして、温度、湿度、天候などの気象データを外部連携する
・温度、湿度はBluetooth接続でSwitchBot温湿度計から外部連携する
・起動時にGPSの位置情報から周辺の気象データをインターネット(OpenWeatherMap)から外部連携する
・走行データをメールで送信する
・使用しているライブラリのライセンス表示する
SwitchBot温湿度計は温度と湿度をBluetooth接続でインタフェースできるスマート家電です。
GPSの走行軌跡データや加速度は1秒間に5回記録
・1秒間に5回記録するためには、GPSレシーバが必要、内蔵GPSと共用できるDG-PRO1Sを利用する。
DG-PRO1SはGPS位置情報を1秒間に最大18回記録することが可能なGPSレシーバです。
システム方式
・SwitchBotとDG-PRO1SなどのIoTセンサー機器を利用しますので、ハードウェア構成図として表現します。
・センサーを制御するサービス、使用するライブラリをソフトウェア構成図として表現します。
・気象データはインターネット、温度と湿度はBluetoothで接続しますので、ネットワーク構成図として表現します。
※Bluetoothは、MACアドレスを使用して、データリンク層で接続しますので、ネットワーク接続として扱います
画面設計
要件から機能を実現する画面を洗い出します。
・クルマのセッティング情報、コース図を扱うマスタ登録画面
・走行データの記録指示、また記録を一覧表示する画面
・記録した走行データを表示する画面
・動作に必要なパラメータを設定する画面
・走行データを補完入力する、表示する画面
・コース図を撮影する画面
Androidアプリでは、画面レイアウトはXML形式ファイル、画面の処理はクラスファイルに記述します。
画面IDはXMLファイル名とし、ファイル名の一部にFragmentかActivityを識別する文字を含めておくとわかりやすいと思います。洗い出した画面を一覧化したものを画面一覧、画面の遷移を画面遷移図としてまとめます。