前回、Androidアプリとして「シンプル日付計算機」をリリースしました。
そのときの一番の目的は、まずは 「Androidアプリを作って、Google Playに公開する」 ことでした。
KotlinもAndroid開発もほとんど分からない状態から、ChatGPTを使いながら開発を進め、最終的にGoogle Playへ公開するところまでたどり着きました。
そして今回、2本目のAndroidアプリとして作ったのが、
「ボクシングラウンドタイマー」
です。
今回は前回とは少し目的が違います。
単にもう1本アプリを作るのではなく、自分が普段本当に使いたいアプリを作りたいと思いました。
自分がボクシングジムに通っているからこそ作りたかったアプリ
私は普段、ボクシングジムに通っています。
ボクシングでは、
- 準備
- ワーク
- 休憩
- 次のラウンド
というように、一定時間ごとに区切ってトレーニングすることが多いです。
もちろん、ラウンドタイマーのアプリ自体はすでにたくさんあります。
そのため今回は、最初から「こういう機能を全部入れよう」と考えたわけではありません。
まずは実際にいくつかの類似アプリを使ってみて、
自分にはどんな機能が必要なのか
どういう操作感なら使いやすいのか
を確認しました。
その結果、自分に必要なのはそこまで多機能なアプリではないと分かりました。
欲しかったのは、
- 準備時間を設定できる
- ワーク時間を設定できる
- 休憩時間を設定できる
- セット数を設定できる
- よく使う設定をプリセットとして保存できる
- フェーズが切り替わるときに音や振動で分かる
- トレーニング中に画面が消えない
- 今どのフェーズなのかがひと目で分かる
といった機能です。
そのため今回は、機能を増やすことよりも、自分が実際にボクシングジムで使いやすいことを優先しました。
必要な機能だけに絞りました
個人開発をしていると、
「この機能もあった方がいいのでは」
「せっかくだからこれも追加しよう」
と、つい機能を増やしたくなります。
ただ、今回はあえてシンプルにしました。
履歴管理はありません。
統計機能もありません。
クラウド同期もありません。
アカウント機能もありません。
広告も入れていません。
自分がトレーニング中に使うことを考えると、そういった機能は必須ではありませんでした。
アプリを開いて、
設定して、
スタートする。
それくらいシンプルな方が、自分にとっては使いやすいと感じました。
今回からCodexを使いました
今回の開発で大きく変わった点のひとつが、Codexを使い始めたことです。
前回は主にChatGPTに、
「こういう機能を作りたい」
「このエラーは何ですか」
「このUIをどう直せばいいですか」
と相談しながら開発を進めていました。
今回はそれに加えて、実際のコード修正をCodexにかなり任せました。
Android Studioは、Visual Studio CodeのようにCodexをIDE内の画面として使う形ではなかったため、Codexは別のターミナルで起動して使いました。
開発中は、
- Android Studioでコードや実機の動作を確認する
- 別で立ち上げたCodexに修正内容を指示する
- Codexがプロジェクト内のコードを変更する
- Android Studioに戻ってビルドや動作確認を行う
という流れで進めました。
最初は、Android StudioとCodexを別々に立ち上げるのは少し面倒かもしれないと思っていました。
ただ、実際に使ってみるとかなり快適でした。
Codexに、
「この機能を追加してください」
「今のUIは崩さないでください」
「この部分だけ最小限修正してください」
と伝えると、プロジェクト全体を見ながら修正してくれます。
体感としては、実装作業が圧倒的に楽になりました。
AIの提案をそのまま採用しないことも大切でした
一方で、今回の開発を通して改めて感じたのが、
AIの提案をそのまま受け入れればいいわけではない
ということです。
分かりやすい例が、時間設定画面です。
準備時間やワーク時間などを設定するUIについて、最初にChatGPTから提案されたのは、
「+」「−」ボタンを押して値を増減する方式
でした。
確かに実装は分かりやすいです。
ただ、実際に触ってみると使いづらく感じました。
例えば、3分から10分に変更したい場合、何度もボタンを押す必要があります。
秒数の変更も同じです。
トレーニング前にサッと設定したいアプリとしては、少し面倒でした。
そこで、ホイール形式で値を選択するUIに変更しました。
指で回して値を選べるため、こちらの方が明らかに操作しやすくなりました。
この変更は、実際に自分で触ってみたからこそ気づけたことだと思います。
AIは案を出してくれます。
コードも書いてくれます。
ただし、
そのUIが本当に使いやすいのか
その機能が本当に必要なのか
を判断するのは、人間側です。
AIを使うほど「何を作りたいか」が重要になります
今回の開発では、ChatGPTとCodexをかなり活用しました。
アイデア整理から、
画面構成、
実装、
エラー対応、
Google Play公開準備まで、
多くの場面でAIに助けてもらいました。
ただ、AIを使う量が増えるほど、
自分の中に「どういうアプリにしたいか」という軸が必要になる
とも感じました。
AIに、
「もっと機能を増やしてください」
と頼めば、いくらでも増やせます。
「UIをもっと豪華にしてください」
と頼めば、いくらでも変えられます。
しかし、それを続けていると、自分が本当に欲しかったアプリから離れていく可能性があります。
今回のアプリでは、
自分がボクシングジムで実際に使う
という明確な基準がありました。
そのため、
「これはいらない」
「これは使いにくい」
「これは残したい」
という判断がしやすかったです。
AIを活用するうえでは、こうした取捨選択がとても重要だと感じました。
2本目をリリースして感じたこと
前回は、
「Kotlinが分からなくても、AIを使えばAndroidアプリを公開できる」
という経験が大きかったです。
今回はそこからさらに一歩進んで、
「自分の生活の中で実際に使うアプリを作れる」
という感覚を持つことができました。
これは自分の中ではかなり大きな変化でした。
個人開発というと、
「何を作れば売れるか」
「何が流行っているか」
を考えがちです。
もちろん、それも大切だと思います。
ただ、まずは
自分が困っていること
自分が普段使いたいもの
から作ってみるのも、とても良いと思いました。
少なくとも自分自身がユーザーなので、使いやすさについては妥協しにくくなります。
今回作った「ボクシングラウンドタイマー」も、これから実際にジムで使いながら、必要であれば少しずつ改善していく予定です。
AIのおかげで、実装そのもののハードルはかなり下がりました。
だからこそこれからは、
何を作るか
どういう使い心地にするか
という部分が、より重要になっていくのだと思います。