Blog

GitHub Copilot ile Baby Monitor Timmy'yi Nasıl Geliştiriyorum

Yapay zekâ daha hızlı ilerlememi sağlıyor. Timmy'nin sorumluluğu yine de bende.

Baby Monitor Timmy basit bir fikirle başladı: evde mahremiyete saygı duyan bir bebek monitörü. Bulut kaydı yok, bebek odasından dışarı gereksiz veri akışı yok. Çoğu kişinin bilmediği nokta şu: Timmy'yi Zürih'te tek başıma geliştiriyorum ve GitHub Copilot benim çok hızlı çalışan eş programcım.

İnsan-Yapay Zekâ İş Akışı

İş bölümü net: özellikleri tanımlarım, öncelikleri belirlerim ve mimari kararları alırım. Copilot hayata geçirme aşamasında yardımcı olur: kod yazar, testler ekler, hataların kaynağını belirlemeye yardımcı olur ve sürüm adımlarını hazırlar.

Benim için tipik bir sprint kabaca şöyle ilerliyor:

  1. Özellik açıklaması: Özelliğin ne yapması gerektiğini, sınır durumları ve kısıtlamalarla birlikte açıklarım.
  2. Uygulama: Copilot kod önerir ve projenin mevcut kurallarına uyar.
  3. Test: Otomatik uçtan uca testler iki emülatörde çalışır ve bebek ile ebeveyn cihazları arasındaki gerçek bağlantıyı kontrol eder.
  4. Dağıtım: Testler geçince Android ve iOS derlemeleri doğru mağaza ve test kanalları için hazırlanır.

Bu döngü özellikler ve hata düzeltmeleri için tekrarlanır. Her satırı kendim yazmıyorum, ama ne geliştirileceğine, neden geliştirileceğine ve bir önerinin Timmy'ye uyup uymadığına ben karar veriyorum.

Konseptten WebRTC'ye

Temel teknik görev en başından beri açıktı: iki telefon arasında gerçek zamanlı ses ve görüntü aktarımı. WebRTC bariz seçimdi, ancak Flutter ile entegre edilmesi kolay değil: ICE adaylarının, SDP müzakeresinin, TURN'e geri dönüş mekanizmasının ve DataChannel'ların doğru sırayla birlikte çalışması gerekiyor.

Copilot bu parçaları adım adım bir araya getirmeme yardımcı oldu: eş bağlantısını kurmak, kritik sırayı doğru tutmak (offer'dan önce DataChannel, setRemoteDescription'dan önce onTrack) ve sinyalleşmeyi Firebase Firestore üzerinde kurmak. Devam etmeden önce her parçanın iki emülatörde çalışması gerekiyordu.

ECDH ile Güvenli Eşleştirme

En kritik özelliklerden biri güvenli eşleştirme sistemiydi. İki cihazın, kimliklerini doğrulamak için merkezi bir sunucuya güvenmeden karşılıklı güven kurması gerekiyor. Çözüm: Firebase üzerinden ECDH P-256 anahtar değişimi ve ortadaki adam saldırılarını tespit eden görsel doğrulama numarasının (SAS) birlikte kullanılması.

Copilot kriptografik zincirin uygulanmasına yardımcı oldu: anahtar üretimi, açık anahtar değişimi, ortak sırrın türetilmesi, SAS hesaplaması ve sonraki tüm sinyalleşme verileri için AES-256-GCM şifrelemesi. Eşleştirme anahtarını arka uca göndermiyorum; Firestore belge tanımlayıcısı olarak yalnızca SHA-256 karması kullanılıyor.

Güvenlik Denetimi: Açıkları Bulmak ve Düzeltmek

Yapay zekâ destekli geliştirme benim için yalnızca daha hızlı kod yazmak değil. Sistematik hata avına da yardımcı oluyor. Odaklı bir güvenlik denetimi sprintinde Copilot kod tabanını analiz etti ve düzeltmem gereken altı sorun buldu:

Altı sorun da aynı sprintte düzeltildi. Copilot'un güçlü olduğu nokta tam olarak bu: çok sayıda dosyayı okumak, kalıpları karşılaştırmak ve daha yakından incelemem gereken yerleri işaretlemek.

Yinelemeli Sprintler: Uygulama Nasıl Gelişti

Timmy hızlı ama sınırları net sprintlerle büyüdü. Bazı kilometre taşları:

Her sprint aynı temel düzeni izler: hedefi tarif et, önerileri gözden geçir, otomatik test et, ardından test kullanıcılarına gönder.

Cihazlar Arası E2E Testi

Bir bebek monitörünü tek cihazda düzgün şekilde test edemezsiniz. Bir bebek cihazına ve bir ebeveyn cihazına ihtiyacım var. Proje, aynı anda çalışan iki Android emülatörüyle başladı; artık bu test süreci yerel iOS simülatörü ve gerçek cihaz kontrolleriyle de destekleniyor. Otomatik Android test betiği hâlâ şunları yapıyor:

  1. Uygulamayı her iki emülatöre yükler
  2. Her iki cihazda eşleştirme adımlarında ilerler
  3. Ses ve görüntü bağlantılarının kurulduğunu doğrular
  4. Bas-konuş, kamera kontrolü ve diğer özellikleri test eder

İki emülatör de aynı IP adresini paylaştığı için (10.0.2.15), STUN üzerinden doğrudan eşler arası bağlantı kurmak mümkün değil. Her test çalıştırması Cloudflare TURN aktarıcısından geçmek zorunda. Bu can sıkıcı, ama faydalı: en karmaşık bağlantı yolu her seferinde test ediliyor.

Öğrendiklerim

Yapay zekâdan eş programlama desteği alarak eksiksiz bir uygulama geliştirmek bana birkaç şey öğretti:

İleriye Bakış

Baby Monitor Timmy gelişmeye devam ediyor. iOS sürümünün yayımlanmasına az kaldı; ardından ek sensör özellikleri ve devam eden güvenlik güçlendirmeleri gelecek. İş akışı benzer kalıyor: yönü ve sınırları ben belirliyorum, Copilot da bunları hızla hayata geçirmeme ve kontrol etmeme yardımcı oluyor.

Güvenlik açısından önemli yapı taşları artık açıkça belirlenmiş sınırlar çerçevesinde, herkese açık baby-monitor-timmy-core deposundayer alıyor. Eşleştirme, sinyalleşme ve arka uç arayüzleriyle ilgili mimari kararlar da burada belgeleniyor.


Diğer Yazılar