嫁にアラームを止められるので、僕しか解除できないアプリをAIに作ってもらった話

## はじめに

皆さん、朝活はしていますか？
僕はやりたいのですが、正直、朝は苦手です。幸いアラームが鳴れば何とか起きられるタイプではあるものの、ここ最近、深刻な悩みがありました。

**僕がセットしたアラームを、隣で寝ている妻が光の速さで止めてしまうんです。**

その結果、8時に起きたいのに気づけば9時...なんてことが日常茶飯事でした。
「せめて10秒だけ待ってほしい」と頼んでも、彼女は無慈悲にアラームを停止させます。

そこで、エンジニアならば“仕組み”で解決しようと決意。
こうして生まれたのが、自分にしか解除できないアラームアプリ『めざLock』です。
PINコードで認証しない限り、アラームが止まらない仕様にしました。
このアプリのおかげで、最近は無事8時に起きれるようになりました。（妻は少しだけ機嫌が悪いですが..笑）

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/670405/4adbfbcd-c2b5-4d91-ae00-e2f6b599ae2b.gif" width="300px">


さて、ここからがこの記事の本題です。今回は「AIでアプリ開発のどこまでを自動化できるか？」という個人的な興味から、アプリ開発の各工程を可能な限りAIに任せるスタイルで進めてみました。

本記事では、このアプリ開発の全工程を
「どのAIに」
「何を依頼し」
「どんな結果が得られたか」
という観点で、体験を交えながら紹介していきます。
技術的な深掘りというよりは、「AIを使ったらこんなものが作れた！」という体験談として、気軽に読んでいただければ幸いです。

完成したコードは、以下で公開しています。

https://github.com/kilalabu/self_unlock_alarm

## AIと駆け抜けた開発の道のり

今回の開発は、大きく以下のフェーズで進めました。

1. **要件定義 (Gemini 2.5Pro)**
2. **機能実装 (Cline)**
3. **設計改善 (DeepWiki + Cline)**
4. **UIデザイン (v0)**
5. **UI改善 (Gemini 2.5Pro)**
6. **アイコン作成 (ChatGPT 4o & Gemini 2.5Pro)**
7. **README作成 (DeepWiki)**

### 1. 要件定義 (Gemini 2.5Pro)

まず、「自分しか解除できないアラームアプリ」というざっくりしたアイデアを元に、**Gemini**と壁打ちしながら具体的な要件を洗い出しました。「こんなアプリを作りたいんだけど、どんな機能が必要かな？」といったラフな質問から始め、最終的に以下の要件を固めました。

- アラーム時刻を設定できる
- 通知の権限をリクエストして付与できる
- アラームのON/OFFを切り替えられる
- PINコードの設定・更新ができる
- 設定時刻になると、通知・バイブレーション・アラーム音で知らせる
- PINコードを入力しないとアラームを解除できない

ちなみに、Geminiからは生体認証も提案されましたが、「寝ている間に指や顔を勝手に使われたら解除されてしまうのでは…？」という懸念があったため、今回は見送りました（笑）。

### 2. 機能実装 (Cline)

要件が固まったので、実装開始です。普段の業務ではAIエージェントとしてCursorを使っていますが、今回は以前から気になっていた[Cline](https://cline.bot)を試してみました。

https://cline.bot/

Clineは従量課金制（最低5ドルから）で、使った分だけクレジットが消費されます。
一度に多くのことを頼むと精度が落ち、実行に時間がかかって課金額も増えるため、要件を細かく分解し、段階的に依頼するのがコツです。（蛇口から水が流れるようにクレジットが減っていくのを見ると、メンタル的にもきます…笑）

**プロンプト例：**
「アラーム時刻を設定する仕組みを作って」
「指定時刻になったら通知を飛ばす仕組みを作って」
「通知をタップしたら、PINコード入力画面が起動するようにして」
「PINコードを保存・更新する仕組みを作って」

**結果:**
結論から言うと、**要件を満たすコードの生成は、ほぼClineだけで完結しました。**
各工程で公式ガイドのリンクをつけて指示したこともあり、生成されたコードの9割方はそのまま利用でき、わずかな手修正で動くものが出来上がりました。AIエージェント、恐るべしです。

### 3. 設計改善 (DeepWiki + Cline)
ここで終わっても良かったのですが、Clineが生成したコードは、ロジックの多くがComposable関数内に直接書かれており、ViewModelも存在しない状態でした。このままでは可読性や拡張性に課題があるため、アーキテクチャを導入してリファクタリングすることにしました。
今回はGoogleのサンプルアプリ「Now in Android」を参考に、MVVMアーキテクチャ、単方向データフロー、Kotlin Flowsを用いたデータストリーム構成を目指しました。

ここで、具体的な設計依頼のプロンプトを作るために**DeepWiki**を活用しました。

https://deepwiki.com/

DeepWikiは、「Devin」を開発したCognition社が提供するサービスで、GitHubリポジトリのコードを解析し、自動でWikiのようなドキュメントを生成してくれます。
さらに、チャット形式でリポジトリの内容について質問できるため、必要な情報だけを抜き出したり、それを応用したアウトプットを生成してもらったりすることも可能です。便利すぎる。

今回は「Now in Android」の[DeepWiki](https://deepwiki.com/android/nowinandroid/1-overview)を開き、チャットで「ForYouScreenの設計を参考にしたアラーム設定画面を作りたいので、設計マニュアルを生成して」と依頼。すると、見事に手順書のようなドキュメントを生成してくれました。これが無料で使えるとは驚きです。

次に、その手順書を**Cline**に渡し、「この設計に従って、先ほど作成したコードをリファクタリングして」と依頼しました。

**結果:**
これにより、以下のようなアーキテクチャに生まれ変わりました。

Architecture Overview
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/670405/14e276b7-8264-4ab2-9897-23478f435bb0.png)

State Management Pattern
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/670405/23d52c28-d0b1-4af5-ab31-b7aa951da33d.png)



### 4. UIデザイン (v0)
さて、作り始めるとこだわり出してしまうのがエンジニアの性分。毎日使うアプリならUIにもこだわりたいものです。そこで、UIデザインもAIに依頼しました。
利用したのは、Vercelが提供するAIベースのUI生成ツール「**v0**」です。

https://v0.dev


コンセプトや要望をプロンプトとして渡すだけで、洗練されたUIデザインを提案してくれます。今回は「ポップなデザイン」と「スタイリッシュなデザイン」の2案を作成してもらい、ポップな方を採用しました。

**結果:**
以下のようなデザイン案を作ってくれました。タップ後の画面やアニメーションまで作成してくれたのには非常に驚きました。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/670405/c27df718-f4f9-4c9e-b2e3-76fa9d91eb86.gif" width="300px">

（余談ですが、最近Googleが発表した「[Stitch](https://stitch.withgoogle.com/)」でも同様にデザイン案を作成してみましたが、現時点ではv0の方がクオリティは高い印象でした。今後に期待です。）


### 5. UI改善 (Gemini 2.5Pro)

UIデザインをコードに反映させる工程です。この時点でClineに15ドルほど費やしてしまったので、節約のためGeminiにバトンタッチしました（笑）。AIエージェントは、油断するとどんどんお金を吸い取っていくので怖いですね。

GeminiはGitHubリポジトリを丸ごと読み込ませることができるため、詳細なコードを貼り付けなくても、CursorやClineのようにクラス名を指示するだけで済むのが非常に魅力的です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/670405/28541aec-cfce-43c3-8b0f-254473dc2894.png)


「添付したデザインになるように、Themeの変更と既存コードの修正をお願いします」と依頼をしてみました。

**結果:**
多少の微修正は必要でしたが、出力されたコードをAndroidStudioにコピペしただけで、ほぼイメージ通りに既存のUIをリッチなデザインに変更することができました。

|before|after|
|----| ----|
|![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/670405/f6e62c6b-dd80-4ab4-abf6-2b69fb353e9d.png)|![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/670405/9440ddc2-a71d-40ac-b9da-69edb96720d4.png)|

### 6. アイコン作成 (ChatGPT 4o & Gemini 2.5Pro)
ここまできたらアプリの顔となるアイコンも作成したいです。

デザイン作成ツールで有名なCanvaのAI機能を試してみましたが、アイコン画像の生成はあまり得意ではないようでした。また、過去のやり取りを記憶してくれないため、「もっとこうしてほしい」といった細かな修正依頼が難しいと感じました。

そこで、**Gemini**と**ChatGPT**にそれぞれアプリのコンセプトとスクリーンショットを渡し、アイコン作成を依頼して比較しました。

**結果:**
これは好みが分かれるところですが、今回は**ChatGPT**が生成した案を採用しました。どちらのAIも非常に高品質なアイコンを生成してくれました。
|Gemini|ChatGPT|
|----| ----|
|![Gemini_Generated_Image_a4v2cta4v2cta4v2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/670405/96de80fd-2b97-4e9c-8bb0-eea8e6d6eaf8.png)|![ChatGPT Image 2025年5月25日 14_40_17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/670405/1d82c0e2-4599-424e-b939-58f3cee29b8f.png)|


ただ、アダプティブアイコン用に背景と前景を分けて生成してほしいと依頼した際、Geminiは意図をうまく汲み取ってくれませんでした。同じ依頼をChatGPTにしたところ、すんなりと対応してくれたので、画像生成に関する細かな指示の理解度は、現時点ではChatGPTに軍配が上がるかもしれません。

ちなみに、アイコン設定（Android StudioのImage Asset Studioを使った作業）は、AIに任せるよりも手作業の方が早いと判断し、自分で行いました。

### 7. README作成 (DeepWiki)

最後に、GitHubリポジトリのREADME作成です。これも**DeepWiki**が大活躍しました。

自身が作成したリポジトリのURL（`https://github.com/kilalabu/self_unlock_alarm`）の`github`部分を`deepwiki`に書き換えるだけで、DeepWikiのページが作られます。

https://deepwiki.com/kilalabu/self_unlock_alarm

あとは生成されたWikiから必要な情報をピックアップし、アーキテクチャ図などを[README](https://github.com/kilalabu/self_unlock_alarm/blob/main/README.md)に貼り付けるだけで、効率的に作成できました。
自前で一からアーキテクチャ図などを作るのは意外と時間がかかる作業なので、非常に助かります。

## まとめ：AIとの協業で感じたこと

今回の開発を通して、**「何をしたいか」という目的と「どのように作るか」という設計さえ人間がしっかり決めれば、その実現（実装）の大部分はAIが担ってくれる**ということを強く感じました。

体感的な工数は、平日の夜に少しずつ作業を進めたので日数はかかりましたが、実質**1営業日**ほどでした。設計やUIにこだわらなければ、2時間もあれば完成したと思います。まさに、アイデアを高速で形にできる素晴らしい時代です。

各AIツールの所感としては、

- **Cline:** 成果物の質はCursorと大差ないと感じましたが、実行速度が体感で倍以上かかった印象です。（ただ、これは自分が慣れていないだけかも?）従量課金制なので、クレジットがあっという間に溶けていきました。
- **Gemini:** 非常に万能です。リポジトリ全体の文脈を理解でき、プログラミングだけでなくデザイン作成もこなします。Google I/Oで発表されたAIエージェント機能搭載にかなり期待しています。
- **DeepWiki:** リポジトリの解析とドキュメント生成能力が非常に強力です。設計や仕様の把握にかかる時間を大幅に短縮でき、実務でもオープンになっているライブラリの解析などに活用できそうです。
- **v0:** UIデザインのプロトタイピングにおいて、高品質な提案を迅速に得られます。ただ、Stitchの進化次第では、そちらに乗り換えることになるかもしれません。

もしこのアプリを業務レベルの開発や製品化を目指すとなると、細かなチューニングや厳密なテスト、エッジケースへの対応など、まだまだ人間の手が必要な領域は残っています。
しかし、個人開発やプロトタイピングのフェーズにおいては、AIはすでに十分すぎるほどの戦力でした。


ちなみにこのアプリ、Android 14 以上だと通知をスワイプで消せてしまうので、寝ぼけて通知を消してしまうとアラームが解除不能になるという致命的な問題（仕事だったら重大インシデント）があります。ただ、自分しか使わないので、修正は追々…笑

### 余談

念のためですが、夫婦仲は良好ですのでご安心ください（笑）。
ここまで読んでいただき、ありがとうございました。