Hal yang saya lakukan untuk minggu ini sebenarnya tidaklah banyak dari segi coding (walaupun beberapa coding task sudah saya kerjakan). Saya sendiri lebih berfokus ke masalah klaim nilai saya yang belum terpenuhi. Untuk itu untuk seminggu terakhir saya berusaha untuk melakukan sisa kompetensi tersebut dengan sebaik-baiknya.
Untuk coding task sendiri, yang sudah saya lakukan adalah menyelesaikan fitur kami untuk sprint kali ini. Yaitu fitur statistik amalan. Fitur ini sudah berjalan sebagaimana mestinya (Tinggal beberapa tes terakhir sampai bisa dipresentasikan di sprint review). Dan sejauh ini, untuk fitur yang kami belum implementasikan tinggal tiga. Yaitu notification, tutorial pemakaian, dan login. Untuk fitur notification, saya dan Reyhan memegang task ini. Terutama untuk bagian background process, saya yang mengerjakan hal tersebut (dan sedang in progress). Kode mengenai service juga sudah saya push ke git kelompok kami dan bisa dilihat oleh teman-teman.
Kemudian, mengenai subkompetensi yang saya berusaha kejar untuk minggu ini antara lain berhubungan dengan Unit Test dan Continous Integration. Untuk cerita mengenai kedua hal ini akan saya jelaskan dibawah.
Pertama saya mulai dengan Unit Test terlebih dahulu. Kemarin saya sudah mencari Unit Test yang 'total' untuk platform Android dan ternyata hal tersebut tidaklah berhasil. Maka dari itu, saya sendiri memutuskan untuk memakai JUnit saja untuk melakukan Unit Testing.
Mengenai JUnit itu sendiri, Junit adalah platform unit testing yang dikhususkan untuk platform Java. Saya tau mengenai informasi JUnit ini dari rapat kemarin selasa di Badr. Setelah saya search di Google mengenai penggunaan JUnit untuk Android Studio, secara kebetulan, ternyata Android Studio sudah menyediakan library JUnit pada IDE-nya. Yang kemudian saya langsung pakaikan untuk mengetes objek-objek vital untuk aplikasi. Kode Unit Testing ini sudah saya buat dan saya push di git beserta pekerjaan saya, yaitu Service.
Untuk Kelas yang saya uji dengan Unit Testing, kelas tersebut bernama EvaluasiIbadah. Kelas ini berguna untuk menampung Application Context dari Aplikasi Evaluasi Ibadah beserta objek-objek vital. Sebagai contoh misalnya, objek Local Database dan objek Notification Service di-inisialisasi di kelas ini.
Kemudian, untuk kompetensi selanjutnya, yaitu Continous Integration. Jika dijelaskan, Continous Integration itu sendiri merupakan proses dimana saat kita mem-push file ke git, maka file tersebut juga akan di-build oleh server untuk dicek kebenaran kodenya. Jika ada error, maka aplikasi Continous Integration ini akan melaporkan error tersebut kepada kita.
Untuk project kami, saya memutuskan untuk menggunakan Gitlab CI sebagai software Continous Integration saya. Gitlab CI menurut saya sendiri tidak terlalu praktis untuk Android karena butuh proses menyetting yang luar biasa lama. Akan tetapi, saya menemukan source code milik seseorang yang ada di-internet untuk melakukan ini. Dan akhirnya, CI berhasil diimplementasikan di projek kami.
Jika saya jelaskan secara singkat, untuk mengimplementasikan CI di git manapun, dibutuhkan dua komponen utama. Yang pertama adalah Runner dan yang kedua adalah file .yaml. Runner merupakan software yang digunakan untuk me-run program nantinya di dalam server. Beberapa Runner harus di-install terlebih dahulu untuk menggunakannya. Akan tetapi, karena saya memakai GItlab CI dan projek saya berada di Gitlab, maka Gitlab menawarkan fasilitas yang bernama Gitlab Shared Runner.
Shared Runner itu sendiri adalah Runner milik Gitlab yang di-share kepada pengguna-penggunanya. Runner ini bersifat generik dan bisa digunakan oleh banyak jenis bahasa pemrograman. Shared Runner inilah yang saya gunakan untuk project kami.
Akan tetapi, timbul masalah baru. sebuah Runner, baik Shared maupun tidak, harus dikonfigurasikan terlebih dahulu baru kemudian bisa digunakan. Konfigurasi ini membutuhkan file yang memiliki ekstensi .yaml. Gitlab CI menggunakan .gitlab-ci.yaml untuk konfigurasi Shared Runnernya. Disini kesulitan saya mulai terasa.
Beberapa bahasa pemrograman yang sudah banyak dipakai seperti Python dan Ruby memiliki template konfigurasi sendiri yang membuat user tidak perlu mencari-cari file konfigurasi yang dibutuhkan. Akan tetapi, Android tidak memiliki template file seperti itu. Yang berarti, saya harus mencarinya sendiri. Beruntungnya, saya menemukan git seseorang yang mau men-share konfigurasi git miliknya. Saya mendapatkannya dari sini .
Selain dari dua hal diatas, saya juga mencoba untuk me-review kode-kode yang saya sudah pernah push sebelumnya. Kode-kode tersebut sudah saya komen langsung di gitlab dan bisa dicek untuk masing-masing push.
Untuk memenuhi kompetensi desain review, saya juga akan me-review beberapa halaman aplikasi yang saya rasa masih kurang 'cocok' untuk saya dari segi desain. Untuk yang pertama adalah halaman berikut :
Halaman berikut merupakan halaman statistik amalan milik aplikasi kami. Menurut saya sendiri, tampilan yang disajikan masih terkesan terlalu 'ramai' karena jarak tulisan yang sangat sempit dan juga ukuran tulisan yang kecil. Solusi yang saya tawarkan adalah dengan menambahkan Card View (Ini ada di library Android untuk Material Design) sehingga terlihat dengan sangat jelas satu entri dengan entri yang lainnya. Selain itu Card View sendiri sudah menerapkan Material Design milik Google sehingga seharusnya list akan jauh lebih rapih dan memiliki batas yang cukup jelas.
Kemudian untuk halaman yang ini adalah tampilan halaman utama dari aplikasi kami. Halaman ini sebenarnya sudah cukup baik. Akan tetapi, desain dari halaman ini masih menyalahi Material Design. Hal ini disebabkan Material Design memiliki konsep dimana setiap view yang ada diperlakukan seperti kertas. View baru akan selalu berada diatas View lama yang menjadi kontainernya. Dan batas antara view dan kontainernya seharusnya terlihat dengan jelas.
Seperti misalnya kita melihat di bagian tab Sholat. di sublistnya, kita bisa melihat bahwa list terkesan sebagai satu kertas yang padu. Dimana harusnya ke-empat viewlist tersebut seharusnya terpisah satu dengan yang lainnya.
Solusi yang saya tawarkan kembali ke CardView, dimana jika kita memakai CardView, maka batas antara sublist dengan sublist lainnya akan terlihat dengan jelas. Ukuran CardView juga dapat dirubah dan diatur sehingga ContainerView dari sublist-sublist tersebut dapat terlihat.
Untuk referensi, berikut adalah contoh tampilan menggunakan CardView :
Jika kita lihat baik-baik, maka akan terlihat jelas batas dari masing-masing entri data. Keunggulan dari CardView itu sendiri juga adalah untuk mempermudah formatiing dari tampilan yang diinginkan. Seperti misalnya tampilan diatas. Kita dapat mengatur dibagian manakah foto ingin ditampilkan, nama ingin ditaruh, dan sebagainya. Sehingga, selain rapih dan indah, tampilan yang dihasilkan juga konsisten.
Segitu dulu dari saya. Semoga informasi yang saya tuturkan minggu ini bermanfaat untuk teman-teman semua. Sampai ketemu minggu depan!
Tidak ada komentar:
Posting Komentar