Blog

Flutter Uygulama Geliştirme – GetX

Uzun yıllardır mobil uygulamaları native (android-java,ios-swift) dilinde yazan biri olarak bu konuya daha derinlemesine eğilmek istedim.

Önceki yazılarımda mobil uygulama geliştirirken flutter’ın avantajlarından bahsetmiştim. Bu yazıda biraz daha teknik bilgilere yer vereceğim.

Flutter’ı mobil uygulama platformu olarak seçtiğimizi düşünerek aşağıdaki sorulara cevap arayacağız.

  1. Flutter da nasıl bir mobil uygulama çatısı kullanmalıyız?
  2. Kullandığımız kütüphaneleri nasıl seçmeliyiz?
  3. Flutter ile Geliştirme yaparken nelere dikkat etmeliyiz?

1.Flutter da nasıl bir mobil uygulama çatısı kullanmalıyız?

Flutter da en önemli konularda biri state management konusu. Öncelikle state management derken yönettiğimiz değikkenlerden ve ekranı güncellerken kullandığımız yazı, sayı , liste gibi değişkenlerin yönetiminden bahsediyoruz. Bu konuda izleyeceğiniz birçok yöntem var. Ben son zamanlarda Getx ile bu yönetimi yapıyorum ve oldukça başarılı buluyorum.

https://pub.dev/packages/get

SetState, provider, reddux, mobx, bloc gibi yönetemler diğer yöntemler ama Getx seçmemizin sebebi hem performans hem de Getx in sadece state management işini kolay yönetmesi değil aynı zamanda bir mikro framework(çatı) olması. Bu sayede güzel bir yapı kurabiliyorsunuz uygulamanıza. Getx i daha detaylı anlatmak için sayfalarca yazmam lazım ama burada sadece tavsiye veriyorum o yüzden çok uzatmayacağım. Getx i daha detaylı inclemek isteyenler zaten araştırabilir ancak Getx ile nvaigation bar ve drawer içeren güzel bir çatı örneği hazırladım sizler için. Aşağıdaki sayfadan bunu inceleyebilirsiniz.

https://github.com/balabanferhat/FlutterGetXWithNavigation

2.Kullandığımız kütüphaneleri nasıl seçmeliyiz?

Flutter da birçok kullanabileceğiniz hazır kütüphane ve widget mevcut. Flutter UI tamamen iç içe oluşan widget lardan oluşuyor ve seçeceğiniz kütüphaneler ile bu widget ları zenginleştirebiliyorsunuz. Bu seçimleri yaparken ne kadar like almış, puan almış buna göre sıralayıp inceleyebilirsiniz.

https://pub.dev/packages?sort=top

Herhangi bir kütüphane içine girince örnekleri nasıl kullanacağınızı anlatıyor ama şu bilgiler kütüphane ne kadar güvenilir onu söylüyor bize. Pub points gerekli açıklama dokümantasyon puanı anlamına geliyor.

3.Flutter ile Geliştirme yaparken nelere dikkat etmeliyiz?

Performansa dikkat etmek çok önemli. Hangi framework ü yada küttüphaneyi kullanırsanız kullanın bazı şeyler arka planda sürekli açıldıkça memory de yer kaplıyor ve uygulamanız kullanıldıkça yavaşlamaya başlıyor olabilir. Örneğin Getx bunları iyi yönetsede üst üste sayfa açtığınızda ve arkada bu sayfalar açık kaldığında GetxControlller larıda açık kalıyor olabilir. İşiniz biten sayfaların kapanması için sonraki ekrana giderken önceki ekranın kapanmasını sağlayabilirsiniz bu şekilde.

Get.off(NextScreen());

Bir diğer konuda yazılan kodun belli aşamalarında android de çalışıyorsanız ios a ve ios da çalışıyorsanız android e mutlaka bakılması gerekiyor. Bu yüzden ben Flutter developer için mac bilgisayarda çalışılmasını gerekli görüyorum. Bu iş sonraya bırakılırsa bu duruma iş işten geçtikten sonra tüm kodu diğer platformda çalışması için elden geçirrmeniz gerekebilir. Ayrıca ios android arasında UI farklılıkları da çok oluşuyor. Ufak kaymalar bozulmalar oluyor bunları da anında düzelterek gitmek çok daha sağlıklı olacaktır.

Hepinize iyi kodlamalar. 🙂


Mobile developer hayatı kolaylaşıyor

Uzun sürelerdir native mobil uygulama geliştiren bizler artık daha rahat edeceğimiz günlere sanırım geldik. Uzun zamandır android ayrı ios ayrı projeler geliştirip belirli sıkıntılar ile uğraştık. Hem projelerin süreleri uzadı, kimi zamanda android ve ios u benzer ve aynı kalitede olması için uğraşıldı.

Şimdi ise flutter ile yeni bir dönem başlamış görünüyor. Aslında google tarafından 2017 de kullanıma sunulmuş olsada google daha uzun süredir kendi uygulamalarında bu yapıyı kullanıyor ve android ve ios geliştirmelerini tek bir platformada yapıyordu. Tabi tüm dünyanın kabulu o kadar kolay olmadı. Fakat mobil uygulama geliştirmeye kazandırdığı hız , pratiklik, performans gibi faydalar anlaşıldıkça firmalar ve yeni girişimler flutter’ı kullanarak mobil uygulama geliştirmeye başladı.

Dünyada bilinen ve flutter kullanan bazı markalar:

  1. Google: Google Assistant apps, Google Ads, Google’s Stadia
  2. eBay: eBay Motors app
  3. BMW
  4. Alibaba Group: Xianyu app
  5. The New York Times: Ken Ken puzzle
  6. Square: Flutter plugin for In-App Payments SDK
  7. Tencent: AITeacher, DingDang, QiDian, Mr. Translator, K12, Now Live
  8. Groupon: Groupon Merchants
  9. MGM Resorts apps
  10. Philips Hue
  11. Reflectly
  12. Baidu Tieba

Eminiz daha çok var ama bunlar bilinen bazıları.

Flutter ile geliştirilen uygulama çıktısı, eskiden android ve ios ayrı ve native yazılan ile aynı çıktıyı üretiyor. Yani sonuç native uygulama.

Şahsi görüşümü soracak olursanız ben çok sevdim. En çok sevdiğim hızlı geliştirme ve bir önceki projede yaptığınız birçok şeyi bir sonraki projede çok rahat kullanabiliyor olmanız. Flutter UI, widget dediğimiz küçük ve ortak kulllanılabilen bileşenlerden oluşuyor. Zaman içinde widget kütüphaneniz oturuyor veya bu hazır kütüphaneleri çok rahat bulabiliyorsunuz arayarak. Bu açıdan widget larınız elinizdeki silahlarınız diyebilirim.

Ayrıca hazırlanmış Getx ve Dio gibi flutter kütüphaneleri işinizi oldukça hızlandırıyor.

Bir diğer artı ise bence ui setler. Bilmiyenler için bahsedeyim, bir app e başlamadan önce tasarım yapılması gerekiyor. Ancak bu çok sancılı bir süreç. Bir tasarımcı ui tasarımı için 1 ay kadar vakit harcayabiliyor. Bu iş bittikkten ve tasarım onaylandıktan sonra tasarımcı bu hazırladıklarını yazılımcılar ile paylaşıyor ve yazılımcılar bu tasarımı 1-1 yapmaya çalışırken de nerden baksanız 1 ay kaybediyor. Bence flutter ui setleri alınarak ve app i yapmak isteyen kişi ile el sıkışarak (yani bu ui sete uygun app yapılacak noktasında) bu tasarım bu ui setin örnekleri ile bir prototip olarak flutter da yapılabilir. Bu sayede daha agile bir yöntem ile iş hemen yapılmaya başlanmış olur ve bu sayede aylar kazanılabilir.

Flutter ile bir app yapısı nasıl olmalı konusunda bana danışabilirsiniz. Sorularınız olursa en kısa zamanda cevaplamaya çalışırım.


Mobil Uygulama Maliyet Hesaplaması

Herkese merhaba. Sürekli değişen ve en çok sorulan mobil uygulama fiyatları ve maliyet hesaplaması ile ilgili tekrar yazı yazma ihtiyacı hissettim.

Daha önceki bir yazımda (buradan ulaşabilirsiniz) bu işin mantığından bashetmiştim. Bu yazıyı da okumanızı tavsiye ederim.

Bu yazıdan sonra tabi uzun zaman geçmiş. Malum döviz kurundaki artış ve TL deki değer kaybı ile mobil uygulama geliştirme adam/gün ücretlerinde de ciddi artışlar oldu.

Bir mobil uygulama yaptırmak için neye ihtiyacınız var , ne kadar maliyet olur fiyatları nelerdir bu yazımda bunlara tekrar değineceğim.

Öncelikle tek platform için yazdığımız bu yazıyı hem ios hem android için düşünebilirsiniz. Sebebi de her iki platformda iş yükünün hemen hemen yakın olmasındandır. Eğer flutter/react native gibi tek bir platformada mobil uygulama geliştiriyorsanız o zaman tek maliyet düşünebilirsiniz.

Özetle, android/ios ayrı ise x2, flutter/react native ise x1 olarak düşünebilirsiniz.

Mobil uygulama fiyatını hesaplamak için öncelikle işi parçalara ayırmak gerekir.

Aşağıdaki örnek maliyetler tahminen 1 ay sürecek normal ölçüde bir mobil uygulama geliştirme için hesaplanmıştır.

Başlamadan önce şunu belirteyim. Sizin 5000 TL bütçeniz olabilir. Bu bütçe ile işi yapacak bir ekip yada kişi bulabilirsiniz. Ancak her kalitenin her çalışan kişinin bir adam/gün maliyeti vardır ve plansız ve hakkını ve karşılığını tam vermediğiniz ürünün sonucu da kötü olacak veya ardından çıkan hatalarda destek alamayacaksınız , veya kod kötü ve baştan savma olabilir. Ben bu konuda uyarmayı bir borç biliyorum kendime. Bu tip durumlar çok gördüm. Biz birine bir iş yaptırdık ama bıraktı gitti bize yardımcı olurmusunuz. Kodu inceleyince ne kadar çok hatalı olduğunu görünce şaşırıyorsunuz. Sanki yapan kişi yapmak istememiş ve istemeyerek paraya da ihtiyacı olduğu için işi de kabul etmiş. Bu yüzden şunu unutmayın ne kadar ekmek o kadar köfte gibi özetleyebiliriz konuyu.

Aşağıdaki adam/gün fiyatları işin hakkını vererek 2020 yılında 1 ay sürecek bir mobil uygulama geliştirme fiyatlarıdır.

1 -Mobil Uygulama Tasarım Fiyatları

Tasarım aşamasında yapılacak işin büyüklüğüne kaç ekran olacağına , ne kadar profesyonel olması gerektiğine göre değişkenlik gösterir.

Bir yazılımcıya sadece mockup yani ekran taslak çizimleri vererek bu taslakdan yola çıkaran ui bileşenlerini kullanarak yol almasını isteyebilirsiniz. Bu durumda tasarım maliyetiniz olmayacak ama karşınıza çıkan ekranlarda görsel olarak sizi tatmin etmeyebilir. Burada iş yazılımcının kabiliyetine kalıyor aslında. Çok güzel birşey de ortaya çıkarabilir eğer çok görsel içeren bir uygulama olmayacak ise yeterli birşey yapabilir.

Ancak splash ekranından başlayarak her ekranın nasıl olması gerektiğini çalıştıracak ve ui (kullanıcı arayüzü) ve ux (kullanıcı deneyimi) düşünerek ekranların çalışılmasını ve nihai ürünün ne olacağını bilmek istiyor ve süpriz ile karşılaşmak istemiyorsanız bu durumda tasarım süresi ve adam/gün maliyeti üzerinden giderek bir hesaplama yapabilirsiniz.

Diyelim 10 gün sürecek bir tasarım çalışması var. Maliyet hesaplamasını adam/gün üzerinden yaparsak:

Adam gün ücreti 400 – 800 civarında ve değişkenlik gösterebilir. Biz burada 600 alalım. 600 x 10= 6000 TL bir tasarım maliyeti çıkacaktır.

2 – Mobil Uygulama Yazılım Fiyatları

Yazılım fiyatları da aynı tasarımda olduğu gibi iş yükü ekranlara göre çıkartılarak yapılır.  Burada her ekran düşünülerek kaç gün süreceği çıkartılır. Yazılımcı maliyetleri düşünüldüğünde ve işi hakkını vererek yaptırmak istediğiniz iyi bir yazılımcı için adam/gün ücretleri 600-1000 TL arasında değişkenlik gösterebilir.

Biz burada 800 TL den hesap yapalım.

800 x 20 iş günü = 16.000 TL çıkacaktır. (Android/iOS ayrı yazılıyorsa x2 düşünelim)

Not: Android/ios ayrı olunca maliyet çok çıkıyor. O zaman neden hep Flutter gibi tek platformda mobil uygulama geliştirmiyoruz ? Bu soruyu duyar gibi oldum bir anda. Bu durumda son yazılarımdan Flutter tecrübelerimi lütfen okuyun. Özetle evet Flutter gayet başarılı buldum ama bazı riskleri de yok değil.

3 – Mobil Uygulama Backend/Admin Paneli Yazılım Fiyatları

Şunu unutmamak lazım. Bazı durumlarda işe ait backend olmak zorundadır. Aslında tamamen cihazda çalışacak local bir uygulama yapmıyorsanız bu durumda backend servisleri ve admin paneli ihtiyacınız da olacaktır.

Tüm bunlar içinde 20 gün dersek, adam/gün ücreti de backend yazılımcısı için hemen hemen aynıdır.

Maliyet 800 x 20 iş günü = 16.000 TL çıkacaktır.

4 – Mobil Uygulama Devreye alım ve destek

Mobil uygulama yaptırma işi tamamlandıktan sonra uygulama test edilip yayına alınır. Bu aşamada işimiz bitmiyor. Genelde sizlere tavsiyem anlaşacağınız yazılımcı yada firma ile sözleşme yaparak ilerlemeniz. Çünkü yayına aldıktan sonrada bazı hatalar ve eksikler olduğu ortaya çıkabilir. Ne kadar iyi test yapılıp işi teslim alsanızda store a çıktıktan sonra tüm kullanıcıların farklı cihazlar ile yapacağı kulllanım gibi test yapamazsınız. Sadece en iyi testler buna yaklaşabilir ama aynı olmaz. Bu nedenle sözleşmenizde mutaka en az 6 aylık ücretsiz bakım ve destek isteyebilirsiniz. Yapılacak çalışmaya göre tabi bu 6 ay , 3 ayda olabilir ama 3 ayda az olmamasında fayda vardır. Tavsiyem minumum 6 aydır. Çünkü uygulama 3 ayda belli bir kullanıcı sayısına ulaşamayabilir. Bu tabi yapacağınız tanıtım/reklam ile orantılıdır.

Peki bu süre geçtikten sonra ne olacak? Bu durumda da toplam proje bütçesinin %10 – %20 si arasında değişen yıllık bakım ücretleri devreye girecektir.

Örneğimizde;

Android/iOs ayrı ve backend olmayan proje için maliyet

Tasarım – 6.000 TL
Android. – 16.000 TL
iOS – 16.000 TL
TOPLAM MALİYET: 38.000 TL
YILLIK BAKIM DESTEK(%15) : 5.700 TL.

Android/iOs aynı (Flutter/React Native) ve backend olmayan proje için maliyet

Tasarım – 6.000 TL
Android/iOS. – 16.000 TL
TOPLAM MALİYET: 22.000 TL
YILLIK BAKIM DESTEK(%15) : 3.300 TL.

Bu bakım destek kapsamında sözleşmenizde sonradan çıkabilecek hataların giderilmesi, yeni çıkan kütüphane ve sdk ların projede güncellenmesi, yeni cihaz ve sürümlerin yaratacağı sıkıntıların giderilmesi ve hata raporlarının belli aralıklar ile takibi ve raporlanması olmalıdır. Unutmamalıdır ki bir uygulama yaşayan bir canlı gibidir. Sürekli bakıma ve desteğe ihtiyaç duyar. Bunun sebeplerinden biri de teknolojinin sürekli değişmesi ve eskiden kullanılan bazı kütüphanelerin atıl kalmasıdır. Uygulama geliştirildiği platformda tekrar açılmalı , gerekli güncelleme ve testler tekrar yapılarak store a güncelleme olarak gönderilmelidir. Bu tip güncellemeler ortalama 4-5-6 ayda bir veya uygulamada bazı buglar tespit edilmiş ise onlar ile beraber store a çıkarken yapılabilir.

Özet;

Aşağıdaki fiyatlar işi yapacak ekip/kişi ile anlaşmanıza göre 6 veya 12 taksit şeklinde olabilir. Bu fiyatlar peşin ödenecek gibi sakın düşünmeyin. Hatta peşin ödememek sonuç aldıkça ödeme yapmak kesinlikle daha iyi olacaktır. 12 taksit yapılınca işe başlarken sadece maliyetin 1/12 sini verip işe başlatmanız mümkündür. Tabi şahıs/ekip bu şartları kabul ederse. Etmiyorsa zaten sizde onlar ile çalışmak zorunda değilsiniz. Önemli olan makul bir ödeme planı yapmak ve aşama aşama ilerlemektir.

BACKEND olan durumda:
Android/iOS ayrı
olursa toplam ilk sene masrafımız:

38.000(android/iOS/Tasarım) + 16.000 (Backend) + sonraki 6 aylık bakım (8100/2) 4050 TL = 58.050 TL

Sonraki seneler uygulamada ek özellik yada değişiklik istemezseniz 8100 TL destek ve bakım masrafı olacaktır.

Android/iOS aynı (Flutter/React Native) olursa toplam ilk sene masrafımız:

22.000(android&iOS/Tasarım) + 16.000 (Backend). + sonraki 6 aylık bakım (5700/2) 2850 TL = 40.850 TL

Sonraki seneler uygulamada ek özellik yada değişiklik istemezseniz 5700 TL destek ve bakım masrafı olacaktır.

BACKEND olmayan durumda:
Android/iOS ayrı olursa toplam ilk sene masrafımız:

38.000 + sonraki 6 aylık bakım (5700/2) 2850 TL = 40.850 TL

Sonraki seneler uygulamada ek özellik yada değişiklik istemezseniz 5700 TL destek ve bakım masrafı olacaktır.

Android/iOS aynı (Flutter/React Native) olursa toplam ilk sene masrafımız:

22.000 + sonraki 6 aylık bakım (3300/2) 1650 TL = 23.650 TL

Sonraki seneler uygulamada ek özellik yada değişiklik istemezseniz 3300 TL destek ve bakım masrafı olacaktır.

Gördüğünüz gibi iş biraz karışık. Uygulamanızın backend ihtiyacı var mı? Profesyonel tasarım ihtiyacı var mı? Flutter/React Native gibi tek platform da yazılır mı gibi birçok seçeneğe göre fiyat hesaplanıyor. Bu durumda bir uzmana danışmanız ve onunla ilerlemeniz çok önemli.

Son olarak: Teknik Danışman ?

Aynı zamanda sadece seçim yeterli değil. Yazılımı yapan ekip/şahıs denetlenmeli ve kalite kontrol yapılmalı. Paranızı sokağa atmak istemiyorsanız bir danışmandan proje devam ettiği sürece şu konularda destek alabilirsiniz. Bu kalite ve paranızın boşa gitmemesi için çok önemli.

Danışmanlık kapsamı projenin büyüklüğüne göre değişmekle birlikte kapsam genelde şu şekilde oluyor.

1 – Projeye ait kurgunun kontrolü/şekillendirilmesi ve apple/google politikalarına uygunluğu,
2 – Tasarımınız yok ise projeye uygun tasarımın yapılması,
3 – Tasarım sonrası iş planının belirlenmesi,
4 – İşi yapacak ekibin belirlenmesi,
5 – İşin (yazılan kodun) düzgün olmasının sağlanması,
6 – Kodun ve tüm dökümanların yedeğinin alınması,
7 – Kalite kontrol için iyi bir test sürecinin yürütülmesi,
8 – Yazılım yapan ekibe aşama aşama ödemelerin yapılması,
9 – Kısacası kalite güvencesi ve devam eden süreçte yani teslimat sonrası bu kalitenin korunması.

Bu hizmetler için proje büyüklüğüne göre değişen aylık bir danışmanlık ücreti ile anlaşıp yazılımın kaliteli çıktı üretmesi ve sürekli hatalara karşı denetlenip yazılım ekibi ile koordineli çalışma sağlanması danışmanın temel görevi olacaktır.

Hangi ekip ya da şahış ile çalışıyorsanız çalışın bir proje yönetimi ve proje liderine ihtiyacınız bulunuyor. Hiçbir ekip ya da şahıs bilen biri tarafından denetlenmiyorsa düzgün ve kaliteli bir iş çıkaramayabilir. Bunu garanti etmek için bu danışmanlık şart görünüyor. Yoksa projeniz için üretilen çıktılar ve harcanan para boşa gidebiliyor.

Umarım bu konuda detaylı ve faydalı bir yazı olmuştur. Bir sorunuz olursa buradan yorum bırakabilir veya iletişim bölümünden benimle irtibata geçebilirsiniz.


Flutter ile mobil uygulama geliştirme

Bu yazımda flutter tecrübemden ve bunun sonucunda mobil uygulama geliştirirken flutter kullanmalımıyız bundan bahsedeceğim

Flutter önceki yazılarımda da bahsetmiştim Google’ın mobil uygulama geliştirmek için tek bir platforma mobil uygulamayı geliştirmeye imkan sağlayan platformunun adı diyebiliriz. Flutter aslında google ın çok eskiden beri kullandığı Dart programlama dilini kullanıyor. Flutter hakkında geniş bilgiyi https://flutter.dev/ den edinebilirsiniz.

Şimdi gelelim çok samimi eleştirilerime;

Öncelikle flutter ile mobil uygulama geliştirmek zevkli ve heyecan verici. Özellikle başlarda. Hem android hem ios için aynı anda kod yazmak çok güzel. Bir taşla 2 kuş vurmak tam buna denir. Google’ın yani flutter ın sunduğu şey standart android ve ios da yapılan herşeyi burada da yapabiliyor olmanız.

Sistem aslında dart dosyalarından oluşuyor. İlk olarak çalışan bir main.dart dosyanız var ve bu dosya içinde geliştirmeye başlıyorsunuz. Temel olarak her screen için bir dart dosyası oluşturarak ilerleyebilirsiniz. Tasarımınızı ve business logic dediğimiz iş yapan kodlarınız herşey bu kod içinde bulunabiliyor. Zaman içinde sisteme aşina oldukça tekrarlayan kodlarınızı class mantığında ayrı dart dosyalarınıza koyup oradan çağırıyorsunuz.

Bu yazımda aslında flutter ile nasıl mobil uygulama geliştirilir den daha çok ne gibi sıkıntılar yaşadım ondan bahsetmek istiyorum daha çok. Çünkü flutter development zaten her yerde anlatılıyor. Ancak bu flutter ı kullanmalımıyım o konuda net çok fazla şey yok.

Öncelikle çok dikkatli olmalı ve yazdığınız her kodu hem android hem ios da her aşamada test etmelisiniz. Bazı kütüphaneler birbiri ile çakışabiliyor ve siz android de işin sonuna kadar geldiğinizde ve ios a baktığınızda bir türlü ios derleyemediğiniz bir konumda kendinizi bulabilirsiniz. Bu çok üzücü ki herşeyi baştan neden ios da çalışmıyor diye ele alamanız anlamına geliyor. Yani aslında tek yerde yaz ikisinde de sıkıntısız çalışsın diye bir durum yok malesef. Özellikle pubspec.yaml yani projenin kullandığı kütütphanelerin dosyasına dokunuyorsanız her seferinde fluttter clean yapıp sonra xcode build yapılması için flutter run ı ios sumulator için çalıştırmanızda fayda var. Nedense flutter geliştirenler önce android de yapıp en son ios build almaya çalışıyor ama bence beraber olmalı. İşte bu yüzden de sürekli bir mac de çalışmanız ihtiyacı ortaya çıkıyor.

Tabiki tek developer avantajı bulunsada bence flutter developer ios uygulama geliştirmedende android uygulama geliştirmeden de biraz anlıyor olması lazım. Ios – Xcode da çıkan problemleri çözmesi gerektiği kadar android de çıkabilecek sorunları da çözebiliyor olması lazım. Google, Android Stuidio ile de Flutter kod yazımını destekliyor olması ve Android konusunda öncü olmasından mıdır bilmem ama Android derlemelerinde pek sorun yaşamadım. Ancak Ios konusunda ios kod geliştirme konusunda sıkıntım olmamasına rağmen burada Xcode build lerde çok uzun süre beklemeler, tıkanmalar, donmalar ve hatalar ile karşılaştım. Özellikle pod install süreçlerinde çakışmalar ve kütüphanelerrin uyumsuzlukları gibi sorunlar insanı çileden çıkarıyor.

Son olarak şu görüşe vardım. Basit ve çok kütüphane kullanmadan yapabileceğiniz uygulamalar flutter için biçilmiş kaftan gibi ama gelişmiş ve kritik uygulamalar yapıyorsanız flutter da aldığınız bir hatadan dolayı takılıp kalma riskini göze alırmısınız? Ben açıkcası alamam. Ama yinede şans vermenizi tavsiye ederim. Tam olarak gerçek bir uygulama yapmadan da bunu göremezsiniz. Basit bir projenizde şans verin. Farklı görüşleriniz var ise lütfen yorumlarınızı bekliyorum.

Bu yazımı yazarken hala ios un Launching… ini bekliyorum. Nerde tıkandı yine neden tıkandı belli değil. Yeni sıfır bir proje açıp run dediğinizde ne güzel çalışıyor oysa ki…


Mobil Uygulama Geliştirme Kolaylaşıyor Mu?

Daha önceki bir yazımda Flutter dan bahsetmiştim. Son zamanlarda detaylı inceleme ve birkaç uygulama yapma şansım oldu. Oldukça beğendiğimi ve sıkıntı yaşamadığımı ama öğrenim sürecinin eski yöntemler ile native mobil uygulama geliştirenler için çokda kolay olmadığını belirtmek isterim. Genel olarak tüm dünyada Flutter a karşı güven artıyor. Daha önce bu tarz bir güveni ben React Native e karşı hissetmemiştim. Plugin bağımlılığı ve yaşanan sıkıntılar bizi soğutmuştu ve tamamen ios için XCode da Swift dilince ve Android için Android Stuidio da Java veya Kotlin dillerinde yazıyorduk. Uzun zamandır bu şekilde devam ediyor ancak sıkıntımız işin bu şekilde çok zor olmasıydı. Her projede Android ve Ios u baştan yazmak hem kaynak dolayısı ile maliyet hem de uygulamaların farklı ellerden çıkmasında dolayı bazı farklılıklar oluşmasına sebep oluyordu. Şöyle örnek vereyim Android hızlı gidiyorsa Ios onu bekliyor yada özellik olarak biri diğerini geçebiliyordu.

Son zamanlarda tasarım aracı olarak Figma kullanıyoruz. Şimdi size eskiden veri devam eden tasarımdan canlıya alıma kadar süren bu yöntemi kısaca göstereyim.

Eski Yöntem – Android ve Ios Ayrı

Süreci görüyorsunuz. XCode ve Android Studio aşamasında mobil uygulama yazılımına başlandığında uygulamayı yazanlar yan yana dahi otursa sonuçların ne kadar farklı olduğuna defalarca şahit oldum. Ayrıca her mobil uygulama yazılımcısının eski yaptığı işlerden bir kütüphanesi, işi hızlandırmak için bazı ekran tasarımları, kod yapıları olsada her işte sıfırdan ekranlar uygulamada oluşturuluyor ve uygulama mantığı baştan ele alınıyor.

Flutter’da tek bir ortamda Dart dilinde yazıyorsunuz ve çıktı aynı olmakla kalmıyor üstelik Native e derlediği için performans olarakda bu eski yönteme göre bir eksisi olmuyor.

Şimdi gelin yeni yönteme ve sürecin nasıl işlediğine bakalım.

Yeni Yöntem – Flutter – Android Ios Tek Yerde

Görüyorsunuz bu sefer iş direk aslında maliyet olarak yarıya düşmüş gibi görünüyor.

Benim son zamanda gözlemlediğim aslında böyle değil. Bence yarıdan daha fazla kazanç söz konusu.

Flutter da UI hazırlamak bence mesela XCode StoryBoard da yada Android Studio da layout hazırlamaktan daha kolay. Layout larda değişiklik yapmak ve layout ları kod ile birleştirmekdee Flutter da daha kolay. Dolayısı ile şöyle bir hesap yapabiliriz.

Diyelim bir mobil uygulama yazmanız gerekiyor ve hesap yapmaya başladınız. Kapsamlı bir iş diyelim. 1 ayda yani 20 iş gününde anca ekranları hazırlıyorsunuz. 2 ay yani 40 iş günüde yazılım sürecek. Bu Android ve Ios için genelde aynı çıkar.

Sonuçta

Android toplam 60 iş günü
Ios toplam 60 iş günü.

Genel Maliyet buradan hesaplanır ve 120 birim maliyet çıkar.

Flutter da ise bir baktınız aslında ekranlara 20 değil 15 günde hazırlanabilecek gibi ve kod açısından da 40 iş günü değil 35 iş gününde halledebiliyorsunuz. Bunun daha az zaman aldığını Flutter da biraz ilerledikten sonra göreceksiniz. Belki bundan bile daha az zaman alacak ama ben şimdilik bu şekilde yazdım.

Sonuçta Flutter da

Android+Ios toplam 50 günde işi bitirebiliyoruz.

120 günden 50 güne düşürmek hem maliyet hem zaman açısından uygulama geliştirenlere ve girişim amaçlı fikrini hayata geçirmek isteyenlere kolaylık sağlayacak diye düşünüyorum.

Ben standart iş yapan birçok projede bunu artık tavsiye ediyorum. Ancak bazı projeler vardır ki o projeler direk Swift yada Kotlin/Java değil dahada native C de yazmanız gerekir. C. de yazılan kodu derler Swift veya Java dan çağırırsınız. Bu tip çok ileri seviye bazı projelerde Flutter tavsiye etmeyebilirim. Ama uygulamaların %99 u zaten bu tarz uygulamalar değil. Düşünsenize Google ın tüm mobil uygulamaları çok uzun zamandır Flutter da geliştiriliyor. Arayüz ve performans olarak ne kadar iyi sonuçları var hepimiz kullanıyoruz günlük hayatta bu uygulamaları. Örneğin tüm dünyada 50 milyon kullanıcısı olan Alibaba tüm uygulamalarını Flutter’a geçirdi ise bizler, bu dünya devleri bunu tercih ediyorsa, neden bir şans verip Flutter kullanmayalım. Ben denemeler yapmadan yada gerçek uygulamalar geliştirmden böyle önerilerde bulunmam. O yüzden tüm çalışmalarımı yaptıktan sonra sizlere bunları yazmak istedim.


Mobil uygulama ile beraber web sitesi ve web uygulaması da gerekli mi?

Herkese merhaba,

Bu konu çok sorulduğu için değinmek istedim. Çünkü web uygulamasının artıları olduğu gibi eksileri de var aslında. Bunları bir uygulama yaparken düşünmek lazım.

Önce artılarından bahsedilim ya da neden web tarafına ihtiyacımız var. Yapacağınız uygulamaya göre tabi değişir ama uygulamanın bir tanıtım sayfası, hakkında, gizlilik ilkeleri ve kullanıcı sözleşmesi gibi sayfaların bulunduğu bir web sitesine ihtiyaç duyacağız zaman zaman. Sebebi de bu bilgilerin artık google ve apple tarafından isteniyor olması. Uygulamaların gizlilik ve sözleşme sayfaları yok ise olumlu karşılanmıyor ve mobil reklamlar kısıtlanabiliyor ya da kaldırılabiliyor uygulamanızdan. Apple ve Google bunları kullanıcılarını korumak ve app hakkında ne haklara sahip bilmek için istiyor.

Tanıtım sitesi yapmak dışında mobil uygulamanızın tüm özelliklerini içeren bir web uygulaması yapıp yapmama konusunda kararsız kalıyorsanız şunları düşünerek karar verebilirsiniz.

Mobil uygulamada reklamdan gelir elde etmek istiyorsanız web tarafının olması bu gelirinizi bir miktar düşürebilir. Web sitesine gelen kullanıcıları mobil uygulamayı indirmeye yöneltmek daha iyi bir çözüm olabilir. Ancak büyük çaplı ve ya global bir uygulama yapıyorsanız bu durumda her platformda hizmet sunmak için web uygulaması da düşünebilirsiniz. Çünkü burada amaç reklamdan daha çok kullanıcılara en iyi hizmeti her kanaldan vermek olacaktır.

Web sitesini yapmayı benim tavsiyem sona bırakın. Eğer yapacaksanız işleri fazlandırın. Backend oturduktan ve uygulamalarınız hayata geçtikten sonra da web sitesi yapıp yapmamaya her zaman karar verebilirsiniz.

Bazı durumlarda ise web den başlamak ve android/ios u sona bırakmak tercih sebebi olabiliyor. Bu genelde eldeki imkanlar ile de alakalı tabiki. Önce bir yapı otursun belli şeyleri tecrübe edelim, şu anda elimizde web yazılımcısı mevcut buradan başlayalım gibi konulardan dolayı web öne çıkarak mobil uygulamalar sona bırakılabiliyor.

Ben hangisi önce ya da hangisi sonra buna şu iyidir demek istemiyorum. Bu konuda kesin bir karar yok ancak mobil uygulamalardan başlamak da bazen daha maliyetli olabiliyor. En iyisi yapacağınız işin hedef kitlesine göre hareket etmek tabiki. Kullanıcılar en çok hangi kanaldan gelecek bunu düşünerek bir karar vermek en doğrusu.

Umuyorum bir miktar faydalı olmuştur yazdıklarım. Sorularınız var ise bu konu ile alakalı bu sayfanın altındaki yorum kısmına yazabilirsiniz. Her soruyu en kısa sürede cevaplamaya çalışıyorum.