به دلیل وجود مشکلات تکنیکی و سازمانی بسیار، ما تلاش داریم که به استفاده از ریاکت نیتیو خاتمه دهیم و تمام تلاشهایمان را در پلتفرم نیتیو و اصلی قرار دهیم.
این مطلب چهارمین مطلب از مجموعه «تجربه استفاده از React Native در Airbnb» است که ما در آن به بررسی تجربه استفاده از ریاکت نیتیو و آینده اپلیکیشن موبایلی در Airbnb میپردازیم.
اگرچه تیمهای بسیاری وجود دارند که مبتنی بر ریاکت نیتیو هستند و برای آینده خودشان از ریاکت نیتیو استفاده میکنند اما در نهایت ما نتوانستیم اهداف اصلیمان را در آن بدست بیاوریم. اضافه بر این ریاکت نیتیو برای ما مشکلات تکنیکی و سازمانی را به همراه داشت که واقعا برای ما یک چالش به حساب میآمدند و ما قادر به غلبه کردن بر آنها را نداشتیم.
در نتیجه ما در حال پیش رفتن به سوی جلو هستیم و همچنین تصمیم به خاتمه دادن سرمایهگذاری روی ریاکت نیتیو گرفتیم. از این به بعد تمام تلاشهای خودمان را روی حالت نیتیو و محلی اپلیکیشنها می گذاریم.
شکست در رسیدن به اهدافمان
حرکت سریعتر
وقتی برای کارها تصمیم بر این شد که از ریاکت نیتیو استفاده کنیم، مهندسین قابلیت حرکت و پیشرفت به صورت غیر موازی را داشتند. با این حال تعدادی از مشکلات تکنیکی و سازمانی باعث شدند که تاخیرهای غیر منتظره وارد این پروسه و پروژهها شود. قصد داریم در این قسمت راجع به چند مورد از این مشکلات صحبت کنیم.
نگهداری کردن از نوار کیفیت
همانطور که ریاکت نیتیو در حال بالغتر شدن بود و ما هم روی تخصص پیدا کردن از آن کار میکردیم، با مواردی مواجه شدیم که اطمینان کافی از انجام و پیادهسازی آنها را نداشتیم. ما shared element transitions و parallax را ایجاد کردیم و کارایی بسیار خوبی را برای اسکرینهای مختلفی ارائه دادیم. با این حال چندین چالش تکنیکی مانند initialization و async در اولین رندر دستیابی به برخی از اهدافمان را سخت کرد. نبود منابع داخلی و خارجی کافی نیز در سختتر کردن این پروسه شراکت داشتند.
بجای دو بار نوشتن کدها، یک بار آنها را بنویس
اگرچه ویژگیهای ریاکت نیتیو تقریبا به صورت کامل در بین پلتفرمهای مختلف مشترک است، تنها قسمت کمی از اپلیکیشن ما با ریاکت نیتیو نوشته شده بود. بیشتر کار ما این بود که زیرساختهای قبلی را به محیط ریاکت نیتیو پل یا bridging کنیم. بنابراین مهندسین در این فرایند بسیار میبایست مراقب و با احتیاط عمل کنند. در نتیجه ما پتانسیل اینکه کدها را در سه پلتفرم مختلف به اشتراک بگذاریم مشاهده نمودیم. ما توانستیم برای دو سیستم عامل موبایل و وب کدها را به اجرا در بیاوریم. همچنین قابلیت آن را داشتیم که چندین پکیج را از طریق npm به اشتراک بگذاریم، اما این موضوع هیچگاه به صورت درست انجام نشد.
بهبود تجربه توسعهدهنده
تجربه توسعه دهنده با ریاکت نیتیو شبیه به یک کیسه ترکیب شده بود. در برخی از موارد مانند زمانهای Build کردن، همه چیز بسیار بهتر اتفاق میافتاد. با این حال، در برخی دیگر از مواقع مانند دیباگ کردن، همه چیز بسیار سخت میشد. در مورد این قضایا در بخش دوم حرف زدیم.
پلن غروب
به این دلیل که ما نتوانستیم با ریاکت نیتیو به اهدافمان برسیم در نهایت به این نتیجه رسیدیم که ریاکت نیتیو برای ما ابزار درستی نیست. ما در حال حاضر مشغول کار روی یک تیم هستیم تا بتوانیم روند سالمی برای انتقال اپلیکیشن داشته باشیم. ما تصمیم داریم که تا پایان امسال بتوانیم تمام ویژگیها را به حالت نیتیو در بیاوریم. تیم زیرساخت ما تا پایان سال ۲۰۱۸ از ریاکت نیتیو پشتیبانی میکنند.
در Airbnb ما به صورت بسیار جدی به دنیای متن باز اعتقاد داریم. ما به صورت فعالانه از بسیاری از پروژههای متن باز استفاده میکنیم و در توسعه آنها نیز مشارکت داریم. حتی روی پروژه خود ریاکت نیز کارهای بسیاری کردهایم. حتی ما یک مخزن مخصوص به خودمان را نیز داشتیم.
همه این چیزها بد نیستند
اگرچه نتوانستیم به اهدافمان برسیم اما مهندسینی که با ریاکت نیتیو کار کردند تجربیات مثبتی کسب کردند. از این مهندسین:
- ۶۰ درصدشان تجربه استفاده از ریاکت را فوقالعاده خواندند.
- ۲۰ درصدشان اندکی مثبت فکر میکردند.
- ۱۵ درصدشان اندکی منفی فکر میکردند.
- ۵ درصدشان بسیار منفی فکر میکردند.
۶۳ درصد مهندسین باور داشتند که اگر شانس استفاده از ریاکت نیتیو را دوباره داشته باشند از آن استفاده میکنند و ۷۴ درصدشان نیز باور داشتند که میتوانند از ریاکت نیتیو برای یک پروژه جدید استفاده کرد.
نتیجه کار این توسعهدهندگان ۸۰ هزار خط کد برای ۲۲۰ اسکرین مختلف و ۴۰ هزار خط کد جاوااسکریپت برای زیرساختها بوده است.
ریاکت نیتیو در حال بزرگ شدن است
این مجموعه مقاله تجربه استفاده ما از ریاکت نیتیو در امروز را نشان میدهد. با این حال، فیسبوک و جامعه توسعه دهنده ریاکت نیتیو تصمیم دارند تا بتوانند ریاکت نیتیو را به عنوان ابزار بسیار کارآمدی برای اپلیکیشنهای هیبریدی ارائه دهند. ریاکت نیتیو نسبت به همیشه در حال پیشرفت سریعی است. تنها در سال اخیر ۲۵۰۰ کامیت برای ریاکت نیتیو ثبت شده است. حتی اگر قرار باشد که از ریاکت نیتیو استفاده نکنیم، اما تمایل بسیار زیادی برای دنبال کردن آخرین اخبار در رابطه با توسعه ریاکت نیتیو داریم.
در نهایت
ما ریاکت نیتیو را با یک اپلیکیشن بزرگ که در حال پیشرفت و توسعه بود ادغام کردیم. بسیاری از سختیهایی که با آنها همراه شدیم ناشی از رویکرد مدل هیبریدی بود که ما انتخاب کردیم.در هر حال مقیاس شرکت ما به ما این اجازه را میداد تا برخی از مشکلات سخت را که شرکتهای کوچکتر زمان برای حل آنها نداشتند را درست کنیم. ادغام کردن ریاکت نیتیو با کدهای نیتیو به صورت بدون مشکل و کاملا هماهنگ امکان پذیر است اما سختی و چالش بسیاری دارد. هر شرکتی که از ریاکت نیتیو استفاده میکند رویکرد منحصر به فرد خود برای تیم، اپلیکیشن، محصول و... دارد.
تصمیم گیری روی اینکه از چه پلتفرم جدیدی استفده کنید یکی از بحثهای بسیار گسترده است و همواره براساس تیمتان به فاکتورهای منحصر به فردی وابسته است. دلایل و تجربیاتی که ما از ریاکت نیتیو و دور شدن از آن داشتیم ممکن است برای تیم و برنامههای شما یکسان نباشد. اگرچه ما هیچوقت روند توسعه نیتیو را خاتمه ندادیم و با آن کار میکردیم اما حال که موقع غروب کردن ریاکت نیتیو است ما میتوانیم بهتر روی توسعه نیتیو تاثیر بگذاریم.
این مطلب چهارمین مطلب از مجموعه «تجربه استفاده از React Native در Airbnb» است که ما در آن به بررسی تجربه استفاده از ریاکت نیتیو و آینده اپلیکیشن موبایلی در Airbnb میپردازیم.
دیدگاه و پرسش
در حال دریافت نظرات از سرور، لطفا منتظر بمانید
در حال دریافت نظرات از سرور، لطفا منتظر بمانید