Apple bir sonraki WWDC’nin tarihlerini açıkladıktan kısa bir süre sonra, Apple’ın araçlarında ve framework’lerinde en çok eksik hissettiğim şeylerin listesini toplamak benim için biraz gelenek haline geldi. Umudum, bu özet yazıların Apple mühendislerinin dahili olarak öncelikleri teyit etmesine veya ayarlamasına yardımcı olması. Ve şimdiye kadar her yıl dilediğim şeylerin %33’ü gerçekten gerçekleşti! Tesadüf olabilir, ama yine de hoşuma gidiyor.
Bu fikirlerin bazılarını çok zaman önce bir radar olarak bildirdim. Ama çoğu zaman, en çok eksik hissettiğim şeyler üzerine düşünmek için zaman ayırmak, günlük işlerde karşılaşmadığım yeni şeyler ortaya çıkarıyor. Bu listede birkaç bariz şey bulabilirsin, ama hiç düşünmediğin şeylerin de olduğundan eminim. Ne düşündüğünü duymak isterim, sosyal medyada yorum yap ve @Jeehut etiketimi bahset.
ℹ️ Geçen yılki yazımdan henüz gönderilmemiş 3 dilek var ve hala ihtiyacımız olduğunu düşünüyorum:
Xcode’da zahmetsiz Kolay Uygulama Modülerleştirmesi
Pasta Grafikler geldi, ama Örümcek Grafikler hala eksik!
Görüşmelerde/kayıtlarda hassas kodu gizlemek için Xcode’da Yayıncı Modu
#1 – Apple Sports için WeatherKit Benzeri API
Apple’ın 2022’de WeatherKit’i tanıttığında şaşırmıştım. Geliştiricilerin kullanmasının ücretsiz olmadığı ilk sistem framework’üydü (bildiğim kadarıyla) – ama yine de ayda 500.000 ücretsiz çağrı ile geliyordu. Bu, bağımsız geliştiricilerin ilginç yeni uygulamalar yazması için yeterince cömertti. Apple temelde bir sistem uygulamasının veri kısmını çıkarıp geliştiricilere sunmuştu. Ve sadece bu da değil, aynı zamanda kendi kendini finanse eden bağımsızlar için de karşılanabilir bir fiyat belirlemişti!

Yeni Apple Sports uygulaması.
ABD’de Apple Sports uygulamasının tanıtılması beni düşündürdü: Ya Apple aynı şeyi bu uygulamanın verileriyle de yapsa? Yıllar boyunca prototip yaptığım ama uygun fiyatlı bir Canlı Spor Verisi API’sinin eksikliğinden yayınlayamadığım birçok uygulama fikrim oldu. Fiyatlandırmaları büyük şirketlere yönelik (birçok API gibi). Ama günümüzde bir spor etkinliğini deneyimlemenin en iyi yolunun Vision Pro kullanmak olduğunu düşünürsek, Apple’ın bağımsız geliştiricilerin spor etkinliklerinde yeni deneyimler keşfetmesini olabildiğince kolaylaştırmasının çok mantıklı olacağını düşünüyorum.
WeatherKit gibi cömert ücretsiz katmanı olan yeni bir “SportsKit” API’si diliyorum!
#2 – SwiftUI’da ScrollView’a .zoom modifier’ı eklensin
Bulmaca uygulamam CrossCraft’ın oyun ekranı için istenen ilk özelliklerden biri, ilgili karakterlerin daha iyi genel görünümünü almak için yakınlaştırma ve uzaklaştırma yapmaktı. Ama SwiftUI’da ScrollView‘uma ilgili modifier’ı eklemek için .zoom yazdığımda, mevcut olmadığını görünce şoke oldum!
Özel bir MagnifyGesture kullanarak, özel @State modifier’ları ile .scaleEffect modifier’ına dayanan GeometryReader ile geçici çözümler olsa da, bunlar yalnızca görsellere yakınlaştırma gibi sınırlı kullanım durumları için çalışıyor. Ama benim view’um normal bir view’a kıyasla çok farklı davranan bir ScrollView. Birden fazla yaklaşım denedim ama beklenen şekilde çalıştıramadım. Ve çalıştırsam bile, scroll view içeriğini yakınlaştırmak o kadar yaygın bir kullanım durumu ki, ScrollView’a yerleşik olmalı ve tüm bu zahmete gerek kalmadan kolay kullanılmalı.
SwiftUI’da
ScrollViewiçin.zoom(scale:offset:)modifier’ı diliyorum!
#3 – CloudKit’teki SwiftData sınırlamalarını düzeltin
Paul Hudson bunu harika SwiftData + CloudKit makalesinde mükemmel şekilde ifade etmiş:
SwiftData with iCloud has a requirement that local SwiftData does not: all properties must be optional or have default values, and all relationships must be optional. The first of those is a small annoyance, but the second is a much bigger annoyance – it can be quite disruptive for your code.
Buna eklenecek pek bir şey yok, sadece tüm modellerimde Optional’ları non-Optional’lara eşlemek için bir sürü computed property yazmak zorunda kaldım. Güvenli, uygulamalarım çökmüyor. O zaman neden bir SwiftData macro’suna yerleşik değil?
SwiftData modellerinde non-Optional tiplerin CloudKit ile çalışmasını diliyorum.
#4 – VisionOS’ta Kalıcı Pencereler ve Volume’lar
Pencerelerin veya volume’ların uygulama yeniden başlatmaları ve hatta sistem yeniden başlatmaları veya güncellemeleri arasında konumlarının korunabilmesi durumunda anlam ifade eden VisionOS için çok fazla uygulama fikrim var. Mesela, duvarlarını otomatik güncellenen interaktif film posterleriyle süsleyebildiğin Posters adında bir uygulama yayınladım – ama cihazı yeniden başlattığında hepsi gidiyor. Artırılmış gerçeklik yalnızca geçici.

VisionOS’ta Posters ile duvar süsleme.
Apple’ın bize Shared Space’te tam ARKit erişimi vermek istemediğini anlıyorum. Tüm uygulamaların aynı anda ARKit kullanmasıyla iyi performans elde etmek mümkün değil. Bunu dilemiyorum. Ama sistem zaten pencere konumlarını takip ediyor.
Pencere/volume konumlarını (kullanıcı onaylı) kalıcı kılma seçeneği diliyorum.
#5 – tvOS’ta Modal Metin Girişi (Playstation gibi)
iOS, iPadOS ve visionOS’ta QWERTY klavyeler alıyoruz çünkü bilinen, hızlı ve kolay yazılabilen klavyeler. Tüm platformlar arasında tvOS’ta tuşları bir satıra koymaya karar verdiler. Sonuç olarak, belirli bir tuşa ulaşmak QWERTY benzeri bir ızgara sistemi olsaydı çok daha hızlı olacakken çok daha uzun sürüyor. Ayrıca metin girişi TV ekranının tüm genişliğine ihtiyaç duyuyor ve en üste yerleştirilerek ana odak haline geliyor. Neden böyle? Sony’nin 2013’ten gelen çok daha iyi modal klavye arayüzüne bir bak:

PS4’te Sanal Klavye.
Bunun gibi bir şeyin eksikliği, klavyenin başka türlü daha ilginç bir view’a sadece aksesuar olduğu deneyimleri imkansız kılıyor. Eksik olduğu için, CrossCraft’ı tvOS’a da getirme planlarımdan vazgeçtim. TV’de bulmaca üretip çözmek isterdim. Eğlenceli bir aile deneyimi olabilirdi. Ama mevcut klavyeyle, kullanıcı deneyimi kabus!
tvOS’ta daha dar, QWERTY benzeri bir aksesuar klavye girişi diliyorum.
#6 – String Catalog editörünü daha kullanışlı yapın
Evet, String Catalog’lar yeni. Bu yüzden henüz tam olarak olgunlaşmamış olmaları beklenir. Ama en temel şeylerden bazıları bile şu anda bozuk. Bir girişe sağ tıklayıp “Mark as Reviewed” gibi bir şey seçmek mümkün. Ama birden fazlasını seçip aynı anda işaretlemek? Değil. Alttaki artı düğmesiyle yeni bir dil eklemek mümkün. Ama eksi düğmesiyle birini kaldırmak? Değil.
Bozuk temellerden ayrı, çok mantıklı bir özellik isteğim daha var: Arayüz parametreleri zaten mavi olarak işaretliyor, yani algılama var. Ama başka bir dilde biri eksik olduğunda uyarı yok. Olmalı!
Xcode’daki String Catalog editör arayüzünün daha kullanışlı hale gelmesini diliyorum.
💁♂️ GÜNCELLEME: Bu iyileştirmeleri kendim uyguladım! Temelde Xcode’un String Catalog Editörünü yeniden inşa ettim ve tamamen ücretsiz bir özellik olarak TranslateKit uygulamamın içine ekledim. Bir göz at!
#7 – “Create ML” gibi yeni “Create LLM” uygulaması
Create ML’i hiç denedin mi? 2019’da tanıtılan ve birçok geliştiricinin gözden kaçırdığını düşündüğüm bir geliştirici aracı. Sınıflandırma problemini oldukça iyi çözen bir yapay zeka aracı. Mevcut seçeneklere bir bak:

Create ML Proje Şablonları
Ama hepimiz biliyoruz ki LLM’lere dayanan üretken yapay zeka yeni trend. Ve Apple’ın yakın gelecekte göndereceği bir şey üzerinde aktif olarak çalıştığının kanıtları bile var. Bu yıl tüketicilere bir şey yayınlayabileceklerini varsayarsak, bir geliştirici olarak istediğim, LLM’ler için Create ML benzeri bir araç. Apple’ın Core LLM modelini kendi alan verilerinle ve hatta tamamen cihazda saklanan kişisel kullanıcı verileriyle özelleştirebilmeyi hayal et. Bu, harika yeni uygulama deneyimleri sağlar ve geliştiriciler olarak bunu bedavaya alırdık!
Alan bazlı ve kişiselleştirilmiş LLM’ler oluşturmanın kolay bir yolunu diliyorum.
#8 – Xcode’da Geliştirilmiş Kaynak Kontrol Deneyimi
Her yıl Git’in Xcode’a entegrasyonu giderek daha iyi hale geliyor. Geçen yıl, varsayılan Git arayüzüm olarak Xcode’a geçmeye karar verdiğim noktaya ulaştı. Önceden Git-Fork kullanıyordum, ama Xcode’a tam entegrasyon yenilmez!

Ama birkaç eksik hissediyorum. Birincisi, Xcode’un bir kod diff görünümü olmasına rağmen, geçmiş commit’lerin diff’lerini görmenin bir yolu yok, sadece “Commit edilmemiş değişiklikler” için var. İkincisi, diff görünümünün kendisi hangi kodun kaldırıldığını ve hangisinin eklendiğini anlamayı zorlaştıran gerçekten garip renk seçimlerine sahip. Araçların net anlamlar için kırmızı ve yeşil kullanması yaygın ve bunu mevcut olana çok tercih ederdim. Üçüncüsü, tek adımda commit ve push yapmak için “Commit” düğmesinin sağındaki aşağı ok simgesine basıp “Commit and Push…” seçmek gerekiyor. Her seferinde birden fazla tıklama yapmak zorunda kalmamak için durumunu koruyan bir onay kutusu tercih ederdim. Ve son olarak, bazen bir commit mesajı yazıyorum ve değişiklikleri gözden geçirirken bir şeyin yanlış olduğunu fark ediyorum. Sonra dosyaya geçip bazı düzenlemeler yapıyorum ve diff görünümüne döndüğümde commit mesajım gitmiş oluyor! Hala orada olmalı.
Xcode’da geliştirilmiş kaynak kontrol deneyimi ve düzgün Git işlevselliği diliyorum.
#9 – SwiftUI Preview’larının Güvenilir Çalışmasını Sağlayın
Bu, SwiftUI’ın ilk günlerinden beri bir sıkıntı. SwiftUI’da tasarım yapmak çok faydalı ve hızlı olabilir. Keşke preview’lar çalışsa. Ama zamanın %90’ında preview’lar benim için çalışmıyor. Ve yaygın çözümleri zaten denedim. Bazen yardımcı oldu, bazen olmadı. Ama sadece SwiftUI preview’larının çalışması için geçici çözümler yapmak zorunda olmak sinir bozucu.
SwiftUI preview’larının uygulama Simülatör için her derlendiğinde çalışmasını diliyorum.
#10 – SwiftUI Preview’ları için Ekran Görüntüsü
App Store ekran görüntüsü oluşturmak zor. 2-3 cihazda bir dilde elle yapabilirsin. Ama yerelleştirmek istediğin anda çaba dayanılmaz hale geliyor. Tahmin etmem gerekse, App Store’da gördüğün ekran görüntülerinin %99’unun güncel olmadığını söylerdim. Ama böyle olmak zorunda değil.
Bunu düzeltmek için Apple tarafında biraz yardıma ihtiyacımız var. Ve UI testlerinden bahsetmiyorum. Yavaşlar. Ekstra çaba. Güvenilmezler. Artık UI testleri yazmıyorum, çünkü SwiftUI preview’ları var. Evet, yukarıda güvenilir olmadıklarını yazdım, doğru. Ama ya bunu iyileştirseler? #Preview macro’su tek bir view’da birden fazla preview oluşturmayı gerçekten kolaylaştırıyor. Ve view’larına başlatma sırasında bazı durumlar geçirmek nispeten kolay.
SwiftUI preview’larını kullanarak yerelleştirilmiş ekran görüntüleri oluşturmak için bir API diliyorum.
Sonuç
Bunlar WWDC24 için benim en büyük 10 dileğim. Katılıyor musun? Neyi kaçırdım?

