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!