在我的整個職業生涯中,我一直害怕管理數據。
當我想要開發一個應用程式時,我總是默默地想「我不想管理任何數據」。
幾個月前,我正在製作一個小型概念的專案管理應用程式,有一刻我想到「這應該可以成為一個真正的應用程式」。
於是我花了幾天的時間,試圖找到一種在不需要管理使用者數據的情況下開發專案管理應用程式的方法。
但是我找不到辦法,至少對於網頁應用程式而言是這樣。
對於桌面應用程式?當然可以。行動應用程式?也沒問題。
但在網頁上,我們有這個不尋常的負擔。作為開發者,我們不能只開發軟體,還需要管理使用者透過我們軟體處理的所有數據。
因為網頁沒有存儲和數據層。
這真是一個遺憾。
我不想管理使用者數據。
當你管理數據時,有很多負擔。首先,數據被集中在一個位置,所以隨著使用者和應用程式使用量的增長,你需要擴展它。
然後還有安全和隱私方面的顧慮。如果有人入侵我的伺服器並刪除或竊取數據,我該怎麼辦?你需要擔心正確的備份和恢復程序、審計等。
如果你使用的是多個網頁應用程式,就要為其乘以這麼多倍。
瀏覽器在臨時數據方面提供了一個解決方案,例如本地儲存和IndexedDB,但實際上不太實用。
我曾經見過一些在網頁上嘗試這樣做的專案,但真正有效的做法是由瀏覽器管理的數據層。每個應用程式都可以連接到這個數據層,然後有第三方服務與它接軌。
你知道「使用 Apple 登錄」是怎麼運作的嗎?我只需要點擊那個按鈕,整個註冊過程就會自動完成。這真是神奇。
舉個例子,如果蘋果提供了一種從任何應用程式存取 iCloud 的方式,那該有多好。
我可以使用 Trello、Basecamp 等任何應用程式,而這些應用程式使用的數據就是我的數據。我不需要將它們發送到第三方伺服器,它們將存儲在我信任的雲端數據供應商那裡。
瀏覽器將成為應用程式和存儲之間的橋樑,它可以管理所有權限和應用程式介面。
我提到了蘋果,但它也可以是 Google、DigitalOcean,或者任何其他服務商。甚至可以是完全由我們自己「自助託管」的伺服器。
當然,這只適用於某些應用程式的子集。
Facebook 是無法以這種方式建立的。他們需要自己的集中式存儲,因為數據是他們的核心業務。沒有數據,Facebook 什麼都不是。
Google、Gmail 或任何需要協作和多使用者體驗的應用程式也一樣。
但對於那些單用戶應用程式,也就是應該佔到創業者和獨立開發者所建立應用程式的 90% 的應用程式,這會簡化很多問題。
我現在正在使用的 Bear 是一個筆記應用程式,我是在 iPad 上撰寫這些筆記。
它透過 iCloud 與 iPhone 和 Mac 同步。
但它沒有網頁版本,因為… 你無法通過一個網站同步。如果是這樣,網站需要在他們的伺服器上存儲我的筆記。
現在 Bear 並不在乎我寫了些什麼。他們只是不斷地提供軟體更新,但他們並不一定在意數據。
當然,如果他們想要,在意也是可以的。但他們不必要。
所以,關於我之前提到的那個小概念專案管理應用程式,幾天前我想到了「我可以將它做成一個應用程式」。
我必須承認,這個想法已經在我腦海中浮現,因為我最初將它作為一個 Electron 桌面應用程式開始開發,但我停止了工作,因為我相信僅限於桌面可能太過局限?
但這次不同,我正考慮使用 Swift,並通過單一的程式碼庫製作一個 iOS、iPadOS 和 Mac 應用程式。
這樣一來,「夢想」就已經實現了。蘋果提供了儲存數據的工具,你只需要關注開發一個優秀的應用程式。
但是,當然還有一系列問題。第一個問題是,這是一個封閉的園地。
我們可以使網頁更像應用程式。但是肯定蘋果不會在乎。實際上,他們可能會關心相反的情況,因為這將成為他們自己 App Store 業務的競爭對手。也許 Google 也是一樣?
我不確定。我只是覺得這可能很酷,因為我可以使用某種分布式數據庫和數據存儲方式,而不需要為它們擔心。
但這絕對不會發生。