? What is Mobile Application Development
مقدمه
توسعه برنامههای تلفن همراه در واقع فرآیند ساخت برنامههای نرمافزاری است که بر روی دستگاههای تلفن همراه شما اجرا میشوند و این برنامهها معمولا با هدف اجرا و توسعه برای دو پلتفرم اصلی یعنی Android و iOS توسعه پیدا میکنند. از این رو، فرآیند توسعه برنامههای تلفن همراه شامل ایجاد بستههای نرمافزاری قابل نصب، پیادهسازی سرویسهای بک اند مانند دسترسی به دادهها از طریق یک API و آزمایش برنامه بر روی دستگاههای هدف است.
امروزه توسعه برنامههای تلفن همراه بیش از پیش در حال رشد است. از ارتباطات راه دور و تجارت الکترونیکی گرفته تا بیمه، مراقبتهای بهداشتی و سازمانهای دولتی و حتی صنعت، همگی باید انتظارات کاربران خود را در مورد روشهای مناسب و فوری برای انجام معاملات و دسترسی به اطلاعات برآورده کنند.
امروزه دستگاههای تلفن همراه و برنامههای کاربردی تلفن همراه که ارزش آنها را شفاف میسازند، متداولترین راه برای ارتباط افراد و مشاغل با اینترنت هستند. برای ارتباط، پاسخگویی و موفقیت، سازمانها باید برنامههای تلفن همراه مورد نیاز مشتریان، شرکا و کارکنان خود را توسعه دهند.
انتخاب یک پلتفرم
دو پلتفرم غالب در بازار گوشیهای هوشمند مدرن وجود دارند. یکی از آنها پلتفرم iOS از Apple Inc است. پلتفرم iOS سیستم عاملی است که خط محبوب تلفنهای هوشمند آیفون اپل را تأمین میکند. دومی اندروید از گوگل است. پلتفرم اندروید نه تنها توسط دستگاههای گوگل بلکه توسط بسیاری از تولیدکنندگان دیگر برای ساخت تلفنهای هوشمند و سایر دستگاههای هوشمندشان استفاده میشود. بسیاری از تیمهای توسعه تصمیم میگیرند ابتدا برنامههای خود را برای پلتفرم اندروید توسعه دهند. چرا؟ اکثریت قریب به اتفاق - حدود 70 درصد - تلفن های هوشمند دارای سیستم عامل اندروید هستند و فروشگاه Google Play محدودیتهای کمتری نسبت به فروشگاه برنامه اپل دارد. از سوی دیگر، برنامههای تلفن همراه توسعه یافته برای iOS دارای دستگاههایی با تنوع بسیار کمتر هستند و این امر بهینهسازی را سادهتر میکند.
بسته به مورد مصرف و مخاطب مورد نظر برای برنامه موبایلی که در حال توسعه آن هستید، ممکن است ملاحظات دیگری نیز باید در نظر داشته باشید. به عنوان مثال، اگر در حال طراحی برنامهای برای کارکنان سازمان خود هستید، باید از بسترهای مورد استفاده آنها پشتیبانی کنید، که ممکن است به معنی توسعه برنامههای چند سکویی باشد که هم برای Android و هم برای iOS کار میکند.
یا اگر در حال ساخت یک برنامه تلفن همراه برای مشتریان خود هستید و میدانید که اکثر آنها از iPhone استفاده میکنند، توسعه برنامههای iOS باید در اولویت اول باشد. ملاحظات اضافی هنگام توسعه برنامههای تلفن همراه شما شامل استراتژی های کسب درآمد و پیش بینی رفتار کاربر است که میتواند تحت تأثیر عوامل جغرافیایی و فرهنگی نیز قرار گیرد.
اگرچه هنگام ساخت برنامههای کاربردی، شباهتهایی بین این دو سیستم عامل وجود دارد، اما فرآیند توسعه برای iOS در مقایسه با Android شامل استفاده از کیتهای مختلف توسعه نرمافزار (SDK) و زنجیره ابزارهای توسعه متفاوتی است. در حالی که اپل از iOS به طور انحصاری برای دستگاههای خود استفاده میکند، گوگل اندروید را به راحتی در اختیار سایر شرکتها؛ به شرط اینکه شرایط خاصی را داشته باشند، قرار میدهد. برای مثال پلتفرم نهایی آن شرکتها حتما باید شامل برخی از برنامههای مورد نظر گوگل باشد. توسعهدهندگان میتوانند با هدف قرار دادن هر دوی این پلتفرمها، برنامههایی را برای صدها میلیون دستگاه بسازند.
جایگزینهای موجود برای ساخت برنامههای تلفن همراه
فرض کنید شما نیاز به توسعه برنامه تلفن همراه برای هر دو پلتفرم Android و iOS دارید. بهترین روش توسعه نرمافزار چیست؟ میتوانید دو برنامه بومی را به شکلی جداگانه توسعه دهید. استفاده از API های بومی و زبانهای برنامهنویسی مخصوص پلتفرم هدف، میتواند به شما در ساخت یک برنامه قدرتمند کمک کند. اکثر برنامههای سازمانی، به ویژه برنامههایی که به تعداد API قابل توجهی نیاز دارند، از توسعه به شکل بومی (Native) استفاده میکنند.
اما اگر تصمیم دارید برنامههای بومی را یک به یک توسعه دهید، به احتمال زیاد میبایست با Android کار کنید - به دلایلی که توسعهدهندگان اغلب بر روی Android تمرکز میکنند. احتمالاً شانس بیشتری برای توسعه برنامه کامل به عنوان MVP در Android خواهید داشت و پس از انتشار میتوانید آن را به iOS تبدیل و بهینهسازی کنید.
شما همچنین نیاز به اشکال زدایی و بازنویسی کد زبان بومی و طراحی مجدد رابط کاربری اصلی دارید، زیرا عملکرد این دو پلتفرم بسیار متفاوت است. بنابراین چرا به طور کامل از ابتدا شروع نکنید؟ در حالی که نمیتوانید کد را به سادگی به یک زبان برنامهنویسی جدید ترجمه کنید، بسیاری از قسمتهای بک اند را میتوان به صورت چند سکویی تکرار کرد. فریمورکها، کتابخانهها و برنامه های افزودنی شخص ثالث اغلب در هر دو محیط یکسان عمل میکنند و به شما این امکان را میدهند که از کار مجدد پرهزینه جلوگیری کنید.
هنگام ساخت برنامههای تلفن همراه، چهار رویکرد توسعه وجود دارد:
- Native Mobile Applications
- Cross-Platform Native Mobile Applications
- Hybrid Mobile Applications
- Progressive Web Applications
هر یک از این روشها برای توسعه برنامههای تلفن همراه، دارای مزایا و معایب خاص خود هستند. هنگام انتخاب روش توسعه مناسب برای پروژههای خود، توسعهدهندگان تجربه کاربری مورد نظر، منابع محاسباتی و ویژگی های بومی (Native) مورد نیاز برنامه، بودجه توسعه، زمانبندی و منابع موجود برای نگهداری برنامه را در نظر میگیرند. در ادامه به بررسی هر یک از رویکردهای گفته شده و مزایا و معایب آنها میپردازیم.
Native Applications
«برنامههای بومی» به زبان برنامهنویسی و فریمورکهایی که توسط مالک پلتفرم ارائه شده و مستقیماً بر روی سیستم عامل دستگاه مانند iOS و Android اجرا میشوند، نوشته شده است.
- مزایا: داشتن بهترین کارایی در زمان اجرا و داشتن دسترسی مستقیم به API های دستگاه.
- معایب: داشتن هزینه بیشتر هنگام ساخت و نگهداری برنامه شما و وجود چندین پایگاه کد به ازای هر پلتفرم.
Cross-Platform Applications
«برنامههای بومی چندسکویی» را میتوان با استفاده از انواع مختلف زبانها و فریمورکهای برنامهنویسی نوشت، اما آنها نهایتا به یک برنامه بومی که مستقیماً بر روی سیستم عامل دستگاه اجرا میشوند، کامپایل میشوند.
- مزایا: وجود پایگاه کد واحد به ازای چندین پلتفرم و ساخت و نگهداری آسان برنامه شما.
- معایب: وابستگی به کتابخانههای مختلف واسط برای دسترسی به ویژگیهای بومی دستگاه و محدودیتهای عملکردی به دلیل وجود همان کتابخانههای واسط.
Hybrid-Web Applications
«برنامههای ترکیبی»، با فناوریهای وب - مانند جاوا اسکریپت، CSS و HTML5 - ساخته میشوند. برخلاف برنامههای بومی، برنامههای ترکیبی روی " Web Container" کار میکنند که یک Browser Runtime و پل ارتباطی با API های دستگاه بومی از طریق Apache Cordova را فراهم میکند.
- مزایا: وجود پایگاه کد مشترک بین برنامههای وب و تلفن همراه و استفاده از مهارتهای توسعه وب برای ساخت برنامههای تلفن همراه.
- معایب: عملکرد پایینتر نسبت به برنامههای بومی و پشتیبانی محدود از ویژگیهای بومی دستگاه.
Progressive Web Applications
PWA ها روشی جایگزین برای توسعه برنامههای تلفن همراه سنتی ارائه میدهند. PWA ها برنامههای تحت وبی هستند که از مجموعهای از قابلیتهای مرورگر - مانند کار آفلاین، اجرای یک فرآیند در پس زمینه و افزودن پیوند به صفحه اصلی دستگاه - برای ارائه تجربه کاربری مانند برنامه استفاده میکنند.
- مزایا: همان برنامه برای وب و تلفن همراه در دسترس است و بدون نیاز به نصب، از طریق URL قابل دسترسی است.
- معایب: پشتیبانی محدود از ویژگیهای دستگاه بومی و قابلیتهای برنامه به مرورگر مورد استفاده بستگی دارد.
بخش Front-End برنامه موبایل
Front-End موبایل بخش بصری و تعاملی برنامهای است که کاربر تجربه میکند. برنامه را میتوان از فروشگاه پلتفرم بارگیری کرد، مستقیماً روی دستگاه بارگذاری کرد، یا حتی میتوان از طریق مرورگر دستگاه به آن دسترسی پیدا کرد، مانند مورد PWA ها. وقتی یک توسعهدهنده میگوید که برنامهنویس برنامههای تلفن همراه است، بیشتر اوقات به این قسمت اصلی برنامه اشاره میکند و در زبانها و فناوریهایی که برای ایجاد این بخش برنامه استفاده میشوند، مهارت دارد.
بسته به اندازه تیم تولیدکننده برنامه، ممکن است افراد زیادی در طراحی و توسعه برنامه تلفن همراه اصلی دخیل باشند. اندازه تیم میتواند از یک توسعهدهنده که همه کارها را در زمینه ساخت برنامه انجام میدهد، گرفته تا ده ها، صدها و افراد دیگر با مهارتهای تخصصی متفاوت باشد.
به عنوان مثال، ممکن است طراحان خلاق/گرافیکی اختصاصی وجود داشته باشند که مسئول ایجاد عناصر بصری برنامهها مانند نمادها، پس زمینه، رنگها، تمها و سایر قسمتهای برنامه باشند. این تیم همچنین ممکن است تجربه کاربری و طراحی رابط کاربری نیز داشته باشد که روی طرحبندی اجزا، نحوه تعامل آنها با یکدیگر و کاربر کار میکند. در مورد انواع خاصی از بازیها، یک تیم ممکن است شامل توسعهدهندگان موشن گرافیک و حتی مهندسانی باشد که موتورهایی را توسعه میدهند که فیزیک نحوه حرکت اجزاء در برنامه را کنترل میکند، مانند یک ماشین در یک بازی مسابقهای.
صرف نظر از اندازه تیم، یکی از عناصر مهم تلاش برای توسعه و ایجاد منطق برنامه است که وظیفه برقراری تماس با سرویسهای Backend، بازیابی دادهها و بروزرسانی دادهها در سیستمهای Backend با اطلاعات جدید ایجاد شده را بر عهده دارد. این سرویسهای Backend معمولاً از طریق انواع رابطهای برنامهنویسی برنامه، که بیشتر به عنوان API شناخته میشوند، قابل دسترسی است.
انواع مختلفی از API ها مانند REST و GraphQL وجود دارد و همچنین طیف وسیعی از وسایل و شیوههای دسترسی به آنها وجود دارد. در حالی که برخی از API های سرویس Backend مستقیماً از طریق تماسها در خود پلتفرم در دسترس برنامه هستند، بسیاری از سرویسهای تخصصی باید از طریق یک کیت توسعه نرمافزار، که معمولاً به عنوان SDK شناخته میشود، در برنامه ادغام شوند. هنگامی که SDK از طریق محیط توسعه به برنامه اضافه شد، برنامه میتواند از API های تعریف شده در SDK استفاده کند.
یک مثال از سرویس Backend برای فرانت یک موبایل میتواند پایگاه دادهای باشد که حاوی اطلاعات مورد استفاده در برنامه است. برای دسترسی مستقیم به پایگاه داده، توسعهدهنده تلفن همراه باید موقعیت شبکه پایگاه داده، پروتکل دسترسی به پایگاه داده، مشخصات اعتبار سنجی و تأیید دسترسی به دادهها و دستورات پایگاه داده خاص مورد نیاز برای استخراج داده های مورد نیاز را بداند.
به شکلی متقابل، توسعهدهنده میتواند هنگام تعامل با پایگاه داده از یک API خاص استفاده کند. توسعه دهنده فقط باید پارامترهای مورد نیاز را در فراخوانی متد بداند تا اطلاعات مورد نیاز را دریافت یا بروز کند. در برخی موارد، توسعهدهنده ممکن است خود این API ها را توسعه دهد یا از تعریف API ارائه شده توسط مالک/اپراتور دیگری استفاده کند.
بخش Backend برنامه موبایل
صرف نظر از اینکه از چه پلتفرم یا روش توسعهای استفاده شود، ارائه برنامههای موبایل با کیفیت بالا که کاربران را خوشحال کرده و حفظ میکند، نیاز به سرویسهای Backend قابل اعتماد دارد. با توجه به اهمیت حیاتی سرویسهای Backend برای موفقیت برنامه تلفن همراه، توسعهدهندگان چندین تصمیم معماری مهم دارند که باید آنها را در نظر بگیرند. این تصمیمات شامل این است که چه سرویسهایی را باید خودشان بسازند و از کدام سرویسهای شخص ثالث استفاده کنند و سپس سرویس خود را اجرا کرده و نگهداری کنند یا از سرویس شخص ثالث استفاده کنند.
پاسخ به طور فزایندهای روشن است؛ برای بهبود بهرهوری و کارایی توسعهدهندگان، برنامهنویسان برنامه تلفن همراه باید سرویس خود را تنها در صورتی که مخصوص حوزه برنامه باشند و دارای مالکیت معنوی منحصر به فرد باشند، بسازند. همچنین، حتی برای سرویس هایی که خودشان ایجاد میکنند، تقریباً باید از خدمات مبتنی برابر برای ایجاد و حفظ زیرساخت پشتیبان خود استفاده کنند.
نتیجهگیری
توسعه برنامههای تلفن همراه برای اکثر شرکتها ضروری است. وقتی برنامه خود را با در نظر گرفتن هر دو پلتفرم توسعه میدهید، سعی کنید از API ها معقول استفاده کنید و ویژگیها و نیازمندیهای برنامههای مورد نظرتان را درک کنید. این رویکرد به شما کمک میکند تا برنامهای انعطافپذیر، سبک وزن - راهی عالی برای ارائه اطلاعات یا خدمات - به همراه یک تجربه کاربری عالی، در اختیار کاربران خود قرار دهید.
با این حال توسعه برنامههای تلفن همراه ممکن است دلهرهآور به نظر برسد. هنگامی که پلتفرم یا پلتفرمهای هدف خود را انتخاب کردید، باید بر محدودیتهای دستگاههای تلفن همراه غلبه کنید و برنامه مورد نظر خود را به شکلی درست توسعه دهید. خوشبختانه ما در آکادمی آنیسا چندین دوره مناسب برای کمک به شما تهیه کردهایم که میتوانید از آنها در این مسیر استفاده کنید.