Mobile Development
Intermediate

ជំពូកទី ១៖ របៀបដែលកម្មវិធីទូរស័ព្ទ (Mobile Apps) ដំណើរការ និងការជ្រើសរើស Tools

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

ជំពូកទី ១៖ របៀបដែលកម្មវិធីទូរស័ព្ទ (Mobile Apps) ដំណើរការ និងការជ្រើសរើស Tools

សាកល្បងគិតពីថ្ងៃមួយធម្មតា។ អ្នកកំពុងវាយសារវែងមួយក្នុង Telegram ស្រាប់តែមានទូរសព្ទចូល។ និយាយចប់ អ្នកបើក Facebook មើលបន្តិច ថតរូប ហើយទើបត្រឡប់មក Telegram វិញ។ សារដែលអ្នកវាយពាក់កណ្ដាលនោះ នៅតែនៅដដែល។

វាមើលទៅធម្មតាណាស់ ប៉ុន្តែនៅពីក្រោយនោះ ទូរស័ព្ទបានបង្កក (Freeze) Telegram ទុក ប្រហែលជាបានបិទវាចោលម្ដងផង ដើម្បីសន្សំថ្ម និង RAM។ សារនោះនៅដដែល ព្រោះអ្នកសរសេរ App បានគិតទុកជាមុន។

នេះហើយជាចំណុចដែល Mobile App ខុសពី Website។ មេរៀននេះនឹងបង្ហាញថា តើអ្វីខ្លះដែលផ្លាស់ប្ដូរ ពេលអ្នកឆ្លងពី Web មកកាន់ទូរស័ព្ទ ហើយតើគួរចាប់ផ្ដើមជាមួយ Tool មួយណា។

Website និង App រស់នៅខុសគ្នា

នៅលើ Web កូដ HTML, CSS និង JavaScript ត្រូវបានទាញយកពី Server រាល់ពេល ដែលអ្នកបើកទំព័រ។ ប៉ុន្តែ Mobile App ត្រូវបាន ដំឡើង (Install) តែម្ដង ហើយកូដ រូបភាព និង Font ទាំងអស់រស់នៅក្នុង Storage របស់ទូរស័ព្ទជាស្រេច។

ការប្រៀបធៀប៖ Website ទាញកូដពី Server រាល់ពេលចូល និងរស់ក្នុង Browser ចំណែក Mobile App ត្រូវឆ្លងកាត់ Store ដំឡើងម្ដង ហើយអាចប្រើ GPS, Camera, Push និង Face ID
Website ខ្ចីកន្លែងក្នុង Browser។ App មានផ្ទះផ្ទាល់ខ្លួននៅលើទូរស័ព្ទ។

ភាពខុសគ្នានេះនាំមកនូវការផ្លាស់ប្ដូរ ៤ យ៉ាង៖

  1. ចូលប្រើ Hardware ផ្ទាល់។ App អាចប្រើ Camera, GPS, Bluetooth, NFC និងការស្កេនមុខ ឬមេដៃ (Face ID / Fingerprint) បានយ៉ាងស៊ីជម្រៅ និងមានសុវត្ថិភាព។
  2. Push Notifications។ ទោះ User បិទ App ក៏ដោយ ក៏ Apple (APNs) និង Google (FCM) នៅតែអាចបង្ហាញសារនៅលើ Lock Screen បាន។
  3. ដំណើរការពេលគ្មានអ៊ីនធឺណិត (Offline-First)។ App ល្អៗរក្សាទិន្នន័យសំខាន់ៗក្នុង Database លើទូរស័ព្ទ (ដូចជា SQLite) ដូច្នេះ User អាចអាន ឬកត់ត្រាបាន ទោះនៅក្នុងឡានក្រុងដែលគ្មានសេវាក៏ដោយ។
  4. ការ 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៖

ចលនា៖ App ចេញពី Not Running ទៅ Active ពេល User វាយទម្លាប់ថ្មី បន្ទាប់មក Background ពេលប្ដូរ App (App រក្សាទុក Draft) ទៅ Suspended រួច Terminated ពេលខ្វះ RAM ហើយពេលបើកវិញ ទិន្នន័យនៅដដែល
Background គឺជាឱកាសចុងក្រោយរបស់អ្នកក្នុងការរក្សាទុកទិន្នន័យ។
ស្ថានភាព (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" ដំបូង៖

សំណួរសម្រេចចិត្ត៖ ចេះ JavaScript ឬ React? ទៅ React Native + Expo។ ត្រូវការ UI ផ្ទាល់ខ្លួនដូចគ្នាគ្រប់កន្លែង? ទៅ Flutter។ ជា Game, AR ឬ AI ធ្ងន់? ទៅ Native។ ជា Website ព័ត៌មានសាមញ្ញ? ទៅ PWA
សម្រាប់អ្នកដែលបានរៀន Web រួច ចម្លើយភាគច្រើនគឺសំណួរទីមួយ។
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 (អនុវត្តផ្ទាល់)

  1. ដំឡើង Node.js (ជំនាន់ LTS) ពី nodejs.org។
  2. ដំឡើង VS Code ឬ Code Editor ដែលអ្នកចូលចិត្ត។
  3. នៅលើទូរស័ព្ទ ទាញយក Expo Go ពី App Store (iPhone) ឬ Google Play (Android)។
  4. បើក 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 សម្រាប់អេក្រង់ទូរស័ព្ទ។