どうも。ひろです。
駆け出しエンジニアの皆さんアプリ開発はしていますか?
私はSlackの投稿に少し不便を感じアプリを作ってそこでチャンネル指定して、メモを送るようにアプリを開発しました。
このアプリのおかげでSlackでテキストファイルでの投稿が楽になりましたし、一方的にメモを送っておいてメンバーと共有する事でアウトプットとメンバーのノウハウも蓄積していきます。
今回は実際に作成したアプリの開発ロードマップをご紹介します。
大雑把な流れとしては以下の通りです。具体的に何をしたか開設していきます。
- アイディアだし
- 要件定義
- 設計
- 実装
- 動作確認
- リリース
アイディアだし
どんなアプリを作ろうと考えるより今不便に感じてることを洗い出した方がアプリ開発しやすいです。
その理由としては、漠然とアプリを作りたいとなってこういう機能があったらいいなと作っていくのも良いのですが
大体は何のために作るのか目的が不明確になってしまいがちです。
その為にまずどんなことが問題になっているのか洗い出すことによって、
問題点を解決する為にはどんなシステムが必要かということを考えた方がスムーズにアイディアが出てきます。
実際私は日頃から日常で感じている問題をメモするようにしていて、
アプリ開発するときはそこから選んで開発します。
機能の洗い出し
問題を解決する為に必要な機能は何があるか洗い出していきます。
この段階ではとりあえず必要そうな機能は全て書き出して置くことが重要です。
ここで前提になるのですが書き出した機能を全て一度に実装する必要はありません。
機能が多くなればなるほど不具合やバグが出やすくなってしまうのでまずは必要最低限の機能のみを選定していきましょう。
先ずは豊富な機能よりもリリースをする事が重要です。
+αの機能はリリース後に実現していきましょう。
設計
オブジェクト指向言語を使ってアプリ開発するのであればここでクラス図を作成します。
機能単位でどんな処理が必要か考え、抽象化できるものは抽象化して継承していきましょう。
メリットとして後に機能を追加するとなった時に同じような機能なんだけどちょっとだけ違うみたいな機能が出てきたりします。
そのため可能であれば抽象クラスを用意して継承してから機能を実装するようにしましょう。
クラス図を作成したらざっくりとしたシーケンス図を作成しましょう。
シーケンス図を作成できないと言う場合もありますのでその場合はクラス図のみで実装していきますが可能であればシーケンス図も一緒に作っておくのがベストです。
シーケンス図を作成することによって不具合になってしまう処理のタイミングを見つけることができるので後で手戻りが少なくなると言うメリットがあります。
実装
設計で作成したクラス図、シーケンス図をみながら実装を進めていきます。
具体的な進め方としては、使用する言語によりますがクラス図で用意しているクラスを作成します。
この時点でクラスの関数の処理はまだ書かずに大枠だけ作っていきます。
大枠ができたら関数の中の処理を実装していきます。
基本的には設計の段階でしっかり設計図を作成できていればそれをみながら実装でスムーズに作業を進められると思います。
慣れてくれば大規模でないければ1日あれば一通りの実装作業は終わると思います。
そのため前段階の設計はしっかりやっておきましょう。
動作確認
設計した通りに実装したら期待している振る舞いをしているか動作確認します。
具体的には機能の洗い出しや設計の段階でどのような操作をしたらどのような振る舞いをするか大まかにイメージしていると思います。
この動作確認はテストのようなものになるのでできるだけ細かくやりましょう。
もし時間があるのであればテスト書のようなものを作って記録に残しておくとこの動作は保証されているということをメモすることができます。
もし期待通りの動きをしていなかった時はデバッグでどこまで正常な処理が来ているか確認しましょう。
デバッグについては別記事で方法をご紹介します。
リリース
最低限の機能の実装、動作確認をして特に問題もなければリリースします。
リリースの方法はそれぞれですが私の場合はgithubでソースコードを配布し、
それぞれのPCの環境で実行してもらうような形を取るか、
ビルドして生成された実行ファイルのみ圧縮してそのアプリを必要としている人のみに配布すると言う形をとっています。
誰に配布するかによってどこにおくべきか変わってくるのでよく考えましょう。
リリースしたら終了ではなく最初に機能を洗い出した時に実装しなかった機能を実装していきアップデートファイルとして配布していきます。
リリースした後に出てきた不具合などはその都度対応し、こまめにアップデートを行なっていきましょう。
リリース後は基本的に機能追加とメンテナンスという形になります。
サポートする期間を決めていないとずっとそのアプリの保守のみに捉われてしまいます。
そのため大体いつまで対応するか決めてアプリをより良くしていきましょう。
まとめ
アプリ開発の基本的な手順は以下のようになります。
- 日常の問題からアイディアを生み出す。
- 問題を解決するために必要な機能を洗い出す。
- 必要な機能の設計を行う(抽象化できるものは抽象クラスを作る)
- 設計書をみながら実装作業
- 期待通りの動作をしているか(テスト)確認する。もししていない場合はデバッグで処理の流れを確認する。
- リリースする。リリース後はメンテナンスを主にやっていく。
私はこのような手順を踏んで開発を進めています。
それぞれの開発手順があると思いますが少しでも参考にして頂けると幸いです。
ここまで読んでくださりありがとうございました。
合わせて読みたい記事
- プログラミング関連