HTML5 לעומת מודעות מותאמות

הדיון על אפליקציות לנייד

Michael Mahemoff
Michael Mahemoff

מבוא

אפליקציות לנייד ו-HTML5 הן שתי טכנולוגיות פופולריות מאוד כרגע, ויש ביניהן הרבה חפיפה. אפליקציות אינטרנט פועלות בדפדפנים לנייד, ואפשר גם לארוז אותן מחדש כאפליקציות מקוריות בפלטפורמות שונות לנייד. בגלל מגוון הפלטפורמות שצריך לתמוך בהן, ובגלל העוצמה של דפדפנים לנייד, מפתחים פונים ל-HTML5 כפתרון של "כתיבה אחת, הפעלה בכמה מקומות". אבל האם זה באמת אפשרי? עדיין יש סיבות טובות להשתמש באפליקציות Native, וברור שרבים מהמפתחים אכן בוחרים בדרך הזו. במאמר הזה נדון בהבדלים בין אפליקציות שמותאמות למערכת הפעלה ספציפית לבין אתרים.

מגוון התכונות

נקודה למחשבה: ל-Native יש יכולות נוספות

אפשר לחלק את הפונקציונליות של אפליקציות לנייד לשני מימדים: חוויית השימוש באפליקציה עצמה, והאופן שבו היא משתלבת במערכת האקולוגית של המכשיר. לדוגמה, ב-Android, אלה תכונות כמו ווידג'טים והתראות. המודעות המקוריות מצטיינות בשני המאפיינים.

מבחינת חוויית השימוש באפליקציה, אפליקציות מקוריות יכולות לעשות יותר. הם יכולים לקבל בקלות אירועי החלקה, ואפילו אירועי מגע מרובה, בפלטפורמות שתומכות בכך. בדרך כלל הם יכולים לפעול כשלוחצים על מקשים פיזיים, כמו לחצן החיפוש של Android ואמצעי השליטה בעוצמת הקול. הם יכולים לגשת גם לחומרה, כמו GPS ומצלמה. ובאישור המשתמש, חלק מהפלטפורמות מספקות גישה בלתי מוגבלת למערכת ההפעלה. פשוט מנסים לזהות כמה סוללה נשארה באמצעות HTML5!

אבל זה לא רק חוויית השימוש באפליקציה. מערכת הפעלה כמו Android מספקת לאפליקציות דרכים שונות ליצור אינטראקציה עם משתמשים, וגם עם אפליקציות אחרות. יש לך ווידג'טים פעילים בדף הבית. יש לכם התראות שמופיעות בשורת הסטטוס של המכשיר. יש גם כוונות (intents), שמאפשרות לאפליקציה להודיע שהיא מספקת שירות כללי שאפליקציות אחרות עשויות להזדקק לו מדי פעם.

נקודת מבט נגדית: אפשר להוסיף תכונות מקוריות, ובכל מקרה האינטרנט מתקדם

נכון, הרבה תכונות באפליקציה פשוט לא זמינות באפליקציית HTML5. לא משנה כמה כישורי האינטרנט שלכם טובים, אם האפליקציה תקועה בארגז חול ללא API של מצלמה, היא לא תצלם תמונות בקרוב! למזלכם, אתם לא צריכים להיות בארגז החול הזה. אם אתם ממש צריכים שאפליקציית האינטרנט שלכם תצלם תמונה, אתם יכולים ליצור אפליקציית נייטיב עם תצוגת אינטרנט מוטמעת שמספקת את רוב ממשק המשתמש. כך פועלת מסגרת PhoneGap בקוד פתוח: היא ממלאת את הפער על ידי חשיפת תכונות מקוריות כשירותי אינטרנט, שתצוגת האינטרנט קוראת להם באמצעות API רגיל של רשת. כשמפתחים אפליקציה היברידית כזו, אפשר גם להשתמש בתכונות של הפלטפורמה כמו ווידג'טים, התראות ו-Intents.

יצירת אפליקציה היברידית – נייטיב פלוס אינטרנט – היא פתרון לא אידיאלי. היא מוסיפה מורכבות וחלה רק על אפליקציות אינטרנט שעטופות כאפליקציות מקוריות, ולא על אתרים מסורתיים שאליהם ניגשים מדפדפן בנייד. אבל יכול להיות שלא יהיה צורך בכך לאורך זמן. תקני האינטרנט מתפתחים במהירות, ודפדפנים מודרניים לנייד עומדים בקצב. לדוגמה, יש תמיכה נרחבת בקרב סמארטפונים מודרניים באחסון אופליין, במיקום גיאוגרפי, בגרפיקה של Canvas ובהפעלה של סרטונים או אודיו. אפילו מצלמה מתחילה להיות נתמכת – החל מ-Android 3.1, אפשר לצלם תמונות וסרטונים באמצעות תקני אינטרנט. בנוסף, הדפדפן העדכני ביותר ל-iOS תומך ב-WebSocket לסטרימינג דו-כיווני, וגם בזיהוי של כיוון המכשיר.

בסך הכול, תחום הנייד מתפתח. אבל האינטרנט גם מתפתח, ובמהירות. רק בדפדפנים למחשב יש חמישה ספקי דפדפנים גדולים שמפתחים סטנדרטים ומוסיפים תכונות בקצב מסחרר. העברת התכונות האלה לנייד היא לא תהליך פשוט, אבל רבות מהן כבר הועברו לדפדפנים בנייד.

הפער בין אפליקציות נייטיב לאפליקציות אינטרנט מצטמצם, אבל עדיין יש הבדלים.

ביצועים

נקודה: מודעות מותאמות פועלות מהר יותר

באפליקציות מקוריות אין את המחסום של זמן הריצה באינטרנט. הן פועלות קרוב לחומרה ויכולות לנצל את היתרונות של שיפורי ביצועים כמו האצת GPU וריבוי תהליכים.

נקודת מבט נגדית: זמני הריצה של האינטרנט מהירים הרבה יותר היום, ובכל מקרה רוב האפליקציות לא צריכות את המהירות הזו

האינטרנט נהיה מהיר יותר בשנים האחרונות, וזו לשון המעטה. ‫V8, מנוע JavaScript שמגיע עם Chrome, היה פיתוח משמעותי בביצועי האינטרנט כשהוא הושק, ומאז הוא רק השתפר:

תרשים ביצועים של V8

מנועי עיבוד גרפיים גם האיצו את האינטרנט, ועכשיו מתחילים להשתמש בהאצת חומרה. כדאי להסתכל על פסי ההאטה שנוצרו על ידי hardware accelerated-canvas:

תרשים קנבס עם האצת חומרה

בנוסף, Web Workers API החדש מאפשר ריבוי תהליכים (multithreading), ומפתחי אתרים מודרניים יכולים גם להשתמש במגוון ספריות שעברו אופטימיזציה לשיפור הביצועים, וכן בטכניקות אופטימיזציה של הביצועים שנבדקו היטב. רוב הכלים האלה נוצרו במקור לאינטרנט במחשב, אבל הם עדיין רלוונטיים לנייד, ויש יותר ויותר התייחסות לנייד. לדוגמה, מומחה הביצועים סטיב סאודרס (Steve Souders) הקדיש דף לכלים לשיפור הביצועים בנייד.

לא כל החידושים במחשבים שולחניים הגיעו עדיין לכל הפלטפורמות לנייד, אבל המגמות מצביעות על כך שהם בדרך. חשוב גם לציין שרוב האפליקציות לנייד הן לא משחקי תלת-ממד מתקדמים, אלא מבוססות בעיקר על מידע: חדשות, אימייל, לוחות זמנים, רשתות חברתיות וכו'. אם תיכנסו לכמה אתרים מהנייד, למשל Gmail,‏ Amazon או Twitter, תוכלו לראות שהביצועים של אתרי אינטרנט לנייד הם יותר ממספיקים. בנוגע למשחקים, אפשר כבר ליצור משחקים בסיסיים באמצעות canvas דו-ממדי, ו-WebGL מתחיל להופיע בניידים – אפשר לראות את זה ב-Firefox 4. עד שהתכונה תהיה נפוצה, יש משפחה גדלה של מסגרות שמהדרות אפליקציות WebGL לאפליקציות מקוריות שיכולות לנצל את OpenGL, למשל ImpactJS.

חוויית מפתחים

נקודה: קל יותר לפתח אפליקציות מקוריות

אפליקציות מקוריות משתמשות בשפות תכנות חזקות (למשל Java,‏ Objective C,‏ C++‎) שנועדו לפיתוח אפליקציות מורכבות, ויש להן רקורד מוכח. ממשקי ה-API תוכננו מההתחלה כדי לתמוך בפלטפורמה הרלוונטית. אפשר לבצע בקלות ניפוי באגים באפליקציות באמולטורים למחשב, שמספקים ייצוג קרוב של מכשיר היעד.

מה שהופך את פיתוח האתרים לבעייתי במיוחד הוא המגוון העצום של דפדפנים וסביבות זמן ריצה. כשמריצים את האפליקציה, אין ערובה לכך שהתכונה X תהיה זמינה. גם אם כן, איך הדפדפן יטמיע את זה? הסטנדרטים פתוחים לפרשנות.

נקודת מבט אחרת: פיתוח לאינטרנט הוא לרוב קל יותר, במיוחד אם רוצים לטרגט כמה מכשירים

נתחיל עם טכנולוגיה בסיסית. נכון שסטנדרטים לאינטרנט נוצרו במקור בתקופה שבה האינטרנט התבסס בעיקר על מסמכים ולא על אפליקציות, ו-JavaScript נבנתה ונפרסה תוך 10 ימים בלבד. אבל התברר שהם הרבה יותר יעילים ממה שחשבו – מפתחי אתרים למדו לנצל את החלקים הטובים ולשלוט בחלקים הבעייתיים, והם מבינים עכשיו איך לעצב אתרים שניתן להרחיב אותם. בנוסף, התקנים לא נשארים סטטיים, ומאמצים כמו HTML5,‏ CSS3 ו-EcmaScript Harmony משפרים את חוויית המפתחים. האם אתם מעדיפים C++‎,‏ Java או JavaScript? זו שאלה שנויה במחלוקת, והתשובה עליה תלויה גם ב-code base הקיים שלכם. אבל בהחלט אפשר לכלול את JavaScript כמועמדת רצינית בימינו.

החיסרון של פיצול הדפדפנים וסביבות זמן הריצה הוא העובדה שכל הסביבות האלה קיימות מלכתחילה. פיתחתם אפליקציית Android ב-Java, ועכשיו אתם צריכים לבצע פורט מלא ל-Objective C כדי לתמוך ב-iOS. מפתחים אפליקציית אינטרנט פעם אחת והיא תפעל ב-Android וב-iOS, שלא לדבר על WebOS, ‏ BlackBerry, ‏ Windows Mobile ו… טוב, זאת התיאוריה בכל אופן. בפועל, תצטרכו לבצע שינויים בכל פלטפורמה אם אתם רוצים להשיג את חוויית השימוש הנכונה. אבל גם באפליקציות מקוריות צריך לעשות את זה ברוב מערכות ההפעלה לניידים – יש גרסאות שונות ומכשירים שונים.

החדשות הטובות הן ש'פיצול' תמיד היה קיים באינטרנט, ויש טכניקות מוכרות להתמודדות איתו. הכי חשוב, העיקרון של שיפור הדרגתי מעודד מפתחים למקד למכשיר בסיסי קודם, ולהוסיף שכבות של תכונות מדהימות שספציפיות לפלטפורמה במקומות שבהם הן זמינות. העיקרון של זיהוי תכונות גם עוזר, והיום יש לנו תמיכה בספריות כמו Modernizr כדי לתמוך בעיצוב אתרים רספונסיבי. אם תשתמשו בטכניקות האלה בצורה מושכלת, תוכלו להרחיב את טווח ההגעה לרוב המכשירים, כולל מכשירים ישנים כמו שעונים וטלוויזיות, ללא קשר ליצרן ולמערכת ההפעלה. ב-Google IO בשנת 2011, הצגנו הדגמה של ממשקי משתמש מרובים, שבה התמקדנו בגורמי צורה שונים (טלפון נייד פשוט, סמארטפון, טאבלט, מחשב, טלוויזיה) עם code base משותף של לוגיקה ותגי עיצוב.

מראה ותחושה

נקודה: המודעות המקומיות מתאימות למראה ולתחושה של הפלטפורמה

אחד המאפיינים המגדירים של כל פלטפורמה הוא המראה והתחושה שלה. המשתמשים מצפים שהאמצעים לשליטה יוצגו באופן עקבי ויופעלו באותו אופן. יש ניבים מסוימים שמשתנים מפלטפורמה לפלטפורמה, למשל מה קורה כשהמשתמש מבצע 'לחיצה ארוכה' (ממשיך לגעת ברכיב במשך כמה שניות)? לפלטפורמות יש ניבים סטנדרטיים לדברים כאלה, ואי אפשר לעמוד בכל הדרישות האלה באמצעות אפליקציית HTML5 אחת.

בנוסף, העיצוב והסגנון של הפלטפורמה מנוהלים על ידי ספריית התוכנה המקורית של הפלטפורמה, שהווידג'טים שלה כוללים את העיצוב והסגנון שהמשתמשים מצפים להם. אתם מקבלים הרבה מהמראה והתחושה הצפויים 'בחינם' רק באמצעות שימוש בערכת הכלים המקורית.

נקודת מבט אחרת: לאינטרנט יש מראה ותחושה משלו, ואפשר גם להתאים אישית את ממשק האינטרנט לפלטפורמות שהכי חשובות לכם

כמו שהוסבר בקטע הקודם, הדרך לפתח אתרים היא לכתוב גרסה בסיסית שמתאימה לכולם, ואז לשפר אותה בהדרגה. השיפור בדרך כלל מבוסס על תכונות, אבל אפשר גם לשפר אותו על ידי טירגוט הפלטפורמות שהכי חשובות לכם. זה סוג של 'זיהוי דפדפן', שלפעמים לא מקובל בקהילת האינטרנט, בעיקר בגלל שיש כל כך הרבה דפדפנים אפשריים. אבל אם אתם צופים בשתי פלטפורמות או שלוש עם עדיפות גבוהה מאוד, ואתם מוכנים להשקיע מאמץ נוסף כדי להתחרות בחלופות מקומיות, יכול להיות שזה הפתרון בשבילכם.

לגרסת הבסיס יש מראה ותחושה משלה באינטרנט, ואפשר אפילו לומר שלכל פלטפורמה לנייד יש מראה ותחושה משלה באינטרנט, שנקבעים על ידי דפדפן ברירת המחדל וזמן הריצה של האינטרנט. יכול להיות שהמשתמשים שלכם יסתדרו עם המראה והתחושה של האינטרנט, ואפילו ייהנו מהם. למעשה, כך תוכלו להשיג מידה גבוהה יותר של עקביות עם חוויית הגלישה במחשב, וגם עם חוויית הגלישה במכשירים אחרים שבהם המשתמש עשוי לעבוד. בנוסף, יש הרבה אפליקציות מוצלחות שלא תומכות במראה ובתחושה של מודעות מותאמות. זה נכון במיוחד לגבי משחקים (האם משחק הנייד האהוב עליך נראה ומרגיש כמו מערכת ההפעלה של הנייד שלך?), ואפילו לגבי אפליקציות רגילות יותר. לדוגמה, כדאי לבדוק את לקוחות Twitter המקוריים הפופולריים יותר בפלטפורמה שבחרת, ותראה מגוון רחב של מנגנוני ממשק משתמש בפעולה.

יכולת גילוי

נקודה: קל יותר לגלות אפליקציות מקומיות

מנגנוני הפצת אפליקציות, כמו חנות Google Play ל-Android ו-App Store של אפל, נהנו מפופולריות רבה בשנים האחרונות והם כוח מניע מרכזי בתעשיית המובייל כולה. כל מפתח יכול לשלוח את אפליקציית הנייטיב שלו לזירת המסחר, שבה משתמשים יכולים לגלות אותה באמצעות שילוב של גלישה, חיפוש וקבלת המלצות. בנוסף, אם עשיתם את העבודה כמו שצריך, הדירוגים והתגובות החיוביים ישכנעו את המשתמשים ללחוץ על לחצן ההתקנה החשוב.

נקודת מבט אחרת: למעשה, קל יותר לגלות אפליקציות אינטרנט

האינטרנט הוא ללא ספק המדיום הכי נגיש שנוצר אי פעם. בכתובת URL פשוטה יש (לפחות בתיאוריה) מזהה ייחודי לכל מה שפורסם באינטרנט, כולל כל האפליקציות שפורסמו באתרים רגילים. מנועי חיפוש מאפשרים לגלות את התוכן הזה בקלות, ואתרים אחרים יכולים לקשר אליו, כולל קטלוגים של אפליקציות לאינטרנט שדומים לחנויות אפליקציות לנייד. אכן, כל אחד יכול לשתף אפליקציות אינטרנט עם חברים פשוט על ידי קישור אליהן בהודעות אימייל ובהודעות ברשתות חברתיות. אפשר לשלוח קישורים גם בהודעות SMS, כך שמשתמשים בנייד יוכלו ללחוץ על הקישור ולהפעיל את האפליקציה בדפדפן במכשיר שלהם.

עדיין אין לנו את אותם שווקים שבהם משתמשים יכולים לדרג אפליקציות ולהוסיף להן תגובות, אבל גם זה ישתנה. להמשך הקריאה…

מונטיזציה

נקודה: אפשר להפעיל מונטיזציה בתוכן מובנה

‫"6 year-old makes app during lunch hour, sells a zillion copies at $3 each". הכותרת הזו מופיעה הרבה בימים האלה, אז לא מפתיע שמפתחים גדולים וקטנים מחפשים דרכים למונטיזציה בשווקים של אפליקציות לנייד. פלטפורמות לנייד מציעות למפתחים כמה דרכים לחייב ישירות על האפליקציות שלהם. האפשרות הכי פשוטה היא תשלום חד-פעמי, כדי לפתוח את האפליקציה לתמיד. בפלטפורמות מסוימות מוצעים גם מנגנונים לתשלום ולמינוי מתוך האפליקציה, והם משולבים באופן הדוק במנגנון עקבי ומאובטח. אמצעי התשלום החדשים האלה מאפשרים למפתחים להפוך אפליקציה פופולרית מאוד למקור הכנסה לטווח ארוך.

בנוסף לתשלומים באפליקציה, אפשר לייצר הכנסות באמצעות מודלים מסורתיים באינטרנט, כמו פרסום וחסות.

נקודת מבט אחרת: תמיד הייתה אפשרות להרוויח כסף באינטרנט, וההזדמנויות רק הולכות וגדלות

האינטרנט לא היה המנוע של התעשייה המודרנית אם לא היו בו הזדמנויות רבות להרוויח כסף. מנגנונים ישירים של 'תשלום לפי שימוש' עדיין לא נפוצים, אבל יש נישות שונות שבהן פתרונות של 'תוכנה כשירות' שמבוססים על מינוי הפכו לפתרונות מעשיים. דוגמאות: Google Apps, מגוון המוצרים של 37Signals וגרסאות פרימיום של שירותי אימייל שונים. בנוסף, תשלומים ישירים הם לא הדרך היחידה להרוויח כסף מאפליקציות אינטרנט. יש פרסום אונליין, קישורי שותפים עצמאיים, חסויות, קידום צולב של מוצרים ושירותים אחרים.

עם זאת, הגיוני לחלוטין שמפתח אתרים יקרא את הכותרות ויקנא קצת ברווחים שלכם. אי אפשר לשלוח כתובת URL של אתר לשווקים המקומיים, אז מה יכול מפתח אתרים לעשות? מה שצריך לעשות הוא ליצור 'אפליקציית עטיפה' מותאמת – לכל פלטפורמה שרוצים לטרגט, יוצרים אפליקציית נייטיב ריקה שמכילה רק תצוגת אינטרנט. בתצוגת האינטרנט מטמיעים את האפליקציה האמיתית. לאחר מכן שולחים את האפליקציות האלה לחנויות השונות (ומקווים שהכסף יתחיל לזרום!). כנראה שיש היום מאות, אם לא אלפים, של אפליקציות מבוססות-אינטרנט בשווקים העיקריים, וחלקן משולבות בצורה כל כך חכמה שאנחנו אפילו לא יודעים שהן אפליקציות אינטרנט.

החיסרון הוא הצורך לבצע קומפילציה צולבת לכל פלטפורמה. כאן יכול לעזור לכם פיתוח באמצעות פלטפורמה קיימת כמו PhoneGap. ויש גם שירותי אינטרנט כמו PhoneGap Build ו-Apparatio שנמצאים בפיתוח. מפנים את האתרים האלה למאגר הקוד, ומופיעה אפליקציית Android, אפליקציית iOS וכן הלאה… מוכנות לשליחה לחנויות המתאימות. לא צריך להתקין SDKs מקוריים במחשב. כל מה שצריך כדי לבנות את כל האפליקציות המקוריות האלה הוא עורך קוד ודפדפן אינטרנט.

האם זירות המסחר יתמכו אי פעם באפליקציות אינטרנט ישירות, בלי כל התקורה של עטיפת האפליקציות באופן מקורי? עדיין לא ברור. אנחנו יודעים ש-Google השיקה את חנות האינטרנט של Chrome בשנה שעברה, ולמרות שהיא רלוונטית רק למחשבים, החנות עוררה עניין אצל ספקי דפדפנים אחרים, והיא חלק ממגמה כללית של קטלוגים של אפליקציות אינטרנט, כולל ניסיונות ספציפיים לנייד. המושג של חנות אינטרנט נמצא עדיין בשלבי פיתוח מוקדמים, אבל הסימנים מבטיחים.

מסקנות

היינו רוצים להכריז על מנצח, אבל כרגע אין מנצח ברור. חלק מהאפליקציות מתאימות יותר לשימוש באפליקציה מקורית וחלק מתאימות יותר לשימוש באינטרנט. לדעתי, יש יותר מומנטום לטכנולוגיות האינטרנט, אבל מבחינת יכולות ואיכות הביצוע, גם אפליקציות מקוריות מתקדמות במהירות. אלא אם יגיע הזמן שבו טכנולוגיות אינטרנט יהיו חשובות ברוב מערכות ההפעלה לנייד, אפליקציות מקוריות תמיד יהיו שיקול חשוב.

אחת מהטכניקות שמוזכרות במאמר הזה היא אפליקציות היברידיות, ויכול להיות שזו הפשרה הכי טובה לחלק מהמפתחים: תצוגת דפדפן במקומות שבהם זה אפשרי ורכיבים מקוריים ספציפיים לפלטפורמה במקומות שבהם זה לא אפשרי.

אם בוחרים בנתיב האינטרנט, חשוב להקפיד על תקני האינטרנט ועל העיקרון של שיפור הדרגתי. האינטרנט הוא טכנולוגיה שיודעת לטרגט את המגוון הרחב של מכשירים ומערכות הפעלה. לא משנה אם אתם קוראים לזה 'פרגמנטציה' או 'מגוון', האינטרנט תומך בזה ואתם, המפתחים, יכולים להפיק תועלת מכל הידע הקודם שקיים.