自作アプリの開発で、これまでは単発的に”ChatGPT“アプリを使って分からない部分を調べる範囲に留まっていましたが、今回、アプリをバージョンアップするタイミングで、ゼロからアプリを再構築してみようと思い、”ChatGPT“に全面的に協力してもらうことにしました。結果は素晴らしい!!の一言。どんな手順でアプリを開発したのかメモを残しておきます。
アプリの基礎部分になる大まかなUIデザインは、これまでの経験値を活かしてアウトラインをプログラミングします。この時、”SwiftUI“をベースにプロジェクトを作ると、後々、UIデザインと機能をマッチングしやすくなるので、”ChatGPT”でチャットする際にも分かりやすく内容を伝えることができます。

Xcode
この段階から、Xcode上のソースコードと”ChatGPT”アプリとを適宜連携させたうえで、機能単位にチャットでソースコードの生成を依頼していきます。ただ、一発でエラーのなかコードを生成できない場合もあるので、慎重に少しずつ生成されたコードをXcodeに適用し、都度実行して想定どおり動作することを確認することが重要です。それと、生成されたコードの概要を自分自身でもある程度理解できていることも確認すべきです。そうしないと、以降の作業を進めるなかで、自分には理解できないプロジェクトが作り込まれ、結果的に細かい手直しなどができない成果物が完成してしまいます。コードの生成時、チャット上では「この後、こんな拡張や改善もできるよ」って則されますが、調子に乗ってどんどん先に進めてしまうと、気が付いた時にはエラーが多発したり、全く理解できないコードが完成してしまったりします。こうなると、折角のコード生成も台無しです。

ChatGPT
コード生成全般に言えることですが、生成してもらったコードのなかには一段古いmacOSやiOSでなら支障はないけど、最新のプラットフォームだとエラーが発生してしまう場面がありました。この場合は、”ChatGPT”に最新のバージョン用に改善を要求すれば、シレッと改良版を提案してくれます。
後、SwiftUIでアプリを構築していると一番厄介なエラーが”The compiler is unable to type-check this expression in reasonable time; try breaking up the expression into distinct sub-expressions”です。このエラーに関しては、どの箇所にエラーが潜んでいるのか分かりづらいので、”ChatGPT”でもなかなか一発で解決できないようです。その場合は、自分でコードを眺めながら、当たりをつけて「onReceive(NotificationCenter.default.publisher(for: は5つを超えて記述するとエラーになるの?」などと”ChatGPT”に訊ねてみると、正解なコードを生成してくれました。こんな感じで、100% “ChatGPT”に頼れないケースもあるので、ある程度はプログラマーサイドでも経験値がないと先に進めない場合があります。
今回、UI画面のデザインにも積極的に”ChatGPT”に参加してもらいました。個人的には、UI画面に反映させるUI部品については理解しているので、”ChatGPT”には「エレガントでいま風なUIデザイン」を要求しながら作り込んでいきました。
開発の途中、「[Internal] Thread running at User-initiated quality-of-service class waiting on a lower QoS thread running at Default quality-of-service class. Investigate ways to avoid priority inversions というエラーが出るけど大丈夫かな?」というやりとりをする場面に直面しました。何度か補足的な情報を提供した結果、アップルの公式ドキュメントを数分かけて調査してもらい、エラーの発生原因を教えてもらうことができました。こんなの自分ひとりだったら絶対分からないし、従来のネット検索でも答えを見つけるのは不可能(とりわけ、macOSのプログラミングに関する知見がネット上には殆どない状況。)なレベルの内容でした。
更に凄いのは、英語で書かれたドキュメントを分かりやすく日本語に変換して回答してくれることです。これには脱帽です。

ChatGPT
原因が分かったので、エラーのないコードの提案もしてもらいました。技術レベルが高いこともあってか、数回改良を依頼した結果、エラーのないコードにブラシュアップすることができました。この作業、自分の力量では絶対できない内容でした。

ChatGPT
個人でアプリ開発をしていると、特にエラー処理とかユーザサイドに立った選択のバリエーションなどへの配慮は、次のバージョンで対応すればいいなあ、ということで棚上げしてしまうことが多かったです。今回、”ChatGPT”と協力してプログラミングを進めると、その場で”ChatGPT”側から改良版や改善版などを提案してくれるので、棚上げすることなく、その都度、エラー処理などを追加することができるようになりました。エラー処理などは、実際にプログラミングしようとすると思った以上に面倒なことが多いので、”ChatGPT”といっしょにプログラミングできて良かったなあ、と思いました。
一定期間の経験を積みながら、XcodeとChatGPTアプリが協業できるチャットのやり方を身に付けていけば、アプリ開発の手間も時間も大幅に削減することができましたし、自分が持っている力量を遥かに超えたアプリに仕上げることもできました。体感的には、アプリ全体の8割近くは”ChatGPT”の手を借りたという印象です。まさに、アップルの技術に精通しているプロのアドバイザーが画面の向こう側にいるといった感覚です。ちなみに、”ChatGPT”でチャットし過ぎると”Plus”バージョンへのアップグレードを薦めらますが、無料版のままで全く支障は感じませんでした。まさに”HAL 9000“が現実のものになったんだなあと実感しています。

ChatGPT
アップルのAIは遅れ気味という評判を聞きますが、事、プログラミングに関しては別次元の体験で作業を進めることができる段階に達しているという実感です。6月の”WWDC“で、どんな発展形が発表されるのか楽しみですね。
コメント