今話題のChatGPTと一緒にAndroidアプリを作ろう！

# 2025/04/30追記
想像以上にAIの進化は早いですね。。。
ここで紹介したAIとのプログラミングは、[Cursor](https://www.cursor.com/ja)というAIコードエディタを使うことで更に洗練された開発体験ができます。
AIとのプログラミングに興味を持って、記事を偶然見つけたあなた！この記事は読まずに[Cursor](https://www.cursor.com/ja)を使ってみてください！


# まえがき

これは [ZOZO Advent Calendar 2022](https://qiita.com/advent-calendar/2022/zozo) カレンダー Vol.2 の 4 日目の記事です。
昨日の投稿は @ssssota さんの「[JSON SchemaのanyOfをTypeScriptの型で表現する](https://qiita.com/ssssota/items/7e05f05b57e71dfe1cf9)」でした。

 [ZOZO Advent Calendar 2022](https://qiita.com/advent-calendar/2022/zozo) をご覧のみなのもの〜！
おはこんハロチャオ～！ZOZOでAndroidアプリ開発を担当しております。 @umsys です。

お察しの通り最近はポケットモンスタースカーレット・バイオレットにハマっています。
ナンジャモさんかわいいですね。

さて、今回は今話題の[ChatGPT](https://openai.com/blog/chatgpt/)と一緒にAndroidアプリを作ってみました！
AIによる仕事の代替が「エンジニア」という領域にどのような形で影響を及ぼすのか、個人的にも気になりましたので、体験してみることにしました。

1つ前置きをさせていただきます。
「Androidアプリを作ろう！」と題しておりますが、AndroidStudioの使い方やAndroidアプリ開発の基礎に関してはここで取り上げません。
**ChatGPTと一緒にAndroidアプリを作るという体験**にフォーカスした内容をお届けさせていただきますので、予めご了承ください。

# ChatGPTとは
>会話形式で対話するAIです。対話形式により、フォローアップの質問に答えたり、自分の間違いを認めたり、間違った前提に挑戦したり、不適切な要求を拒否したりすることが可能です。
>ChatGPTはInstructGPTの兄弟モデルで、プロンプトの指示に従い、詳細な応答を行うように訓練されているそうです。
>https://openai.com/blog/chatgpt/

この説明だけ聞くと、対話でAIが答えを返してくれるチャットサービスのように思えるのですが、実際に使ってみるとその賢さに腰を抜かします。

# どんなアプリを作るか決めよう！
せっかくなので、この段階からChatGPTに任せることにしました。
１記事にまとめられるほどのアプリなので、手軽に開発できるアプリがいいですね。
入門用アプリとしてよく挙げられる**メモアプリ**にしようと思いますが、せっかくなので面白い機能を付けたいものです。
ということで早速聞いてみると。。。？
![スクリーンショット 2022-12-03 22.30.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/323027/4be91d61-fd98-d88a-5893-d04f91972f6e.png)
これはすごい。。。こんなにポンポンとアイデアが出てくる頭になりたいものです。
どれも楽しそうなのですが、**スマートフォンの写真を自動的に文字起こしするメモアプリ**は比較的簡単かつ面白そうだったので、このアプリの開発を進めることにします。

# 技術選定をしよう！
ここでエンジニアならば「画像から文字を抽出 Android ライブラリ」とかでググりそうですよね。
そして検索結果から良さげなライブラリを選んで開発していくと思います。

しかし、ここでは自分がエンジニアであることを忘れ、全部聞いていきますw
![スクリーンショット 2022-12-03 22.34.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/323027/cb676697-8014-d3fe-134e-5c500fa1d546.png)
なるほど！
Cloud Vision APIはGCPの登録が面倒なので、**Tesseract**とやらを使ってみることにします！

# アプリを開発していこう！
どんなアプリをどんな技術で作るかが決まったので、開発を進めていきます。
Tesseractはお初なので使い方をChatGPTに聞いていきます。
※長くなったので画像が２つに分割されています。
![スクリーンショット 2022-12-03 22.42.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/323027/1503ad51-4b56-b0d6-b651-fa7e91070909.png)
![スクリーンショット 2022-12-03 22.43.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/323027/98292815-2306-71b3-ea9e-197cf1654574.png)
**ヒィッ！！！**

`build.gradle`の設定方法からサンプル実装まで提示してくれました！！！
せっかくなのでもう少し詳しい実装もお願いしちゃいましょう！!
![スクリーンショット 2022-12-03 23.12.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/323027/415ef705-d9b9-91f9-5de2-d9ed89855493.png)
。。。質問しているだけで実装まで終わってしまいました。
ちなみに記事を執筆しつつ、開発作業も並行して進めているのですが、ここまでで**約２時間**くらいです。
このスピード感はすごい。。。お初のライブラリを触ってアプリに仕上げるまで最低１日（実働8時間）はかかる @umsys ですので、作業効率４倍アップです。
（これを開発しているといっていいのかはさておき）



# 開発したアプリを動かしてみよう！
では一通り手順が揃いましたので実際にビルドしてみたいところですが、このままだと動きません。ちょっとまだ手を加える必要があります。

ChatGPTはスレッドの流れも覚えているので、この後いきなり「日本語を読み込めるようにしてほしい」とか、「`BitmapFactory.decodeFile`のところで`java.io.FileNotFoundException`がでてしまったのですが、どうしたらよいですか」とかを聞くと、今開発しているアプリに対してのアドバイスや修正案を出してくれます。
![スクリーンショット 2022-12-04 1.45.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/323027/0e53e397-b962-3f73-6564-c448e99c4765.png)

こうして何度かやり取りを繰り返した末にアプリが完成しました！!

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/323027/22cd87f4-9870-0816-c800-8f80edffa188.gif" width="320px">

無事動きました！

ただ、今更気づいたんですがメモアプリではないですね汗
「ギャラリー/カメラから画像を読み込む」、「読み込んだ結果を保存する」辺りの機能を追加すると、革新的なメモアプリとして使えそうです。
そのためにはChatGPTとさらなるやり取りをする必要がありそうですが、今回の目的である**ChatGPTと一緒にAndroidアプリを作るという体験**は伝わったと思いますので、今回はこの辺りで終わりにしようかと思います。

# 終わりに
今回の体験は、まるでAIに開発をお願いしているような感覚に陥りました。
最後の方の、エラー修正のリテイクを何度もお願いする場面は開発のテスト期間さながらです。

ただ、まだ我々の仕事を完全に奪うほどのものでは無さそうかなと思いつつも、AIの成長は早いのでボケっとしていられないなと思いました。
もしプログラミング仕事がAIに取って代わられる時代が来るとしたら、AIを使いこなして要望通りのアプリを出力するエンジニアという職業が成り立つ世界になって行くのかもしれませんね。（そんな漫画をどこかで読んだ気がします。）

ChatGPTは今後有料化するそうなのですが、プレビュー期間中は無料でお試しできるとのことです！
プレビュー期間はいつ終わってしまうかわからないので、未来の開発体験を先取りしたい方はお早めのお試しをオススメします！


明日は @tama_Ud さんです。
お楽しみに！