Uygulama fikrini konuşmaya başlayan hemen herkesin ilk sorularından biri şudur: iPhone için mi yapalım, Android için mi? Bu soru eskiden bütçe açısından çok kritikti, çünkü her platform ayrı bir ekip ve ayrı bir geliştirme demekti. Bugün tablo değişti. Yine de doğru kararı vermek için önce müşterinize, sonra bütçenize ve uygulamanın ne yapacağına bakmanız gerekir. Bu yazıda bu üç konuyu sırayla ele alıyoruz.
Önce müşterinizin elindeki telefona bakın
Türkiye'de telefonların büyük çoğunluğu Android ile çalışır; iPhone kullanıcılarının payı daha küçüktür. Ancak bu oran kitleden kitleye değişir ve sizin müşterileriniz genel ortalamaya benzemeyebilir. Müşterilerinizin hangi telefonu kullandığını tahmin etmek yerine ölçebilirsiniz. Web siteniz varsa ziyaretçi istatistiklerinde (örneğin Google Analytics) cihaz ve işletim sistemi dağılımı görünür. Bu dağılım, uygulamanızın kime ulaşacağına dair elinizdeki en güvenilir ipucudur. Web siteniz yoksa sosyal medya hesaplarınızın istatistikleri ya da müşterilerinize soracağınız kısa bir soru da fikir verir. Uygulamanın kime hizmet edeceği de kararı etkiler. Müşterilerinize yönelik bir uygulamada iki platformda birden bulunmak kimseyi dışarıda bırakmamak demektir. Sipariş ya da randevu gibi düzenli kullanılan bir hizmette “uygulamanız benim telefonumda yok” diyen her kişi, kaybedilmiş bir müşteri olabilir.
Tek kod tabanıyla iki platform nasıl çalışır?
Eskiden iPhone uygulaması Apple'ın, Android uygulaması da Google'ın kendi araçlarıyla ayrı ayrı yazılırdı. Buna her platform için ayrı (yerel) geliştirme denir. Bugün Flutter ya da React Native gibi araçlarla uygulama bir kez yazılır ve iki platformda da çalışır. Ekranlar, iş kuralları ve sunucuyla iletişim tek yerden yönetilir. Bir hatayı düzelttiğinizde ya da yeni bir özellik eklediğinizde değişiklik iki telefonda birden geçerli olur. Her platform için ayrı test ve mağaza hazırlığı yine gerekir, ama işin büyük bölümü ortaktır. Bu yaklaşımın en büyük faydalarından biri bakımda ortaya çıkar. İki ayrı uygulamada her güncelleme iki kez yapılır ve uygulamalar zamanla birbirinden farklılaşabilir. Tek kod tabanında ise iki platformdaki kullanıcı aynı özellikleri aynı anda görür. Yine de tek kod tabanı her şeyi tek seferde çözmez. Örneğin kendi ürünümüz Shutli, iPhone ve Android'de tek kod tabanıyla çalışır; iPhone'daki ana ekran bileşeni ve kilit ekranındaki canlı skor gibi özellikler ise platforma özel ek çalışma gerektirir. Bu tür ayrıntılar kapsam konuşulurken netleşir ve teklifte ayrıca yer alır.
Hangi durumda tek platform yeterli olur?
Bütçe sınırlıysa akla gelen ilk çözüm tek platformla başlamaktır. Bu bazen doğru bir karardır. Ancak tek kod tabanıyla ikinci platformun maliyeti eskisi kadar yüksek olmadığı için önce iki seçeneğin teklifini yan yana görmek iyi olur. Fark küçükse iki platformla başlamak, kitlenizin bir bölümünü baştan kaybetmenizi önler. Tek platformun gerçekten mantıklı olduğu durumlar genellikle şunlardır:
- Uygulamayı yalnız kendi ekibiniz kullanacaksa ve ekibinizin telefonları aynı türdense, o platform yeterlidir.
- Fikrinizi denemek istiyorsanız ve kitlenizin büyük bölümü tek platformdaysa, ilk sürümü orada başlatıp sonra genişletebilirsiniz.
- Uygulamanız yalnız bir platformda bulunan bir özelliğe dayanıyorsa seçim zaten o platformdur.
- Kitlenizi ölçtüyseniz ve dağılım belirgin biçimde tek tarafa yığılıyorsa, ikinci platformu sonraya bırakmak bütçeyi rahatlatır.
- Bütçeniz yalnız bir platforma yetiyorsa, iki platformu yarım yapmaktansa birini eksiksiz yapmak daha doğrudur.
Ayrı geliştirme ne zaman gerekir?
Kamera, sensörler ya da grafik işleme gibi telefon donanımını çok yoğun kullanan ve en küçük performans farkının bile önemli olduğu uygulamalarda her platform için ayrı geliştirme tercih edilebilir. Yoğun grafikli oyunlar ve bazı özel donanım uygulamaları bu gruba girer. Bu durumda her platform için ayrı uzmanlık gerekir ve bakım da iki ayrı uygulama üzerinden yürür. Sipariş, randevu, sadakat, katalog ya da saha uygulaması gibi işletmelerin çoğunlukla ihtiyaç duyduğu uygulamalarda ise tek kod tabanı hem bütçe hem bakım açısından genellikle daha mantıklıdır. İki yaklaşım birlikte de kullanılabilir: uygulamanın büyük bölümü tek kod tabanıyla yazılır, yalnız gerçekten gereken bir bölüm platforma özel olarak geliştirilir. Araç seçiminin uzun vadeli bir karar olduğunu da unutmayın. İleride ekibinizi değiştirmek isterseniz o araçta deneyimli geliştirici bulabilmeniz gerekir. Flutter ve React Native yaygın kullanıldığı için bu konuda genellikle sıkıntı yaşanmaz.
