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.


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…


Native ama hızlı mobil uygulama geliştirme(React vs Flutter)

Merhaba,

Hybrid vs Native arasındaki farkları anlatmıştım. Artık hybrid deki kötü performansı kimse istemiyor bunda hemfikir olduğumuzu sanıyorum. Bu yazımı okumayanlar buradan okuyabilir.
https://ferhatbalaban.com/hybrid-vs-native/

Bu yazımda native mobil uygulama yaparken nasıl daha hızlı yaparız konusuna değineceğim.

Biliyorsunuz native app , yada bilmeyenler için kısaca anlatayım 🙂 , android uygulaması android studio da Java yada Kotlin dilleri ile yazılırken, Ios uygulaması ise Xcode da Swift yada Objective-C ile yazılıyor. Son zamanlarda daha çok swift tercih ediliyor.

Tamam bunda bir sorun yok ama bir uygulamayı yazmak için 1 backend, 1 android 1 ios yazılımcısı gerekiyor ve maliyetler artıyor. Teknoloji artık çok hızlı ilerliyor ve her firmanın, her girişimin bir mobil uygulaması olmaya başladı. Bu nedenden herkes bir arayış içinde.

Native performansı olsun, ancak nasıl daha hızlı hem ios hem android için kod geliştirebilirim?

Herkes bu arayış içinde ve maliyetleri azaltırken aynı zamanda daha hızlı uygulamalar çıkarmak peşinde. Bunun içinde karşımıza ortak bir dilde tek yerde kod yazabileceğiniz ama sonuçta kodu android için ayrı ios için ayrı bir native koda dönüştüren 2 platformdan bahsedeceğim. React Native ve Flutter.

React Native, Facebook tarafından başlatılmış bir proje ve 2015 yılında açık kaynak olarak açılarak herkesin kullanımına sunuldu. O günden bu yana birçok kullanıcı kitlesine ulaştı.

Flutter ise 2017 yılında Google tarafından duyruldu ve kullanımı giderek artıyor.

Şimdi bu 2 mobil uygulama platformunun geleceğinden, farklarından ve biz eğer bir ortak dilde yazıp bu işi yapmak istiyorsak hangisini seçmeliyiz bundan bahsedeceğim.

Öncelikle benim görüşüm şu oldu bugüne kadar. Bu tip ortak dilde yazılan ve sonuçta android ve ios uygulama üreten sistemlere ben biraz uzak durdum ve uzaktan izledim. Mesela react native de yazılmış uygulamalar geldi karşıma ve insanların bazı sorunları kolay çözemediğini ve tıkandığını gördüm. Yeri geldiğinde framework yetersiz kalınca gerçek native ile kod yazma ihtiyaçları ortaya çıktığına şahit oldum. Native de bize basit gelen hataların framework ün kendisinin ayrı bir yapısı olduğundan ve iyi bilinmeyince çözülemediğini gördüm. Ancak dert o kadar büyük ki bu arayış devam ediyor ve bunu gören google da kendisi android i desteklemesine rağmen Flutter ı çıkartarak bu derde bir çözüm sunduğunu göstermiş oldu. Çünkü ios içinde google ın hazırladığı birçok mobil uygulama var ve bu dertden tüm dünya gibi onlarda çekiyor.

Programlama dili olarak React Native, javascript dilini kullanırken (tabi kendine ait bir yapısı ve kuralları var yine frameworkün), Flutter ise Dart programlama dilini kullanıyor. Dart yine Google ın 2011 de geliştirdiği bir dil ve kullanımı çok yaygın değil ama javascript oldukça yaygın. Bu açıdan React Native , Flutter a göre biraz daha avantajlı görünüyor. Buradan React Native e +1 veriyorum.
Sonuç: React 1 – Flutter 0

Teknik altyapı olarak React Native js altyapısına dayandığından ve native e çevirirken biraz köprü vazifesi gören bir sistem üstünden çevirim yapıyor ve kötü performans verebiliyor ancak Flutter kendi içinde hemen hemen tüm native kütüphaneleri barındırdığından native sistem ile haberleşmek için ayrı birşeye ihtiyaç duymuyor. Bu konuda Flutter +1
Sonuç: React 1 – Flutter 1

Kurulum konusunda React Native NPM(Node Package Manager) ile daha rahat kurulurken Flutter bu konuda biraz manuel kurulum aşamasında kalmış. En kısa zamanda iyileştireceklerini düşünsemde React Native bu konuda +1
Sonuç: React 2 Flutter 1

Proje Hazırlığı konusunda Flutter hem android hem ios için daha açıklayıcı bilgilere sahip. Mesela React da IOS dökümantasyonu biraz zayıf. Ayrıca Flutter da yer alan flutter doctor her kontrolü yaparak hazır olup olmadığınızı denetliyor. Bu konuda Flutter +1
Sonuç: React 2 – Flutter 2

UI (Arayüz) ve Development API konusunda ise native bileşenlere sorunsuz ulaşmak çok önemli. React native UI bileşenleri ve bazı native erişim API ı sunsada birçok konuda 3rd party yani dışarıdan eklenen plugin lere ihtiyaç duyuyorsunuz. Herkes kendi en iyi plugin ini yapmaya çalışıyor ya da bulmaya çalışıyor. Başkalarının geliştirdiği bu plugin ler hatalı kalabildiği gibi bir süre sonra destek kesilebiliyor ve projeniz de siz bu plugin i geliştirmediğiniz için zor durumda kalıyor. Flutter da ise kendi içinde ihtiyaç duyacağınız hemen hemen herşey var. Bence bu aslında +3 ve bir yazılımcı için en önemli şey. Hatta benim react native e uzak durmamdaki sebeplerden biri bu. Hadi yinede adil olsun diye bu maddeye de Flutter +1 diyelim.
Sonuç: React 2 – Flutter 3

Geliştirme Hızı konusunda yazılımcı js biliyorsa React Native(RN) de hızlı kod geliştirebiliyor. Js bile çok yazılımcı var ama RN için bence js den daha çok kendi kuralları olduğu için RN bilen kişi aranıyor. Js bilmesi avantaj tabi ama kurallar çok iyi öğrenilmesi lazım. Flutter da ise Dart dilinin öğrenilmesi lazım. Çok zor değil ancak çok yaygın değil. Flutter yaygınlaştıkça bu açığı kapatacak görünüyor ancak şu an için RN +1
Sonuç: React 3 – Flutter 3

Destek konusunda React Native daha önce çıktığı ve daha çok kullanıldığı için daha büyük bir kitle tarafından destekleniyor. Bu konuda yine Flutter geriden gelse de açığı kapatması bekleniyor.
RN +1
Sonuç: React 4 – Flutter 3

Test konusunda React Native de birkaç 3rd party çözüm var ancak Flutter bu konuda kendi içinde çok güzel çözümlere sahip. Cihaza aktarmadan uygulamanızı test tool ları üzerinden deneyip test edebiliyorsunuz.
Flutter +1
Sonuç: React 4 – Flutter 4

Yayına alma konusunda React Native de otomatik çözümler yok ancak Flutter CLI ile build (derleme) ve release (yayına alma) işlemleri yapabildiğiniz gibi Fastlane ile otomatik build ayarları yapabiliyorsunuz. Bunun nasıl yapılacağı güzel anlatılmış. React da da fastlane kullanılabilir ama dökümantasyon konusunda zayıf gibi geldi bana. Sonuç olarak bu konuda Flutter +1
Sonuç: React 4 – Flutter 5

Bakım ve Sürekli Geliştirme konusunda React Native de yine detaylı birşey bulamadık ancak Flutter da bu konuda gerekli bilgiler mevcut ve CLI ile yapılabiliyor. Bu sayede hataları giderip kullanıcılar teste açma , geri bildirim alıp tekrar teste gönderme süreçleri daha hızlı ilerliyor.
Flutter +1
Sonuç: React 4 – Flutter 6

Sonuç olarak iki sisteminde kendi artıları eksiler var. Flutter daha avantajlı görünüyor. Bu konuda ona bir şans vermeyi düşünüyorum. Bazı mobil uygulamaları Flutter ile yapıp denemek lazım. Ancak bu tip framework ler sonuçta Google da geliştirse Facebook da geliştirse bir şekilde bir yerlerde tıkanmanıza yol açabiliyor. İçeride React ya da Flutter bilen yazılımcılar olması gerekiyor. Bu konuya eğildiğinizde ve tüm yazılım dilinizi değiştirmeye başladığınızda sonradan sorun yaşarsanız kötü olabiliyor.

Basit ve sıfırdan yapılacak uygulamalarda bu yöntemlere şans verilirken. Kritik uygulamalar bence hala gerçek ait olduğu yerde yazılmalı. Sonuç olarak hiçbir ara framework gerçek native de yazmak gibi olmayacaktır. Orada ne isterseniz yapacağınız kesinken bu ara tek dilde yazalım framework leri hep bir firmaya birilerine ihtiyaç duyacağınız anlamına geliyor. Örneğin facebook kapanır yada React Native i bırakırsa ne olacak? Çok kritik bir app yapıyorsanız sizde mi bırakacaksınız ya da komple sıfırdan mı yazacaksınız. Ya da Google, Flutter a gerektiği önemi vermez ise?

Ancak şu da var. Şans da vermek lazım. Flutter’ın geleceği parlak gözüküyor. Mesela Alibaba flutter a geçmiş ve çok memnunlar bu video yu izleyebilirsiniz.

Karar vermek zor ancak dediğim gibi basit kurgusu olan bazı app ler Flutter ile yapılabilir. Benim düşüncem bu yönde. Neden bilmem ben React Native e zaten ısınamamıştım sorunlarından dolayı. Şimdi daha heyecanlandım Flutter ile.

Alibaba, Flutter ile 50 milyon üzerindeki kullanıcıya uygulama geliştiriyor.


Mobil Uygulama Geliştirme

Merhaba,

Mobil uygulama geliştirmek isteyenler yada mobil uygulama yaptırmak isteyenler için mobil uygulama geliştirme nasıl oluyor ve aşamaları neler bunları aktarmak istiyorum. Çünkü sürekli sorulan bu sorulara basit ve anlaşılır cevaplar vermek çok önemli.

1 – Mobil Uygulama Geliştirmelerini Kimler Yapar?

Mobil Uygulama bir yazılım firması yada bu işi bilen mobil uygulama yazılımcısı tarafından yapılabilir. Burada kimin yaptığından daha çok nasıl destek alacağınız ve nasıl çalışacağını önemlidir. Genelde freelance mobil yazılımcı olarak çalışanlar ek bir iş olarak bu işi yapabilmektedir ve buda bazı sıkıntıları beraberinde getirir. Freelance sürekli bu iş ile uğraşıyorsa yani bir yerde çalışıp ek zamanında yapmıyorsa sürekli bu işle uğraşıyorsa sorun olmayabilir ancak bu durumda da yaptığı işi yasal yapıyormu , en azından şahıs firması varmı ve referansları sağlam mı sorgulamak gerekir. Eğer bir yerde çalışıyor ve bu işi yapıyorsa o zaman işiniz yapılsa bile devamında destek konusunda sıkıntılar yaşayabilirsiniz. Bir mobil uygulama yapıldıktan sonrada sıkıntı yaşadığınızda bu işi başkasına aktarmak o kadar kolay bir iş değildir. Bu yüzden en iyi çözüm seçtiğiniz firma yada kişi ile devam etmektedir. Ancak bu konuda aktarım yapmak durumunda kalırsanız da bir başka yazımızda anlatacağımız bu yazının konusu olmayan yazımı okumanızı tavsiye ederim. Linki burada daha sonra paylaşacağım.

İş yaptığınız firma yada şahıstan mutlaka bu bilgileri isteyin.

  • Firma yada şahıs referanslarında bulunduğu web sitesi
  • Ne kadar zamandır bu işi yapıyor
  • Hangi yöntemi kullanıyor? (Madde 2 de anlattığım 3 yöntemden biri?)
  • Sonrasında nasıl destek veriyor?
  • Destek vermez ise ne olacak? Bu durumda desteği garanti altına almak için sözleşme yapmanızı şiddetle tavsiye ederim.
  • Tasarım konusunda çözüm sunabiliyor mu? Bunu sizde başka birileri ile çalışarak halledebilirsiniz ancak tek bir yerden tüm hizmetleri almanız daha iyi olacaktır. Bu yüzden bunu mutlaka sorun. Eğer bu konuda hizmet vermiyorsa başka bir çözüm bulmanız gerekecektir.
  • Proje bazlı anlaştınız devamında ek istekleriniz çıktı bu durumda ek istekler için nasıl bir fiyatlama yapıyor. Örneğin adam/gün ücreti nedir. Bir işin kaç gün süreceğini neye göre belirliyor.

2 – Mobil Uygulama Geliştirmesi Nasıl Yapılır?

Mobil uygulama 3 farklı şekilde hazırlanabilir. Günümüzde en çok tercih edilen bu 3 yöntemi ve avantaj dezavantajlarını da başka bir yazımda paylaşacağım bu yazıyı çok uzun tutmamak adına şimdilik bu 3 yöntemden bahsedelim.

2-a – Native Mobil Uygulama Geliştirme:

Native dediğimiz uygulama geliştirme yöntemi aslında Google ve Apple ın önerdiği her platforma yani android e uygun Android Studio da Java yada Kotlin dilleri ile veya Ios için Xcode Uygulamasında Swift yada Objective-C dilinde yapılan geliştirmelerdir. Günümüzde Android için Java , Ios için Swift dilleri daha çok tercih edilmektedir. Kotlin yaklaşık 1 sene oldu aşağı yukarı çıkalı ancak şahsi görüşüm ben ısınamadım bana garip geldi. Java yada Swift i tercih ederim. Eğer projenize sıfırdan başlanacak ise ve ileride yazılımcı bulma konusunda sıkıntı yaşamak istemiyorsanız en çok tercih edilen bu dilleri kullanan mobil yazılımcıları yada firmaları tercih etmenizi öneririm.

Bu aşamadan sonra diğer anlatılan yöntemlere Cross Platform Mobil Uygulama Geliştirme Yöntemleri denir. Cross platform özetle bir ortamda geliştirme yapıp 2 platform içinde uygulama üretebilmektir. Android için ayrı Ios için ayrı kod yazılmaz. Bu maliyet ve zaman konusunda tasarruf etmenizi sağlar. Ancak madem bu kadar iyi neden öyle yapmıyor herkes dediğinizi duyar gibiyim 🙂 Elbette dezavantajları da var. Bunları da yine anlatacağım.

2-b React Native ile Mobil Uygulama Geliştirme:

Facebook tarafından desteklenen bir cross platform. Facebook uygulamasında mesela bu kullanılıyor.

Ancak detaya girmeden daha fazla ingilizce bilenler yada çeviri yaparak bu yazıyı okuyabilirsiniz.

https://medium.com/mop-developers/mobile-app-development-react-native-vs-native-ios-android-49c5c168045b

Özetle şunu söylüyor , facebook uygulamasında da kullanılan bu sistem facebook tarafından bir gün desteklenmez ise ne olacak. Yada facebook react native de çıkan hataları facebook app ini çok etkilemiyorsa 2. öncelik vererek sonraya bırakabiliyor. Yada google ve apple ın yeni çıkardığı bir özellik react native de sonradan yapılabiliyor.

Avantajı ise aynı anda 2 platform içinde mobil uygulama geliştirme yapabilmesi. Bu yüzden çok tercih ediliyor. Yoksa kimse native varken riske girmek istemez yada facebook böyle bir işe soyunmaz.

2-c Cordova ile Mobil Uygulama Geliştirme

Cordova aslında cihaz içindeki browser da çalışan html tabanlı bir uygulama sunuyor. Basit işler için tercih edilebilir ancak native bir uygulama hissiyatı veremiyor. Bu yüzden bence en son tercih edilecek seçenek bu. Bu konuda daha önceki yazılarımu şu linkden bakarak okuyabilirsiniz https://ferhatbalaban.com/tag/cordova/

2-d Soru; Özet;

React native kullanmaya değer mi?  Cevap: Değişir ancak çoğu sorunun cevabı gördüğünüz üzere Native dir.

Sadece ios yada sadece android uygulama mı yaptıracaksınız ? Native
Küçük bir ekibiniz yada kısıtlı zamanınız ve bütçeniz mi var?  React Native.
Çok kapsamlı bir uygulama mı yaptıracaksınız ? Native.
Yaptırdığınız mobil uygulama çok uzun süreler hayatta kalacak mı, Facebook a ya birşey olursa korkunuzu atamıyormusunuz? Native.
Çıkar çıkmaz yeni cihaz özelliklerini desteklemeye ihtiyacınız var mı ? Native.

Genel Özet;

Tüm bu kriterleri değerlendirerek mobil yazılım geliştirme yapacak yada yaptıracak iseniz çalışacağını kişiyi ve çalıştığı platformu iyi değerlendirin. İşiniz için büyük emekler verip paralar harcıyorsanız iyi düşünmek ve iyi bir karar vermek çok önemli diye düşünüyorum. Sorularınız olursa ana sayfadaki iletişim bölümünden benimle irtibata geçebilirsiniz.

 

Saygılar, sevgiler.


Mobil Yazılım Uzmanı

Mobil Yazılım uzmanı, mobil uygulama geliştirme konusunda uzmanlaşmış bilgisayar mühendisi yada programlama bölümlerinden mezun kişilere denir. Aynı zamanda mobil uygulama geliştiricisi, uygulama geliştiricisi, uygulama yazılımcısı , android yazılımcısı, ios yazılımcısı gibi isimleri de vardır.

Bu çok çeşitli isimlendirmelerden dolayı biraz kafamız karışabiliyor. Birde mobil uygulama geliştirme işine bağlı olarak yapılan backend yazılım geliştirme var ona daha sonra değineceğim.

Mobil yazılım uzmanı, android yada ios konusunda ayrı olarak uzmanlaşmış da olabilir. Her ikisinide yapıyor olabilir.

Birde normal uygulamar ile oyun uygulamaları arasında da farklar vardır. Oyun konusunda uzmanlaşmış bir mobil yazılımcı oyun konusunda daha iyi çözümler üretirken, iş yazılımları yada diğer mobil uygulamar konusunda uzmanlaşan bir mobil yazılımcı oyun konusunda zayıf kalabilir.

Eskiden bu kadar çeşitlilik yokken yazılım dünyasında mobil yazılımcı, web yazılımcısı , yada desktop yazılımcısı hatta backend yazılımcısı gibi ayrımlar pek yoktu. Ancak günümüzde o kadar çok çeşitlilik varki, artık yazılımcılar kendi aralarında uzmanlaşarak belli konuda daha ileri seviyelere erişiyorlar. Herkesin herşeyi bilmesi çok mümkün değil ve sürekli güncellenen ve gelişen bir teknolojiyi sürekli takip etmesi de çok zor. Bu yüzden mobil veya android,ios gibi yazılım uzmanlıkları ortaya çıktı.

Özetle, bir mobil yazılımcı mobil yazılım geliştirirken native yada hybrid ortamları tercih edebiliyor.

Native yazacak ise Android için Java programlama dilinde, ios yazacak ise Xcode swift yada objective-c programlama dilini seçebiliyor. Hybrid yazacak ise cordova gibi birçok hybrid çözümlerinden birini tercih ederek yazılım yapabiliyor. Hybrid vs Native yazımı okuyabilirsiniz bunla ilgili daha detaya burada girmeyeceğim.

Yazılımcı , tasarımcıdan gelen tasarımları yazılım arayüzlerine yerleştirerek gerekli algoritmalar ile iş akışını bu arayüzler ile bağlamak, gerekli testlerini yapmak ve tüm mobil cihazlar ile uyumlu çalıştırmak yükümlülüğüne sahiptir. Aynı zamanda store a yani app marketlerine çıktıktan sonra takip etmesi ve gerekli bugfix (hata düzeltmelerini) yapması gerekir. İşin arkasında durmak bunu gerektirir.

Aynı zamanda iletişim becerileri iyi olmalıdır ki müşteriden gelen bilgileri iyi analiz edebilmeli, geri bildirimlerde bulunabilmeli, işe katkı sağlayabilmelidir. Unutmamak lazım ki hiçbir müşteri o dünyada yaşayan mobil android ios yazılımcısı kadar bu işi bilemez. Çoğu zaman ui ve ux konusunda hem tasarımcıyı hemde müşteriyi yönlendirmeli ve olmayacak arayüzler ve kurguları eleştirmeli ve yapıcı rol oynamalıdır.

Detaylara önem vermelidir. Her açıdan bakabilmeli ve işi bittikten sonra bir kullanıcı gibi uygulamayı kullanıp atladığı yerler, açıklar, yada görünmeyen ama hata oluşturabilecek kullanımı etkileyebilecek bir yer varmı bakmalıdır.