cover_photo

用平板寫code是一種什麼樣的體驗?

超低成本設備雲端開發教學

0_rnfr50GwKVx_sHHv.gif

開始之前

我猜你大概有以下疑問

  1. 為什麼電腦用的好好的要跑去平板開發?
  2. 體驗起來方便嗎?
  3. 這是免費的嗎?

別著急這些問題通通可以在以下文章得到解答 =)

p.s 以下用到的專有名詞其實不算少,但我盡量少用專有名詞了XD

本篇文章適合誰?

  1. Prototype 快速開發者 : 如果你很喜歡開發prototype,常常在咖啡喝到一半,馬桶蹲到一半靈光乍現,並且迫不及待想要把你的想法實踐出來,這篇文章就是沙漠中的綠洲,讓妳可以站著開發、躺著開發、趴著開發
  2. 陷入平板與筆電的重量地獄:我是一個平板筆記控,喜歡把做一堆手寫筆記在平板上,因此經常遇到需要同時扛著筆電與平板外出工作的情況,帶筆電出門工作通常都會伴隨著重的要命的變壓器跟線,搞得每次出門辦公都有一種行軍的感覺。
  3. 學生&程式新手 : 如果你是學生,或者想學習寫程式,陷入不曉得電腦要買哪一台電腦的困境,這篇文章也可以給你一個不一樣的選擇,不管是處理課堂上的作業,或者一些興趣上的額外開發,本篇文章提供的方法絕對夠你用一陣子甚至可以用到你成為工程師(雲端),從此不需要被賣電腦的店員強迫推銷,除非你想要說服你爸媽寫程式要買比較好的電腦~~(但其實是想要開光追玩遊戲)。~~

整套流程下來除非用量特別大不然都是免費的,好工具不用嗎?

前言

大概在半年多前,陪伴我多年的學習平板壽終正寢了,而我平時在用的MacbookPro也開始出現過熱的現象,正當我還在思考先買新Macbook還是新平板的時候,強者我同事剛好分享了他平常的開發流程,他有一整個專案是利用上下班通勤時間並且在手機上開發的,當時我的表情大概就跟下面的貓貓一樣震驚

0_uFvvrUdoqTagq9nD.gif

於是我開始有了大膽的想法,如果我可以解決環境+版本控制+部署,把開發環境遷移到雲端,那我就不需要過度考慮電腦效能問題,下一台開發設備甚至可以是平板,而這篇文章就是這個大膽想法的實踐過程。

BTW我使用的是SAMSUNG的Tab S8 加鍵盤滑鼠組,由於我沒有用過其他平板開發,所以不保證其他裝置也有同樣的體驗,但既然平板可以做到這些,比較低價的文書筆電應該沒道理不行吧!?

流程介紹

雖然本篇文章使用的技術很多,但其實核心觀念很簡單,你可以輕易的替換成你喜歡的工具,我會先簡單的介紹我的開發流程,後面step-by-step的教你快速上手,OK廢話不多說讓我們進入正題吧!

要在平板上重現整個開發流程,需要把整個過程拆成三個部分

  1. 開發環境
  2. 版本控制
  3. 部署環境 (建置CICD)

專有名詞:CICD 即持續集成(CI)和持續部署(CD),是一種自動化的軟體開發實踐,旨在快速、高效地從開發到部署軟體更新,以實現更快的迭代和更高的產品質量

開發環境

一般我們指的開發環境是編輯程式碼與執行程式碼的地方,通常會提到OS(作業系統)與IDE(程式編輯器)、SDK(開發套件),常見的作業系統選擇有Windows、MacOS、Linux (Ubuntu),程式編輯器比較常見的選擇有Visual Studio Code、jetbrains、pycharm

而所謂的線上IDE說白一點就是

一個線上編輯器運行在一台遠在天邊的電腦,並且幫你安裝好你需要的工具(ex : python, nodejs…) 因此有了線上IDE你就不需要管瑣碎的環境問題,只需要專心寫code就好,直接節省好幾年的壽命XD 而網路上已經有一大堆現成的選擇,你可以針對需求選擇喜歡的平台,以下是網路大大統整出來的IDE們,挑挑看選選看喔^^~

線上IDE的選擇們

如果你覺得選擇太多不想思考,我個人最推薦的是Replit,擁有非常人性化的介面,支援非常多種的程式語言,也支援各種跨平台應用,你可以在手機APP上也可以在網頁上開發,介面本身的功能也非常多,也支援直接github連動。

p.s. 免費版跟付費版最大的差別在於速度與效能,如果你對付費版有疑慮可以先玩玩看免費版

版本控制

程式版本控制用於追蹤和管理軟體開發過程中的程式碼變更。它可以讓開發人員對程式碼進行修改、撤回更改、查找歷史版本,並允許多個開發人員進行協作開發,確保程式碼的完整性和一致性。常用的版本控制系統包括Git、SVN等等。

但這裡我只推薦Github,原因我們之後還會提到,為的是要用他平台內建的Github Action,跟GCP Cloud Run的自動部署

部署環境

這個部分大概只有後端工程師需要,通常我們開發完一個服務的時候,需要把程式碼放到一台電腦上,並確保程式碼24小時不間斷的執行,這中間有非常多的技術細節要兼顧,比方說網路狀況、硬體設備、網址與網域、維持設備運作的水電…etc,可以說在雲端技術出來之前運營一個服務的成本非常高,對於小型或個人開發者而言幾乎不可能負擔。

常見的雲端環境有Azure(微軟)、GCP (Google)、AWS (亞馬遜),各有各的優缺點大家可以自行斟酌,不過我比較推薦GCP,因為UX跟文件做得很好, "幾乎"不需要額外的第三方教學就能快速上手,管理服務的方式也很直覺,不太會有忘記關閉功能而被扣錢的情況,並且有提供台幣約9000元的試用額度,非常建議大家可以玩玩看

可能有些人會疑問為什麼不直接部署在replit上就好了,原因有以下

如果你用的是免費版,無法一直開啟instance(運行你程式的虛擬環境) replit上的伺服器,地點只能部署在美國跟印度,因此怎麼選都很慢 使用GCP可以更容易地整合開發其他服務

結論

  1. 為什麼電腦用的好好的要跑去平板開發?為了實現上天下地都能coding的工作環境XD
  2. 體驗起來方便嗎?老實說這可能會根據每個人的狀況因人而異,小型系統到POC我覺得可以考慮看看本片文章提到方法,但大型系統就別吧
  3. 這是免費的嗎?完全免費,但如果你需要更進階的功能可以考慮付費方案

p.s. 詳細的實作過程可以參考我的medium文章: 用平板寫code是一種什麼樣的體驗? - 附實作過程