שיטות לפיתוח אפליקציות

אז החלטתם לפתח אפליקציה. מזל טוב !

מה השיטות והטכנולוגיות העומדות לשירותכם ?

 Native

זאת בעצם הדרך הרשמית לפתח אפליקציות.
לאנדרואיד יש תשתית שגוגל פיתחה ולאייפון תשתית שאפל פיתחה.
לשני הפלטפורמות יש את הדרכים שלהם כדי לממש זאת:
באנדרואיד משתמשים בג׳אווה, וכיום גם בקוטלין (המעולה חייב לציין) ובשביל לפתח ולאייפון משתמשים בסוויפט (ובעבר בobjective c – איכס)

לכל פלטפורמה גם יש את התוכנה הרשימת הנהוגה לשימוש
android studio ו xcode

יתרונות

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

חסרונות

זמן – לוקח ה-ר-ב-ה יותר זמן לפתח אפליקציות נייטיב
קושי – פיתוח אפליקציות נייטיב קשה משמעותית מפיתוח אפליקציות cross platform כפי שנראה בהמשך

 ? מתי כדאי לפתח בנייטיב

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

Hybrid


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

אפליקציות ווב

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

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

חסרונות
– בעיות רציניות בביצועים
– כמות באגים בלתי נתפסת

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

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

 

  אפליקציות cross platform

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

Xamarin

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

יתרונות

– דוט נט היא נחשבת אחת השפות המתקדמות בשוק
– הטכנולוגיה מאפשרת גישה ישירה לapi של הפלטפורמות

חסרונות

– אין הרבה שימוש לדוטנט כיום למעט חברות ממשלתיות ומוצרים של מיקרוסופט.
– תהליך הפיתוח נחשב מורכב יחסית לעומת האלטרנטיבות – ישנו צורך להכיר יותר את הapi's של הפלטפורמות.
– כמפתח – אין הרבה ביקוש ל.net
כמי שמחפש מפתחים – אין הרבה מפתחים שיודעים .net

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

 

React Native

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

יתרונות

– היא מבוססת על  react שנחשבת לאחד התשתיות הטובות לui – ומי שכבר מכיר react יהיה לו      קל לעבוד עם ריאקט נייטיב
– היא משתמש בjavascript שהיא השפה הכי נפוצה כיום ולא בכדי, קל נורא לעבוד איתה
– יש לה קהילה גדולה מאוד והמון ספריות
– יש כלי ממש מגניב שנקרא code push – של מיקרוסופט, שדרכו ניתן להוציא עדכונים לאפליקציות מבלי לעבור בחנות. ז״א, שאם יש עדכון דחוף שרוצים להוציא, אפשר לעשות זאת בלייב והמשתמשים יקבלו אותו אוטומטי מבלי שיצטרכו להוריד עדכון מהחנות.*

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

חסרונות

– כדי לתקשר עם הפלטפורמות נייטיב יש צורך להיעזר בקוד מגשר כשצריך להיות כתוב בשפה של הפלטפורמה = ז״א – שלעומת xamarin, אם יש צורך לכתוב bridge – קוד מגשר כדי לתמוך בפונקציונליות שלא נתמכת בreact native – צריך לעבוד יותר קשה (להכיר גם את הapi וגם את השפה)
– ישנו צורך להכיר את הide's בשני הפלטפורמות – מה שאומר שכדי לפתח לאייפון יש צורך לעבוד עם  mac . (אבל בינינו מי לא עובד עם  mac כמפתח אפליקציות ?)

* זה נכון לרוב העדכונים שתוציאו, אבל רק לאלה שלא היה בהם שינוי בקוד נייטיב – ז״א שלא הוספתם ספריות חדשות

** ישנו פתרון תשתיתי שניתן להשתמש שנקרא expo שזה בעצם דרך שבה אתם רק כותבים קוד js והתשתית דואגת להפוך את זה לאפליקציות בcloud. ז״א שאין צורך להשתמש בכלל בנייטיב . לא בide ולא בסימולטורים.
אני השתמש בזה קצת כשהתחלתי לפתח אבל אני לא ממליץ על זה מעבר לשימוש בסיסי כי expo עצמו יחסית מוגבל במה שאפשר לעשות איתו – כשמשמשים בו צריך לעבוד רק עם ספריות שלו, ואפשרי גם לשנות את זה אבל זה פעולה שנחשבת מבאסת 🙂

 

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

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

 

Flutter

Flutter זה הפתרון של גוגל לcross platform, כשהוא תופס יותר ויותר תשומת לב בצורה חיובית.
כמו האלטרנטיבות האחרות גם פה מדובר בקוד משותף שיוצר אפליקציות לandroid וios.
כשההבדל המשמעותי הוא בשפה – Flutter עובד עם Dart, שהיא שפה שגוגל פיתחו.

יתרונות

– לFlutter יש ביצועים יותר טובים מreact native כתוצאה משימוש בDart.
– Flutter לא מתממשק ישירות לרכיבי ui נייטיב אלא לרכיבים שפותחו ע״ גוגל, מה שיכול לקצר משמעותית את הזמן כדי לפתח רכיבי ui.
– הdocumentation בflutter נחשב ברמה גבוהה יותר.
– אפשר להתממשק לnative apis מבלי לכתוב bridge נפרד כמו בreact native.

חסרונות

– Flutter נורא צעירה , ולפיכך יש לה הרבה פחות ספריות ותשתיות מreact native.
– יש צורך ללמוד שפה חדשה – Dart
– יש קצת יוצר כבדות בפיתוח ui לios – מאחר והיא תומכת יותר טוב ברכיבי ui של android(מה לעשות, גוגל זה האבא שלו)

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

כמפתח, מה כדאי לי ללמוד ? 

מבחינת השוק: לnative יש עדיין צורך די גדול ויש לא מעט אפליקציות שמפותחות או מתוחזקות בזה.
ועם זאת, יש המון גם לreact native. אני מעריך שבשניהם יש צורך גבוה, אבל אם הייתי צריך להמר על מה יותר יתפוס בעתיד הקרוב (ואולי כבר היום) – cross platform – אין מה לעשות, זה פשוט זה יותר כלכלי.
Flutter עוד חדש ואין כמעט ביקוש אליו אבל יש סטארטאפים שמתחילים להתעניין ולהתנסות – בעיקר כאלה שחמים על טכנלוגיות חדשות או כאלה שרוצים לתרום לפיתוח flutter ע״י כך שישתמשו בזה.

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

 

זה ה2 סנט שלי על הנושא.

אהבתם ? תרגישו חופשי להגיב ולשתף 🙂

השאר תגובה