Uygulamada yapmak istediğim şey, bir seyahat fikrini gerçekten kullanılabilecek bir plana çevirmek. Örneğin:
Paris'te dört günüm var, müze ve kafeleri seviyorum.Bunu anlatınca günlere ayrılmış bir plan çıkıyor. Durakların nerede olduğunu ve aralarında ne kadar yol olduğunu aynı yerde görebiliyorsun.
Plan değişince
Bir günü daha sakin geçirmek ya da bir durağı değiştirmek isteyebilirsin. Navly'ye bunu söylediğinde önerdiği değişikliği önce gösteriyor. Kabul edince plana işleniyor. Asistanın sen fark etmeden bir şeyleri değiştirmesini istemiyorum.
Harita da bu yüzden önemli. İki yerin adını yan yana yazmak kolay; aralarındaki yolu görünce o güne sığıp sığmayacağı daha anlaşılır oluyor. Günlük rotalar Apple Maps üzerinde görünüyor. Bir durağın detayını açabiliyor, bulunduğu yerde destekleniyorsa Look Around ile çevresine bakabiliyorsun.
Expo'dan Swift'e
iOS tarafında artık yerel bileşenlerle çalışıyorum. Web ve servislerde TypeScript devam ediyor. Swift ile TypeScript aynı tipleri paylaşamadığı için API'nin ne gönderdiğini ve uygulamanın ne beklediğini ortak sözleşmelerle tanımlıyorum.
Asistanın önerisi, onay ve uygulanan işlem de Navly'nin kendi akışında tutuluyor. Modeli değiştirdiğimde bu akışı yeniden kurmak zorunda kalmak istemiyorum.
Hâlâ tek başıma geliştiriyorum. Şu an uğraştığım şey, planı oluşturduktan sonra da uygulamanın işe yaraması: bir yere bakmak, günü değiştirmek, sıradaki durağa gitmek. navly.app üzerinden bakabilirsin.
Örnek bir istek nasıl ilerliyor?
“Paris'te dört günüm var, müze ve kafeleri seviyorum” cümlesi bir kullanım örneği. Burada şehir ve süre belli, ilgi alanları da var. Ortaya çıkan planda ilk baktığım şey, bir güne hangi durakların konduğu ve aradaki yolculuk süreleri. Sırf önerilen yerlerin isimlerini beğenmek yetmiyor; o sırayla gezmek de makul olmalı.
Sonra “ikinci günü biraz hafiflet” diyebilirim. Mevcut plan bu isteğin bağlamı oluyor. Öneriyi incelerken hangi durakların değiştiğine bakabiliyorum. Kabul etmeden önce günün yeni hâlini görmek, sohbet cevabıyla kayıtlı planın birbirinden kopmaması için önemli.
Web'de plan oluşturmak da bu akışı denemenin bir yolu. Uygulama içinde ise gün seçip rotayı görmek, bir yere bakmak ve yol tarifine geçmek aynı seyahatin etrafında duruyor. iPhone sürümünün ücretli özellikleri ve web kullanım koşulları için ürünün kendi sayfasına bakmak daha doğru; bunları blog yazısında sabitlemek istemiyorum.
Teknik tarafta “ortak sözleşme” derken kastettiğim de şu: örneğin API bir durak için kimlik ve zaman bilgisi gönderiyorsa Swift tarafının bu alanları nasıl okuyacağı tanımlı olmalı. API ile iOS'u birlikte kontrol etmek için aynı örnek veriler kullanılıyor. TypeScript'te bir alanı değiştirmek, Swift kodunu kendiliğinden güncellemiyor.