אפליקציה היברידית או נייטיב?
- Eli Chitrit
- 16 בינו׳ 2023
- זמן קריאה 3 דקות
נראה שבתקופה האחרונה כל מוצר או שירות הופכים להיברידים, ונדמה שלפעמים השימוש במילה נועד רק כדי למשוך לקוחות פוטנציאליים בתקווה שזה ישמע להם חדשני.
מכוניות הפכו היברידיות כבר לפני שנים רבות בזכות הסבתן לחשמליות לצד המשך השימוש בבנזין, קופות החולים מתהדרות במעבר לטיפולים היברידיים - גם תורים במרפאה, גם ביקורי בית וגם טיפולים אונליין בטלפון או בזום. אז, מה זה בכלל היברידי? וכיצד הוא בא לידי ביטוי בפיתוח אפליקציות או אתרי אינטרנט?

מקורה של המילה היברידי Hybrid מהשפה הלטינית ונקשר בעולם החי להכלאה בין מינים כדוגמת הלייגר (אריה עם טיגריס Lion & Tiger) או הזונקי (זברה וחמור), בטבע ובחקלאות ההכלאה משמשת להשבחה של צמחים. בכל הקשור לטכנולוגיה המונח קיבל משמעות של ״גם וגם״, גם דלק וגם חשמלי.
עד לפני עשור, עסקים או יזמים אשר היו רוצים לפתח מוצר, היו צריכים לקחת בחשבון פיתוח ורסטילי המכונה פיתוח Native מורכב ויקר אשר כלל: פיתוח בשפת Java לאפליקציית אנדרואיד, פיתוח בשפת swift לאפליקציית iOS של אפל, פיתוח בצד השרת (בשפת CSharp או NodeJS או JAVA ואחרות) ובמקרה של אתר אינטרנט תואם גם באחת משפות הלקוח הקיימות. במקרה הטוב, חברת הפיתוח העסיקו מתכנת אחד לכל סביבת פיתוח (ברוב המקרים יותר מאחד) מה שמצריך צוות פיתוח המורכב מ-4 מפתחים ויותר בעבור פרויקט בודד. למרות שהפתרונות לא איחרו לבוא ונמצאים איתנו כבר שנים, חברות פיתוח רבות עדיין מפתחות בשיטה זו למרות, שברוב המקרים זה מיותר לגמרי.
אז מה זה פיתוח בסביבה היברידית?
לפני שנים תפסו את מעמדם בכבוד מתכנתי Fullstack - מתכנתים השולטים במגוון סביבות פיתוח (גם צד שרת, גם צד לקוח וגם מסדי נתונים) והבולטים בינהם הנם מפתחי MERN ראשי תיבות של Mongo מסד נתונים, Express ספריית פיתוח צד שרת, React סביבת פיתוח לאפליקציות ואתרים בצד הלקוח מבית פייסבוק ו-NodeJS סביבת פיתוח המשתמשת ב-ES6 JavaScript ובמנוע V8 של גוגל. היכולת של מפתח הפולסטאק לפתח למגוון פלטפורמות בו זמנית מאפשרת לו לפתח מוצר מאפס, מתחילתו ועד סופו, ללא סיוע בכח אדם נוסף. וכל זאת, באמצעות למידה ושליטה בשפת פיתוח אחת בשם Java Script.

כשאלת הביצה והתרנגולת, כדי שמתכנתי פולסטאק יגיחו לעולמות הפיתוח, היה צורך תחילה בסביבות פיתוח תואמות המאפשרות שימוש בשפה אחת המסוגלת להיות פונקציונאלית מול ממשקים ופלטפורמות שונות. לצד התפתחות שפת JavaScript אשר נולדה כשפת סקריפטים פשוטה בשלהי שנות ה-90 ונתמכה על ידי דפדפנים פשוטים, נולדו גם פלטפורמות וספריות המושתתות כולן על שפת JavaScript כמו Node המאפשרת פיתוח בצד השרת, React Native מבית פייסבוק המאפשרת פיתוח אפליקציות לטלפונים חכמים ולטאבלטים ואין ספור סיפריות מובנות התומכות בשלל מסדי נתונים ובעיקר MongoDB. פריצת הענן ושירותי הענן של Amazon וגוגל חתמו את העניין עם התמיכה בפלטפורמות, הפשטות בניהול גרסאות, העלויות בשיטת ה-״שלם על פי השימוש״.
באמצעות שפת פיתוח אחת, תוכלו לפתח אפליקצייה היברידית שמותאמת למערכת הפעלה אנדרואיד, iOS של אפל, לטאבלטים ואייפדים, לאתר אינטרנט מותאם ואת צד השרת וכל זאת עם מתכנת אחד בשימוש קוד זהה לכל הפלטפורמות. במקרה הזה גיוס כח אדם נוסף רק יזרז את זמן הפיתוח אך אתם בהחלט לא חייבים כח אדם נוסף מסיבת מיומנויות פיתוח בשפות אחרות.
במקום לפתח מוצר ב3-5 שפות פיתוח שונות, אתם יכולים לפתח את כל הפרויקט בשפה אחת כך תחסכו בקלות זמן, המון זמן וכסף, המון כסף.
וזו היא אפליקציה היברידית. אפליקציה אחת שפותחה בקוד זהה ומתאימה לכל הפלטפורמות הקיימות ולכל סוגי המכשירים.
האם המוצר שלכם מתאים לפיתוח היברידי?
פעמים רבות נפגשתי עם יזמים שמיהרו להנמיך ציפיות מפיתוח היברידי בגלל תכונות חסרות או חוסר תמיכה בשירותי צד שלישי מתקדמים. כמובן שהפיתוח ההיברידי בסביבת React Native ובשנתיים האחרונות גם גוגל נכנסה עם Flutter עדיין צעיר ולומד איך לרוץ בכל יום שעובר אך עדיין הוא תומך ב-80% מהמקרים ומכסה את כל הפונקציונאליות שפיתוח Native מאפשר כולל: מיקום, גישה למצלמה ולקבצים, עבודה ישירה מול Firebase, הרשאות, תמיכה בשירותי גוגל, סליקה, ביצועים, התראות ועוד.
בפיתוח משחקים סביבות הפיתוח של React Native או Flutter עדיין לא שם אבל, עדיין קיימת אלטרנטיבה לפיתוח Native מורכב בסגנון Unity5 המאפשר פיתוח משחקי דו או תלת מימד למספר פלטפורמות (pc xbox, mobile) בקוד אחד #C.

לפני שאתם מחליטים על סביבת הפיתוח של הרעיון / המוצר שלכם כדאי שתבחנו:
מורכבות המוצר, האם המוצר דורש שימוש בתכונות מכשיר מתקדמות שפיתוח היברידי בסביבת React או Flutter לא תומכות?
לאלו פלטפורמות אני מייעד את המוצר שלי?
האם התקציב העומד לרשותי כעת (לפחות עד הגיוס הראשוני) מאפשר לי לגייס צוות פיתוח גדול או חברה המפתחת אפליקציות Native?
אתם מחפשים תחילה לפתח גרסה רזה או לבחון התכנות? האם לא כדאי להתחיל בפיתוח מהיר וזול לפני שנכנסים לפיתוח ארוך בעלויות מטורפות?
Comments