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:
- Özellik açıklaması: Özelliğin ne yapması gerektiğini, sınır durumları ve kısıtlamalarla birlikte açıklarım.
- Uygulama: Copilot kod önerir ve projenin mevcut kurallarına uyar.
- 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.
- 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:
- Sinyalleşme verilerinde eksik girdi doğrulaması
- ICE adaylarının işlenmesinde olası yarış koşulları
- Doğru şekilde temizlenmeyen eski oturum verileri
- Fazla izin veren Firestore güvenlik kuralları
- Sertifika sabitlemenin yeterince değerlendirilmemesi
- TURN kimlik bilgileri akışında yetersiz hata yönetimi
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ı:
- v1.8: Eşleştirme tamamen yeniden tasarlandı — Firebase üzerinden 4 karakterli kod + ECDH P-256, eski doğrudan anahtar yaklaşımının yerini aldı.
- v1.10: Güvenlik güçlendirme sprinti — altı açık için denetim ve düzeltme döngüsü.
- v1.11: Tüm ekranlarda karanlık mod; ayrıca şu anda okuduğunuz ana sayfa ve blog.
- v1.12: Ebeveyn ekranında kapsamlı yenileme, gece görüş modu ve kamera karelerinin analiziyle hareket algılama.
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:
- Uygulamayı her iki emülatöre yükler
- Her iki cihazda eşleştirme adımlarında ilerler
- Ses ve görüntü bağlantılarının kurulduğunu doğrular
- 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:
- Mimari her zamankinden daha önemli. Net kurallar ve iyi belgelenmiş bir kod tabanı, yapay zekânın tutarlı kod önermesine yardımcı olur. Belirsizlik hızla maliyetli hâle gelir.
- Testten taviz verilemez. Yapay zekânın ürettiği kod da insan yazımı kodla aynı titiz testlere ihtiyaç duyar. Otomatik E2E testleri, elle test ederken kolayca gözden kaçabilecek sorunları yakaladı.
- İnsan sürecin içinde kalır. Her mimari karar, güvenlikle ilgili her denge kararı ve ürünün sınırları benim sorumluluğumda kalır. Yapay zekâ hayata geçirme sürecini hızlandırır, ancak muhakemenin yerini tutmaz.
- Hız kaliteyi mümkün kılar. Özellikler günler yerine saatler içinde kullanıma sunulduğu için, ince ayar yapmak ve hataları düzeltmek üzere daha fazla yineleme fırsatı doğuyor. Hızlı olmak, kendiliğinden iyi olmak anlamına gelmez.
İ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.