تطبیق دادن موبایل برای یک جهان با ریاکت نیتیو
این مطلب سومین مطلب از مجموعه «تجربه استفاده از React Native در Airbnb» است که ما در آن به بررسی تجربه استفاده از ریاکت نیتیو و آینده اپلیکیشن موبایلی در Airbnb میپردازیم.
در ادامه بررسی جزئیات تکنیکی در رابطه با نقاط قوت و ضعف ریاکت نیتیو، ما چیزهای بسیاری در رابطه با شکل پذیری و جایگاه ریاکت نیتیو در یک سازمان مهندسی را یاد گرفتیم. تطبیق یافتن بسیار بیشتر از تنها افزودن یک کتابخانه یا الگوی جدید به یک پلتفرم موجود است. انجام چنین کاری چالشهای سازمانی بسیاری را پیش روی ما میآورد. غیر مشابه با چالشهای تکنیکی که در هر صورت میشود با کار و تلاش زیاد به نتایجی رسید، شناخت و تصحیح چالشهای سازمانی بسیار کار سختی است. خوشبختانه فرهنگ موبایلی مربوط به سازمان ما محیط سالمی داشت، اما مواردی در این زمینه وجود دارد که بهتر است در رابطه با آنها توضیحاتی را ارائه دهم.
ریاکت نیتیو در حال قطبی شدن است
در تجربیات کاری ما، مهندسین برای استفاده از ریاکت نیتیو دیدگاهها و نقطه نظرات متفاوتی داشتند. برخیها اعتقاد داشتند که میتوان با استفاده از ریاکت نیتیو به عنوان فضایی برای متحد و یکپارچه کردن پلتفرمهای مختلف استفاده کرد و برخی دیگر نیز وجود داشتند که به کلی با ریاکت نیتیو مخالف بودند. این موقعیت حتی بعد از استفاده ریاکت نیتیو نیز اتفاق افتاد. برخی از تیمها تجربه بسیار خوبی از آن را پیدا کردند و برخی دیگر مخالف بودند و اعتقاد داشتند که باز هم باید به سوی کدهای Native برگردند.
ریشه علل
زمانی که در حال کار با ریاکت نیتیو بودیم، با باگها، مشکلات کارایی و موارد بسیاری از این است همراه بودیم. با این حال قسمتهایی نیز از کار وجود داشتند که در حال حرکت و پیشرفت بودند:
- ریاکت نیتیو به خودی خود به سرعت در حال حرکت است.
- روند ساخت زیرساخت مشابه و توسعه ویژگیها در حال انجام شدن بود.
- مهندسین در حال یادگیری ریاکت نیتیو با یکدیگر بودند و چنین موضوعی برای همه افراد جدید بود.
- مستندات و راهنماهای ما در ابتدای فرایند توسعه کمی ناسازگار بود و همین باعث سردرگمی میشد.
در نهایت گاهی اوقات نیز پیش میآمد که پیدا کردن دلیل اصلی و ریشه علل مشکلات کمی سخت میشد. برخی اوقات نیز پی بردن به اینکه مشکل از جانب یک تیم اتفاق افتاده است و یا اینکه مشکل از خود ریاکت نیتیو است کمی دشوار بود.
ریاکت نیتیو هنوز نیتیو است
یک تصور غلط که وجود دارد این است که میگویند ریاکت نیتیو شما را از نوشتن کدها به صورت محلی به صورت کامل دور میکند. در هر حال این موضوع کاملا درست نیست. بخش پشتیبانی از محلی بودن ریاکت نیتیو هنوز در حال سعی برای ارائه تجربهای بسیار نزدیک به اپلیکیشنهای نیتیو است. برای مثال متون در پلتفرم ها کمی متفاوت از همدیگر رندر میشوند، کیبوردها به صورت متفاوت از یکدیگر نمایش داده میشوند و در rotationهای آندروید Activities دوباره ایجاد میشود. یک تجربه با کیفیت از ریاکت نیتیو به بالانس و هماهنگی در هر دو پلتفرم نیاز دارد. این موضوع بخش سختی از ماجرای توسعه اپلیکیشن با ریاکت نیتیو است.
دیباگ کردن در پلتفرمهای مختلف
بیشتر مهندسین در یک یا دو پلتفرم متخصص هستند. بسیار به ندرت میتوانید مهندسی را پیدا کنید که هم در آندروید، آیاواس و ریاکت خبره باشد. اگرچه ایجاد اپلیکیشنها با ریاکت نیتیو نیازمند جاوااسکریپت و ریاکت است اما برخی اوقات در زمان دیباگ کردن و ایجاد اپلیکیشن نیاز است به کدهای اصلی و Native هر پلتفرم نیز سری بزنید. این موضوع مهندسین را با چالش ها و مشکلاتی همراه میکند.
همزمانی در توسعه
اگرچه تیم کاری ما روی ریاکت نیتیو حساب باز کرده بود و به سرعت در حال کار روی آن بود اما همزمان به صورت موازی نیز روی حالت نیتیو کار میکردیم. برخی فکر میکنند که اپلیکیشن ما به صورت کامل و ۱۰۰ درصد مبتنی بر ریاکت نیتیو است اما این موضوع اشتباه است. ما از متخصصین آندروید و آیاواس نیز استفاده میکردیم.
اپلیکیشنهای هیبریدی مشکل هستند
داشتن مسیری که در آن به صورت ۱۰۰ درصد از حالت نیتیو و یا ۱۰۰ درصد از ریاکت نیتیو استفاده میشود بسیار سرراست و آسان است. اما داشتن ترکیبی از این دو حالت مشکلات بسیاری را بوجود خواهد آورد. چگونه تیمتان را به درستی از همدیگر جدا میکنید؟ چگونه مشارکت انجام میشود؟ چگونه وضعیت را بین اپلیکیشنهای مختلف به اشتراک میگذارید؟ چگونه توسعهدهندگان میتوانند به صورت مؤثر عملیات رفع اشکال را انجام دهند؟ چگونه تصمیم میگیرید که برای یک ویژگی جدید از چه پلتفرمی استفاده کنید؟ چگونه منابع لازم برای توسعه اپلیکیشن را فراهم میکنید؟
محیطهای توسعه
برای اینکه به صورت مؤثر و مفید مهندسین بتوانند با ریاکت نیتیو کار بکنند، بسیار مهم است که محیط توسعه پایدار و بروزی را برای ریاکت نیتیو، آندروید و آیاواس داشته باشید. برای یک سازمان مانند Airbnb هر پلتفرم مقدار زمانی را برای پیادهسازی، یادگیری و بروزرسانی میطلبد.
برقراری بالانس بین نیتیو و ریاکت نیتیو
موقعیتهای بسیاری وجود دارد که در آن راهحلها برای حالت نیتیو و ریاکت نیتیو مختلف است. برای مثال پیادهسازی منوهای ناوبری مربوط به اپلیکیشن ما استفاده بسیاری از Activities و ViewControllers را میطلبد. بخش بیشتر این کدها نیز برای هر پلتفرم به صورت محلی نوشته شده است. یکی دیگر از مسائل این است که معلوم نیست در چه زمانی باید از کدهای نیتیو استفاده شود و در چه زمانی ریاکت نیتیو را استفاده کنیم. معمولا مهندسان از پلتفرمی استفاده میکنند که با آن بیشتر راحت هستند و شناخت کاملتری دارند.
تست چند-سکویی
همانطور که گفته شد مهندسین براساس راحتی و سطح دانش خودشان یک پلتفرم را انتخاب میکنند. بسیاری اوقات مهندسین اینگونه ارزیابی میکنند که در صورت ساخت یک اپلیکیشن و تست آن روی یک پلتفرم نتیجه یکسانی با تست روی پلتفرمهای دیگر دریافت خواهند کرد. این موضوع هم میتواند در برخی شرایط درست و در برخی شرایط غلط باشد.
تیمهای جدا
تیمهایی که روی ریاکت نیتیو و همچنین روی حالت نیتیو کار میکنند معمولا هر دو با چالشهای ارتباطی و تکنیکی برخورد میکنند. وقتی که کدهای پایه بین ریاکت نیتیو و حالت نیتیو تقسیم شود کدها یکپارچگیشان را از دست میدهند. چنین موضوعی میتواند فواید و معایبی داشته باشد. برای مثال با در نظر گرفتن چنین حالتی تمام افراد نیاز ندارند تا در تمام مسائل متخصص باشند، اما برخی اوقات پیش میآید که سرهم کردن این موارد برای یک تیم مشکل خواهد بود و آنها نمیتوانند به درستی از کدها استفاده کنند.
سرعت فرایند توسعه
یکی از اهداف کیفی ما با ریاکت نیتیو این بود سرعت توسعه را افزایش دهیم. اغلب اوقات ویژگیهای ریاکت نیتیو تنها توسط یک مهندس نوشته شده است، یعنی خلاف حالتی که برای هر مورد در هر پلتفرم یک فردی بنوسید. از نگاه یک مهندس ریاکت نیتیو اگر نوشتن یک ویژگی در ریاکت نیتیو ۵۰٪ بیشتر از نوشتن همان ویژگی در آندروید و IOS طول ببرد باز هم به نظر -مهندس- زمان کمتری طی میشود.
مستندات و منابع عمومی
بیشتر از ۱۰ سال است که برای آندروید و iOS مهندسین در حال توسعه اپلیکیشن هستند، منابع یادگیری ایجاد کردهاند، منابع متن باز درست شده است و… . حال حتی با وجود آنکه ریاکت نیتیو بزرگترین انجمن و جامعه توسعهدهنده برای حالت چندسکویی دارد اما هنوز هم بسیار کوچکتر از جوامع آندروید و آیاواس است.
این مطلب سومین مطلب از مجموعه «تجربه استفاده از React Native در Airbnb» است که ما در آن به بررسی تجربه استفاده از ریاکت نیتیو و آینده اپلیکیشن موبایلی در Airbnb میپردازیم.
دیدگاه و پرسش
در حال دریافت نظرات از سرور، لطفا منتظر بمانید
در حال دریافت نظرات از سرور، لطفا منتظر بمانید