ทีมพัฒนา SimpleNote ได้ประกาศเปิด opensource ของ app ทุก platform ออกมาทั้ง
- iOS พัฒนาด้วย Objective-C เป็นหลักและมี Swift นิดหน่อย
- Android
- macOS พัฒนาด้วย Objective-C เป็นหลัก
- Window/Linux ซึ่งพัฒนาด้วย Electron
We don’t make software for free, we make it for freedom
มาดู Library ที่ใช้พัฒนา App กันบ้าง
- Simperium เป็น service สำหรับจัดการข้อมูลระหว่าง device ต่าง ๆ
- Asynchronous HTTP library สำหรับ Android เพิ่งเคยเห็นเลย ซึ่งทำงานอยู่บน Apache HttpClient
- CWAC AndDown: Markdown Utility Library สำหรับจัดการข้อมูลในรูปแบบ Markdown
- Automatic Track for Android
- App passcode library for Android เพิ่มความปลอดภัยในการเข้าใช้งาน
ภายใน build.gradle ของ App ไม่มีอะไรมาก
ส่วนใหญ่เป็นสิ่งที่ต้องมีอยู่แล้ว เช่น- การ sign APK แบบอัตโนมัติ คงไม่มีใครมานั่งทำแบบ manual หรอกนะ !!
- การกำหนด configuration ต่าง ๆ ซึ่งไม่มีน่าจะมีใครไป hard code หรอกนะ !!
โครงสร้างของ code ไม่ได้ซับซ้อนอะไรมากนัก
ไม่มีการใช้ View Data Binding ไม่มีการใช้ Dagger ไม่มีการใช้ Reactive ไม่มีการนำแนวคิด MVP, MVVM, VIPER มาใช้ ไม่มีวิธีการที่หวือหวาอะไร โดยแบ่งส่วนการทำงานตาม package ดังนี้- Analytics ทำหน้าที่จัดการพวก analytic ต่าง ๆ ของ app
- Model ทำหน้าที่จัดการข้อมูลบน Simperium
- Utils เป็นส่วน utilities ต่าง ๆ ของระบบ ซึ่งเยอะมาก ๆ
- Widgets
- ส่วนหลักจะเห็น Activity และ Fragment ของแต่ละหน้า ซึ่งจำนวน code ในแต่ละ Activity เยอะใช้ได้เลย
สิ่งที่ชอบมาก ๆ ของ App นี้คือ
มีชุดการทดสอบที่เยอะใช้ได้เลย ซึ่งอยู่ใน AndroidTest ทั้งหมด ประกอบไปด้วย- Unit test
- Integration test ผ่านการ Mock หรือ Test double เช่น Database และ HTTP connection
- Activity test ผ่าน Instrument testing ของ Android ซึ่งมีอยู่เพียง 2 test case