仕事の合間でも3ヶ月間でアプリは作れる
Zennへの初投稿となります。よろしくお願いします。
この記事では、仕事の合間をぬって、どのように時間を作って、3ヶ月間でAndroidアプリをリリースさせられたのかについて書いていきたいと思います。
世の中には、個人開発を本業としてアプリを作っている方はたくさんおり、やはりそういうアプリはとてもクオリティが高くて凄いアプリが多いです。
ですが、本業はサラリーマンとして仕事をしていても、毎日継続して少しずつでも開発する時間を作れば、それなりのクオリティのアプリは作れるんだって事を感じてもらえればと思います。
開発スケジュール
最初から具体的なスケジュールを立てたわけではないです。
ですが、ざっくりと半年以内には完成させようと思っていました。
振り返ると以下のような日程感で作業を進めました。
- 2021/01/01 新年の抱負と共にアプリの案「記録が残るToDoリスト」を思いつく
- 〜2021/01/03 アプリ案の要求仕様を具体化
- 〜2021/01/14 画面イメージを作成
- 〜2021/01/17 アプリアイコンを作成
- 〜2021/01/31 Android Developersサイトを読み込んでクラス設計図作成
- 〜2021/03/11 クラス設計に沿ってひたすら実装
- 〜2021/03/17 動作確認を進めて細かなレイアウト修正
- 〜2021/03/20 Playストアに載せるためのスクリーンショット作成
- 〜2021/03/21 「記録が残るToDoリスト」アプリのリリース
アプリの案を思いついてから、いきなり実装に移るのではなく、具体的な仕様を固めて、クラス設計に落とし込んでいく事を行い、実装の前にしっかり設計に時間を確保しました。
いきなり実装から始めてしまうと、あとどれくらい作れば完成するのか、自分自身でもゴールを見失いがちになります。
最初にゴール地点をある程度決めておくこと、そこまでの具体的な道のりをイメージしておくことはとても大事です。仕事では当たり前のようにやっていても、個人開発では自分がやること、やりたいことを決めるので、面倒なことは省略してしまいがちです。
ですが、この初動をどうするかがその後の開発モチベーションにも繋がり非常に大事だったと思います。
次からは、それぞれのトピックについて簡単に説明します。
2021/01/01 新年の抱負と共にアプリの案「記録が残るToDoリスト」を思いつく
今年は、技術的飛躍の年としたいと思い、何か新しいアプリを作ろうと思い立ちました。
そこで、普段メモ帳を使ってやることを管理していましたが、そこでの不満点が、やることをいつ登録したのか、いつ完了したのかが分からなくなっている事でした。その時に思いついたアプリです。
やることを起票したり、完了させたら、その記録が自動で残ること。これが最初のコンセプトでした。
〜2021/01/03 アプリ案の要求仕様を具体化
期間は2日間。
どんな操作感のアプリを作りたい・使いたいかを具体化すべく、仕様を箇条書きしました。
その時の箇条書きは以下のようなものです。
- メモ帳のように行をタップ又はフローティングボタン押したら記入できる
- 内容が長くなったら折り返して表示でセルの高さ変わってもいい
- 行をタップしたら、そのまま編集
- スライドで詳細アクティビティ
- 左からメニュー出てきて、自分で作ったToDo項目を切り替えられるようにする
大した内容ではないですが、最初に思い浮かんだ仕様を大事にするのは重要です。作っているうちに、どんな操作感にしたかったんだっけ?ってなりがちなので、ここでちゃんと押さえておきます。
実際、その後のアップデートでも、最初に押さえた仕様には変更を加えずに、機能追加を行っています。
アプリとして大切にすべきことは、この最初に浮かんでいた仕様のイメージです。
〜2021/01/14 画面イメージを作成
期間は11日間。
要求仕様をある程度具体化したら、画面イメージを固めました。
ほとんんど頭の中で画面イメージは固まっていたのですが、実際に画面イメージをアウトプットするのは大事です。アウトプットしてみると、思ってたのと違う部分とか発見できます。
とはいえ、そんなにたいそうなモノを作る必要は無いと思います。
私が作ったのは、GIMPツールでサクッと以下のようなものを作りました。
〜2021/01/17 アプリアイコンを作成
期間は3日間。
次に、画面イメージに合わせたアプリアイコンを作りました。
先にアイコンを作るとアプリとしてのイメージも固まるので、実装を進めててもアイコンに合うような画面を作るように気をつけることができます。
画面イメージとアイコンまで先に作ってしまうと、あとは実装仕様に沿って作っていくだけ!って気持ちになれます。
実装しながら、もっとこういうイメージにした方がいいか?とか迷うことが減るのでいいです。
その時に作ったアイコンのイメージは以下です。
〜2021/01/31 Android Developersサイトを読み込んでクラス設計図作成
期間は14日間。
まだ、実装には入らずしっかりとクラス設計を進めました。
Android Developersサイトを読み込み、推奨されているMVVMモデルのアーキテクチャで設計すること、DB処理はRoomを利用して非同期で行うこと、等を理解してクラス図を作成していきました。
その際に作成したクラス図は以下です。
ここまで設計してクラス図を作っておいた事で、この後の実装が非常に楽になりました。
クラス図無しに実装を進めていくと、やはり行き当たりばったりの実装をしてしまいがちです。
このようなクラス図を作る事で、アーキテクチャモデルを逸脱せず、迷う事なく実装が進めていけたと思います。
また、開発が終わった後は、Qiitaの方に学んだ事を忘れないように以下のような記事を投稿しました。
〜2021/03/11 クラス設計に沿ってひたすら実装
期間は41日間。
ここまでで、画面イメージ、アイコン、クラス設計をしっかり固めてきたので、ここからは本当に1ヶ月ちょっと、ひたすら実装を進めました。細かな挙動についての実装の不明点については、ググりながら進めていった感じです。この実装期間中に学んだ細かなTipsについては、ブログとしてまとめていきました。例えば以下のような記事です。
〜2021/03/17 動作確認を進めて細かなレイアウト修正
期間は6日間。
大体の実装が終わった後に、1週間程度動作確認を行いました。
実際、テスト工程のようなものなので、操作しながらバグを潰していきました。
また、実際に操作を行って確認を進めたので、画面レイアウトの細かく気に入らないところ等も修正できたため、この期間でアプリとしての完成度がグッと上がったと思います。
なので、実装完了しても焦らずに、自分でじっくり触ってみる期間は大事だと思いました。
〜2021/03/20 Playストアに載せるためのスクリーンショット作成
期間は3日間。
アプリが完成したら、手を抜いていけないのは、Playストアでのスクリーンショットです。やはり、スクリーンショットによって、ユーザーのファーストインプレッションは変わります。
なので、しっかり時間を撮って、スクリーンショットを作成しました。
最初のバージョンでは以下のようなスクリーンショットを作成しました。
〜2021/03/21 「記録が残るToDoリスト」アプリのリリース
期間は1日間。
ここまでできたら、あとはリリースするだけです。
Playストアでの文章を考え、用意しておいたスクリーンショットを設定し、リリースしました。
最後に気をつける点は、どのようなワードで検索されたいかを意識してタイトルをつける事です。
アプリ名は「記録が残るToDoリスト」ですが、タイトルにはもう少し長く文章が書けるので、サブタイトルとして後ろに「シンプルな操作のやること管理ツール」という文章も追加しました。
開発工数
上記のような日程で開発を進めてきたわけですが、結局、仕事の合間でどのくらいの時間を確保したのかが肝です。
しっかりと記録してきたわけではありませんが、1日あたり平均3時間くらいの時間を確保していたと思います。
平均的な1日の開発時間の確保は以下のようにしてました。
- 通勤電車の中の往復、合計40分間を開発時間に当てる
- 家に帰ってからの2〜3時間を開発時間に当てる
もちろん、残業がある日などはそこまで時間は確保できませんでしたが、10分でもいいから毎日開発する時間を作ったり、週末には多めに開発時間を確保したりして、3ヶ月間毎日時間作りました。
よって、トータルの開発工数は、
3時間 x 80日 = 240時間 = 30人日 = 約1.5人月
となりました。毎日継続する事で、3ヶ月間で約1.5人月分の時間が確保できました。
完成時のステップ数は、約3kStepでした。
つまり、100Step/日程度の生産性で開発が進められた計算になります。
どんなAndroidアプリを作ったか
最終的にどんなアプリをリリースしたかというと以下。
ですが、最初の操作仕様の案で定義した部分については変わっていません。
このアプリは、操作感にこだわって作成したToDoリストなので、ぜひダウンロードして利用して頂けると嬉しいです。
最後に
仕事の合間でも、毎日少しでもいいから時間を作ることで、最終的に3ヶ月間でアプリをリリースする事ができました。
朝の通勤電車の中では、朝なので頭が冴えている事と電車に乗っている間という時間的制約があるため、集中力が高まって良かったので個人的にはオススメです。
やはり、どこかで一度、時間を作る事をやめてしまうと開発を継続するモチベーションも下がってしまい、途中でやめてしまいがちになるので、毎日継続する事が重要だと思いました。
ということで、このようにして仕事の合間でも毎日少しでも時間を確保していけば、アプリは作り上げられるんだという事を感じていただけたと思います。
実際に、この期間は夢中になって開発していたので、とても楽しく進められたと思います。
Twitter等でも個人開発のフォロー、フォロワーも増えて更にモチベーションも上がっていきました。
個人開発は楽しいです。
Discussion