大約從生成式 AI 開始普及之後,我在工作上就逐漸習慣使用 AI 協助開發。
當時應該還沒有「Vibe Coding」這個說法,但實際上的做法已經很接近:先用文字說明需求,讓 AI 協助規劃與撰寫程式,再由自己進行測試、驗收與修正。
過去一年多,我在 Web 前後端開發上已經大量採用這種模式。
到了去年九月,我開始嘗試把相同的方法用在 Flutter App 開發。
半年過去,陸續完成了幾款工具 App、休閒遊戲、網站與後端服務,也曾經挑戰過超出自己能力範圍的遊戲專案。
有些作品大約一週就能完成並上架,也有專案投入兩個月後,最後還是選擇暫停。
這篇文章不是要討論 AI 能不能取代工程師,而是單純記錄我實際使用 Vibe Coding 開發 App 半年之後,對這種開發方式的理解。
從一款類似 2048 的小遊戲開始
我第一款使用 Flutter 製作的遊戲,是一款玩法類似 2048 的休閒遊戲。
由於規則不算複雜,主要就是處理方塊移動、數值合併、分數計算與基本畫面呈現。
在 AI 協助之下,從建立專案、完成主要功能、調整畫面,到最後上架 Google Play,大約花了一週左右。
這次經驗讓我產生了一個有點危險的錯覺:
既然簡單的遊戲可以完成,那麼複雜一點的遊戲,應該也只是多花一點時間而已吧?
後來證明,事情完全沒有這麼簡單。
剛走出新手村,就直接挑戰魔王
接下來,我開始規劃一款單機大富翁玩法的生存遊戲。
玩家可以擲骰子、在地圖上移動、觸發事件,也能加入多人聊天等功能。
一開始看起來,只要把每個功能拆開,逐步交給 AI 開發,似乎就有機會完成。
但真正開始製作後,我才發現遊戲開發和一般工具 App 完全不同。
除了功能本身,還需要處理:
- 遊戲狀態管理
- 角色移動與地圖系統
- 畫面更新與動畫
- 事件觸發邏輯
- 操作手感
- 效能與裝置適配
- 遊戲 UI
- 美術資源
- 整體遊戲節奏
Unity、Cocos Creator 或其他遊戲框架,也各自有一套需要理解的觀念。
後來我嘗試使用 Flutter 搭配 Flame 繼續製作,每天晚上花時間調整功能、修正錯誤與重新規劃。
大約持續兩個月之後,我決定先把專案停下來。
這次經驗讓我理解一件很重要的事:
AI 可以協助你寫程式,但不會自動補上你缺少的領域經驗。
如果連自己都還不清楚遊戲架構應該怎麼設計、哪些功能應該優先處理,AI 只會更快地幫你製造出一堆需要重構的程式碼。
自己重新造輪子,真的很可怕。
後來改成先做小型 App
遊戲專案暫停之後,我重新調整了開發方向。
與其一開始就挑戰龐大的系統,不如先從需求清楚、功能單純的小工具開始。
這些 App 不一定很複雜,但每一款都可以讓我熟悉不同問題:
- Flutter 的畫面與狀態管理
- Android 與 iOS 的差異
- 多語系處理
- 內購與廣告
- 通知提醒
- 資料儲存
- API 串接
- Google Play 與 App Store 上架流程
我也逐漸建立出比較適合自己的開發方式。
我現在使用的 Vibe Coding 流程
目前我不太會直接叫 AI「幫我做一款 App」。
比較常用的方式是把專案拆成幾個階段。
第一步:先確認 App 要解決什麼問題
我會先整理最基本的需求:
- 這款 App 是給誰使用?
- 它要解決什麼問題?
- 最重要的功能是什麼?
- 哪些功能可以晚一點再做?
- 第一個版本做到什麼程度就可以上架?
這個階段很重要。
因為如果自己沒有想清楚,AI 也只會根據模糊的描述,做出一個看起來功能很多,但實際上很難使用的版本。
第二步:先整理文件,再開始寫程式
確定方向後,我會先使用 ChatGPT 整理功能文件與開發順序。
接著再把文件交給 GitHub Copilot 或其他程式工具,讓 AI 先理解專案背景,再逐步進行開發。
比起每次臨時輸入一句指令,先準備一份相對完整的需求文件,通常會穩定很多。
第三步:拆成小功能,逐步完成
我不會一次要求 AI 完成整個專案。
通常會拆成:
- 建立基礎專案架構
- 完成主要畫面
- 加入核心功能
- 處理資料儲存
- 加入次要功能
- 進行錯誤修正
- 準備上架
一次處理一個階段,比較容易知道問題出在哪裡。
如果一次改太多東西,最後很容易連 AI 自己都不知道是哪個步驟造成錯誤。
第四步:每個階段都自己測試
這是我目前最重視的部分。
AI 很常會告訴你:
「功能已經完成。」
但實際測試之後,可能會發現:
- 正常流程可以使用,但特殊情境會出錯
- 畫面看起來正常,但資料沒有正確儲存
- Android 可以執行,但 iOS 出現問題
- 舊資料升級後無法讀取
- 按鈕可以點擊,但操作流程不符合直覺
所以,即使 AI 已經寫完程式,我還是會自己逐一測試。
簡單來說,就是因為我信不過 AI。XD
目前使用的 AI 工具
ChatGPT 付費版
ChatGPT 主要用來處理前期規劃、需求討論、文件整理、問題分析,以及圖片素材。
我也會使用它製作 App 內的圖片,以及 Google Play、App Store 上架時需要的視覺素材。
VS Code + GitHub Copilot 付費版
實際撰寫程式時,我主要使用 VS Code 搭配 GitHub Copilot。
一開始使用每月 20 美元的方案,後來升級到每月 39 美元的方案。
通常會先讓 Copilot 讀取文件與現有程式碼,再透過多輪對話逐步完成各項功能。
Gemini 付費版
Gemini 主要作為備用工具。
當 ChatGPT 的回答不夠理想,或是希望比較不同模型的處理方式時,我會改用 Gemini 測試。
另外,有些圖片素材也會使用 Gemini 產出。
Codex 桌面版
今年四月開始,我也加入 Codex 桌面版作為開發工具。
目前部分規劃、程式修改與問題排查,會直接交給 Codex 處理。
Claude 桌面版
今年三月曾經試用 Claude 桌面版。
整體品質不錯,但額度消耗速度比較快,因此目前沒有作為主要工具。
近半年完成了哪些作品?
近半年製作的作品,大多使用 Flutter 開發,並以支援 Android 與 iOS 雙平台為目標。
目前包含:
Clockwise:世界時鐘與會議時間
支援中文、英文、日文與韓文。
除了世界時鐘,也可以自訂時鐘顯示方式、調整時鐘速度,並比較多個地區的時間,方便安排跨時區會議。
MeetWhen
將跨時區會議安排功能獨立出來,製作成更單純的工具 App。
中國象棋
支援中文與英文。
目前包含電腦對戰、雙人對弈、暗棋,以及不同難易度的殘局挑戰。
吸血鬼怕怕
這是最早完成的類 2048 休閒遊戲,也是我開始使用 Flutter 製作 App 的起點。
兔耳絲日常工具屋
支援中文、英文與日文,包含網站版與 App 版。
裡面收錄許多生活中可能會用到的小工具,例如今天吃什麼、誰去倒垃圾、今天誰洗碗、今天穿什麼,以及一些簡單的日常抽選功能。
網站版採用 Next.js,App 版則採用 Flutter。
雖然兩邊的功能類似,但因為技術架構不同,仍然需要分別重新實作。
CycleNote:喝水與提醒紀錄
支援中文、英文與日文。
這款 App 主要用來記錄喝水、定期事項,以及生活用品的更換與到期提醒。
Rootrees:家族樹與族譜紀錄
Rootrees 是目前規模較完整的一款 App。
它不只是手機 App,還包含後端 API、雲端資料同步與行銷網站。
這個專案也讓我遇到不少問題,尤其是家族關係、樹狀圖排列與 PDF 匯出。
由於先前已經另外寫過一篇完整的開發紀錄,這裡就不再重複介紹。
有興趣可以參考:
ABCB Studio
ABCB Studio 是目前用來整理與介紹這些作品的網站:
網站一開始使用 WordPress 製作,後來重新規劃成 Next.js 版本,並部署在 Vercel。
從重新規劃到可以正常運作,大約花了半天時間。
這類需求清楚、架構相對單純的網站,也是 Vibe Coding 很適合發揮的場景。
多語系與雙平台,比想像中花時間
完成 App 的主要功能之後,才會發現還有很多細節需要處理。
例如多語系。
一款 App 支援中文、英文與日文,不只是把文字丟給 AI 翻譯就結束。
還需要確認:
- 翻譯是否符合當地常用說法
- 不同語言的文字長度是否影響排版
- 按鈕與畫面是否會超出範圍
- App Store 與 Google Play 的介紹文案是否自然
雙平台也有類似問題。
Flutter 可以讓 Android 與 iOS 共用大量程式碼,但不代表完成 Android 版本後,iOS 就能直接上架。
實際上,兩個平台的權限、登入方式、通知、內購、廣告與審核規範,都有不同的細節。
功能做完,只是第一步。
真正要讓 App 順利上架,還是需要逐項處理。
Vibe Coding 最重要的能力,不只是下 Prompt
使用 AI 開發一段時間後,我認為最重要的能力不是背誦多少 Prompt,也不是一次輸入多完整的指令。
真正重要的是:
- 能不能把需求拆解清楚
- 能不能判斷 AI 的解法是否合理
- 能不能發現目前的架構已經開始失控
- 能不能知道哪些功能應該先做
- 能不能在錯誤方向投入太多時間之前,及時停下來
有時候,AI 產出的程式可以正常執行,但架構並不好。
有時候,問題並不是程式碼寫錯,而是一開始的產品設計就不合理。
也有些時候,最好的選擇不是繼續叫 AI 修改,而是回到前一步,重新思考需求。
目前的上架狀況
目前 Google Play 上仍有七款 App:
iOS 設備是在今年五月取得,目前已經有五款 App 上架:
另外還有 App 正在送審,其他作品也會陸續處理 iOS 上架準備。
結語
回頭看這半年的開發過程,Vibe Coding 最大的價值,不是讓開發變成一件完全不用思考的事情。
它真正改變的,是驗證想法的成本。
以前想到一個 App,可能會因為時間、人力或技術問題,最後只停留在想法階段。
現在則可以先快速做出第一個版本,實際測試,再決定值不值得繼續投入。
但 AI 寫程式的速度越快,越需要知道自己要往哪裡走。
否則,很可能只是用更快的速度,製造更多需要修正的程式碼。
AI 可以幫忙寫程式。
但產品方向、需求拆解、測試驗收與最後的判斷,仍然需要自己負責。