等等黨再次勝利:與 AI 協作,一天內完成一支 iOS app
說實在的,2024 年對我來說並不是一個安穩的一年,經歷車禍斷手、肝炎硬化昏厥而開刀做了器官移植,能活到現在也算是不幸中的大幸。
鑑於衰事太多,老婆開始吃齋念佛,希望能保佑我自此平安,並且突然許願我能為她開發一款每日提醒她誦經的手機 app。
由於我們全家用的都是 Apple 全家桶,自然就選擇 iOS 上開發這款老婆需要的 app。
這時候要提到我先前說的「等等黨的勝利」,蘋果用 Swift 語言取代了過去的 Objective-C,UI 也用 SwiftUI 逐步取代 Storyboard 機制,這些被迫打掉重練的過程,我通通跳過,更何況現在還有 AI 可以直接幫我寫 code,連我這個不熟悉 Swift 語言的生手,也能快速就開發出老婆需要的 app,而且連 Xcode 這款我完全不會使用的 IDE,也透過 AI 的指導學會一些需要的操作。
果然『等等黨』就是這麼爽啊,完全不走冤望路!
雖然很多開發者推薦 Cursor 這款專注在程式碼開發的 AI,但我還是喜歡老朋友 ChatGPT,所以這次開發我都是透過 ChatGPT 免費版本進行,我只要複製貼上就完成了 90% 以上的需求,利用上個週末假期,用不到一個工作天就開發完畢。
一開始我只想先問他如何做到 app 定時通知提醒用戶的效果,沒想到連簡易的功能性 UI 都給出了!所以我乾脆把第一個版本的老婆提的需求全告訴它:
我
我想要把畫面做調整,畫面分成三個頁籤:
第一個頁籤: 讓用戶去設定每日通知,畫面上可以選擇通知的起始和結束日期,以及每日通知的時間點,這個設定可以儲存起來,每日打開 App 就會讀取還原成使用者的設定。
第二個頁籤: 顯示大大的訊息,問用戶「今天的功課是否已經做完」,並且中間提供一個大大的溝溝按鈕,如果使用者按下按鈕,代表今日工作已完成,儲存此筆紀錄,紀錄包含“日期、時間、工作是否完成”這些數據,如果已經記錄到當天工作已完成,當天再次打開 APP 進到這個畫面,勾勾按鈕呈現已按下的狀態,不可以讓用戶重複點按。
第三個頁籤: 提供日期區間查詢,讓用戶選擇起始和結束日期,並提供查詢按鈕,按下查詢按鈕後,會根據這個日期區間查詢工作完成的總次數和列出明細。
請根據上述資訊,幫我用 swift 和 swift UI 開發這款 app。
GPT
其實到這裡的對話,我只要按下『複製』按鈕,將它提供的代碼貼進 Xcode 中編譯,符合老婆最初需求的 app 已經完工了!前後花不到一小時!
但只要是 PM,就一定具備 丟隕石 的才能!我的老婆又是天生的 PM 體質,看到成品後,立刻丟出許多 隕石需求。
而且我發現 ChatGPT 有個金魚腦的弱點,就是一旦更改需求,對話一拖長,他就會忘記最前面的部分需求,再後續變更後的程式碼,移除掉本來前面已經完工的需求。
所以這時候,我的問法就會開始變成單點式的提問,自己充當縫合怪,把它的回答剪貼在最早已經產出的程式碼雛形中,所以後續的問答,我都是針對單點功能需求做提問,也有許多提問是因為不熟悉 Swift 的語法而問(我連 for 迴圈和處理日期都不知道怎麼寫)。
以下並不會把完整的對談貼在部落格上,只透過截取幾段來回的對談,來表達這個 app 如何在這樣一天的時間內完工的。
我
你做得很好,但是在 NotificationSettingsView 沒有在啟動進入畫面的時候還原當初儲存的設定,可以幫我補上這一段嗎?
GPT
我
TaskHistoryView 可以幫我在最下面加上一個紅色的按鈕「刪除所有紀錄」,可以一次清除所有已經完成的工作紀錄?
然後每一條明細後面也有一個 "-" 的紅色按鈕,可以單獨刪除某一筆工作紀錄?
GPT
我
如何在 SwiftUI View 中擺放一張圖片?
GPT
完整的對談過程,可以直接點擊以下的對話分享連結參閱:
https://chatgpt.com/share/6772111f-a8fc-8007-a544-b4a43c4f4f41
至於 app icon 的部分,我則是上網搜尋找了一個 AI 產圖標的網站,叫做 recraft.ai。
只要先選擇畫風筆觸,我偏好的抽象風格,然後再給予主題(僅支持英文):Buddha Practice (佛陀修行)
就這樣快速完成這次 app 的圖標 icon 和啟動頁 Launch View
我將這款 app 取名為「天天修行」,但沒有打算上架,做這個只是自用(每年 99 美金的上架費,真的花不下去)。就用影片 DEMO 一下這次 app 完成品的樣貌做個完美的 Ending 吧。
話說文章剛寫,更多隕石需求又降臨了...。