Swift Copilotを使ってiOSアプリを開発してみる
はじめに
こんにちは、daywizの𝙨𝙝𝙞𝙣𝙩𝙖𝙧𝙤です。
こちらは、SwiftUI Advent Calendar 2024 22日目の記事です。
2024年は本業が忙しくてなかなか開発が進まず...と、2023年と同じことを言っている気がしてハッとしました。
そこで、ChatGPT(生成AI)を使えば、もっと気軽にiOSアプリ作れるのでは?と思ったので、少し齧った生成AIの知識を駆使しながら、iOSアプリを開発してみました。
ちゃんと実機で動かせるまでになり、個人的には満足しております。
せっかくなので、ログを遡りながら、どんな感じで作成したかを共有し、みなさんにも気軽にアプリ開発に勤しんでいただければと思います!
概要
作ったアプリ
- 場所に関する単語を入力すると、その場所に関する情報を返してくれるチャットボットみたいなアプリ
作ろうと思った経緯
旅の記録ができるアプリを作ろうと思ったとき、人が思う場所の情報をどうデータ化するかって意外と難しくない?と思ったからです。
LLMならよしなにしてくれるかな、と思ってはいたんですが、LLM使わなくてもできるのでは?と思ったので考えてみました。
実際のやりとり
1. まずは設定や目標をプロンプトで伝える
では、さっそくプロンプトです。ChatGPTの有料版を使っている点はご了承ください。
Swift CopilotというGPTsを使わせていただいています。
あなたはSwiftを使ってアプリを開発するエンジニアです。私はアプリを実際に開発する後輩エンジニアです。
XCodeでアプリを作成するための手順をステップバイステップで1つ解決するごとに次の手順を教えるようにしてください。
なるべく役割ごとにファイルを分割し、1ファイルが大きくならないようにしてください。
エラーが発生したり、改善したい場合は私がコメントするので、①その原因、②コードの修正点、③修正対象のファイル全量を示してください。
- SMS風のチャット形式の画面で、場所に関する単語を入力、送信するとその位置情報をApple Mapの地図オブジェクトで表示するアプリ
- 地図オブジェクトを表示しつつ、国・都市・地域・地名・郵便番号をメッセージで表示する
- 「大阪」とまでしか入力されない場合は、都市としての「大阪府」と地域としての「大阪市」があるが、より大きな都市「大阪府」として判定して地域・地名・郵便番号は表示しない
- 地名に郵便番号が複数存在する場合は、郵便番号は表示しない
- 対象はiOS18です。
- SwiftUIを使ってください。
- Apple Mapオブジェクトを押下されたら、Apple Mapに遷移するようにしてください。
こんな感じで返してくれました。
「とりあえずコード書いてみて」とか発するハズレガチャ上司とは偉い違いですね←
あっという間にシミュレータにチャットアプリ風のUIが実現できました!ここまで5分!笑
2. 出力された内容に従ってコードを作成・更新していく
(1) 無事に実行できたら、Swift Copilotに報告
うまくいったら、それをSwift Copilotに報告して次のステップに進みます。
なんだか公式のチュートリアルをやるより手厚い感じがするのでめっちゃありがたい...
(2) コードでエラーが表示されたときもとりあえず聞く
言われた通り作ったのに、エラーが表示されてしまう...なんてこともありますよね。
そんなときでも大丈夫、Swift Copilotならね。
相談すると、原因を示してくれた上で対策を出力してくれます。
個人的にはここで少し自分なりに考えて、「あ、やっぱりそれか」みたいにワンクッション踏めるようになると、エンジニアとしても成長できると思います!
(3) 差分だけじゃなく、全コードがわかるようにしてほしい場合
コードは差分で出してもらうようにお願いしているので、特定のファイルについて全ステップのコードを見たい場合はお願いしてみましょう。
ぐちゃぐちゃになったらコピペすれば、OK!
気軽にコードを弄ることができます!
3. 生成したコードについて解説してもらう
エンジニアの先輩役をお願いしているので、わからないところは聞いてみましょう。
何度アホな質問をしても、嫌がらずに丁寧に教えてくれます。
せっかくアプリをつくるなら、わからないところは聞きつつ、理解を深めてエンジニアとしても成長したいですよね!
最後に
ChatGPTをはじめとした生成AIは、本当に画期的なツールだと思います。
どう使うかわからないとなかなか手を出すのが億劫ですが、せっかくなので2025年、使いだしてみようかな?と思う人が少しでも増えたらいいな、と思います。
さぁ、素敵なSwift開発ライフを!
Discussion