ជំពូកទី ១៖ របៀបដែលកម្មវិធីទូរស័ព្ទ (Mobile Apps) ដំណើរការ និងការជ្រើសរើស Tools
App នៅលើទូរស័ព្ទមើលទៅដូចជា Website តូចមួយ ប៉ុន្តែវារស់នៅខុសគ្នាស្រឡះ៖ វាត្រូវដំឡើងជាមុន អាចប្រើ Camera និង GPS និងអាចត្រូវ OS បិទចោលគ្រប់ពេល។ មេរៀននេះពន្យល់ពីអ្វីដែលផ្លាស់ប្ដូរ និងជួយអ្នកជ្រើសរើស Tool ដំបូង។

សាកល្បងគិតពីថ្ងៃមួយធម្មតា។ អ្នកកំពុងវាយសារវែងមួយក្នុង Telegram ស្រាប់តែមានទូរសព្ទចូល។ និយាយចប់ អ្នកបើក Facebook មើលបន្តិច ថតរូប ហើយទើបត្រឡប់មក Telegram វិញ។ សារដែលអ្នកវាយពាក់កណ្ដាលនោះ នៅតែនៅដដែល។
វាមើលទៅធម្មតាណាស់ ប៉ុន្តែនៅពីក្រោយនោះ ទូរស័ព្ទបានបង្កក (Freeze) Telegram ទុក ប្រហែលជាបានបិទវាចោលម្ដងផង ដើម្បីសន្សំថ្ម និង RAM។ សារនោះនៅដដែល ព្រោះអ្នកសរសេរ App បានគិតទុកជាមុន។
នេះហើយជាចំណុចដែល Mobile App ខុសពី Website។ មេរៀននេះនឹងបង្ហាញថា តើអ្វីខ្លះដែលផ្លាស់ប្ដូរ ពេលអ្នកឆ្លងពី Web មកកាន់ទូរស័ព្ទ ហើយតើគួរចាប់ផ្ដើមជាមួយ Tool មួយណា។
Website និង App រស់នៅខុសគ្នា
នៅលើ Web កូដ HTML, CSS និង JavaScript ត្រូវបានទាញយកពី Server រាល់ពេល ដែលអ្នកបើកទំព័រ។ ប៉ុន្តែ Mobile App ត្រូវបាន ដំឡើង (Install) តែម្ដង ហើយកូដ រូបភាព និង Font ទាំងអស់រស់នៅក្នុង Storage របស់ទូរស័ព្ទជាស្រេច។

ភាពខុសគ្នានេះនាំមកនូវការផ្លាស់ប្ដូរ ៤ យ៉ាង៖
- ចូលប្រើ Hardware ផ្ទាល់។ App អាចប្រើ Camera, GPS, Bluetooth, NFC និងការស្កេនមុខ ឬមេដៃ (Face ID / Fingerprint) បានយ៉ាងស៊ីជម្រៅ និងមានសុវត្ថិភាព។
- Push Notifications។ ទោះ User បិទ App ក៏ដោយ ក៏ Apple (APNs) និង Google (FCM) នៅតែអាចបង្ហាញសារនៅលើ Lock Screen បាន។
- ដំណើរការពេលគ្មានអ៊ីនធឺណិត (Offline-First)។ App ល្អៗរក្សាទិន្នន័យសំខាន់ៗក្នុង Database លើទូរស័ព្ទ (ដូចជា SQLite) ដូច្នេះ User អាចអាន ឬកត់ត្រាបាន ទោះនៅក្នុងឡានក្រុងដែលគ្មានសេវាក៏ដោយ។
- ការ Update ត្រូវរង់ចាំ។ នៅលើ Web អ្នក Deploy ហើយមនុស្សគ្រប់គ្នាឃើញភ្លាម។ ចំណែក App វិញ រាល់ការកែប្រែត្រូវ Build ជាឯកសារ (
.ipaសម្រាប់ iOS ឬ.aabសម្រាប់ Android) ហើយផ្ញើឱ្យ Apple ឬ Google ពិនិត្យ (Review) ដែលអាចចំណាយពេលពីប៉ុន្មានម៉ោងទៅប៉ុន្មានថ្ងៃ។
| Website | Mobile App |
|---|---|
| បើកតាម URL | ដំឡើងពី App Store / Play Store |
| រស់ក្នុង Browser Sandbox | ប្រើ Hardware ផ្ទាល់បាន |
| ត្រូវការអ៊ីនធឺណិតដើម្បីបើក | អាចដំណើរការ Offline បាន |
| Update ភ្លាមៗ | រង់ចាំ Store Review |
App របស់អ្នកមិនរស់រហូតទេ
នៅលើកុំព្យូទ័រ អ្នកអាចបើក Window រាប់សិបទុកចោលពេញមួយថ្ងៃ។ នៅលើទូរស័ព្ទ ធ្វើបែបនោះមិនបានទេ។ ថ្មមានកំណត់ RAM ក៏មានកំណត់ ដូច្នេះ iOS និង Android គ្រប់គ្រង App នីមួយៗយ៉ាងតឹងរ៉ឹង។
រាល់ពេលដែល User ចេញពី App របស់អ្នក វាឆ្លងកាត់ដំណាក់កាលផ្សេងៗ ដែលគេហៅថា App Lifecycle៖

| ស្ថានភាព (State) | អត្ថន័យ |
|---|---|
| Not Running | App មិនទាន់បើក ឬត្រូវបានបិទទាំងស្រុង |
| Active | កំពុងបង្ហាញលើអេក្រង់ និងទទួលការប៉ះ |
| Background | User ប្ដូរទៅ App ផ្សេង។ អ្នកមានពេលប៉ុន្មានវិនាទីដើម្បី Save |
| Suspended | នៅក្នុង RAM តែត្រូវបង្កក មិនប្រើ CPU ទៀតទេ |
| Terminated | OS បិទចោលដើម្បីយក RAM។ អ្វីដែលមិនបាន Save គឺបាត់ |
ចំណុចសំខាន់បំផុតនៅទីនេះគឺ៖ OS មិនសួរអ្នកមុនពេលបិទ App របស់អ្នកទេ។ App ដែលល្អ Save ទិន្នន័យដែល User កំពុងធ្វើ (ឧទាហរណ៍ សារដែលវាយពាក់កណ្ដាល ឬ Form ដែលបំពេញមិនទាន់ចប់) ទៅកាន់ Local Storage ភ្លាមៗពេលវាចូល Background។ បើមិនដូច្នោះទេ User ត្រឡប់មកវិញ ហើយឃើញថាអ្វីៗបាត់អស់។
គួរចាប់ផ្ដើមជាមួយ Tool មួយណា?
សំណួរដំបូងដែលអ្នកចាប់ផ្ដើមស្ទើរតែគ្រប់គ្នាសួរ គឺ "តើគួររៀនភាសាអ្វី?"។ សព្វថ្ងៃមានផ្លូវធំៗ ៤៖
Native: Swift និង Kotlin
- iOS ប្រើភាសា Swift ជាមួយ SwiftUI នៅក្នុង Xcode (ត្រូវការកុំព្យូទ័រ Mac)។
- Android ប្រើភាសា Kotlin ជាមួយ Jetpack Compose នៅក្នុង Android Studio។
Native លឿនបំផុត ហើយទទួលបាន Feature ថ្មីៗពី Apple និង Google មុនគេ។ តែអ្នកត្រូវសរសេរ App ពីរដង គឺ Codebase មួយសម្រាប់ Platform នីមួយៗ។
Cross-Platform: React Native និង Flutter
នេះជាជម្រើសដែលពេញនិយមបំផុតសព្វថ្ងៃ ព្រោះអ្នកសរសេរកូដ តែម្ដង ហើយវាដំណើរការទាំងលើ iPhone និង Android (ប្រើកូដរួមគ្នាបានប្រហែល ៩០%)។
- React Native (បង្កើតដោយ Meta) ប្រើ JavaScript / TypeScript និងគំនិត Component ដូច React លើ Web។ UI របស់អ្នកក្លាយជា Component ពិតៗរបស់ទូរស័ព្ទ មិនមែន Webview ទេ។ Expo ជួយសម្រួលការ Setup ការតេស្តលើទូរស័ព្ទពិតតាម QR Code និងការ Build នៅលើ Cloud ដោយមិនចាំបាច់មាន Mac នៅដំណាក់កាលដំបូង។
- Flutter (បង្កើតដោយ Google) ប្រើភាសា Dart។ វាគូរ Pixel គ្រប់ចំណុចដោយខ្លួនឯង ដូច្នេះ UI មើលទៅដូចគ្នាបេះបិទលើគ្រប់ឧបករណ៍។
PWA (Progressive Web App)
ជា Website ធម្មតា ដែលអាចចុច "Add to Home Screen" ហើយមើលទៅដូច App។ ល្អសម្រាប់គម្រោងតូចៗ ឬគេហទំព័រព័ត៌មាន ប៉ុន្តែមានកម្រិតលើ Background Task និង Push Notification នៅលើ iOS ហើយមិនអាចដាក់លើ App Store ដោយផ្ទាល់បានទេ។
បើអ្នកមិនប្រាកដ សូមដើរតាមសំណួរខាងក្រោមពីលើចុះក្រោម ហើយឈប់នៅត្រង់ចម្លើយ "Yes" ដំបូង៖

| Native | React Native + Expo | Flutter | |
|---|---|---|---|
| ភាសា | Swift / Kotlin | TypeScript / JS | Dart |
| ល្បឿន UI | ល្អបំផុត | ល្អណាស់ | ល្អណាស់ |
| កូដប្រើរួមគ្នា | ០% (សរសេរពីរដង) | ~៩០% | ~៩៥% |
| ងាយរៀន | មធ្យមទៅពិបាក | ងាយ បើចេះ JS | មធ្យម |
| ស័ក្តិសមបំផុត | Game, AR, AI ធ្ងន់ | App ទូទៅ | Animation ផ្ទាល់ខ្លួន |
ការណែនាំ៖ ប្រសិនបើអ្នកបានរៀន JavaScript ឬ React រួចហើយ React Native ជាមួយ Expo គឺជាផ្លូវដែលលឿនបំផុត។ វគ្គសិក្សានេះនឹងប្រើវារហូតដល់ចប់។
អនុវត្ត៖ រៀបចំម៉ាស៊ីនរបស់អ្នក
អ្នកមិនចាំបាច់ទិញទូរស័ព្ទសាកល្បងថ្លៃៗ ឬដំឡើង Software ធ្ងន់ៗរាប់សិប Gigabyte ទេ។
🎯 Hands-on Task (អនុវត្តផ្ទាល់)
- ដំឡើង Node.js (ជំនាន់ LTS) ពី nodejs.org។
- ដំឡើង VS Code ឬ Code Editor ដែលអ្នកចូលចិត្ត។
- នៅលើទូរស័ព្ទ ទាញយក Expo Go ពី App Store (iPhone) ឬ Google Play (Android)។
- បើក Terminal ហើយវាយ
node -v។ ប្រសិនបើឃើញលេខជំនាន់ (ឧ.v22.x) មានន័យថាអ្នករួចរាល់ហើយ។
Expo Go អនុញ្ញាតឱ្យអ្នកស្កេន QR Code ពីកុំព្យូទ័រ ហើយមើលកូដដែលអ្នកកំពុងសរសេរ ដំណើរការលើទូរស័ព្ទផ្ទាល់ភ្លាមៗ។ យើងនឹងប្រើវានៅជំពូកទី ៣។
អ្វីដែលត្រូវចងចាំ
- Website ទាញកូដ រាល់ពេលចូល។ App ត្រូវ ដំឡើងម្ដង ហើយរស់នៅលើទូរស័ព្ទ។
- App អាចប្រើ Camera, GPS, Push និង ដំណើរការ Offline បាន ប៉ុន្តែការ Update ត្រូវរង់ចាំ Store Review។
- OS អាចបិទ App របស់អ្នក គ្រប់ពេល។ Save ទិន្នន័យពេល App ចូល Background។
- បើអ្នកចេះ JavaScript សូមចាប់ផ្ដើមជាមួយ React Native + Expo។
ជំពូកបន្ទាប់ យើងនឹងរៀនរចនាសម្រាប់មេដៃ មិនមែនសម្រាប់ Mouse ទេ៖ ការរចនា UI/UX សម្រាប់អេក្រង់ទូរស័ព្ទ។