HTML5 לעומת אפליקציה מקורית

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

Michael Mahemoff
Michael Mahemoff

מבוא

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

מגוון תכונות

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

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

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

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

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

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

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

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

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

ביצועים

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

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

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

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

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

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

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

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

לא כל ההתקדמויות במחשבים הגיעו עדיין לכל פלטפורמה לנייד, אבל המגמות מצביעות על כך שהן בדרך. חשוב גם לציין שרוב האפליקציות לנייד הן לא משחקי תלת-ממד חדשניים, אלא מבוססות בעיקר על מידע: חדשות, אימייל, לוחות זמנים, רשתות חברתיות וכו'. אם תבקרו בכמה אתרים מהנייד, למשל 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 המקוריים הפופולריים יותר בפלטפורמה שבחרתם, ותראו מגוון רחב של מנגנוני ממשק משתמש בעבודה.

יכולת גילוי

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

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

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

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

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

מונטיזציה

נקודה: אפשר לייצר הכנסות ממודעות מותאמות

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

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

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

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

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

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

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

מסקנות

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

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

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