Flutter - מה מי מו?
נעים להכיר - Flutter, מבית גוגל, היא חבילת תוכנה בקוד פתוח לפיתוח אפליקציות למגוון פלטפורמות כגון Android, iOS, Linux, Mac, Windows, Google Fuchsia & Web בעזרת בסיס קוד יחיד.
רקע
עולם המובייל מתחלק לשתי מערכות הפעלה עיקריות השולטות בשוק, שכולנו מכירים, Android ו-iOS. שאלתם את עצמכם אי פעם - כאשר נפתח מוצר ואפליקציית מובייל, איך נחליט באיזה מערכת הפעלה לבחור? האם נרצה אפליקציה למשתמשי Android או משתמשי iOS? שאלה מצחיקה? לא? - תופתעו לדעת שזאת שאלה שנשאלה בעבר והחלטות כמותה נעשו עבור מגוון מוצרים ואפליקציות. בעבר הרבה חברות בחרו לפתח למערכת הפעלה ספציפית תחילה ולאחר מכן להתאים ולפתח למערכת ההפעלה השניה. אגב, לרוב התחילו מפיתוח למכשירים תומכי Android ולאחר מכן פיתחו, אם בכלל גם ל-iOS.
איך התקדמנו מהעבר החשוך ההוא לזמן הנוכחי?
היום, אין בכלל שאלה - כשמפתחים אפליקציה מפתחים לכל מערכות ההפעלה עם שאיפה לתמיכה בכל סוגי המכשירים והגרסאות. השינוי הזה נובע מתפיסה עסקית מובהקת - אם אתה לא שם אתה לא קיים. לא קיימת חברה או מוצר שמכבד את עצמו שלא יהיה נוכח בכל מערכות ההפעלה וחנויות האפליקציות. אז מה ההבדל? בעבר היו שתי מערכות הפעלה ובחרנו לא לפתח לכולן או לעשות זאת בשלבים בטווחים של חודשים או אפילו שנים, אם בכלל. להסביר את ההבדל זה פשוט - השקעה כפולה - כפול משאבים וכפול עלויות (ואפילו יותר). למה? כי צריך צוות מפתחים נפרד שיפתח לAndroid וצוות מפתחים נפרד שיפתח לiOS, כל מערכת הפעלה בשפת התכנות שלה. בנוסף, ההתנהגות וחווית המשתמש גם הן לא זהות במדויק ולכן גם מנהלי מוצר, מעצבים מנהלי שיווק וחנויות אפליציה ושאר שרשרת המחקר והפיתוח משקיעים כפול זמן ועבודה בשביל לספק את אותה אפליקציה לכל המערכות.
אז עברנו על הרקע, העבר וההווה - מה לגבי העתיד?
התשובה היא Flutter - טכנולוגית פיתוח היברידית. אם נעצור רגע ונחשוב בפשטות על כל האפליקציות בעולם - באמת על כולן. מה ההבדל בין אותה אפליקציה בAndroid לאותה אפליקציה בiOS? האם משתמשי וואטסאפ בAndroid נהנים יותר? האם משתמשי Instagram ב-iOS רואים אפליקציה שונה מהמשתמשים ב-Android? האם אפליקציות החדשות האהובות עלינו מראות תוכן שונה ב-Android וב-iOS? - ברור שלא. אז למה שאותה אפליקציה תהיה כתובה פעמיים בשפות שונות, בקוד שונה, בארכיטקטורות שונות, ע״י מפתחים שונים ושההתעסקות בהן תידרוש פי 2 משאבים?
Flutter היא טכנולוגיית Cross Platform יעילה ומשוכללת ואם בעבר בחירה בגישת Cross Platform נחשבה לפשרה, כיום ברור שבחירה ב-Flutter היא צעד שיש לשקול ברצינות בפיתוח כל אפליקציה שהיא, כולל כאלו הדורשות משאבים משמועתיים. Flutter נכתבת בשפת Dart ויש לה מנוע הכולל בתוכו את המנוע הגרפי Skia. המנוע מסוגל לרוץ על גבי מערכות הפעלה שונות כאילו הוא חי בבועה משלו. הוא נמצא בשכבה אחת מעל מערכת ההפעלה ומפעיל בה את יכולות הנייטיב שלו מבלי להיות תלוי במערכת, בקומפוננטות וב-UI. התוצאה היא ביצועי נייטיב ופיתוח נקי שכלל לא מורגש שלא נעשה בשפת הפיתוח של אנדרואיד או iOS. יתרון משמעותי נוסף של Flutter הוא היכולת לבצע Hot Reload. ביצעת שינוי בקוד ואתה רוצה לראות איך הוא עובד עכשיו? לא צריך לרנדר ולהמתין לסוף התהליך. אחרי שמירה זריזה ניתן מיד לראות את השפעת השינוי. זו יכולת שמקצרת משמעותית את זמני הפיתוח".
עד כמה מורכב לפתח ב-Flutter? ומה לגבי ביצועים?
הפיתוח ב-Flutter מבוסס על ווידג'טים, כך שקל לעשות שימוש חוזר בקיים. קיים מאגר גדול של קומפוננטות UI מוכנות, יש להן כמה מצבים והן מתאימות את עצמן למערכת ההפעלה בזמן שהיא רצה. למשל: כפתורים, תפריטי צד, כרטיסיות. רשימות, לדוגמה, מתנהגות בצורה אחרת באנדרואיד וב-iOS, אבל Flutter מסוגלת להתאים את ההתנהגות בצורה אוטומטית וכך מייתרת את הצורך לבנות מחדש. קל גם לממשק פיתוח ב-Flutter לקוד נייטיבי מגרסה קודמת, בזכות קונספט ה-Bridging.
מבחינת הביצועים - אין פגיעה בביצועים. חוויית השימוש חלקה ומרגישה נייטיב לגמרי. המנוע מנהל את כל התהליכים ומבטיח ביצועים של 60FPS - שזה שווה ערך לנייטיב. במכשירים תומכים ניתן אפילו להגיע ל-120FPS לפעמים. התוצאה עובדת באותה הרמה והמשתמש לא ירגיש בהבדל.
על קצה המזלג - טכנולוגיות היברידיות נוספות לעומת Flutter
Flutter אינה לבד בשוק הפיתוח למובייל. מלבד פיתוח נייטיב לאנדרואיד ול-iOS קיימות גם פלטפורמות פיתוח נוספות, דוגמת פלטפורמת הקוד הפתוח Ionic ופלטפורמת React Native מבית פייסבוק. אך בעוד ש-Ionic מתמקדת בווב ויכולותיה וביצועיה בינוניים ו-React Native עוד לא יצאה משלב הבטא ולא ברור עד כמה מתכננת פייסבוק להשקיע בה - Flutter מכה שורשים ומתרחבת. הפלטפורמה נמצאת ב-Production ואפליקציות גדולות כבר בחרו להתבסס עליה, דוגמת Ali Baba בעולם ואל-על והתעשייה האווירית בישראל. קהילת משתמשי Flutter צומחת במהירות ומספקת בסיס ידע נרחב של מקצוענים. GitHub, העוקב אחר טרנדים בעולם הטכנולוגיה, מציג את Flutter בראש טכנולוגיות הפיתוח הצומחות כיום. למרות שהיא צעירה מ-React Native בכמה שנים, גודל הקהילה של Flutter כבר עבר אותה.
עד כמה מאתגרת הסבה ל-Flutter? בכל זאת, צוות הפיתוח צריך ללמוד טכנולוגיה חדשה
מדובר במעבר פשוט יחסית. קל מאוד לקחת מפתח נייטיב של אנדרואיד או iOS ולהסב אותו ל-Flutter. כך גם עם מפתחי ווב, שכן צורת העבודה ב-Flutter דומה במקצת לפיתוח ווב. בכתיבת קוד ובעבודה הריאקטיבית, למשל. מנסיוננו הרב ב-Compie, הסבת צוות פיתוח מצריכה זמן לימוד קצר למדי. ההכשרה היא מהירה וקצרה וכך גם עקומת הלמידה. מפתח מנוסה לא ימצא את הנושא כמורכב. עקרונות הפיתוח של השפה כבר מוכרים לו. תחת ידינו עברו כבר מפתחים רבים שבאו בלי ניסיון ב-Flutter ותוך מספר שבועות כבר החלו לתכנת בה.