מה צריך להבין בפיתוח אפליצקיות לסלולר

אתחיל בגילוי נאות: אינני מפתח אפליקציות לסלולר.

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

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

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

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

למשל, פיתוח מבוסס רשת – תקשורת סלולרית של data יקרה יותר מאשר תקשורת בwifi למשל, אם כי כל פעולת רדיו מאוד יקרה בסלולר – כן, גם bluetooth ו GPS.

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

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

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

7 מחשבות על “מה צריך להבין בפיתוח אפליצקיות לסלולר

  1. levdev

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

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

    נסה פעם לצפות ב-youtube על מכשיר Android או iPhone: תוכל לראות סרט בעורך מלא וברזולוציית 720p (או אפילו HD אם ברשותך SGS4 או מכשיר דומה).
    וזה למרות שהדבר דורש שימוש ב-DATA ופענוח ווידאו בו זמנית (אפילו המסך עצמו צורך המון סוללה, במיוחד עם שמים את תאורת הרקע על מקסימום).

    דוגמה נוספת היא תוכנות ניווט: אני יכול לספר לך מניסיון, ש-Google Maps במצב ניווט מגיע מ-100% סוללה לסביבות 50% תוך שעתיים על Nexus 4 למרות שהסוללה של המכשיר הזה היא בעלת קיבולת גדולה יחסית.
    וזה בזמן שהמכשיר גם שומר על חיבור עם דיבורית BT ברקע.

    תחשוב על זה: רדיו סלולר + רדיו BT + רדיו GPS + מסך בתאורה מלאה והמכשיר יכול להחזיק 4 שעות ואולי קצת יותר, בלי חיבור למטען.

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

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

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

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

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

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

    1. ik_5 מאת

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

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

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

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

      עכשיו כשיש לך סמסונג, אתה אולי מסוגל להחליף סוללה, אבל עם איפון, ואפילו HTC היא מובנת, ומה אז ?

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

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

      1. levdev

        אם יש דבר אחד שאי אפשר להאשים אותי בו – זה פיתוח ל-Microsoft.
        לא נגעתי בשום פלטפורמה של החברה הזו שנים, וטוב שכך.
        אבל אני עובד בפיתוח לתחום המובייל מזה 9 שנים (כן – לפני שהתחיל ההיפ עם ה-iPhone), ואני מכיר דבר או שניים בנושא הזה.

        הנה מה שאני מבין מהתגובה שלך:

        1. levdev

          נשלח מוקדם מידי בטעות, להלן ההמשך:

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

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

          א) שני החברות המובילות במכירות טלפונים חכמים בעולם הן Samsung ו-Apple.
          אתה מוזמן לבדוק בכל אתר סטטיסטיקות, בין אם חברת IDC או כל מקור אחר הנחשב אמין בענייך.
          ל-Apple אין דגמים חלשים, והדגמים הכי חלשים של Samsung עדיין עולים על המכשירים שסיפרת שיש לחבריך, ומכל מה שידוע לי, למעט אנשים שמחפשים קומבינות ולא מבינים למה הם נכנסים, אף אחד לא קונה אותם.

          למעשה, חבר שחזר לא מזמן מנסיעה לסין סיפר לי שדווקא סינים רבים קונים איכות, והמכשיר הכי פופלרי במדינה הוא המכשיר הזה:
          http://pdadb.net/index.php?m=specs&id=4303&c=xiaomi_phone_2s__mi-two_s__mi-2s_16gb
          שעולה לא מעט כסף ונותן חומרה בהתאם.
          כמובן, שזו לא הוכחה לכלום, רק סיפור אישי, כמו גם המקרה בו הייתי בחנות ישראלית קטנה וראיתי SGS I3 ו-4 נכמרים אחד אחרי השני בכמויות.

          בקיצור – האם שקלת איזה סוג מכשירים באמת נפוץ?

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

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

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

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

          יישומים שכאלה מאוד זללניים כי הם שומרים על מכשיר ער ורדיו עובד, אבל האם לדעתך כל המשתמשים שלהם יהיו מוכנים לוותר על היישומים האלה כדי לחסוך בסוללה?

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

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

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

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

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

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

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

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

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

          1. ik_5 מאת

            אז לא הבנת על מה דיברתי.

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

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

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

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

            אז זה נחמד שגלקסי מאוד נפוץ, אבל למה הסוללה שלו מחזיקה לי חצי יום בלבד ?

  2. levdev

    אני עדיין לא כ"כ מבין אותך:

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

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

    אבל הרי בדיוק אמרת שאותם אנשים אינם קהל היעד שלי! הם לא רוצים ולא צריכים יישומים, אז למה, ואיזה יישום אני אפתח עבורם?

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

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

    תראה, אתה לא יכול להשוות מרכזיה למכשיר. בדיוק בגלל שהשימוש שונה.
    בוא ניקח למשל את המשחק הזה:
    https://play.google.com/store/apps/details?id=com.kiloo.subwaysurf&feature=search_result#?t=W251bGwsMSwxLDEsImNvbS5raWxvby5zdWJ3YXlzdXJmIl0.
    שיחקתי בו על ZTE Blade III שנמכר כאן יחסית בזול, על Galaxy S3 mini שנחשב לזול אך יותר איכותי מה-ZTE (הוא גם יותר חדש), ועל SGS 4 ו-3.
    (כיף לעבוד בחברה שמספקת צעצועים :-P)

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

    עכשיו שאלה:
    האם לשיטתך יוצרי המשחק הזה היו צריכים לוותר עליו, או לעשות אותו פחות יפה כדי שיהיה יותר יעיל?
    ואם כן, אז איך תסביר את זה שהם הגיעו לרמה שבין 50 מליון ל-100 מליון הורדות?
    זה יותר מכמות המשתמשים העולמית ש-WAZE (שמככבת עכשיו בכל כלי התקשורת) מתגאה בהם על כלל הפלטפורמות.

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

להשאיר תגובה

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

הלוגו של WordPress.com

אתה מגיב באמצעות חשבון WordPress.com שלך. לצאת מהמערכת / לשנות )

תמונת Twitter

אתה מגיב באמצעות חשבון Twitter שלך. לצאת מהמערכת / לשנות )

תמונת Facebook

אתה מגיב באמצעות חשבון Facebook שלך. לצאת מהמערכת / לשנות )

תמונת גוגל פלוס

אתה מגיב באמצעות חשבון Google+ שלך. לצאת מהמערכת / לשנות )

מתחבר ל-%s