Mobil uygulama geliştirmek istiyorum AMA

Merhaba, ben Throwaway :blush:

Öncelikle foruma hoş buldum dedikten sonra azıcık kendimden bahsetmek istiyorum :innocent:

Araştırmalarım sonucunda bazı yazılım terimlerini öğrenme fırsatım oldu ancak şimdiye kadar herhangi bir yazılım tecrübem olmadı. Fakat uzun zamandır bir proje arayışındaydım ve buldum :upside_down_face:

Gerçi hâlâ projemin başarılı olup olmayacağı hakkında kesin konuşamıyorum ve içimde bir yerlerde her şeyin başarısızlıklıkla sonuçlanma ihtimalinin yüksekliğinin korkusu var. Ancak artık bir şeyler yapmam gerektiğini düşünmek, adım atma vaktimin geldiğini hissettiriyor bana. Ben de ilk adımımı atmadan önce nereye, nasıl atacağımı öğrenmek amacıyla sizlerden yardım istiyor olacağım, işte tam da bu yüzden buradayız :grin:


Başlamadan Önce

Yapmak istediğim yegane şey bir mobil uygulama. Bu uygulamayı iki büyük mobil işletim sisteminde yayınlamak istiyorum. Bu ikisi tabii ki Android ve iOS.

İkisi de koskoca şirketler tarafından üretildiğinden ve birbirlerine rakip olduklarından dolayı yazılımcılar için de sorun yaşatan özellikleri var. Sanırım en büyük sorun Android için Java/Kotlin, iOS için Objective-C/Swift kullanmak. Ancak kısıtlı vaktimden dolayı tek kodla iki işletim sistemine de uygulama çıkarmam gerekiyor. Aynı uygulamayı hem Java hem de Swift kullanarak ayrı ayrı kodluyor olsaydım elbette birçok açıdan çok daha iyi olurdu ancak bunu param ve zamanım olduğunda yapabileceğim :smiling_face_with_tear:


Büyük Yardımcılar

2023 yılında olmanın verdiği avantaj, “tek kodla iki işletim sistemine de uygulama çıkarma” işinin aslında hayal olmaması. Araştırmalarım sonucu bunu yapmamı sağlayacak büyük yardımcılar buldum: Xamarin, Ionic, React Native ve Flutter. İlk ve en büyük sorunum bu 4’ünü arasında net bir tercih yapamamam, ama React Native bana biraz daha yakın geldi, bu konuda yardımınıza ihtiyacım var. Ek olarak, Vue.js de bana oldukça iyi geldi. Ancak mobile uygun mu pek bilmiyorum, araştırmaya vaktim olmadı maalesef. Basit, küçük, hızlı ve CSS üzerinde tam oynama yetkisi bana oldukça cazip geldi. Ayrıca bunların hangi dille kodlandığını vs. açıklamam gerekiyor mu bilmiyorum, sorumu cevaplayacak yetkinlikte olan arkadaşlar biliyordur diye tahmin ediyorum :grin:


Projenin Bel Kemiği: Veriler

“Proje tamamen veriler üzerine kurulu” desem yanlış olmaz sanırım. Bana yardımcı olmanız için bazı şeyleri bilmeniz gerektiğini anlayabiliyorum, bu yüzden biraz detay vereceğim:

  • Uygulamanın ana amaçlarından biri kullanıcının aradığı bilgileri ona göstermek. Tabii ki bu bilgiler halihazırda veri tabanında bulunan verilerden olacak. Bir arama motoru kadar kompleks düşünmeyin, satılık iki aracı ve bu araçların özelliklerini göstermek, belki de kıyas yapmak gibi basit diyebileceğimiz işlemler yapılacak. Tabii ki ne arabaların ne de kıyas yapmanın projeyle uzaktan yakından alakası yok, sadece basitlik düzeyleri aynı olduğundan dolayı böyle bir örnek verdim, çünkü asıl olayı anlatacak olsam resmen projenin patentini vermiş olurdum :zipper_mouth_face:

  • Ayrıca bir sosyal medya uygulamasında olan özelliklerin bazılarına da sahip olacak. Bir kullanıcı profili oluşturmak, diğer profilleri görmek gibi. Fakat amacı bir sosyal mecra oluşturmak değil, mesajlaşma bile bulunmayacak :smiley:

  • Uygulama içerisinde satın alınabilir ögeler/hizmetler bulunacak. Bunu yazma sebebim bu satın alım işlemleri için de mecburen özel bilgiler gerektirmesi ve bunların güvenliğinden benim sorumlu olmam.

Dediğim gibi, proje veriler üzerine şekilleniyor ve önemli bilgileri de kullanacak. Bu yüzden güvenli bir veri tabanı kullanmam gerekiyor. Kafamdan SQL, MySQL, Firebase gibi veri tabanları geçiyor. Aslında direkt Firebase’i seçerdim, ancak zamanla ücretli olabiliyor olmasından dolayı uzak duruyorum. Bana en yakın seçenek MySQL olarak geliyor, ancak burada da görüşlerinize ihtiyacım var.


Görünmeyen Kahraman

Arayüz, veri tabanı seçildi diyelim. İkisi de tek başına anlamlı olmuyor, senkronize olmaları, şekillenebilmeleri ve yönetilebilmeleri lazım, bu yüzden bana bir back-end zımbırtısı(?) gerekecek. Ne yazık ki bu kadar önemli bir alanda pek araştırma yapamadım, tek bildiğim React Native + Firebase kombosunun yapılabildiğini bildiğim ExpressJS. Back-end için de yine öneri & görüşleriniz benim için çok önemli.


Bir uygulamada bunlara ek olarak medya ögeleri (Görseller, resim vs.) de olur ancak özellikle ses için herhangi bir şeye ihtiyaç duyduğumu zannetmiyorum, çünkü uygulamada kullanabileceğim tek ses unsuru tuşlara tıklandığında bir click sesi oluşturmak. Görseller projede önemli bir yere sahip olsa da sonuç olarak veri tabanında bulunacaklar, bu yüzden ayrı bir parantez açmaya gerek duymadım. Tabii bilmediğim bir şey varsa söylerseniz çok makbule geçer :smile:


Kapanış

Bu forumda yeni olduğumdan dolayı bazı şeyleri bilmiyor olabilirim. Yanlış yaptığım bir şey(ler) varsa en kısa sürede düzeltmeye çalışırım. Olabildiğince okunaklı, eğlenceli bir şekilde yazmaya dikkat ettim. Emojilerle de süsledim ki, aslında neden süslediğim hakkında en ufak bir fikrim yok :sweat_smile:

Yardım istediğim konularla ilgili her düşüncenizi belirtebilirsiniz, ancak lütfen görüşlerinizi belirtirken bu konuda ne kadar hakim olduğunuzu da belirtin. Hiç bilgisi olmayan ben bile veri tabanlarında MySQL’i daha iyi bir seçenek olarak görüyorum ama nedenini bilmiyorum :sweat_smile:. Yani anlatmak istediğim şey bilgisi olan kişilerin önerilerini daha ciddiye almak. Ama kesinlikle sizin görüşlerinizi önemsemediğim sonucuna varmayın, sadece ciddiye alma oranları farklı :smiling_face_with_three_hearts:

Dikkate alıp zamanınızı ayırıp okuduğunuzdan dolayı çok teşekkür ederim :heart:

merhaba, bu konuyla ilgili daha öncesinde görüşümü yazdığım bir konu vardı. aynısını tekrar yazmamak için linkini atıyorum. belki yazdıklarım sizin için yeterli gelmeyebilir. forumda engin bilgilere sahip çok arkadaş var. Python ile masaüstü uygulama geliştirmek - BandoLero tarafından #2. sonuç olarak şahsi fikrim flutter öğrenmek oldu. flutter ile ilgili bir video serisinin linkini paylaştım. paylaştığım linkteki arkadaşı dinlerseniz flutterın neden avantajlı olduğu konusuna dair detaylı bilgi veriyor.

yazdıklarınızın hepsini okudum ama ayrı ayrı cevap vermenin gereksiz olduğunu düşünerek tek bir cevap vermek istedim. yazmış olduğunuz isteklerin hepsini dart/flutter karşılıyor.

1 Beğeni

Öncelikle cevabınız için çok teşekkür ederim :smiling_face_with_three_hearts:

Aslında Flutter’ı koyacaktım. Araştırmıştım, Dart ile yazılması, Google’ın her an desteğini çekme ihtimali, pek mümkün olmasa da gerekli olduğunda hazır widget bulunmaması, React’in aksine birçok widget içermesi, kodların iç içe yazılması ve bir süre sonra karışıklık yaşanabiliyor olması, Dart’ın OOP desteklemesi gibi birçok artısı ve eksisini biliyorken yazmayı unutacağımı hiç düşünmezdim :sweat_smile:

Sormak istiyorum, Flutter yükselen bir teknolojiyken JavaScript’in gücünü kullanan React’e karşı hangi özellikleri sebebiyle tercih edilebilir sizce? React öğrenirken öğreneceğim JS bir işe girmek istediğim zaman Türkiye’de oldukça işime gelecektir çünkü ülkede en çok aranan adaylar JS üzerine oluyor. Tabii bu olay projeden çok bağımsız, çok daha ayrı bir konu ama uzun vadede önemli anlam taşıyabilir, özellikle projem başarısız olursa :joy:

Ayrıca ana konuya bir anket ekledim, oradan oylama yapabileceğinizi de belirtmek isterim. Flutter gibi onu da unutmuşum :expressionless:

destek çekerlermi artık allah bilir bişey diyemem :smiley:

burda neyi kast ettiniz anlayamadım. ne tür bi widget ?

aslında bu kişiye göre değişebilir. kod mimarisini nasıl oluşturduğunuza bağlı. örneğin kimi insanlar oluşturduğu buttonun hemen altında fonksiyon vs yapmayı mantıklı bulabilirken

class bilmemne {
button {
   text aşlskdnf
  onPressed: () {
  print(çalış bakalım);
  }
}

kimileri de widget ile fonksiyonu ayırmayı mantıklı bulabilir. bir çok örnek verilebilir ama aklıma bu geldi. yani mimariyi nasıl oluşturduğunuza bağlı. widgetlar bi yerde fonksiyonlar başka dosyada şeklinde de yapabilirsiniz. tamamen kişinin özgür iradesine bağlı.

class bilmemne {
  şufonksiyonuçalıştır() {
  print(çalış bakalım);
 }

 button {
   text aşlskdnf
  onPressed: () =>   şufonksiyonuçalıştır();
}

buradaki sorun aslında amacımızın ne olması. herkesin bildiği klişe örnekleri vereyim. android için uygulama yapacaksak örneğin hesap makinası olsun. android destekleyen herhangi bi dilde yapabiliriz bi önemi yok ama pubg gibi yada gta gibi bi oyun yapacaksak kullanacağımız teknolojiler oyun motorları, diller , framework vs belli artık. yani burda ki sorun ne yapacağımıza karar verip ona göre teknoloji seçmek olması gerekmez mi ? tamam react öğrendik diyelim. konunun başlığı mobil uygulama geliştirmek olduğu için bu ifadeyi kullanmak istiyorum. react ile ios için uygulama yapılıyor mu ? bilmiyorum :smiley: şimdi swift mi öğrenelim ? o yüzden benim ihtiyaçlarımı dart/flutter karşılıyor. yazdığım kodu istersem android de de çalıştırırım, ios ta da çalıştırırım bi önemi yok. geçenlerde basit bi site yapmıştım flutterla çok ta güzel oldu yani :smiley:

bu konuya sektör deki arkadaşların cevap vermesi daha uygun olacağını düşündüğüm için bişey demek istemiyorum. zamanında ios dünyasında swifte bi anda geçildiği zaman neler yaşandığını gördük :smiley: yani hiç birşeyin garantisi yok.

Bir kaynakta şöyle şeyler yazıyordu:

  • Yazması okumasından daha kolay olan tek framework gibi görünen Flutter içerisinde kendi widget’lerini barındırıyor, kendi event’lerini barındırıyor, kendi stil yazma metodlarını barındırıyor. Yazımı gerçekten çok hızlı ancak; metodlar çok fazla ve bunların kullanımı ezber gerektirmektedir.

  • 3rd party pluginler yerine Flutter kendi içerisinde zengin bir widget yapısı barındırıyor. Her widget’in çok fazla alışılagelmişin dışında ayarı var. Detaylı dökümante edilmiş olması artı gibi görünse de; bir zaman sonra ezber yapmanız gerektiğini gösteriyor.

  • İhtiyaç anında hali hazırda olmayan widget’lerin bulunma ihtimali.


“Karışıklık yaşanabiliyor olması” ifadesini de yine aynı kaynakta okumuştum:

  • Yazılan kodun devamlı iç içe yazıldığı için hiyerarşiyi kaybederek oluşan okuma zorluğu

Ayrıca Google’ın desteğini kesme ihtimali de yine aynı kaynakta yazıyordu ancak ben bile artık pek ihtimal vermiyorum :sweat_smile:


React ile Flutter hemen hemen aynı şeyi amaçlıyor. Kullandıkları diller, arayüz materyalleri, hazır UI elementlerinin olup olmaması gibi faktörlerle ayrılıyorlar. İkisi de hem Android hem de iOS için uygulama çıkarmayı amaçladığından yazdım zaten, yani “React ile iOS uygulama yapılıyor mu?” sorusunun karşılığını evet olarak alabilirsiniz :smile:


Sanırım asıl problemime odaklanırsam daha iyi olacak. Uzun vadeli planlar yapacak kadar ne vaktim var ne de öyle bir tecrübeye sahibim. En iyisi uygulamayı yapıp devamında karar vermek. Belki ileride bu konu hakkında bir konu açarım.