我用 Vibe Coding 開發 App 半年的真實心得

大約從生成式 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 完成整個專案。

通常會拆成:

  1. 建立基礎專案架構
  2. 完成主要畫面
  3. 加入核心功能
  4. 處理資料儲存
  5. 加入次要功能
  6. 進行錯誤修正
  7. 準備上架

一次處理一個階段,比較容易知道問題出在哪裡。

如果一次改太多東西,最後很容易連 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 匯出。

由於先前已經另外寫過一篇完整的開發紀錄,這裡就不再重複介紹。

有興趣可以參考:

Rootrees:我把家裡的舊族譜,做成一款家族樹 App

ABCB Studio

ABCB Studio 是目前用來整理與介紹這些作品的網站:

https://abcbstudio.cc/

網站一開始使用 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:

Google Play 開發者頁面

iOS 設備是在今年五月取得,目前已經有五款 App 上架:

App Store 開發者頁面

另外還有 App 正在送審,其他作品也會陸續處理 iOS 上架準備。

結語

回頭看這半年的開發過程,Vibe Coding 最大的價值,不是讓開發變成一件完全不用思考的事情。

它真正改變的,是驗證想法的成本。

以前想到一個 App,可能會因為時間、人力或技術問題,最後只停留在想法階段。

現在則可以先快速做出第一個版本,實際測試,再決定值不值得繼續投入。

但 AI 寫程式的速度越快,越需要知道自己要往哪裡走。

否則,很可能只是用更快的速度,製造更多需要修正的程式碼。

AI 可以幫忙寫程式。

但產品方向、需求拆解、測試驗收與最後的判斷,仍然需要自己負責。

發表迴響