Herkese merhaba.
Bugün yeni bir içeriğe başlıyorum; mezuniyet tezim...
Ve bu tezi kalıplaşmış şekilde yapmak yerine tez danışmanım olan Barış ATA‘nın da önerisi ile bu şekilde blog yazıları yazarak oluşturmaya ve olabildiğince şeffaf bir şekilde ilerleyişi herkese açmaya karar verdik. Seri ismi olarak ise TEZ BİTİRELİM‘i uygun gördüm, eğer hocam da bu isim yüzünden benimle çalışmaktan vazgeçmezse bu şekilde devam edeceğini söyleyebilirim. Umarım adı gibi olur ve tez biter… Her neyse, dilerseniz lafı hiç uzatmadan giriş yazısına geçelim.
Projem Google’ın geliştirdiği ve geliştirmeye devam ettiği Flutter frameworkü (daha doğru bir tabir ile SDK’sı) üzerinde yazılan ve dil olarak Dart dilini kullanan bir mobil uygulama. Uygulamanın içeriği ise son dönemlerde fazlasıyla öne çıkan alışkanlık takibi, yani daha bilindik bir ifade ile Habit Tracker.
Tez danışmanımla birlikte Flutter’a karar vermemizin en önemli nedenlerinden birisi çok yeni olmasına karşın inanılmaz hızlı bir şekilde ilerlemiş olması, diğer bir sebep ise açık kaynak olması ve bizim açık kaynağı çok seviyor olmamız. Veritabanı ve diğer server-side işler için ise Flutter’a ve özellikle de Dart diline dair en ufak bir fikrim olmadığı için en azından bu sefer bildiğim bir şeyi kullanayım diyerek Firebase kullanmaya karar verdim. Ve projeye dair şu ana kadar yaptığım tek şey ise projeyi oluşturup basit bir login ekranı tasarlayarak Firebase üzerinden Google ile giriş yapma özelliğini aktif etmek oldu. Şimdilerde ise sadece Flutter üzerine araştırma yapıp bir yandan eğitim videoları izlerken diğer yandan GitHub üzerindeki proje kodlarını incelemek ve neler döndüğünü anlamaya çalışmak. O yüzden ne yazık ki bu yazımda projenin durumuna dair pek bir şey paylaşamayacağım.
Ancak Flutter benim tez görüşmemden önce de dikkatimi çok çeken bir platform olduğu ve en az bir tane cross platform frameworkü/SDK’sı bilme ihtiyacı hissettiğimden dolayı öncesinde de hangi frameworkü seçeyim konusunda bazı araştırmalar yapmıştım ve bu bilgilere dayanarak bir diyagram çıkarmıştım. Aşağıda bu diyagramı görebilirsiniz.
Bu araştırmamla birlikte aslında React Native ve Flutter finale kalmıştı ancak ikisinin de çıkış yıllarına ve bu yıllara göre GitHub starlarına baktığımda Flutter’in ciddi derece öne çıktığını ve gelecekte daha da ön planda olacağını fark ettim. O nedenle de Flutter benim için çok daha önemli bir hal aldı ve tez için kullanılacak SDK olarak da biçilmiş kaftan oldu diyebilirim.
Son olarak Flutter’in nasıl bir framework olduğundan bahsetmek ve neden native koda bu kadar yakın bir hızda çalıştığını anlatmak isterim. Flutter’ı diğer cross platform frameworklerinden ayıran en önemli özellik kullanılan her şeyin bir widget olarak, dolayısıyla object olarak tanımlanıyor olmasıdır. Bu nedenle iç içe bir dizayn yapısı kullanarak çok daha kolay ve hızlı dizaynlar yapmamızı sağlar. Bununla birlikte hem iOS hem de Android için hali hazırda var olan tüm UI araçlarını kendi içerisinde barındırır ve hepsi doğru dizayn edilmiş şekilde kullanılabilir haldedir. Bu sayede bizim bir UI objesini dizayn içerisine eklememizden sonra bu obje için ekstra bir dizayn uygulamasak dahi tasarım olarak harika şeyler ortaya çıkarabiliriz. Örneğin, aşağıda native Android butonunu ve Flutter Android butonunu yan yana görebilirsiniz.
Gördüğünüz gibi tasarımsal manada çok daha başarılı. İşte bu da ortaya çok daha başarılı bir UI çıkarabilmemizi sağlıyor.
Elbette yetenekleri sadece UI tarafı ile sınırlı değil. BackEnd tarafında kullanılan Dart dili de hem OOP’ye uygun, hem de bizlere script diller gibi esnek bir kullanım sunuyor ve böylece -her ne kadar ben bu durumdan hiç hoşlanmıyor olsam da- çok daha esnek bir şekilde kod yazabilmemizi sağlıyor.
Şimdi biraz da projenin arka tarafında kullanılacak olan Firebase hakkında konuşalım. Aslında Firebase’in ne olduğuna ve nasıl kullanıldığına dair çok fazla kaynak var ve ben onlardan daha iyi bir anlatım yapacağımı pek sanmıyorum açıkçası. O yüzden aşağıya alıntı olarak sevdiğim tanımlamalardan birisini ekliyorum.
Google Firebase; web ve mobil uygulamalarının server tarafıyla geliştiricinin uğraşmasına gerek kalmadan kullanıcı giriş yetkilendirmeli ve verilerini gerçek zamanlı ve senkron bir şekilde tutulmasını sağlayan bir platformdur. Günümüzde ki projeler tüm markete hitap etmesi açısından iOS , Android ve web platformlarında geliştirilir fakat her platformun kendine ait yazılım dili ve bağlantı şekilleri vardır. Server-Side dediğimiz arkaplanda ki verilerin tutulması ve gerektiği zaman kullanıcıya kullanılması her platformun ortak sorunudur ve Google Firebase bu konuda geliştirilmiş ortak bir çözümdür.
Kaynak: medium.com/furkanpacikgoz
Serinin ilk yazısında anlatacaklarım bu kadar, belirsiz bir zaman sonra ikinci yazıda görüşmek üzere...