Mobil Dünya
Mobil Uygulama Geliştirme ve Smartface App Studio
Aslında son zamanlarda karşımıza en sık çıkan sorulardan biri, “Hangi platform için neyle, nasıl geliştirmeliyim?”. Bu sebeple mobil uygulama geliştirme yaklaşımlarına göz gezdirmenin ve hangisini tercih etmenin size daha faydalı olacağını sorgulama noktasında yararlanacağ&...
Aslında son zamanlarda karşımıza en sık çıkan sorulardan biri, “Hangi platform için neyle, nasıl geliştirmeliyim?”. Bu sebeple mobil uygulama geliştirme yaklaşımlarına göz gezdirmenin ve hangisini tercih etmenin size daha faydalı olacağını sorgulama noktasında yararlanacağınız bir kaynak olması açısından bu yazıyı yazmanın zamanı geldi.
Son dönem mobil uygulama geliştirme yaklaşımları giderek ekosistemde tartışılmaya başlandı. Bir mobil uygulama yazmak için elimizde artık sadece tek bir araç ve platform yok. En bilinen platformlar; Web, Android, iOS, Windows Phone olarak sıralanabilir. Özellikle market ve uygulama savaşlarının bu denli yaşandığı ve tüm bireysel geliştirici ve kurumların insanlara en iyi hizmeti her alanda sunma ihtiyaçlarıyla beraber giderek önemini artırıyor. Bu noktada akla hep bir soru geliyor ve sektördeki çoğu insanda bu soruyla karşılaşıyor, "Ne ile geliştirsem?". Öncelikle durumunuzu iyi tahlil etmelisiniz. Siz hangi kitleye ulaşmak istiyorsunuz?
- Sizin bir mobil uygulamadan beklentiniz ne?
- Kullanıcılar bu uygulama ile neleri yapabilsin?
- Kullanıcılara bu mobil uygulama ile hangi deneyimleri, nasıl yaşatmak istiyorsunuz?
- Teknik açıdan kullandığınız servisler neler?
Bunlar daha genel sorular. Ardından biraz daha teknik olanları sormanız gerekecek:
- Hız (time to market) sizin için ne kadar önemli?
- Cihazın tüm özelliklerine ulaşmanız gerekiyor mu? Ne seviyede cihaz bilgisine ihtiyaç duyuyorsunuz vb
Bu ve daha pek çok benzeri soruya cevaplarınızı hazırladığınızda, hangi platformları hangi amaçlarla seçmeniz gerektiği ortaya çıkacaktır. Mesele, her zamanki gibi doğru soruları sormakta!
Web tabanlı uygulamalar
Eğer elinizde bir web sitesi var ve onun bilgisayarlar, tabletler ve cep telefonları ile uyumlu hale getirmek istiyorsanız, “Responsive Design” yaklaşımını kullanın. Bu duruma en iyi örnek bence herhangi bir Wordpress blogu. Uygulamada fonksiyon beklentiniz daha çok görünüm ile ilgiliyse bu yaklaşım size uyabilir. Özellikle jQuery Mobile, Sencha Touch gibi geliştirme çatıları (framework) ile sitenizin daha etkin sunumunu sağlayabilirsiniz. En önemli artısı, bildiğiniz internet teknolojileri ile sunucu üzerinden yayın yapmanız. En büyük dezavantajı, cihazda çalışan bir uygulama olmaması, tarayıcı üzerinde çalışmak zorunda oldukları için yaşanan bazı deneyim ve performans kayıpları.
Cross-Platform hybrid uygulamalar
Aslında dünyada Hybrid uygulamalar denince akla PhoneGap geliyor. PhoneGap, Adobe’nin açık kaynak bir aracı. Siz yine HTML, JScript, CSS gibi web dillerini, PhoneGap’in belirlediği kurallara/yöntemlere göre kullanıyorsunuz, PhoneGap size sağladığı çeşitli plug-in destekleriyle bazı cihaz donanımlarına erişim olanağı sağlıyor. Avantajları da dezavantajları da web uygulamalarıyla benzer fakat en büyük artısı bazı cihaz yeteneklerine ulaşabilmeniz ve cihazınızda uygulama gibi pozisyonlanması.
Native uygulamalar
Cocoa kütüphanesine veya JVM’e girecek miyiz bilemiyorum ama girmeyeceksek, herkesin anlayabileceği bir şekilde özet geçmek gerekirse; elinizdeki cihazın içerisindeki işletim sistemi hangi dilde yazılmışsa, sizde uygulamanızı o dilde yazarsanız native uygulama yazmış olursunuz. Native uygulamalar elbette her işletim sistemi için değişir. iOS için Objective-C yazarsınız, Android için Java, Windows Phone için C#, Firefox OS için HTML5/JS ve bu böyle gider. Native uygulamalar da aslında pratikte ikiye ayrılıyor.
- Platform Tabanlı Native Uygulamalar
Bu işletim sistemlerini üretenlerin size sunduğu IDE ve dilleri kullanabilirsiniz. Örneğin Google, sizden Android uygulamanızı Eclipse ortamında Java kullanarak, Apple ise iOS uygulamanızı Xcode ortamında Objective-C kullanarak, Microsoft ise Windows Phone uygulamanızı Visual Studio ortamında C# kullanarak yazmanızı bekler. Bunlara Platform Tabanlı Native uygulamalar diyebiliriz. En büyük avantajı; donanımın bütün yeteneklerine erişebilmeniz, hız ve performans açısında kullanıcıyı her daim mutlu edebilmenizdir. Aslında bu duruma dezavantaj demek ne kadar doğru bilmiyorum fakat bu işletim sistemlerinin her birinin yapısına, geliştirme ortamına ve diline hakim olmanız gerekir. - Cross-Platform Native Uygulamalar
Bu kategoride yazılan uygulamalar ise tek bir IDE ve tek bir dil kullanarak çeşitli platformlara aynı anda çıktı sağlarlar. Bu alanda en bilinen örnekler, Titanium, Xamarin ve Smartface App Studio gibi araçlardır. En büyük avantajı; bilmeniz gereken tek bir framework yapısı, geliştirme ortamı ve dilidir. Kalan bütün kısımları bu framework’ler sizin için hallederler. Yine tek kaynak kodu üzerinden ilerlediğiniz için geliştirme ve test maliyeti düşer. Dezavantajları ise; yine sizin onunla ne yapmak istediğinize bağlıdır. Platform tabanlı geliştirmenin sunduğu her olanağı sunamayabilirler. Bu sebeple plug-in desteği var mı, kontrol etmenizi öneririm. Uygulamadan isteklerini iyi belirlemek ve doğru aracı seçmek çok önemlidir.
Peki, Smartface App Studio’da biz ne yaptık?
Bir mobil uygulama geliştirme süreçlerinde en çok yaşanan zorlukları şöyle bir listelersek, benim aklıma gelenler şunlar:
- Uygulamanın UI (Görsel Arayüz) tasarımı
- Java/Obj C kodlama bilgisi
- Native deneyimin korunması
- On-Device Emulator
- Network servislerinin kullanılması (Query, Parse, Veritabanı)
- Büyüyen yazılımlarda baş ağrıları (Memory Management, Concurency)
- Yeni sürümlerin gelişi ve geçmiş sürüm desteği (Backward Compatibility)
- Güvenlik ve ek kütüphaneler
- Maliyetler
Sizler de bu saydıklarıma kendi deneyimlerinizden bazı eklemeler yapabilirsiniz. Ben genel olarak bunlarda zorluklar çekildiğini şahsen deneyimledim.
Biz Smartface App Studio’yu geliştirirken bu listeyi ve pek tabii daha fazlasını büyük bir tahtaya yazdık ve ürünü geliştirmeye 4 yıl önce başladık.
- Uygulamanın UI (Görsel Arayüz) Tasarımı
Bir uygulamanın geliştirme süresinin ortalama %50'si arayüz geliştirmesine gider. Smartface App Studio, IDE’sinde sürükle-bırak yönetemi ile uygulamanızı tasarlayabileceğiniz WYSIWYG (WhatYouSeeIsWhatYouGet) tasarım alanı veriyor. Sizin oluşturduğunuz bu arayüz tasarımı telefona giderken iOS ve Android'in native kütüphanelere dönüştürülüyor.
Arzu ederseniz bu IDE'deki tasarım alanı yerine klasik kullanımdaki gibi kodlama yaparak, uygulama arayüzünü Java Script ile oluşturmanız mümkün. - Native Deneyimin Korunması
Uygulamaları geliştirirken platformların kendi deneyimlerini korumak çok önemli. Aksi durumda kullanıcı memnuniyeti azalmaktadır. Smartface App Studio'da yazılan kodlar iOS ve Android ortamı için dönüştürülürken her ortamın kendi kütüphanelerine göre çevrilmekte ve platformların kullanıcı deneyimini bozmuyor. Yine tek kod içerisinde platformlara göre özel durumları ayrıca kodlayabilmek mükmün. - Java/Obj C Kodlama Bilgisi
iOS geliştiricilerin Objective C, Android geliştiricilerin ise Java bilmesi gerekmektedir. Ancak Smartface App Studio, içerisindeki JScript editor ile size tek bir kod üzerinden (cross-platform) 2 işletim sistemini desteklemenizi mümkün kılıyor. Bu hem sizin geliştirme sürenizi azalttığı gibi, test süresinin yaklaşık yarıya inmesini sağlıyor. - On-Device Emulator
Cross-Platform yazmanın pratikte sağlıklı olabilmesi için her ortamın Emulator desteğinin sağlıklı sunulabilmesi çok önemlidir. Şu an için yalnızca Windows ortamında çalışan Smartface App Studio'da, geliştirdiğiniz bir uygulamayı test etmek için tek yapmanız gereken herhangi bir Android ve iOS cihazı bilgisayarınıza bağlamak ve Smartface App Studio'da tek bir tuşla çalıştırmak. Herhangi bir geliştirici sertifikası ya da prosedürüne ihtiyacınız yok. Ayrıca bunu iOS cihazlar için Windows ortamında gerçekleştiren tek firma olduğumuzu gözlemledik (Başka varsa lütfen haber verin). - Network Servislerinin Kullanılması
Günümüzde bir web servisine bağlı olmayan uygulama düşünmek olanaksız. Dinamik içerik servislerine bağlanmak ve veri çekmek için REST, SOAP ve JSON gibi standartları kullanıyoruz. Bazı platformlarda özellikle bu servisleri sorgulamak, parse etmek ve objeye atamak çoğu zaman zulüm olabiliyor. Smartface App Studio’da biz bunları çok kolay bir şekilde Wizard’lar aracılığıyla gerçekleştiriyoruz. Ya da siz JavaScript içerisinde bunları normal yöntemlerle de parse edebilir ve veritabanına kaydedebilirsiniz. - Büyüyen yazılımlarda baş ağrıları (Memory Management, Concurency)
Hafıza yönetimi mobilde bir başka çok önemli konu. Java için "Garbage Collector", Objective-C'de "ARC" ve benzeri daha birçok aracı kullanabilirsiniz. Yine yazılım büyüdükçe "Memory Management" ve "Concurency" gibi sorunları çözmek büyük eforlar gerektirebilir. Smartface App Studio’da ise bu yetenekler entegre bir şekilde geliyor ve sizin için arka tarafta otomatik olarak yönetiyor. - Yeni sürümlerin gelişi ve geçmiş sürüm desteği (Backward Compatibility)
Mobilin artık doğası gereği gelen, üreticilerin yayımladığı yeni güncellemeler sonrası uygulamanızda kullandığınız bazı bileşenlerin veya servislerin çalışmaması durumu aşikâr. Smartface App Studio ile kullandığınız bütün bileşenlerin yeni sürümde de çalışmasını sağlamak için arka tarafta her güncelleme öncesinde Backward Compatibility testleri yapılıyor ve uygulamanızı güncelleme yayımlanmadan önce yeni sürümüyle hazır halde olmasını sağlıyoruz. Sizin çağırdığınız fonksiyon hangi sürümde farklılaşmışsa bunu arka tarafta biz yönetiyoruz. - Güvenlik ve Ek kütüphaneler (Plug-In)
Smartface App Studio ile geliştirilen tüm uygulamalar mimarisi gereği kendi scope'larında çalışır. Bir uygulamanın diğer uygulamaya erişmesi (interface dışında) mümkün değildir. Bu sebeple uygulama Native bir uygulama güvenliği taşır. Yine Smartface App Studio ile içerisinde entegre birçok plug-in gelmektedir. Bunların arasında bankacılıkta kullanılan güvenlik kütüphanelerinden, kağıtsız işlem yapmanıza olanak sağlayan Capturing kütüphanelerine kadar birçok plug-in mevcut bulunmaktadır.
Tek bir geliştirme ortamı, tek bir tasarım, tek bir kod, tek bir test ve debugging süreci; hızlı, verimli ve maliyetleri ciddi oranda düşüren bir yapıyla Android ve iOS cihazlar için uygulama geliştirme deneyimini yaşamalısınız. www.smartface.io
Son olarak; tüm yetenekleriyle Smartface App Studio’nun "Community" lisansıyla, indirmek, geliştirmek ve mağazalara göndermenin tamamen ücretsiz olduğunu belirtelim: www.smartface.io/license
Peki nerede dokümanlar, örnek kodlar, uygulamalar?
Smartface Developer Center'da geliştirici dokümanlarına, örnek projelere ve belki de en önemlisi, her türlü sorunuzu cevaplamaya hazır bir Soru&Cevap servisine buradan ulaşabilirsiniz.
Bizimle Twitter üzerinden de iletişime geçebilirsiniz:
07.05.2014
Yorumlar
En büyük avantajı; bilmeniz gereken tek bir framework yapısı, geliştirme ortamı ve dilidir. Kalan bütün kısımları bu framework’ler sizin için hallederler. Yine tek kaynak kodu üzerinden ilerlediğiniz için geliştirme ve test maliyeti düşer. Dezavantajları ise; yine sizin onunla ne yapmak istediğinize bağlıdır. Platform tabanlı geliştirmenin sunduğu her olanağı sunamayabilirler. Bu sebeple plug-in desteği var mı, kontrol etmenizi öneririm. Uygulamadan isteklerini iyi belirlemek ve doğru aracı seçmek çok önemlidir.
Aslında en büyük dezavantaj olan yavaşlığa sanırım değinilmemiş.C# ta ara koda çevirme işlemi bile sanıyorum %18 civarında bir yavaşlamaya sebep olurken bu platfomların hızı ne derece tatminkar olabilir?