Mobil uygulama iki ayrı ürün olarak geliştirildiğinde maliyet ikiye katlanır ve platformlar arasında davranış farkı oluşur. Biz iOS ve Android tarafını React Native ile tek kod tabanından geliştiriyoruz: bir özellik bir kez yazılır, iki mağazada birden çalışır. Kendi girişimimiz Otomiks bu şekilde geliştirildi ve her iki mağazada yayında.
Mobil uygulama geliştirme nedir?
Mobil uygulama geliştirme, bir hizmetin telefonda çalışan sürümünü tasarlamak, kodlamak, mağazalarda yayınlamak ve yaşam süresi boyunca güncel tutmaktır. Web sitesinden farkı yalnızca ekran boyutu değildir: uygulama cihazın kendisine erişir — bildirim gönderir, konum kullanır, kamerayı açar, veriyi çevrimdışı saklar — ve kullanıcının ana ekranında kalıcı bir yer tutar.
Bu kalıcılık aynı zamanda sorumluluktur. Bir web sayfasını değiştirdiğinizde herkes yeni sürümü görür; bir mobil uygulamada ise değişiklik mağaza incelemesinden geçer ve kullanıcının güncellemeyi yüklemesini bekler. Bu yüzden mobil projelerde mimari kararlar sonradan düzeltilmesi en pahalı kararlardır.
Uygulamaları React Native ile geliştiriyoruz: iOS ve Android tek kod tabanından çıkar, iş kuralları tek yerde durur. Sunucu tarafı gerektiğinde onu da biz geliştiriyoruz; böylece uygulama ile arka uç arasındaki sözleşme tek bir ekipte kalır ve iki tarafın birbirini beklediği belirsiz alan oluşmaz.
Mobil uygulama her kurum için gerekli değildir. Kullanıcı hizmetinizi yılda birkaç kez kullanıyorsa iyi çalışan bir mobil web sitesi genellikle daha doğru seçimdir; kimse yılda iki kez açacağı bir uygulamayı telefonunda tutmaz. Uygulama; tekrar eden kullanım, bildirim ihtiyacı veya cihaz özelliklerine erişim gerektiğinde anlam kazanır. Bu değerlendirmeyi ilk görüşmede açıkça yapıyoruz.
Neler yapıyoruz?
Bir mobil proje uygulamanın kendisinden ibaret değildir; arkasındaki servis, mağaza süreci ve yayın sonrası bakım aynı işin parçalarıdır.
- iOS ve Android uygulama geliştirme — Tek kod tabanı, iki platform. Arayüz her platformun kendi alışkanlıklarına saygı gösterir; gezinme, geri tuşu ve klavye davranışı yerel hissettirir.
- Arayüz tasarımı — Ekran akışı, uygulamanın gerçekte hangi anda kullanılacağı düşünülerek tasarlanır. Ayakta, tek elle ve dikkati dağınık bir kullanıcı için tasarlanan ekran, masa başı için tasarlanandan farklıdır.
- Sunucu tarafı ve API — Uygulamayı besleyen API geliştirilir veya mevcut sisteminize bağlanılır. Aynı API web arayüzünü de besleyebilir; böylece mobil ile web arasında davranış farkı oluşmaz.
- Bildirimler — Anlık bildirim altyapısı kurulur ve hangi olayın bildirim ürettiği yönetilebilir hâle getirilir. Gereksiz bildirim, uygulamanın silinme sebeplerinin başında gelir.
- Çevrimdışı çalışma — Gerekli ekranlarda veri cihazda saklanır, işlemler sıraya alınır ve bağlantı döndüğünde eşitlenir. Hangi ekranın çevrimdışı çalışacağı baştan belirlenir.
- Mağaza yayını ve sürüm yönetimi — Derleme, imzalama, mağaza kayıtları ve inceleme süreci yürütülür. Sonraki sürümler için de aynı hat kurulu kalır.
- Analitik ve çökme takibi — Hangi ekranın kullanıldığı ve nerede çökme yaşandığı ölçülür. Kullanıcının yaşadığı sorun, mağaza yorumundan önce öğrenilir.
- Erişilebilirlik ve dil desteği — Yazı tipi boyutu ayarı, ekran okuyucu uyumu ve çok dilli arayüz baştan planlanır; bunlar sonradan eklenmesi en zor katmanlardandır.
Bu yaklaşımın somut örneği kendi girişimimiz Otomiks: tek bir sunucu çekirdeği üzerinde web, iOS ve Android olmak üzere üç platformda canlı çalışıyor.
Nasıl çalışıyoruz?
Mobilde geri dönüş maliyeti web'e göre yüksektir: yanlış kurulan bir akış ancak yeni sürümün mağaza incelemesinden geçmesi ve kullanıcının güncellemeyi yüklemesiyle düzeltilebilir. Bu yüzden doğrulama adımlarını sürecin başına alıyoruz.
- Kapsam ve akış — Uygulamanın kime, hangi anda ve hangi sorunu çözmek için gerektiği netleştirilir. İlk sürüme girmeyecek özellikler de aynı netlikte yazılır; bir mobil projede en değerli karar, neyin yapılmayacağıdır.
- Ekran akışı ve tasarım — Önce ekranlar arası akış çıkarılır, sonra görsel tasarım yapılır. Akış oturmadan tasarlanan ekranlar geliştirme sırasında yeniden çizilir.
- Geliştirme — Uygulama ve API birlikte ilerler. Her aşamada kurulabilir bir sürüm üretilir; ekip ürünü mağazaya çıkmadan önce kendi telefonunda kullanır.
- Gerçek cihazda test — Farklı ekran boyutları, düşük bellek, zayıf bağlantı ve izin reddi durumları gerçek cihazlarda denenir. Bu koşullar öykünücüde (emulator) doğru görünmez.
- Mağaza yayını — Geliştirici hesapları kurumun adına açılır, mağaza kayıtları ve gizlilik beyanları hazırlanır, uygulama incelemeye gönderilir. İnceleme geri bildirimleri karşılanır.
- Yayın sonrası bakım — Çökme kayıtları izlenir, işletim sistemi sürüm değişiklikleri takip edilir ve düzenli güncelleme yapılır. Bakımsız bir uygulama bir yıl içinde mağazada sorun çıkarmaya başlar.
Ne kazandırır?
- Tek geliştirme, iki platform — Aynı özellik iki kez yazılmaz; geliştirme ve bakım yükü tek hatta toplanır.
- Platformlar arası tutarlılık — Kullanıcının iPhone’da gördüğü davranış Android’de de aynıdır; destek ekibi iki farklı ürünü öğrenmek zorunda kalmaz.
- Hızlı sürüm döngüsü — Tek kod tabanı, düzeltmelerin iki mağazaya aynı anda çıkmasını sağlar.
- Doğrudan iletişim kanalı — Bildirim, kullanıcıya araya bir aracı girmeden ulaşan az sayıdaki kanaldan biridir; doğru kullanıldığında geri dönüş oranı yüksektir.
- Sahada kullanılabilirlik — Çevrimdışı çalışan ekranlar sayesinde uygulama depo, şantiye ve servis aracı gibi bağlantının zayıf olduğu yerlerde de kullanılabilir.
- Mülkiyet — Mağaza hesapları ve kaynak kod kuruma aittir; uygulamanın geleceği tek bir tedarikçiye bağlı kalmaz.
Bir uygulamanın başarısı indirme sayısıyla değil, ikinci hafta hâlâ açılıp açılmadığıyla ölçülür. Bu yüzden ilk sürümde az sayıda işi iyi yapan bir uygulama çıkarmayı, çok sayıda özelliği yarım bırakmaya tercih ediyoruz. Eksik kalan özellikler sonraki sürümlerde eklenebilir; kötü ilk izlenim ise kolay telafi edilmez.
Häufig gestellte Fragen
Neden iki ayrı uygulama yerine tek kod tabanı?
Aynı uygulamayı iOS ve Android için ayrı ayrı yazmak, geliştirme ve bakım yükünü ikiye katlar. Daha önemlisi zamanla iki uygulama birbirinden ayrışır: bir platformda düzeltilen hata diğerinde kalır, bir özellik bir tarafta eksik çalışır. Tek kod tabanında iş kuralları tek yerde durur; bu hem tutarlılığı hem güncelleme hızını korur. Platforma özgü davranış gerektiğinde o kısım ayrıca yazılır — bu, tek kod tabanının önünde engel değildir.
Uygulamayı mağazalara siz mi yüklüyorsunuz?
Yayın sürecini biz yürütürüz: uygulama derlenir, mağaza kayıtları (açıklama, ekran görüntüleri, kategori, gizlilik beyanı) hazırlanır ve inceleme sürecine gönderilir. Geliştirici hesapları kurumun kendi adına açılır ve sahibi kurum olur; uygulamanın mülkiyeti hiçbir aşamada bize bağlı kalmaz. İnceleme sırasında gelen geri bildirimleri karşılamak da sürecin parçasıdır.
Uygulama internet olmadan çalışır mı?
Kısmen çalışacak şekilde tasarlanabilir. Daha önce yüklenmiş veriler cihazda saklanır ve bağlantı yokken görüntülenebilir; kullanıcının yaptığı işlemler sıraya alınıp bağlantı geri geldiğinde gönderilir. Hangi ekranların çevrimdışı çalışması gerektiği baştan belirlenir — her ekranı çevrimdışı yapmak gereksiz karmaşıklık üretir.
Mevcut sistemlerimizle veya web sitemizle bağlantılı olabilir mi?
Evet. Uygulama genellikle bir API üzerinden çalışır; aynı API web arayüzünü de besleyebilir. Böylece iş kuralları tek yerde tutulur ve mobil ile web arasında davranış farkı oluşmaz. Mevcut bir sisteminiz varsa ona bağlanılır; yoksa sunucu tarafı da bu proje kapsamında geliştirilir.
Yayınlandıktan sonra güncelleme nasıl yapılır?
Yeni sürümler derlenip mağaza inceleme sürecinden geçirilerek yayınlanır. Küçük içerik değişiklikleri sunucu tarafından yönetilebildiği ölçüde mağaza güncellemesi gerektirmez. İşletim sistemi sürümleri her yıl değiştiği için, uygulamanın yılda en az bir kez bakım görmesi gerekir; bu bakım kapsamında planlanır.
Bu alandaki tecrübenizi nerede görebiliriz?
Kendi girişimimiz Otomiks, aynı yaklaşımla geliştirildi: tek bir sunucu çekirdeği, web arayüzü ve React Native ile geliştirilen iOS ve Android uygulamaları. Ürün üç platformda da canlıda ve sunucu, web ve mobil tarafının tamamı bizim tarafımızdan geliştirilip işletiliyor. Projenin ayrıntılarını projelerimiz bölümündeki Otomiks sayfasında bulabilirsiniz.