ชุดบทความแอป Kriptofolio — บทนำ
ยินดีต้อนรับสู่ชุดบทความนี้ที่จะสร้างแอป Android ทันสมัยโดยใช้เครื่องมือและแนวทางปฏิบัติที่ดีที่สุดในปี 2018-2019 ผมทำเพราะอยากครอบคลุมหัวข้อน่าสนใจทั้งหมดในโลก Android และเรียนรู้ผ่านการสอนให้ทุกคน
หากติดตามชุดนี้ คุณจะได้เรียนรู้การพัฒนาแอปจากศูนย์ แต่ละบทจะครอบคลุมหัวข้อพัฒนาที่เฉพาะเจาะจง ผมจะพยายามสร้างแอปคุณภาพดีและอธิบายกระบวนการพัฒนา บทความแรกนี้คือแผนทาง (Roadmap) ของโครงการ
เนื้อหาชุดบทความ
- บทนำ: แผนทางสร้างแอป Android ทันสมัย 2018-2019 (คุณอยู่ที่นี่)
- ภาค 1: แนะนำหลักการ SOLID
- ภาค 2: เริ่มสร้างแอป Android: สร้าง Mockups, UI และ XML Layouts
- ภาค 3: สถาปัตยกรรมแอป: สำรวจรูปแบบสถาปัตยกรรมต่างๆ และการนำไปใช้
- ภาค 4: นำ Dependency Injection ไปใช้ด้วย Dagger 2
- ภาค 5: จัดการ RESTful Web Services ด้วย Retrofit, OkHttp, Gson, Glide และ Coroutines
แอป "Kriptofolio" (เดิมชื่อ "My Crypto Coins")
ตั้งแต่แรกก็คิดหาไอเดียที่ครอบคลุมเทรนด์ Android ทั้งหมด จนสุดท้ายเจอไอเดียที่เกี่ยวกับ blockchain และคริปโตเคอเรนซี — สร้างแอปจัดการพอร์ตโฟลิโอคริปโตและแปลงค่าเป็นเงินฟיאต (Fiat)
จุดสำคัญคือแอปนี้ต้องให้ความไว้วिशวาส 100%: ไม่ต้องล็อกอิน/สมัครสมาชิก ไม่เก็บข้อมูลผู้ใช้ส่งเซิร์ฟเวอร์ เนื่องจากไม่มีใครสบายใจแบ่งปันข้อมูลเงินทุนออนไลน์
ข้อมูลการลงทุนคริปโตของผู้ใช้จะเก็บไว้ในฐานข้อมูลท้องถิ่น (Local Database) บนอุปกรณ์ Android เท่านั้น แต่เพื่อดึงอัตราแลกเปลี่ยนล่าสุด แอปจึงต้องใช้อินเทอร์เน็ต
ไอเดียนี้เหมาะสำหรับฝึกฝนทักษะจัดการข้อมูลแบบต่างๆ — ทักษะสำคัญในการสร้างแอปทันสมัย เรื่องเงินทุนเป็นเรื่องละเอียดอ่อน จึงจะพัฒนาแบบเปิดเผยโค้ดและเขียนบล็อกเพื่อสร้างความเชื่อมั่น
เทคโนโลยีและเครื่องมือที่จะใช้
แอปต้องการข้อมูลราคาคริปโตเคอเรนซีแบบเรียลไทม์ ซึ่งจะดึงมาจาก API
Data API:
CoinMarketCap — เว็บไซต์ดูภาพรวมตลาดคริปโตยอดนิยม มี API ฟรีเหมาะสำหรับโปรเจกต์นี้
ภาษาโปรแกรม:
Kotlin — ภาษารسميةของ Android ทรงพลัง สะดวก และทำงานร่วมกับ Java ได้ดี เป็นหัวข้อร้อนแรงในปี 2017 โปรเจกต์นี้จะเขียนด้วย Kotlin (ผมเคยเขียนบทความ "เรียน Kotlin ผ่านการสร้างแอปคิดเลข Android")
IDE (สภาพแวดล้อมพัฒนา):
Android Studio — IDE ทางการของ Android เร็วที่สุด ไม่มีทางเลือกดีกว่าสำหรับ Native App
ระบบจัดการบิลด์ (Build System):
Gradle — ระบบบิลด์ขั้นสูงบน Groovy และ Kotlin รองรับดาวน์โหลดและตั้งค่า Dependencies อัตโนมัติ แนะนำโดย Google และผสานรวมใน Android Studio อย่างสมบูรณ์
สถาปัตยกรรม (Architecture):
Android Architecture Components — ชุดไลบรารีช่วยออกแบบแอปที่แข็งแกร่ง ทดสอบได้ และบำรุงรักษาง่าย
Model–View–ViewModel (MVVM) — รูปแบบสถาปัตยกรรมแยก邏輯แสดงผล (Presentation Logic) ออกจาก бизнес邏輯 (Business Logic) ทีม Android 推薦เป็นค่าเริ่มต้น และเป็นทางเลือกแทน MVC และ MVP
Coroutines — รูปแบบการออกแบบสำหรับความขนาน (Concurrency) ทำให้โค้ด Asynchronous ง่ายขึ้น
การเก็บข้อมูล (Data Persistence):
SQLite Database — ฐานข้อมูล SQL แบบ Open Source เก็บข้อมูลในไฟล์ข้อความบนอุปกรณ์ Android มี SQLite built-in รองรับฟีเจอร์ Relational Database ครบถ้วน
Shared Preferences — API ของ Android SDK สำหรับเก็บ/ดึงค่าตั้งค่าแอปแบบ Key-Value Pair
ไลบรารี (Libraries):
Android Jetpack Components:
- AppCompat — Support Libraries ทำให้แอปรุ่นใหม่รันบน Android รุ่นเก่าได้
- Android KTX — Kotlin Extensions ทำให้พัฒนา Android ด้วย Kotlin สะดวก สั้น กว่า
- Data Binding — ผูก UI Components ใน Layout กับ Data Sources แบบ Declarative
- Lifecycles — จัดการวงจรชีวิต Activity และ Fragment
- LiveData — Observable Data Holder แก้ปัญหา Lifecycle ทำให้แอปบำรุงรักษาและทดสอบง่าย
- Room — Abstraction Layer บน SQLite เข้าถึงฐานข้อมูลง่าย แต่ยังใช้พลัง SQLite เต็มที่
- ViewModel — จัดเก็บและจัดการข้อมูล UI แบบ Lifecycle-aware ข้อมูลคงอยู่แม้การหมุนหน้าจอ
อื่นๆ:
- ConstraintLayout — สร้าง Layout ยืดหยุ่น มีประสิทธิภาพ ใช้ Constraints กำหนดตำแหน่ง UI
- CardView — แสดงข้อมูลแบบการ์ด มีเงา (Elevation) และมุมโค้ง สม่ำเสมอทุกแพลตฟอร์ม
- RecyclerView — เวอร์ชันยืดหยุ่นและมีประสิทธิภาพของ ListView เรียกใช้ View ซ้ำได้ (Recycle) เลื่อนลื่น
Third-party Libraries:
- Dagger 2 — Dependency Injection Framework แบบ Static Compile-time สำหรับ Java และ Android
- Retrofit 2 — Type-safe HTTP Client สร้างการเชื่อมต่อ HTTP ผ่าน Interface แบบ API Document
- OkHttp — HTTP Client ทันสมัย รวดเร็ว รองรับ HTTP/2 และ SPDY
- Gson — Serialize/Deserialize Java Objects ไป/มาจาก JSON
- Glide — Image Loading Library เร็ว เน้นการเลื่อนลื่น (Smooth Scrolling) API ใช้ง่าย
ตั้งค่าโปรเจกต์ใหม่
สร้างโปรเจกต์จากศูนย์ใน Android Studio ตั้งชื่อ "My Crypto Coins" เลือก "Basic Activity" เริ่มต้นสะอาด ไม่เพิ่มฟีเจอร์ซับซ้อน (เช่น Instant App) สามารถเพิ่มภายหลังได้
ตั้งค่า: เปิดรองรับ Kotlin, Target API 23 (Android 6.0 Marshmallow)
ทำไมเลือก API 23? ตัดรุ่นเก่าออกลดปัญหา Compatibility และผมมี Nexus 7 (2013) รัน Android 6.0.1 สำหรับทดสอบจริง
เลือก Basic Activity ที่สร้างโค้ดพื้นฐานพร้อม Fragment และ Floating Action Button




GitHub — บริการโฮสติ้ง Version Control ยอดนิยม โปรเจกต์นี้ Open Source จะใช้ GitHub ทุกบทจะมี Commits แยก Branch และ Master Branch สำหรับโค้ดล่าสุด ดูโค้ดบน GitHub
ขอจบบทนำที่นี่ หากมีคำถาม ข้อเสนอแนะ สามารถคอมเมนต์ได้เลย มาเรียนรู้กันต่อในภาค 2 นะครับ! 🚀
ขอบคุณครับ! บทความนี้เผยแพร่เดิมบนบล็อก www.baruckis.com วันที่ 12 กุมภาพันธ์ 2018