انتقل إلى المحتوى

تطوير أصلي أم Flutter؟ كيف تختار التقنية المناسبة لتطبيقك

دليل عملي من مطور بنى أكثر من ٥٠ تطبيق iOS أصليًا وقاد فريقًا أطلق أكثر من ٢٠ منتجًا بتقنية Flutter: متى يناسبك كل خيار، وما الذي تسأله قبل أن تقرر.

بقلم محمد طارق الزقرد · · قراءة في ٤ دقائق

إنه من أول الأسئلة في كل مشروع تطبيق جديد تقريبًا: هل نبني تطبيقًا أصليًا لكل منصة، أم نبنيه مرة واحدة بتقنية Flutter؟ رأيت هذا السؤال من الجانبين. فبصفتي مطور iOS بنيت وأطلقت بنفسي أكثر من ٥٠ تطبيق iOS أصليًا لعملاء في الخليج. ثم وسّعت لاحقًا، بصفتي مديرًا للقيادة التقنية، تسليم فريقنا إلى التطوير متعدد المنصات، وأطلقنا أكثر من ٢٠ منتج تجارة إلكترونية SaaS بتقنية Flutter.

لا توجد إجابة صحيحة لكل مشروع. وهذه طريقتي في التفكير في هذا الاختيار.

ما الذي يعنيه كل خيار فعلًا

التطوير الأصلي يعني تطبيقًا منفصلًا لكل منصة، مكتوبًا بأدواتها الخاصة: لغة Swift مع SwiftUI أو UIKit لنظام iOS، ولغة Kotlin لنظام Android. أي قاعدتا كود، وغالبًا مجموعتان من المطورين، مع وصول كامل إلى كل ما تقدمه المنصة من يوم إطلاقه.

أما Flutter فيعني قاعدة كود واحدة بلغة Dart تعمل على iOS وAndroid معًا، ويرسم واجهتها محرك العرض الخاص بها. فريق واحد، ومجموعة مميزات واحدة، وإيقاع إصدار واحد على المتجرين.

متى يكون Flutter الخيار الأفضل

  • حين تحتاج iOS وAndroid في الوقت نفسه، بالمميزات نفسها على المنصتين.
  • حين يكون التطبيق في معظمه شاشات ونماذج وقوائم واتصالات بالخادم: تجارة إلكترونية، وحجوزات، وتوصيل، ولوحات تحكم، ومحتوى.
  • حين تبني منتجًا سيتكرر أو يُخصَّص لعملاء كثيرين، فقاعدة الكود المشتركة تؤتي ثمارها مع كل نسخة.
  • حين تكون الميزانية والوقت محدودين، لأن توظيف فريق واحد وإدارته وتنسيق عمله أسهل من فريقين.

وقد انطبق هذا تمامًا على عملنا بتقنية Flutter: منتجات تجارة إلكترونية SaaS لها نواة مشتركة وتُسلَّم على المنصتين. ولو بنيناها بالتطوير الأصلي لكتبنا كل ميزة واختبرناها مرتين.

متى يكون التطوير الأصلي الخيار الأفضل

  • حين تعتمد قيمة التطبيق على مميزات عميقة في المنصة: كاميرا متقدمة أو واقع معزز، أو معالجة في الخلفية، أو أجهزة تعمل بالبلوتوث، أو الودجات، أو Apple Watch، أو تكامل وثيق مع تطبيقات النظام نفسه.
  • حين تريد مميزات iOS الجديدة يوم تطلقها Apple، دون انتظار إضافة جاهزة.
  • حين يكون الأداء والإحساس هما المنتج نفسه: رسوم متحركة معقدة، أو رسوميات ثقيلة، أو تفاعلات تفرق فيها أجزاء من الثانية.
  • حين تحتاج منصة واحدة فقط، مثل جمهور يستخدم iOS أولًا، أو تطبيق داخلي لأجهزة iPhone في شركتك.

يستطيع Flutter الوصول إلى معظم مميزات المنصة عبر الإضافات أو الكود الأصلي. لكن في كل مرة تكتب فيها هذا الكود الأصلي يضيع جزء من فائدة الكود المشترك، وإذا انتهى جزء كبير من التطبيق هناك فالتطوير الأصلي أبسط.

الأسئلة التي أطرحها قبل القرار

  1. ما المنصات التي يستخدمها جمهورك فعلًا؟ راجع بياناتك أو سوقك، فنسبة iOS إلى Android تختلف كثيرًا من بلد إلى آخر.
  2. ما المميزات التي تحتاج الجهاز نفسه، وإلى أي عمق؟
  3. من سيصون التطبيق بعد سنتين، وبأي تقنية يعمل؟
  4. هل هو تطبيق واحد، أم منتج ستسلّمه مرات كثيرة؟
  5. ما الأهم عند الإطلاق: الوصول السريع إلى المتجرين، أم أفضل تجربة ممكنة على منصة واحدة؟

الصيانة جزء من السعر

البناء هو الفاتورة الأولى فقط. التطوير الأصلي يعني قاعدتي كود تحتاجان إلى تحديث مع كل إصدار جديد من النظام، وكل تغيير في التصميم، وكل خطأ. أما Flutter فيعني قاعدة كود واحدة، مع العمل على تحديث Flutter وإضافاته باستمرار. وفي الحالتين، ضع في ميزانيتك السنوات التي تلي الإطلاق، لا الإطلاق وحده.

إجابتي المختصرة

لمعظم تطبيقات الأعمال التي تحتاج المتجرين، كالمتاجر والحجوزات والخدمات ولوحات التحكم، يكون Flutter الطريق الأسرع والأوفر. أما التطبيقات التي تكون فيها قدرات الجهاز أو إحساس الواجهة هي المنتج نفسه، أو التي تكفيها منصة واحدة، فما زال التطوير الأصلي هو الأداة الأفضل.

وإن كنت تقرر لمنتجك، فابدأ من المستخدمين والمميزات لا من التقنية، فعادةً ما يتضح الاختيار الصحيح بمجرد أن تكتب هذين الأمرين.

مقالات أخرى