Davet et, 1 ay ücretsiz Pro kazanNasıl çalışır?

Gemini CLI ile Swift ve iOS Geliştirme Rehberi

Gemini CLI’yı Swift ve iOS projelerinde nasıl kullanacağınızı öğrenin: GEMINI.md kurulumu, çalışma döngüsü, testler ve çoklu ajan ipuçları.

Solviera Teknoloji 6 dk okuma

Gemini CLI, Swift ve iOS projelerinde terminal tabanlı bir kodlama ajanı olarak doğrudan gemini komutuyla başlar. Xcode projelerini, Swift Package Manager yapılarını ve XCTest testlerini anlayarak değişiklik önerir; siz de her adımı diff üzerinden denetlersiniz. Doğru GEMINI.md ve küçük adımlı çalışma döngüsüyle SwiftUI ve UIKit kodunda ciddi iş çıkarır. Daha geniş kurulum için Gemini CLI sayfasına bakabilirsiniz.

Gemini CLI Swift ve iOS işleri için neden uygun?

Swift ve iOS projeleri yalnızca kaynak koddan ibaret değildir; .xcodeproj, Package.swift, Info.plist, asset katalogları, yetkilendirme dosyaları ve test hedefleri birlikte çalışır. Gemini CLI, proje klasöründe başlatıldığında bu yapıyı okur ve değişiklikleri dosya bazında uygular. Swift’e özgü kavramları bilir: async/await, @MainActor, Sendable, Codable, SwiftUI view hiyerarşisi, UIKit yaşam döngüsü ve Auto Layout. Bu sayede yalnızca kod yazmakla kalmaz; derleme hatasını yorumlar, test başarısızlığını inceler ve öneriyi ona göre düzeltir. Örneğin bir closure içinde main thread’e alınmamış bir UI güncellemesi gördüğünde uyarıyı okuyup öneri üretebilir. Ayrıca Xcode build ve test komutlarını sizin tanımladığınız şekilde çalıştırır; böylece sonuçları görmek için terminalden ayrılmanız gerekmez.

Pratikte en büyük fark, ajanın .xcodeproj dosyasındaki değişiklikleri de yönetebilmesidir. Yeni bir Swift dosyası eklediğinizde hedef üyeliklerini, build phase’leri ve dosya referanslarını elle düzenlemek yerine ajan bunu sizin adınıza yapabilir. Elbette bu değişiklikler dikkatle incelenmelidir, çünkü .pbxproj karmaşık bir yapıdır. Ancak ajan doğru talimatlarla yeni dosyaları doğru hedefe ekleyebilir, asset kataloğuna renk veya görsel ekleyebilir, hatta xcconfig dosyalarındaki build ayarlarını güncelleyebilir. Swift concurrency denetimlerinde de ajan, Xcode’un ürettiği uyarıları çözümleyerek @MainActor izolasyonu veya Sendable uyumluluğu için somut öneriler sunar; bu da büyük refactor’lerde zaman kazandırır.

Swift ve iOS projesi için kurulum ve GEMINI.md

Proje klasöründe gemini komutunu çalıştırın. Ajan, GEMINI.md dosyasındaki talimatları her oturumda okur; bu yüzden projenin gerçek komutlarını ve kurallarını yazmak ilk adımdır. Dosyada şunlar bulunmalı: Swift sürümü, minimum iOS sürümü, Xcode sürümü; build, test ve lint komutları; klasör düzeni; Swift ve iOS’a özgü kurallar. Ayrıca imzalama kimliği, ortam değişkenleri ve simülatör adı gibi ortam bilgilerini de eklemek ajanın doğru komutu kurmasına yardımcı olur. Aşağıdaki örnek kısa ama işlevsel bir başlangıçtır.

# GEMINI.md

## Proje
Swift 5.9+, iOS 16+, Xcode 15+
SwiftUI + UIKit karışık; async/await yaygın.

## Komutlar
Build: xcodebuild -project MyApp.xcodeproj -scheme MyApp -destination 'platform=iOS Simulator,name=iPhone 15' build
Test: xcodebuild -project MyApp.xcodeproj -scheme MyApp -destination 'platform=iOS Simulator,name=iPhone 15' test
SPM build: swift build
SPM test: swift test
Lint: swiftlint

## Klasör düzeni
MyApp/Features/<FeatureName>/: her özellik ayrı klasör
MyApp/Core/: ağ, kalıcılık, araçlar
MyAppTests/: birim testleri
MyAppUITests/: UI testleri

## Swift ve iOS kuralları
- UIKit ile UI güncellemeleri main thread'de yap.
- async/await kullan; completion handler ekleme.
- SwiftUI preview'ları çalışır durumda bırak.
- [weak self] gereken closure'larda retain cycle'dan kaçın.
- Force unwrap ve implicitly unwrapped optional kullanma.
- Her değişiklikten sonra ilgili testleri çalıştır.

Bu dosya, ajanın Xcode ile doğru şemayı ve simülatörü kullanmasını sağlar. Özellikle birden fazla hedefi olan projelerde scheme adı ve destination kritik olur. Komutlarda set -o pipefail kullanmak, xcodebuild’in hata durumunda da doğru çıkış kodu döndürmesini sağlar; böylece ajan başarısız build’i fark eder. Ayrıca SwiftLint kurallarını da GEMINI.md’ye bağlamak, stil uyumsuzluklarını erken yakalamayı kolaylaştırır. Komutları mutlaka kendi projenize göre güncelleyin. Daha fazla örnek için Gemini CLI nasıl kullanılır? rehberine göz atabilirsiniz.

Çalışma döngüsü ve örnek promptlar

Başarılı bir Swift/iOS görevinde döngü şudur: önce görevi tek bir bileşenle sınırlayın, ajanın plan yapmasını isteyin, sonra küçük diff üretmesini sağlayın, testleri çalıştırın ve diff’i satır satır inceleyin. Ajanın ilk önerisini doğrudan kabul etmek yerine, her adımda ilgili testleri koşmasını isteyin. Özellikle .xcodeproj değişikliklerinde diff dikkatli okunmalıdır. İyi bir çalışma döngüsü şöyle işler: görevi yazın, ajanın mevcut dosyaları okumasını ve bir plan sunmasını bekleyin, planı onaylayın, ajan küçük bir diff uygulasın, siz test sonucunu görün, sonra devam edin. Bu, büyük refactor’lerde kaybolmayı önler.

Aşağıdaki promptlar tipik Swift/iOS işleri için başlangıç noktasıdır:

  • ProductListViewModel içindeki veri yükleme mantığını async/await’e çevir; completion handler’ları kaldır, mevcut XCTest testlerini yeni API’ye göre güncelle.
  • UIKit’te LoginViewController’daki Auto Layout kısıtlamalarını safe area’ya göre yeniden yaz; gerekirse stack view kullan, ama davranışı değiştirme.
  • SwiftUI’da bir ProfileView oluştur; @Observable model kullan, yükleme durumunu göster ve Preview için örnek veri sağla.
  • Ağ katmanı için URLProtocol tabanlı bir mock yaz; async test metodları kullanarak başarı ve hata durumlarını test et.
  • Core Data entity’sine lastSyncedAt alanı ekle; migration gerekmeden lightweight migration kullan, ilgili fetch request’leri güncelle.
  • Mevcut UIKit ekranını SwiftUI’ye taşı; eski view controller’ı kaldır, navigation akışını koru ve UI testlerini güncelle.
  • Uygulamanın başlangıç performansını iyileştir; Instruments yerine kod düzeyinde ana thread’deki ağır işleri async’e al ve ölçüm için bir XCTest performans testi ekle.

İstem yazarken bağlamı net verin; dosya adı, hedef ve beklenen davranış mutlaka olsun. Prompt yazma rehberi bu konuda daha fazla ipucu içerir.

Tipik Swift ve iOS görevleri ve dikkat edilecekler

Gemini CLI şu işlerde iyi sonuç verir: SwiftUI view üretimi, UIKit view controller yeniden düzenlemesi, async/await dönüşümleri, Codable model katmanı, XCTest yazımı ve hata ayıklama. Ancak iOS projelerinde bazı alanlar göz ardı edilirse sorun çıkar.

GörevDenetlerken odaklanılacak nokta
SwiftUI view eklemePreview derleniyor mu, state değişimi doğru mu
async/await refactor@MainActor ve Sendable uyarıları, retain cycle
Xcode projesine dosya ekleme.pbxproj diff’i, hedef üyelikleri
UIKit Auto LayoutSimülatörde belirsiz kısıtlama uyarıları
XCTest yazımıTest izolasyonu, async test timeout
Core Data model değişikliğiMigration gereksinimi, fetch request güncellemeleri
Entitlements veya Info.plist değişikliğiİmzalama, özel anahtarlar, hedef bazlı farklar

Özellikle .xcodeproj dosyasındaki değişiklikler çakışmaya açıktır; ajan birden fazla hedefe yanlış üyelik ekleyebilir. Concurrency düzeltmeleri bazen aşırı geniş @unchecked Sendable önerebilir; bunu kabul etmeden önce veri akışını inceleyin. SwiftUI preview’larının derlenmesi, kodun çalıştığını göstermez; runtime’da state güncellenmelerini test edin. UIKit’te main thread dışı UI güncellemeleri yalnızca logda görünür, bu yüzden ajanın önerdiği değişiklikten sonra uygulamayı simülatörde açıp ilgili ekranı gezin. Ayrıca asset kataloglarına yapılan eklemelerde görselin hedef üyeliğini kontrol edin; yanlış hedefe eklenen bir renk veya görsel, derlemede hata vermeden eksik kalabilir.

Swift ve iOS için test ve doğrulama

Test, Swift/iOS işlerinde pazarlık konusu olamaz. Ajan her değişiklikten sonra ilgili testleri çalıştırmalı; yalnızca derleme yetmez. Xcode projesinde xcodebuild test komutunu -only-testing:MyAppTests/ProductViewModelTests gibi hedeflerle daraltarak hızlı geri bildirim alın. Swift Package Manager kullanan kısımlarda swift test yeterli olur. Ajan test çıktısını yorumlayıp hatayı düzeltebilir; siz de kırmızı testlerin nedenini diff ile karşılaştırın. Özellikle async testlerde timeout değerlerini gözden geçirin; yavaş CI ortamında yanlış negatif sonuçlar oluşabilir. Ajanın önerdiği yeniden denemeleri sınırlayın; aynı hatayı üç kez tekrarlıyorsa sorunu siz manuel inceleyin.

Komut örneği olarak, yalnızca belirli testleri çalıştırmak için:

xcodebuild test -project MyApp.xcodeproj -scheme MyApp \
  -destination 'platform=iOS Simulator,name=iPhone 15' \
  -only-testing:MyAppTests/ProductViewModelTests

UI testleri çalıştırırken ajanın erişilebilirlik tanımlayıcılarına dikkat etmesini isteyin; eksik tanımlayıcılar testlerin kararsız olmasına yol açar. Snapshot testleri kullanıyorsanız, referans görüntülerin doğru commit’te saklandığından emin olun. Ajan, test başarısızlıklarını özetlerken bazen kök nedeni atlayabilir; bu yüzden başarısız assertion’ı ve ilgili kodu birlikte açıp incelemek en sağlıklısıdır. Ayrıca, xcodebuild çıktısındaki uyarıları da takip edin; örneğin capture of self with non-Sendable type uyarısı çalışma zamanında veri yarışına işaret edebilir.

Birden fazla ajanı tek Swift ve iOS projesinde çalıştırmak

Birden fazla Gemini CLI oturumunu aynı projede açmak dosya çakışmalarına yol açar; .xcodeproj ve Swift dosyaları aynı anda değişirse diff kirlenir. AgentVera bu sorunu çözen bir masaüstü uygulamasıdır: gerçek CLI araçlarını ayrı terminal panellerinde yan yana çalıştırır. Her ajan kendi git worktree’sinde çalıştığı için dosyalar üzerine yazılmaz; iş bitince otomatik kod incelemesi yapılır ve bulgular file:line ile gösterilir. Ayrıca her turun check point’i alınır; bir hata Xcode projesini bozarsa tek tıkla geri alınabilir. Bu özellikle Swift/iOS’ta birden fazla özelliği paralel ilerletirken güvenli bir çalışma sağlar.

Sonuç

Gemini CLI, Swift ve iOS projelerinde hız kazandıran bir terminal ajanıdır; ancak değeri, doğru GEMINI.md, küçük adımlı döngü ve sıkı test doğrulamasıyla ortaya çıkar. Ajanı kör bir kod üretici olarak değil, Xcode ve Swift kurallarını bilen bir çift göz gibi kullanın. Özellikle .xcodeproj, concurrency ve UIKit main thread konularında diff’i mutlaka inceleyin. Paralel çalışmada git worktree ve kod incelemesi sunan araçlar, iOS projelerinin kırılgan yapısını korur. Sonuçta, ajanı disiplinli bir süreçle kullanırsanız, günlük Swift/iOS işlerinizin önemli bir kısmını güvenle devredebilirsiniz.

Sık sorulanlar

Gemini CLI Swift ve iOS projelerinde Xcode ile nasıl çalışır?

Proje klasöründe gemini komutuyla başlatılır; Xcode projesi veya Swift Package Manager ile mevcut dosyaları okur, komutları çalıştırır ve değişiklikleri uygular. GEMINI.md dosyası build ve test komutlarını tanımlarsa ajan doğru araçları kullanır.

Gemini CLI ile SwiftUI ve UIKit görevlerinde nelere dikkat etmeli?

Derleme hatalarını ve concurrency uyarılarını test etmeden geçmemeli; ajanın ürettiği kod Xcode sürümü ve hedef iOS ile uyumlu olmalı. Küçük diff’ler ve test koşumu her adımda doğrulama sağlar.

Gemini CLI için GEMINI.md dosyasına hangi komutlar yazılmalı?

xcodebuild veya swift build, swift test, swiftlint gibi komutlar; klasör düzeni, hedef iOS sürümü ve async/await kuralları. Örnek: /usr/bin/xcodebuild -scheme App -destination 'platform=iOS Simulator,name=iPhone 15' test.

Gemini CLI birden fazla ajanla paralel çalışabilir mi?

Terminalde birden fazla oturum açılabilir ancak aynı dosyaları düzenlemek çakışma yaratır. AgentVera gibi araçlar her ajanı ayrı git worktree’de çalıştırarak Swift/iOS projelerinde güvenli paralellik sağlar.

Ajanlarını bir masaya topla.

AgentVera’yı ücretsiz indir; kurulu CLI’ların hazır.

Diğer Gemini CLI rehberleri

Swift ve iOS için diğer ajanlar