Android App Development

Bir Android Geliştiricisi Olarak GitHub Copilot İle Geçen Son Altı Ayım

Temmuz 24, 2023

GitHub Copilot kullanmaya başlamadan önce, yapay zeka ile eşli programlama (pair programming) sürecime ChatGPT ile adım atmıştım. Üç monitörüm olmasına rağmen monitörler arasında geçiş yapmak pek keyifli olmuyordu; çünkü ben IDE açıkken tamamen ekrana odaklanmak isteyen biriyim. Bu yüzden ChatGPT veya diğer yapay zeka ürünlerini içeride barındırabilecek, verimliliğimi artıracak Android Studio eklentileri aramaya başladım.

Tam bu sırada GitHub Copilot ile karşılaştım ve denemeye değer olduğunu düşündüm. 30 günlük bir deneme süresi sunuyorlar. Ayrıca aşağıdaki kriterlerden birine uyuyorsanız ücretsiz olarak da kullanabiliyorsunuz:

GitHub Copilot; doğrulanmış öğrenciler, öğretmenler ve popüler açık kaynaklı projelerin yöneticileri (maintainer) için ücretsizdir. Eğer bir öğrenci, öğretmen veya popüler bir açık kaynaklı projenin yöneticisi değilsiniz, tek seferlik 30 günlük deneme sürümüyle GitHub Copilot’u ücretsiz olarak deneyebilirsiniz.

İşte GitHub Copilot’u daha iyi kullanmak için öğrendiklerim:

GitHub Copilot Nasıl Kurulur?

GitHub Copilot’u Android Studio bünyesinde kullanmak için Copilot eklentisini kurmanız gerekir.

Menüden ayarlar (Settings) seçeneğine tıklayın ve eklentiler (Plugins) bölümünü bulun. Marketplace sekmesine geçin. Arama çubuğunda GitHub Copilot yazarak aratın ve ardından Install butonuna tıklayın.

Eklenti kurulduktan sonra Android Studio’yu yeniden başlatın.

Android Studio yeniden açıldığında Tools menüsüne tıklayın. Önce GitHub Copilot, ardından Login to GitHub seçeneğini seçin.

Karşınıza gelen “Sign in to GitHub” iletişim kutusundaki cihaz etkinleştirme kodunu (device activation code) kopyalayın ve bu işlemle birlikte tarayıcıyı açın. Kopyaladığınız kodu tarayıcıdaki etkinleştirme penceresine yapıştırın. GitHub, GitHub Copilot eklentisi için gerekli izinleri talep edecektir. Bu izinleri onaylamak için Authorize GitHub Copilot Plugin butonuna tıklayın.

Quickstart for GitHub Copilot – GitHub Docs

GitHub Copilot can help you work, by offering inline suggestions as you code.

docs.github.com

Daha Anlamlı Öneriler Almak İçin Kodunuzu ve Kaynaklarınızı Daha Öngörülebilir Hale Getirin

Kodunuzda belirli kalıplar (pattern) kullanmak, yapay zekanın daha doğru tahminler yapmasına yardımcı olur ve kodunuzu daha temiz hale getirir. Örneğin değişken isimlerinde ve metinlerde (string) belirli kalıpların bulunması, kodu daha öngörülebilir kılar. Aksi takdirde yapay zeka, beklemediğiniz ve rastgele ama kendince anlamlı metin kaynakları (string resources) önerebilir.

Daha Anlamlı Öneriler Almak İçin Yapay Zeka ile Yorum Satırları Üzerinden Konuşun

Diyelim ki uygulamanın güncelleme durumunu kontrol etmek istiyoruz ve yapay zeka bize sadece geriye “false” döndüren, hiçbir işlevi olmayan bir fonksiyon önerdi.

Bu tarz fonksiyonlarda, kullanım senaryolarını (use cases) yorum satırı olarak belirtmeliyiz. Bu durum hem diğer geliştiricilerin fonksiyonun nasıl çalıştığını anlamasına yardımcı olur hem de Copilot’a yol gösterir.

Copilot mümkün olduğunca en basit çözümü teşvik edecektir ancak en basit çözüm her zaman çalışan çözüm anlamına gelmez. Bu yüzden hangi yoldan devam etmesi gerektiği konusunda ona rehberlik edebiliriz. Yönlendirmenin ardından fonksiyonu beklediğiniz gibi tamamlayacaktır. Yine de yapay zeka tarafından yazılan kodu her zaman incelemeniz (review) gerekir; çünkü doğru çözüme çok benzer bir sonuç üretse bile gözden kaçan hatalar barındırabilir.

Bu süreci bir nevi prompt engineering olarak da düşünebiliriz.

https://en.wikipedia.org/wiki/Prompt_engineering#:~:text=Article%20Talk,of%20it%20being%20explicitly%20given.

Her Öneri En İyi Çözüm Olmayabilir

Copilot, Git depolarındaki en popüler kod tamamlamalarını bulmamıza yardımcı olur ancak bu durum, önerinin her zaman doğru veya en iyi çözüm olduğu anlamına gelmez. Örneğin Copilot, bir keresinde bana HTML destekli bir metin oluştururken android.text.Html.FROM_HTML_MODE_LEGACY bayrağını (flag) kullanmamı önermişti.

Projemin detaylarına girmeyeceğim ancak üzerinde çalıştığım Android projesi API 24 veya üzerini destekliyordu. Dolayısıyla android.text.Html.FROM_HTML_MODE_COMPACT bayrağını kullanmak çok daha mantıklıydı. Bu örnek, Copilot’un projenizin hedef derleme sürümünü (target build) veya benzer bağımlılıkları her zaman hesaba katamayabileceğini gösteriyor. Kod inceleme süreci bu yüzden hala hayati önem taşıyor.

Özetle

Copilot ile bir projeye başladım ve şu an aktif şekilde kullanıyorum. Kodunuzu ve kaynaklarınızı tahmin edilebilir, sürdürülebilir kalıplarda oluşturmak, Copilot’un anlama ve önerme algoritmasına ciddi şekilde yardımcı oluyor. Tabii ki bu durum geliştiricinin kendisine de fayda sağlıyor. Bu tarz bir yönlendirmeyi seviyorum.

Bazen hatalı öneriler yapabiliyor ancak kodu düzenli olarak inceliyorsanız bu büyük bir sorun değil. Kolayca bir sonraki öneriye geçebilir, yorum satırları üzerinden iyi bir bilgi istemi (prompt) verebilir veya fonksiyona bir başlangıç noktası yazarak ona yardımcı olabilirsiniz.

İş yükümü yaklaşık yüzde 30 oranında azalttım. IDE’deki bir eklenti hatası nedeniyle eklentinin açılmadığını ve öneri yapmadığını fark ettiğimde, IDE’yi yeniden başlatmadan koda devam etmiyorum; bu da bana ne kadar yardımcı olduğunun somut bir kanıtı.

Yazar: Gökberk Yağcı

Tags

AI Android App Development Github AI Github Copilot