HTML5 ve Yerel

Mobil uygulama tartışması

Michael Mahemoff
Michael Mahemoff

Giriş

Mobil uygulamalar ve HTML5 şu anda en popüler teknolojilerden ikisidir ve çok fazla örtüşme söz konusudur. Web uygulamaları mobil tarayıcılarda çalışır ve çeşitli mobil platformlarda yerel uygulamalar olarak yeniden paketlenebilir. Desteklenecek çok çeşitli platformlar ve mobil tarayıcıların güçlü gücüyle birlikte, geliştiriciler "bir tane yaz, çok sayıda çalıştır" çözümü olarak HTML5'e yöneliyor. Ama gerçekten uygulanabilir mi? Yerel reklamlar oluşturmak için hâlâ cazip nedenler var ve açıkça birçok geliştirici bu yolu tercih ediyor. Bu makalede yerel ile web arasındaki bir tartışma ele alınmaktadır.

Özellik Zenginliği

Nokta: Yerel reklamlar daha çok şey yapabilir

Mobil işlevselliği iki boyuta ayırabiliriz: uygulamanın kendi deneyimi ve cihazın ekosistemine nasıl bağlandığı (ör. Android'de, widget'lar ve bildirimler gibi özellikler). Yerel reklamlar her iki boyutta da mükemmeldir.

Uygulama deneyimi açısından yerel uygulamalar daha fazlasını yapabilir. Kaydırma işlemlerini, hatta destekleyen platformlarda bile kolayca takip edebilirler. Genellikle, Android'in arama düğmesi ve ses kontrolleri gibi basılı tuşlara işlem yapabilirler. GPS ve kamera gibi donanımlara da erişebilirler. Ayrıca bazı platformlar, kullanıcının iznini alarak işletim sistemine sınırsız erişim sağlar. HTML5'te ne kadar pil kaldığını algılamayı deneyin!

Ancak bu uygulama içi deneyimden daha fazlası. Android gibi bir işletim sistemi, uygulamaların kullanıcılarla ve aslında diğer uygulamalarla etkileşimde bulunması için farklı yollar sağlar. Ana sayfada etkin widget'lar bulunur. Cihazınızın durum çubuğunda bildirimleriniz görünür. Uygulamanızın, diğer uygulamaların zaman zaman ihtiyaç duyabileceği genel bir hizmet sağladığını duyurmasına olanak tanıyan amaçlarınız da vardır.

Karşı nokta: Yerel özellikler geliştirilebilir ve web yine de kullanıcıların ihtiyaçlarına yetişiyor

Birçok uygulama içi özelliğin HTML5 uygulamalarına erişmenin yeterli olmadığı doğrudur. Web-fu becerileriniz ne kadar popüler olursa olsun, uygulamanız kamera API'si olmayan bir korumalı alanda takılı kalmışsa kısa bir süre sonra fotoğraf çekmez! Neyse ki bu korumalı alanda olmanız gerekmiyor. Web uygulamanızın fotoğraf çekmesi için gerçekten ihtiyacınız varsa kullanıcı arayüzünün büyük bir kısmını sağlayan yerleşik web görünümüne sahip yerel bir uygulama oluşturabilirsiniz. Açık kaynaklı PhoneGap çerçevesi şu şekilde çalışır: Yerel özellikleri, web görünümü tarafından standart bir ağ iletişimi API'si kullanarak çağıran web hizmetleri olarak sunarak açığı doldurur. Bunun gibi bir karma uygulama oluşturduğunuzda widget'lar, bildirimler ve amaçlar gibi bu platform özelliklerine de erişebilirsiniz.

Karma (yerel ve web) bir uygulama geliştirmek ideal bir çözüm değildir. Mobil tarayıcıdan erişilen geleneksel web siteleri yerine, karmaşıklığı artırır ve yalnızca yerel uygulama olarak sarmalanmış web uygulamaları için geçerlidir. Ancak uzun süre gerekmeyebilir. Web standartları hızla değişiyor ve modern mobil tarayıcılar buna ayak uyduruyor. Çevrimdışı depolama, coğrafi konum, tuval grafikleri ve video/sesli oynatma gibi özelliklerin tümü, modern "smarpton"lar arasında geniş bir destekten yararlanır. Kameralar bile desteklenmeye başlıyor. Android 3.1 sürümünden itibaren, web standartlarını kullanarak fotoğraf ve video çekmek mümkün. Ayrıca, en yeni iOS tarayıcı 2 yönlü akış ve cihaz yönünün algılanması için WebSocket'i destekler.

Genel olarak mobil gelişiyor. Ancak web de hızla gelişiyor. Sadece masaüstü tarayıcılar arasında, standartlarını değişen ve ışık hızında yeni özellikler ekleyen beş büyük tarayıcı tedarikçisi bulunmaktadır. Bu özellikleri mobil cihazlara taşımak basit bir süreç olmasa da, bunların birçoğu mobil tarayıcılara çoktan girdi.

Yerel reklamlar hızlı ilerleyen bir hedef olsa da web bu boşluğu kapatıyor.

Performans

Nokta: Yerel reklamlar daha hızlı çalışır

Yerel uygulamalar için web çalışma zamanı engeli bulunmaz. Metne yakın çalışırlar ve GPU hızlandırma ile çoklu iş parçacığı oluşturma gibi performans artırıcılardan yararlanabilirler.

Counterpoint: Web çalışma zamanları günümüzde çok daha hızlı ve çoğu uygulama zaten hıza ihtiyaç duymuyor

Web'in son yıllarda hızlandığını söylemek hafif kalır. Chrome ile birlikte gelen JavaScript motoru V8, kullanıma sunulduğunda web performansında önemli bir geliştirmeydi ve o zamandan beri hızlandı:

V8 performans grafiği

Grafik oluşturma motorları da web'i hızlandırmıştır ve artık donanım hızlandırma da gerçekleşmeye başlamıştır. Donanım hızlandırmalı tuvalin sağladığı hız artışına bakın:

Donanım hızlandırmalı kanvas grafiği

Ayrıca yeni Web Workers API, çoklu iş parçacığı işlemeyi mümkün kılar ve modern web geliştiricileri, performansı optimize edilmiş çeşitli kitaplıklardan ve iyi araştırılmış performans optimizasyonu tekniklerinden de yararlanabilir. Hayata masaüstü web'de başlayanların çoğu mobil cihazlarla da alakalıdır ve mobil platforma gösterilen ilgi giderek artar. Örneğin, performans gurusu Steve Souders'ın mobil performans araçlarına ayrılmış bir sayfası vardır.

Masaüstü bilgisayarlardaki tüm ilerlemeler henüz tüm mobil platformlara gelmemiş olsa da trendler bu yönde ilerleme kaydettiklerini gösteriyor. Ayrıca, mobil uygulamaların çoğunun son teknoloji ürünü 3D oyunlar olmadığını ve temelde haberlere, e-postalara, zaman çizelgelerine, sosyal ağlara dayalı bilgilere dayalı olduğunu unutmamak da önemlidir. Oyunlara gelince, 2D tuval ile temel oyunlar şimdiden uygulanabiliyor ve WebGL, mobil cihazlarda da görünmeye başlıyor. Firefox 4'e bakın. WebGL uygulamalarını yerel uygulamalarda derleyen ve OpenGL'den (ör. ImpactJS) yararlanabilen yerel uygulamalarda derlenen çerçeveler yaygınlaşana kadar büyüyen bir çerçeve ailesidir.

Geliştirici Deneyimi

Nokta: Yerel reklamların geliştirilmesi daha kolay

Yerel uygulamalar, karmaşık uygulama geliştirme işlemleri için tasarlanmış ve başarısı kanıtlanmış bir geçmiş performansa sahip sağlam programlama dilleri (ör. Java, Objective C, C++) kullanır. API'ler, sunulan platformu destekleyecek şekilde sıfırdan tasarlanmıştır. Hedef cihazı yakından gösteren masaüstü emülatörlerinde uygulamalarda kolayca hata ayıklayabilirsiniz.

Web geliştirmede özellikle sorun yaratan şey, tarayıcıların ve çalışma zamanlarının çok çeşitli olmasıdır. Uygulamanız çalıştığında X özelliğinin kullanılacağını garanti etmez. Öyle olsa bile, tarayıcı bunu nasıl uygular? Standartlar yoruma açıktır.

Sayaç: Özellikle birden fazla cihaz hedefleniyorsa web'in geliştirilmesi genellikle daha kolaydır

Önce temel teknolojiden bahsedelim. Web standartlarının ilk olarak, web'in temel olarak uygulamalar yerine dokümanlardan ibaret olduğu, JavaScript'in yalnızca 10 günde geliştirilip dağıtıldığı bir dönemde ortaya çıktığı doğrudur. Ancak, bu araçlar tahmin edilenden çok daha yetenekli oldukları ortaya çıktı. Web geliştiricileri, ölçeklenebilir tasarım için artık anlaşılan kalıplarla, iyi yönlerden yararlanmayı ve kötü kısımları düzeltmeyi öğrenmiştir. Dahası, standartlar yerinde durmuyor ve HTML5, CSS3 ve EcmaScript Harmony gibi çalışmaların tümü geliştirici deneyimini iyileştiriyor. C++ veya Java ya da JavaScript'i tercih etmeniz dinî bir tartışmadır ve aynı zamanda eski kod tabanınıza bağlıdır. Ancak, bu günlerde JavaScript'i kesinlikle ciddi bir rakip olarak dahil edebiliriz.

Tarayıcı/çalışma zamanı parçalanmasının tersine, tüm bu ortamların en başta mevcut olmasıdır. Java'da bir Android uygulaması geliştirirseniz iOS'u desteklemek için tam Objective C'ye geçiş yapmanız gerekir. Bir web uygulamasını bir kez geliştirirseniz uygulama Android ve iOS'ta çalışır. WebOS, BlackBerry, Windows Mobile ve hatta teorik olarak budur. Pratikte, gerçekten doğru deneyimi yaşamak istiyorsanız her platformda bazı küçük değişiklikler yapmanız gerekecek. Ama çoğu mobil işletim sisteminde farklı sürümler ve farklı cihazlar olduğundan bunu yerel modda da yapmanız gerekir.

İşin iyi tarafı, web'de "parçalanmanın" her zaman bu şekilde oluşmuştur ve bununla başa çıkmak için bilinen yaygın teknikler vardır. En önemlisi, progresif geliştirme ilkesi, geliştiricileri öncelikle temel bir cihazı hedeflemeye ve kullanıma sunulduğu yerlerde platforma özgü mükemmellik katmanları eklemeye teşvik eder. Özellik algılama yaklaşımı da yardımcı olur. Günümüzde, duyarlı web tasarımını desteklemek için Modernizr gibi kişilerden kitaplık desteği alıyoruz. Bu teknikleri bilinçli bir şekilde kullanarak, marka ve işletim sisteminden bağımsız olarak tüm cihazların (eski model "özellikli telefonlar") dahil büyük çoğunluğunu, hatta kol saati ve televizyon gibi form faktörlerini kullanarak erişiminizi genişletebilirsiniz. Google IO 2011'de ortak bir kod tabanı ve işaretlemeyle farklı form faktörlerini (özellikli telefon, akıllı telefon, tablet, masaüstü, TV) hedeflediğimiz çok kullanıcılı kullanıcı arayüzü demomuza tanık olun.

Görünüm ve His

Nokta: Yerel platforma uyum sağlayan platformun görünümü ve tarzı

Platformları tanımlayan özelliklerden biri görünüm ve tarzıdır. Kullanıcılar kontrollerin tutarlı bir şekilde sunulmasını ve aynı şekilde manipüle edilmesini bekler. Platformdan platforma farklılık gösteren belirli deyimler vardır. Örneğin, kullanıcı "uzun tutma" gerçekleştirdiğinde (bir öğeye birkaç saniye dokunmaya devam et) ne olur? Plaformlar bu tür şeyler için standart deyimler kullanır ve bunları tek bir HTML5 uygulamasıyla karşılayamazsınız.

Ayrıca, platform görünümü ve tarzı, platformun widget'ları kullanıcıların beklediği görünüm ve tarzı içeren yerel yazılım kitaplığı tarafından düzenlenir. Yalnızca yerel araç setini kullanarak, beklenen görünüm ve izlenimin büyük bir kısmını "ücretsiz" olarak elde edersiniz.

Karşı nokta: Web'in kendine özgü bir görünümü ve tarzı vardır. En çok ilgilendiğiniz platformlar için web arayüzünü de özelleştirebilirsiniz.

Bir önceki bölümde de açıklandığı gibi, web geliştirmenin yolu temel bir "herkese uygun" sürüm yazıp ardından bu sürümü kademeli olarak geliştirmektir. Geliştirmeler genelde özelliklere dayansa da en çok önem verdiğiniz platformları hedefleyerek geliştirmeyi de yapabilirsiniz. Bu, çok fazla olası tarayıcı olduğu için bazen web topluluğu tarafından hoş karşılanmayan bir tür "tarayıcı algılama"dır. Ancak çok yüksek önceliğe sahip iki veya üç platform görüyorsanız ve bunları yerel alternatiflerle karşılaştırmak için ekstra çaba sarf etmek istiyorsanız gitmeniz gereken yol bu olabilir.

Temel sürüme gelince, web'in kendi görünümü ve tarzı vardır. Hatta her mobil platformun, varsayılan tarayıcı ve web çalışma zamanı ile belirlenen kendi "web görünümü ve tarzının" olduğunu bile söyleyebiliriz. "Web görünümü ve tarzı", kullanıcılarınız için uygun olabilir ancak aslında, masaüstündeki göz atma deneyiminin yanı sıra kullanıcının çalıştığı diğer cihazlardaki deneyimle daha fazla tutarlılık elde etmenize de olanak tanır. Dahası, yerel görünüm ve tarzı pek fazla desteklemeyen birçok başarılı uygulama vardır. Bu kesinlikle oyunlar için de geçerlidir (en sevdiğiniz mobil oyun mobil işletim sisteminizin görünümünü ve tarzını izliyor mu?) ve hatta daha geleneksel uygulamalar için de geçerli. Örneğin, seçtiğiniz platformdaki daha popüler yerel Twitter istemcilerine göz attığınızda çok çeşitli kullanıcı arayüzü mekanizmalarını göreceksiniz.

Keşfedilebilirlik

Nokta: Yerel uygulamaların keşfedilmesi daha kolaydır

Android Market ve Apple'ın App Store'u gibi uygulama dağıtım mekanizmaları, son yıllarda çok popüler oldu ve tüm mobil sektörü için önemli bir itici güç konumunda. Tüm geliştiriciler yerel uygulamalarını pazar yerine gönderebilir. Burada kullanıcılar göz atma, arama ve öneri alma işlevlerini birlikte kullanarak yerel uygulamalarını keşfedebilir. Ayrıca, işinizi doğru yaptıysanız, olumlu puanlar ve yorumlar kullanıcıları en önemli yükleme düğmesine basmaya ikna eder.

Karşı nokta: Aslında web uygulamalarının keşfedilmesi daha kolaydır

Web tartışmasız olarak bugüne kadar yaratılmış en kolay keşfedilebilir ortamdır. Mütevazı URL'de, (en azından) standart web sitelerinde yayınlanan tüm uygulamaları içeren, web'de yayınlanmış her şey için (en azından) benzersiz bir tanımlayıcımız vardır. Arama motorları, mobil pazar yerlerine benzer web uygulaması katalogları da dahil olmak üzere, içeriğin ve diğer web sitelerinin bu içeriğe bağlantı verebileceğini keşfetmeyi kolaylaştırır. Aslında her birey e-postalarda ve sosyal ağ mesajlarında web uygulamalarını arkadaşlarıyla paylaşmak için bu uygulamalara bağlantı verebilir. Bağlantılar SMS ile de gönderilebilir. Böylece mobil kullanıcılar bağlantıyı tıklayabilir ve uygulamayı cihazlarının tarayıcısında başlatabilir.

Kullanıcıların uygulamalara oy verebileceği ve yorum yapabileceği pazar yerleri henüz mevcut değil. Ancak bu durum da değişiyor. Devamını okuyun...

Para kazanma

Nokta: Yerel reklamlardan para kazanılabilir

"6 yaşındaki çocuk öğle yemeği saatinde uygulama yapıyor, her biri 3 ABD dolarından bir zilyon kopya satıyor". Bu günlerde bu başlığı çok fazla gördüğünüz için, büyük veya küçük geliştiricilerin para kazanmak için mobil pazar yerlerini aramaları pek şaşırtıcı değil. Mobil platformlar, geliştiricilerin uygulamaları için doğrudan ücret almaları için çeşitli yöntemler sunar. En basit ödeme, uygulamanın kilidini sonsuza kadar açmanızı sağlayan tek seferlik ödemedir. Bazı platformlarda uygulama içi ödeme ve abonelik mekanizmaları da sunulur. Bu mekanizmalar tutarlı ve güvenli bir sistemle sıkı bir şekilde entegre edilmiştir. Bu yeni ödeme şekilleri, geliştiricilerin çok popüler bir uygulamayı uzun vadeli bir gelir akışına dönüştürmesine olanak tanır.

Uygulama ödemelerinin yanı sıra reklam ve sponsorluk gibi geleneksel web modellerinden de para kazanabilirsiniz.

Karşılıklı nokta: Web'de para kazanmak her zaman mümkündü ve fırsatlar artıyor

Web, modern endüstrinin motoru olarak yeterince para kazanma fırsatları yoksa web olmazdı. Doğrudan "kullanım başına ödeme" mekanizmaları henüz gelişmemiş olsa da abonelik tabanlı "hizmet olarak yazılım" çözümlerinin gerçekten uygulanabilir hale geldiği çeşitli nişler bulunmaktadır. Google Apps, 37Signals ürün yelpazesi ve çeşitli e-posta hizmetlerinin premium sürümleri buna örnek gösterilebilir. Ayrıca, doğrudan ödemeler web uygulamalarından kâr elde etmenin tek yolu değildir. Dijital reklamcılık, satış ortağı bağlantıları, sponsorluklar, diğer ürün ve hizmetlerin çapraz tanıtımı vardır.

Bununla birlikte, web geliştiricilerinin başlıkları okuması ve ödemeyi kıskandırması son derece makuldür. Yerel pazar yerlerine web URL'si gönderemezsiniz, o halde web geliştiricilerinin ne yapması gerekir? Yapacağınız şey yerel bir "sarmalayıcı uygulama" oluşturmaktır. Hedeflemek istediğiniz her platform için sadece bir web görünümü içeren boş bir yerel uygulama oluşturun. Web görünümü, gerçek uygulamayı yerleştirdiğiniz yerdir. Ardından bu uygulamaları çeşitli pazar yerlerine gönderirsiniz (umarım, paranın nasıl geliştiğini izlersiniz!). Günümüzde ana pazar yerlerinde web destekli yüzlerce uygulama büyük olasılıkla yüzlerce, hatta binlerce uygulama olsa da bazılarını o kadar kurnazca benzeştirmiş ki web uygulamalarını hiç bilmiyoruz bile.

Dezavantajı ise her platform için çapraz derleme yapma yüküdür. PhoneGap gibi mevcut bir çerçeve bu noktada size yardımcı olabilir. Daha da iyisi, PhoneGap Build ve Apparatio gibi web hizmetleri geliştiriliyor. Bu web sitelerini kod deponuza yönlendirdiğinizde ilgili mağazalara gönderilmeye hazır bir Android uygulaması, bir iOS uygulaması vb. açılır. Makinenize yerel SDK yüklemeniz gerekmez. Tüm bu yerel uygulamaları derlemek için tek ihtiyacınız bir kod düzenleyici ve web tarayıcısıydı.

Pazar yerleri, web uygulamalarını yerel olarak sarmalamanın ek yükü olmadan doğrudan web uygulamalarını destekleyecek mi? Henüz net değil. Google'ın geçen yıl Chrome Web Mağazası'nı kullanıma sunduğunu biliyoruz. Chrome yalnızca masaüstü için geçerli olsa da, mağaza diğer tarayıcı tedarikçilerinin ilgisini tetikledi ve mobil cihazlara özgü bazı denemeler de dahil olmak üzere web uygulaması kataloglarına yönelik trendin genel bir parçası. Web mağazası konsepti için erken bir zaman, ancak işaretler umut verici.

Sonuçlar

Burada kazanan ilan etmek güzel olurdu, ancak şu anda net bir kazanan yok. Bazı uygulamalar en çok yerel uygulamalar için, bazıları ise web için uygundur. Web yığını muhtemelen daha da fazla ivme kazanıyor ancak özellikler ve yürütme nitelikleri açısından yerel uygulamalar da hızlı ilerliyor. Web teknolojilerinin, mobil işletim sistemlerinin çoğunda birinci sınıf vatandaşlar olduğu bir zaman gelmediği sürece, yerel teknoloji her zaman önemli bir konu olacaktır.

Bu makalede bahsi geçen tekniklerden biri karma uygulamalardır. Bu, bazı geliştiriciler için en iyi uzlaşma yöntemi olabilir: Mümkün olduğu yerlerde web görünümü, bulunmadığı yerlerde ise platforma özgü yerel bileşenler.

Web yolunu seçerseniz web standartlarına ve progresif geliştirme ilkesine dikkat edin. Web, etraftaki çok sayıda cihazı ve işletim sistemini nasıl hedefleyeceğini bilen bir teknolojidir. Buna "parçalanma" veya "çeşitlilik" adını vermeniz fark etmeksizin, web bunu benimser ve geliştiriciler, mevcut tüm tekniklerden yararlanabilirsiniz.