بالفعل في مرحلة تصميم تطبيق الهاتف المحمول ، من المهم فهم اللغة الأكثر ربحية لاستخدامها في مشروع معين. إلى جانب التطوير الأصلي (على سبيل المثال ، لنظام التشغيل iOS - Swift أو Objective-C ، لنظام Android - Java أو Kotlin) ، يتم استخدام أطر عمل النظام الأساسي المتقاطع مثل React Native و Flutter. نحن في SimbirSoft نقدم العديد من المعايير التي ستساعد في اختيار كل من مطور الأعمال والمحمول.

مشكلة الاختيار
يوجد في العالم بالفعل حوالي خمسة مليارات هاتف ذكي ، وفقًا لتقديرات مختلفة ، ما يصل إلى 80٪ منهم يستخدمون نظام التشغيل Android ، وأقل من 20٪ يستخدمون iOS. ومع ذلك ، لكل بلد خصائصه الخاصة ، على سبيل المثال ، في الولايات المتحدة يعمل أكثر من 65٪ من الهواتف الذكية على نظام التشغيل iOS. عند إنشاء تطبيقات الأجهزة المحمولة ، غالبًا ما تكون هناك حاجة لإصدار إصدارات على كل من iOS و Android. للقيام بذلك ، يمكنك الرجوع إلى تطوير أصلي أو عبر النظام الأساسي ("المختلط").
التطوير الأصلي هو الحل الكلاسيكي الذي يتطلب كتابة تطبيقات لكل منصة على حدة ، باستخدام لغات مختلفة مع مراعاة ميزات كل منصة. عند إنشاء إصدارات متعددة من المشروع ، تعمل عدة فرق في وقت واحد.
بفضل أطر عمل النظام الأساسي ، أصبح من الممكن "قتل عصفورين بحجر واحد" مرة واحدة وإعداد إصدارات لنظام التشغيل iOS و Android باستخدام أداة واحدة. من بين الأطر واسعة الانتشار بشكل خاص:
- رد فعل الأصلي من الفيسبوكلتطبيقات iOS و Android و Windows
يستخدم لغة JavaScript ومكتبة React.js كأداة التطوير الرئيسية.
- رفرفة من جوجللتطبيقات Android و IOS و Fuchsia (لمزيد من التفاصيل ، انظر
مقالتنا عن Habré )
يستخدم لغة Dart ، والتي تخدم أيضًا في برمجة الويب.
تتزايد شعبية React Native و Flutter ، وإن كان ذلك بسرعات مختلفة ، وفقًا لإحصائيات Google Trends.التنمية الأصلية
كل من التنمية المحلية وعبر منصة لها خصائصها الخاصة. استخدمنا كلا النهجين في ممارسة قسم المحمول mobile.SimbirSoft. من بين مزايا التنمية المحلية ما يلي:
- عملية التطبيق مستقرة وسريعة.
- أقصى عمر للتطبيق ؛
- التطبيق أكثر مرونة وقابلية للتطوير ، بفضل استخدام الأدوات "الأصلية" ؛
- قيود أقل على الهندسة المعمارية والميزات ؛
- واجهة يطابق تماما المنصة.
التنمية الهجينة
تعمل أطر النظام الأساسي المشترك على "تخصيص" التطبيق للعديد من أنظمة التشغيل ، لذلك ليست هناك حاجة لإنشاء عناصر فريدة لكل منصة. نتيجة لذلك:
- هناك حاجة إلى عدد أقل من المتخصصين ؛
- يستغرق وقتا أقل وموارد
- سرعة التنمية آخذ في الازدياد.
إذا كان منطق التطبيق هو نفسه على جميع الأنظمة الأساسية وكانت الواجهة بسيطة ، فإن التطوير المختلط يساعد في جعل المنتج يتم تسويقه بشكل أسرع. نوصي بأطر مثل React Native ورفرفة وفقًا للشروط التالية:
- إذا كنت في وقت قصير تحتاج إلى كتابة تطبيق أولي لعدة منصات ؛
- إذا كان التطبيق يأخذ جميع المعلومات من الخادم ، يتم تنفيذ المنطق على الخادم ، ولا يهم الرسوم المتحركة والواجهة ؛
- إذا تم استخدام الحد الأدنى لعدد الميزات الأصلية ، مثل إعلامات الدفع والمشتريات داخل التطبيق وتحديد الموقع الجغرافي ، وما إلى ذلك ؛
- إذا كان الأداء المتواضع مقبولاً ، ويتم تنزيل المحتوى من الإنترنت.
معايير اختيار الأصلية ، رد الفعل الأصلي ، ورفرفة
لرجال الأعمال
1. التوفر
عندما تتصل بعض الشركات بنا لتطوير تطبيقات الأجهزة المحمولة ، لاحظ التكلفة باعتبارها واحدة من أهم المعايير بالنسبة لها. في الوقت نفسه ، تعتمد التكلفة والحاجة للمتخصصين على طريقة التطوير.
محليكقاعدة عامة ، يحتوي استوديو المحمول على موارد كافية لتطوير التطبيقات المحلية بأي تعقيد.
تتفاعل الأم والرفرفةهناك عدد أقل من المتخصصين في هذه المناطق في السوق. قد تكون هناك صعوبات في تطوير التطبيقات الكبيرة.
نوصي بالتكنولوجيات المحلية لرجال الأعمال عندما يتم تصميم التطبيق للتشغيل على المدى الطويل (وبعبارة أخرى ، "العمر الافتراضي"). كما أنه مفيد إذا كانت هناك حاجة إلى أداء عالٍ ، وواجهة معقدة ورسوم متحركة ، واستهلاك منخفض للطاقة ، والتكامل مع موارد الطرف الثالث (API ، إلخ). التطبيقات المحلية أكثر ربحية على المدى الطويل بسبب انخفاض تكاليف الدعم الفني.
نوصي بتقنيات مشتركة بين الأنظمة الأساسية لاختبار الفرضيات السريعة وتطوير النماذج الأولية والتطبيقات مع تحديد واضح لحياة التشغيل ، على سبيل المثال ، تم تطويرها لأحداث معينة.
مذكرة للأعمال:
للتطبيقات المعقدة - نوصي التنمية المحلية.
للتطبيقات البسيطة - هجين.2. سرعة + مهمة مطابقة
يتم تحديد الوقت اللازم للتسويق حسب حجم الفريق المتاح وميزات تطبيق الهاتف المحمول.
يمكن أن يكون العمل مع أطر عمل النظام الأساسي أكثر ربحية وأسرع إذا كان التطبيق بسيطًا ، بنفس واجهة المستخدم ، دون تفاصيل خاصة بالنظام الأساسي ، مثل الوصول إلى الكاميرا ، والعمل مع نظام الملفات وبصمات الأصابع ، وتصاريح وقت التشغيل. هنا ، يوفر التطوير المختلط الوقت عن طريق إعادة استخدام كل الشفرة وواجهة المستخدم لنظامين أساسيين. ومع ذلك ، إذا كنت بحاجة إلى إنشاء طرق عرض مخصصة معقدة ، يتباطأ تطوير النظام الأساسي.
عند الحديث عن وقت تطوير تطبيق الهاتف المحمول ، من المهم أن نفهم أنه لا يوجد "مصطلح متوسط للمستشفى". على سبيل المثال ، في ممارستنا ، قمنا بإصدار تطبيق مصرفي للهاتف المحمول خلال 100 يوم ، ونحن الآن نشارك في التطوير الإضافي لهذا المنتج. في الوقت نفسه ، كانت هناك تطبيقات بسيطة (وقت الإطلاق - حوالي أسبوعين) ، ومشاريع كبيرة الحجم مع فترة تطوير لأكثر من عام.
3. الأمن والتوقعات
عند اختيار لغة ما ، من المهم بالنسبة لشركة ما تقييم موثوقيتها وسلامتها اليوم من وجهة نظر تقنية ، بالإضافة إلى إمكانات التطوير ، ومخاطر التقادم.
من حيث الموثوقية ، تتفوق التنمية المحلية على جميع منافسيها. استمر تطوير المكتبات الرئيسية لعدة سنوات ، وقد تم بالفعل إصلاح معظم الخلل فيها ، واللغات الأصلية - مثل Java و Objective-C و Swift و Kotlin - تتطور باستمرار. بين مطوري الأجهزة المحمولة ، يمكنك سماع آراء مفادها أنه في العشرينات من القرن العشرين ، سيتم استبدال تطوير أندرويد الأصلي جزئياً بـ Flutter ، لكن هذا مجرد افتراض حتى الآن.
يوفر React Native جميع الأدوات لإنشاء تطبيقات محمولة آمنة ، على سبيل المثال ، Skype و Instagram و Facebook وغيرها من المنتجات المعروفة. تكون المخاوف الأمنية ممكنة فقط عند استخدام الوحدات التابعة لجهات أخرى أثناء التطوير. في الوقت نفسه ، يتطور JavaScript بشكل نشط ، ويتم إصدار ميزات جديدة ، وفي المستقبل المنظور ، يكون خطر التقادم ضئيلًا.
في حالة التطوير على Flutter ، تكون المخاطر أعلى ، نظرًا لأن الإطار صغير ، فقد تم إصداره في ديسمبر 2018 فقط. حتى الآن هناك مشاكل ، على سبيل المثال ، في وقت واحد أو آخر ، يتوفر تجميع المكتبة فقط لنظام أساسي واحد ، وتحدث أعطال في Android Studio ، وهناك أخطاء في بعض الإضافات والمكتبات. من ناحية أخرى ، يتم الانتهاء من كل هذا وتصحيحه. لا يمكننا استبعاد خطر توقف Google عن دعم Flutter ، كما كان الحال في مشاريع الشركة الأخرى. ومع ذلك ، فإن Fuchsia OS مكتوب على Flutter ، حيث يرى بعض المطورين بديلاً لنظام Android.
للمطور
أعلاه ، وصفنا العوامل التي تأخذ في الاعتبار كل من العمل والمقاول. هناك أيضًا معايير تكنولوجية يتم الاعتناء بها بشكل أساسي من قبل مدير المشروع. على سبيل المثال:
- مستوى المعرفة باللغات الأم وتفضيلات الفريقكل استوديو المحمول له تفضيلاته الخاصة في اختيار التكنولوجيا. يتطلب التطوير الأصلي معرفة كاملة باللغات المعنية. ومع ذلك ، بسبب استخدام الأدوات الأصلية للأنظمة ، هناك قيود وصعوبات أقل عند تخصيص أو الوصول إلى أدوات خاصة بالنظام الأساسي (على عكس React Native و Flutter). إذا كانت لديك خبرة في JavaScript ، فيمكن لمطور المحمول الانتقال بسهولة إلى React Native (لا توجد حاجة لتعلم لغة Dart بالإضافة إلى ذلك ، كما هو الحال مع Flutter) أو إلى Dart (ستكون معرفة TypeScript كبيرة جدًا).
React Native يستخدم وحدات أصلية تحت الغطاء. نتيجة لذلك ، إذا كانت هناك حاجة للتخصيص (وهذا غير مدعوم من خارج منطقة الجزاء) ، فمن الضروري العمل مع الوحدات النمطية الأصلية. على سبيل المثال ، في ممارستنا كانت هناك حالة عندما اضطررت إلى تخصيص مكتبة Yandex.Maps لعرض مكونات مرئية مخصصة على الخريطة.
رفرفة ، على عكس React Native ، تبرز مع محرك الرسومات الخاص بها. من ناحية ، يسمح لك هذا بعدم لمس أي لغة على الإطلاق عند تطوير تطبيقات بسيطة. من ناحية أخرى ، إذا كنت بحاجة إلى الوصول إلى أصلي ، فهذا يعني صعوبات إضافية (على سبيل المثال ، المراسلة مع أنواع البيانات الأولية و JSON) وعدم القدرة على استخدام المكونات الرسومية للغة الأم.
- عتبة الدخولإذا قرر المطور تعلم لغة جديدة ، يصبح توفر المجتمع ، بالإضافة إلى المعلومات الأساسية والوثائق ، مشكلة مهمة.
يتطور Flutter and React Native باستمرار ، ولهما مجتمع مهني نشط وتوثيق جيد. في الوقت نفسه ، تتصدر التنمية المحلية الأطر ، وذلك بفضل مجتمع أكبر ومزيد من المواد والمنتديات التدريبية ، التي تصف عمليات تطوير المكونات المعقدة.
"ورقة الغش" للاختيار
سيساعد الجدول المقارن التالي في تبسيط التحديد والإجابة على السؤال الذي في أي الحالات تكون هذه أو تلك الطريقة في التنفيذ مناسبة (أو غير مناسبة) لإنشاء تطبيق جوال.

توصيات
إذا تم الاختيار لصالح الأطر ، فننصحك بالاهتمام بجوانب العمل التالية:
تقييمتحتاج إلى اختبار جميع المنصات المعنية (iOS ، Android). من المهم إجراء تقييم موضوعي لمستوى المعرفة والخبرة لدى جميع المشاركين في المشروع حتى لا يصبح التقدير بالساعات موضع تقدير. النظر في خطر من الأخطاء في الأطر React Native ورفرفة أنفسهم أثناء التنمية.
تصميميصعب (أو حتى من المستحيل) تقديم بعض العناصر في الرفرفة أو التفاعل الأصلي. لهذا السبب ، يجب أن يتم الاتفاق على التصميم مع المطورين - وقبل أن يقع العميل في حب صورة مرسومة بشكل جميل.
CI / CDفي React Native ، لا يتم استبعاد مشاكل محددة في التجميع التلقائي (على سبيل المثال ، بسبب تثبيت المكتبات على منصات مختلفة). تحتاج إلى وضع المزيد من احتياطي المخاطر.
شاشة البدايةيكون تنفيذ شاشة البداية على Flutter أسرع من تطبيق React Native ، حيث يمكن رسم هذا العنصر محليًا فقط ، مع وجود احتمالية عالية من الأخطاء. عند استخدام React Native على شاشة البداية مع جميع إصلاحات التجسيد والأخطاء ، من المستحسن وضع مزيد من الوقت.
ماكياجعند استخدام React Native ، يجب إجراء التنضيد على iOS و Android في وقت واحد لتجنب المشاكل عند تكييف التخطيطات مع أحد الأنظمة.
التطور الموازي للشبكة والهاتف المحمولإذا كان إصدار الويب للتطبيق مكتوبًا في React ، فيتم قضاء وقت أقل في تطوير تطبيق محمول على React Native - نظرًا لنفس منطق المكونات.
التصحيحإذا كان التطبيق كبيرًا ، فإن React Native يجعل الاختبار واختبارات الوحدة أسهل. على رفرفة ، تحتاج إلى وضع المزيد من الوقت على إصلاح الخلل ، لأن السجلات ليست مفيدة.
تطبيق العمل مع ملفات النظاممن الضروري طلب إذن لبطاقة sd ، بينما لا يمكن الحصول على اسم ومسار مع كل ملف. لإرسال ملف ، يجب عليك استخدام ContentResolver. لتقليل المخاطر ، حدد وقتًا لجميع العمليات المتعلقة بنظام الملفات.
تسليم التجميعات إلى العميللا توجد فروق ذات دلالة إحصائية عن التنمية المحلية ، يمكنك اختيار أي خدمة ملائمة: Crashlytics ، TestFairy ، TestFlight.
رد فعل الأصلي مقابل رفرفة
نحن في SimbirSoft نستخدم كل من React Native و Flutter ، وهذا يتوقف على طبيعة التطبيق. نشارك العديد من الملاحظات من ممارستنا التي تساعد على توفير ميزات العمل مع إطار عمل معين.

لتلخيص
يتميز تطوير تطبيقات الهاتف المحمول المحلية والهجينة بمزاياها وعيوبها ، والتي يتم أخذها في الاعتبار من قبل الشركة والمقاول عند اختيار التقنية. من بين أهم المعايير هي توقيت وتكلفة التطوير والصيانة ، والامتثال للمهمة والسلامة والآفاق ، ومستوى تطور المجتمع. بناءً على خبرته ، يساعد مطور برامج الجوّال على اختيار أفضل حل لكل تطبيق محدد. نأمل أن تكون معاييرنا وجدول المقارنة مفيدين لك. شكرا لاهتمامكم!