之前在準備去日本玩的時候,突然想到過去常常碰到沒有英文菜單的小店,乾脆就自己做一個能翻譯菜單的 App 吧,或許這次旅行還能用上?
我腦中浮現的流程是:「拍照 → 辨識文字 → 進行翻譯」。
這個流程很簡單,所以在腦中稍微規劃功能後,我就直接動手開發了。
可以運作的App成品
雖然功能不算複雜,但久違地自己開發了一款 App,還是想紀錄一下它從概念規劃到真正落地的過程。
身為產品經理,這次開發不只是讓我複習了 coding 和軟體規劃的能力,也再次深刻感受到寫 code 有多讓我焦躁(難怪我後來沒有繼續當 RD?!)。
如果你沒有參與過軟體開發工作,這篇文章會帶你了解一個 App 最基礎的開發流程。如果你沒有寫過程式,這篇文章也能幫你理解開發工作的基本邏輯。
開發一個App的目的是什麼?
很多人會覺得「這個idea其他人就做過了啊,我再做一個能比得過人家嗎?」,然後就打消了自己的念頭,繼續等待下一個驚天好點子出現。
但對我而言,我的目的不是「比誰好」,而是我可能想從開發過程中練習一些技術,或是鍛鍊我對特定領域業務模式的理解。
其次,好的idea不代表是最賺錢的點子,一個產品是否受到使用者市場歡迎,往往取決於「行銷」做的好不好,而不是點子好不好、技術有多先進。
想想某些你覺得很好用但沒什麼人知道的App,再想想很難用但很受歡迎的反面例子,大概就能明白了。
我希望這個App能做到哪些事情?
進入到規劃的步驟,首先需要具體化這個App能滿足什麼使用者需求,變成很好理解的User Story,像是這樣:
作為一個使用者,我可以把包含外文的照片上傳到App,App會在照片上顯示出對應的中文翻譯內容。
要達成這個User Story,需要有以下這些功能
- 拍照
- 上傳手機相簿的照片
- 翻譯
- 在相片上呈現翻譯文字

https://unsplash.com/photos/black-texts-with-red-circles-print-ZslfLas1lh4
Wireframe(原型圖):具體落地抽象概念
Wireframe可以具體化我對這個App的想像,在畫圖的過程中,我也能夠把使用流程順過一遍,思考使用上有沒有什麼需要增加、刪減和改善的地方。
例如拍照和相簿都需要使用者授權裝置權限,如果沒有授權的話,就無法進一步取用相機畫面和相簿照片,所以需要做一個畫面提示,這點是我一開始沒有想到的。
另外,在最一開始的基礎上,我還在原型圖中新增了這些功能:
- 語言切換功能:使用可以選擇要翻譯成什麼語言
- 顯隱按鈕:切換顯示/隱藏文字標籤的按鈕,方便對比查看原文和譯文
- 點餐模式:使用者點擊想點的餐點,形成一個畫面顯示餐點和數量,可以直接拿給服務生看,不過後來在MVP階段我是還沒開發這個功能(主要是懶)
作為這個App的一條龍開發人員(PM+UIUX+RD+QA),我在這過程中也大概預想到了開發複雜度比較高的部分,例如:
- UI上要讓文字標籤貼合文字位置,這樣需要計算出文字的座標軸位置以及大小
- 以菜單場景來說,有很多個餐點名稱要翻譯,所以要確保API參數可以接收String Array
在真正的開發團隊中wireframe只是草圖,後續還會經由設計師潤飾UI、補足缺乏的部分,以及跟PM討論UX細節等等,但由於我是一條龍完成,所以UIUX這部分就是邊做邊改了。
進入開發
因為是一個很小的專案,我選擇使用trello管理開發進度,把專案切分成一張張小卡片上的功能,能夠一目了然全部的開發進度。

Trello kanban
我的開發速度大概是一個晚上完成1~2張卡片,雖然我已經盡可能把feature切分為最小單位,但每一個功能複雜度不同,所以花費的時間也不一樣,例如:
- 顯示相機即時畫面&拍照:迅速完成,開通權限的邏輯和UI都可以交給ChatGPT代勞
- 譯文標籤:較花時間,需要計算文字的座標軸位置,就算讓AI寫,成品也需要自己微調過才能符合想要的效果(考驗下prompt的能力)
- 串接翻譯API:十分麻煩,可能因為涉及付費的關係,大部分翻譯API(例如Google)不支援Restful,而是改為驗證金鑰的重重關卡,所以我改用firebase來避開驗證金鑰和架設伺服器的麻煩,但還是花了3~4個晚上才完成
開發好了,然後呢?
除了在開發過程中不斷地手動測試,我也寫了些unit test來幫助測試的完整性。
在實際的開發過程中,通常會有QA團隊來幫助測試進行的更完整,尤其是面向ToC市場的產品,更需要經過重重驗證。
測試過關,但不表示現在就是最完美的App(實際上也沒有完美的App),還是會有一些待新增、待調整、待改善的事項,但現在沒有時間解決的問題,這些就是下一個版本要做的事情了,例如:
- 新增菜單以外的翻譯場景,例如「翻譯藥妝商品的使用說明」
- 偵測文字不準確問題:這一版App我使用iOS內建的Vision framework,但Vision framework有一些問題導致使用體驗不佳,包含偵測不完全和對中文日文語系不友善等,所以未來我可能要尋找其他更好的解決方案,例如改用Google的Vision API
- 翻譯品質優化:目前使用的Google API翻譯品質不太穩定,可能得改用有AI介入的API,來幫助穩定翻譯品質






















