إطار عمل جديد لـ Swift (iOS/macOS) يكتسب شعبية
تواصل بيئة Swift تطورها النشط، وظهر على الساحة لاعب جديد يكتسب بسرعة اهتمام مطوري iOS/macOS. يتعلق الأمر بإطار العمل SwiftAct (اسم افتراضي، للتوضيح - ملاحظة المحرر)، الذي يعد بتبسيط إنشاء تطبيقات تفاعلية وعالية الأداء لجميع منصات Apple. وفقًا لآخر استطلاعات المجتمع، زاد الاهتمام بهذه الأداة بنسبة 40% خلال الأشهر الثلاثة الماضية، وتضاعف عدد المشاريع على GitHub التي تستخدمها.
ما هو SwiftAct ولماذا هو مطلوب؟
يتموضع SwiftAct كبديل خفيف الوزن لـ Combine وجزئيًا لـ RxSwift، لكن مع التركيز على التزامن غير المتزامن والهندسة النظيفة. على عكس الأساليب التقليدية، يستخدم إطار العمل هذا أحدث إمكانيات Swift Concurrency (async/await، actors) بشكل مدمج، دون الحاجة من المطور لكتابة كود نمطي لإدارة سلاسل العمليات.
الميزات الرئيسية لـ SwiftAct:
- التفاعلية بدون ألم: اشتراك تلقائي في تغييرات حالة النموذج. يحتاج المطور فقط إلى وضع علامة على الخاصية بـ
@Observable، وسيتم تحديث واجهة المستخدم في SwiftUI تلقائيًا. - عمل مدمج مع الشبكة: وحدة Networking تدعم async/await، والتسلسل التلقائي إلى Codable، وإعادة الطلبات عند الأخطاء.
- النمطية: ينقسم إطار العمل إلى وحدات مستقلة (Core, UI, Networking, Storage) يمكن ربطها بشكل انتقائي، دون تضخيم الملف الثنائي.
- دعم macOS: على عكس العديد من الحلول الموجهة لـ iOS، SwiftAct متوافق تمامًا مع AppKit و Catalyst.
لماذا ينتقل المطورون إليه؟
السبب الرئيسي هو خفض حاجز الدخول. إذا كان في السابق لإنشاء تطبيق تفاعلي، كان عليك تعلم Combine (بنظام Publisher/Subscriber المعقد) أو ربط RxSwift الثقيل، فإن SwiftAct يقدم بناء جملة بديهيًا يذكرنا بالعمل مع الخصائص العادية.
إليك مثال يقدمه أحد المدونين المتحمسين:
// الطريقة القديمة مع Combineclass ViewModel { @Published var text = "" var cancellables = Set<AnyCancellable>() func fetch() { api.fetchText() .sink { [weak self] value in self?.text = value } .store(in: &cancellables) }}
// الطريقة الجديدة مع SwiftActclass ViewModel { @Observable var text = "" func fetch() async { text = await api.fetchText() // بسيط وواضح }}كما ترى، أصبح الكود أكثر إيجازًا، وإدارة الذاكرة وإلغاء الاشتراك من سلاسل العمليات تتم تلقائيًا.
العيوب والمخاطر
على الرغم من الحماس، يحذر الخبراء: إطار العمل لا يزال صغيرًا. تم إصدار الإصدار 1.0 قبل ستة أشهر فقط، ولم يتمكن المجتمع بعد من بناء قاعدة معرفية واسعة. من المحتمل وجود أخطاء حرجة عند العمل مع تعدد العمليات في المشاريع المعقدة. بالإضافة إلى ذلك، بالنسبة لمشاريع الإنتاج ذات المتطلبات الصارمة للاستقرار، يُنصح حاليًا بالالتزام بـ Combine أو TCA (The Composable Architecture).
الآفاق
ومع ذلك، فإن الاتجاه واضح: لقد سئم المطورون من التعقيد ويريدون كتابة كود أقل مع الحصول على وظائف أكثر. SwiftAct حظي بدعم شركات كبيرة مثل (افتراضيًا) "Yandex.Maps" و "Tinkoff" (في مشاريع تجريبية)، مما يدل على الثقة في التكنولوجيا