برنامهنویسی موبایل چیست و چطور با آن اپلیکیشن طراحی کنیم؟
به دلیل افزایش روزافزون از گوشیهای هوشمند و تبلتها، برنامهنویسی موبایل به یکی از محبوبترین مباحث در بین توسعهدهندهها تبدیل شده است. اپلیکیشنهای موبایل به یکی از ارکان اساسی کسبوکارها تبدیل شدهاند. گفته میشود حوزهی توسعه نرمافزارهای موبایل در سال ۲۰۲۰ میلادی بیش از ۶۰۰ میلیارد دلار گردش مالی داشته است که عدد حیرتانگیزی است. در عین حال کاربران نیز در حال مهاجرت از نرمافزارهای دسکتاپ به سمت اپهای موبایل هستند. راحتی کار با موبایل باعث اقبال کاربران به سوی نرمافزارهای آن شده است. همهی اینها باعث شده تا توسعه و برنامهنویسی موبایل به یکی از مهمترین حوزهها در دههی حاضر تبدیل شود. بسیاری از کسبوکار در شروع کار خود به دنبال این هستند تا برای خود اپلیکیشن طراحی کنند. همچنین بسیاری از علاقهمندان نیز به دنبال این هستند که به یک توسعهدهنده و برنامهنویس موبایل تبدیل شوند.
در مقالهی اندروید چیست، نگاه کوتاهی داشتیم به این که چگونه میتوان برنامهنویس اندروید شد. در این مقاله ضمن ارائه توضیحات کلی در مورد برنامهنویسی موبایل، قصد داریم تا یک راهنمای کلی برای طراحی اپلیکیشن نیز تبیین کنیم.
برنامهنویسی موبایل چیست؟
برنامهنویسی موبایل یا طراحی اپلیکیشن، به معنای خلق یک نرمافزاری است که بر روی یک دستگاه موبایل کار میکند و از ویژگیهای مختلف آن بهرهبرداری میکند.
برنامهنویسی و توسعه اپلیکشنهای موبایل هم ریشههایی در شکل سنتی توسعه نرمافزار دارد. اما فرق آنها این است که در برنامهنویسی موبایل، سعی میکنیم تا از ویژگیهای مختلفی که این دستگاه در اختیار ما میگذارد، نهایت بهره را ببریم. موبایلهای امروزی دارای ویژگیهای مختلفی از جمله بلوتوث، NFC، سنسور، جیپیاس و دوربین هستند. هر چند که شاید گفتن آن از انجام دادنش راحتتر باشد، اما ما در طراحی و برنامهنویسی اپلیکیشنهای موبایل باید سعی کنیم تا از این ویژگیها نهایت استفاده را ببریم. مثلاً اپلیکیشنهایی که برای اسکن بارکد طراحی شدهاند، توانستهاند از دوربین موبایل به نفع خود بهره ببرند.
در طراحی نرمافزار برای کامپیوترهای شخصی، توسعهدهندگان سعی میکنند تا برنامه را به گونهای بنویسند که آن برنامه را بتوان با حداقل سختافزار موجود، اجرا کرد. چنین اصلی در دنیای توسعه و برنامهنویسی موبایل نیز برقرار است. با این فرق که در بین موبایلها، معمولاً تفاوتهای سختافزاری آنچنان زیاد نیست. در هر حال، سختافزار موجود در موبایلها از سختافزار موجود در کامپیوترهای شخصی قدرت کمتری دارند. بنابراین برنامههای نوشته شده بر روی موبایل، باید بسیار بهینهتر و سبکتر از نرمافزارهای کامپیوتر باشند.
به طور مثال، برای نوشتن یک بازی موبایلی، محدودیتهای زیادی داریم. چرا که پردازندههای گرافیکی موبایل، نسبت به کامپیوترها ضعیفتر هستند. با این حال، در سالهای اخیر، رایانش ابری به کمک ما آمده و باعث شده تا پیشرفتهای شگرفی در زمینه ساخت بازیهای موبایلی صورت پذیرد. بازیهای محبوبی نیز فورتنایت و پابجی، بازیهایی هستند که از رایانش ابری بهره میبرند و بازیکنان از دستگاههای مختلف مثل موبایل، کامپیوتر و حتی کنسول، میتوانند به هم متصل شوند و بازی کنند.
در طراحی اپلیکیشن چه چیزهایی را باید در نظر بگیریم؟
مشکل اجرای اپلیکیشنها بر روی دستگاههای مختلف، تنها یک راه حل اساسی دارد و آن هم این است که هر اپلیکیشن برای هر دستگاه خاص، به صورت اختصاصی طراحی شود. این یعنی برای هر دستگاه و هر سیستم عامل جداگانه، برنامههای جداگانه نوشته شود. به طور مثال، برنامهنویسی موبایل بر روی سیستم عامل iOS بسیار سادهتر از اندروید است. چرا که دستگاههای مختلفی که از iOS بهره میبرند، تنوع آنچنانی ندارند و با توسعه یک نسخه از اپلیکیشن، کار توسعهدهندگان تمام میشود. چرا که آن یک اپلیکیشن، به راحتی و بدون هیچ مشکلی بر روی همهی دستگاههای دارای iOS کار میکنند. تمام دستگاههای iOS، سختافزار مشخص و یکسانی دارند و لازم نیست به صورت جداگانه برای هر کدام، تغییراتی در اپلیکیشن ایجاد کرد. اما در مورد اندروید این گونه نیست. دستگاههایی با تمایزات فراوان از نظر سختافزاری با اندروید کار میکنند و همین موضوع، توسعه اپلیکیشن و برنامهنویسی موبایل برای اندروید را دشوارتر میکند. علت این که بیشتر اپلیکیشنها اولین بار بر روی iOS منتشر میشوند هم دقیقاً همین است؛ چرا که امتحان کردن اپلیکیشن بر روی این سیستم عامل بسیار سادهتر و کمهزینهتر است.
از طرف دیگر، ما اپلیکیشنهایی را داریم که بر پایه وب طراحی و نوشته شدهاند. این اپلیکیشنها بدون هیچ مشکلی بر روی دستگاههای مختلف اجرا میشوند و لازم نیست به صورت جداگانه برای هر دستگاه یا سیستم عامل، برنامهی اختصاصی نوشت. این اپلیکیشنها بر پایهی مرورگر وب اجرا میشوند، توسعهشان کمهزینهتر است و دسترسی به آنها نیز آسانتر است. اما کارکرد و کیفیت آنها به نسبت اپلیکیشنهایی که به صورت اختصاصی نوشته شدهاند، کمتر است. مثلاً در اپلیکیشنهای بر پایه وب، نمیتوانید از همه ویژگیهای موبایل بهره ببرید یا نوتیفیکشنهای آن نیز به مانند بقیه نیست. برای همین در نظر کاربران، چنین اپهایی خیلی حرفهای به نظر نمیرسند.
انواع اپلیکیشنها و زبانهای برنامهنویسی موبایل
همانند نرمافزارهایی که برای دسکتاپ و کامپیوتر طراحی میشوند، برای طراحی اپلیکیشنهای موبایل نیز از طیف گستردهای از زبانهای مختلف برنامهنویسی استفاده میشود. اندروید و iOS به عنوان دوتا از محبوبترین سیستم عاملهای موبایل، در سالهای اخیر سعی کردهاند تا نحوه توسعه و برنامهنویسی موبایل را استانداردسازی کنند که در کارشان نیز موفق بودهاند. با این حال، همچنان اپلیکیشنها میتوانند تفاوتهای زیادی با هم داشته باشند. اپلیکیشنهای موبایل به دستههای زیر تقسیم میشوند:
- اپهای نیتیو (Native apps)
- اپهای HTML5
- اپهای هیبرید (Hybrid apps)
اپهای نیتیو (Native apps)
اپهای نیتیو در واقع همان اپهایی هستند که به صورت اختصاصی برای یک پلتفرم خاص (iOS یا اندروید) طراحی میشوند و از زبانها و ابزارهایی استفاده میکنند که توسط آن سیستم عامل پشتیبانی میشود. در سیستم عامل iOS برای توسعه اپلیکیشن، از زبانهای Xcode و Objective-C استفاده میشود. این در حالی است که در سیستم عامل اندروید، از زبانهای Eclipse و Java برای برنامهنویسی استفاده میشود. توسعهدهندگان در اغلب موارد، طراحی اپهای نیتیو را ترجیح میدهند، چرا که به وسیلهی آن میتوانند از تمام پتانسیل و کاراییهای دستگاه استفاده کنند.
به طور کلی توسعهی اپهای نیتیو، به هزینه و وقت بیشتری احتیاج دارد. همچنین دستگاههای هوشمند موجود در خانه نیز، روز به روز افزایش پیدا میکنند. مثل تلویزیونها و دستیارهای هوشمند. بنابراین توسعه اپ برای هر پلتفرم به صورت جداگانه، روز به روز گرانتر و وقتگیرتر میشود و ممکن است برای همهی کسبوکارها مناسب نباشد.
اپهای HTML5
این اپها در حقیقت اپهایی هستند که بر پایه زبانهای جهانی وب مثل HTML5، جاوااسکریپت و CSS نوشته و طراحی میشوند. این اپها فقط یک بار احتیاج به نوشته شدن دارند. اپهایی که در این چارچوب طراحی میشوند با اکثر پلتفرمها سازگاری دارند و میتوان آنها را با تغییرات خیلی کوچک، برای اجرا بر روی سیستمهای عامل مختلف، بهینهسازی کرد. با وجود این که این اپهای کاراییهای زیادی میتوانند داشته باشند، اما این را در نظر داشته باشید که کاربران اپهای نیتیو را بیشتر ترجیح میدهند. تحقیقی که توسط اوراکل انجام شده، نشان میدهد کاربران موبایل، ۹۰ درصد وقت خود را بر روی اپهای نیتیو میگذارند و فقط ۱۰ درصد را به مرورگرهای وب اختصاص میدهند.
اپهای هیبرید (Hybrid apps)
اپهای هیبرید بسترهایی هستند که به صورت نیتیو بر روی دستگاهها ایجاد میشود تا بتوان اپهای HTML5 را بر رویشان اجرا کرد. به زبان سادهتر، اپهای هیبرید همان اپهای HTML5 هستند، اما یک بستر نیتیو برایشان ایجاد شده، به طوری که ظاهرشان به اپهای نیتیو شبیه شود. این نوع طراحی به توسعهدهنده اجازه میدهند تا از عناصر و ویژگیهای منحصر به فرد هر دستگاه، استفاده بیشتری ببرد.
کیتهای توسعه نرمافزار
توسعه و برنامهنویس موبایل به یک سری کیت توسعه نرمافزار (Software development kits یا SKD) احتیاج دارد. این کیتها در واقع یک فضای شبیهسازی موبایل به وجود میآورند که توسعهدهندهها در آن میتوانند اپهای خود را طراحی و تست کنند. با این حال اجباری برای استفاده کامل از این کیتها برای طراحی اپلیکیشن نیست. مثلاً توسعهدهندگان میتوانند بر روی Unity بازی موبایل طراحی کنند و سپس بر روی Android SDK، کار خود را امتحان کنند. برای توسعه اپ بر روی iOS باید با پرداخت پول، گواهی توسعه iOS را تهیه کنید. این در حالی است که Android SDK به صورت رایگان در دسترس همه قرار گرفته است.
اندروید و iOS تقریباً سهم مشابهی از بازار دارند (به ترتیب ۵۲ و ۴۷ درصد از بازار). اما توسعه اپ برای iOS سادهتر است، چرا که همان طور که پیش از این نیز به آن اشاره کردیم، در iOS لازم نیست تا به فکر تنوع و گستردگی دستگاههای مختلف تولیدشده توسط تولیدکنندگان مختلف باشید. با این حال، هر کدام از این پلتفرمها را که انتخاب کنید، موانع و مشکلات زیادی ممکن است بر سر راهتان وجود داشته باشد.
نیازمندیهای توسعه اپلیکیشن موبایل
دنیای برنامهنویسی و توسعه اپلیکیشن موبایل مدام در حال تغییر است. حداقل هر شش ماه یکبار، یک بهروز رسانی جدید برای سیستم عاملهای موجود بر روی موبایلها عرضه میشود. هر کدام از این بهروزرسانیها دارای تغییرات و ویژگیهای جدیدی هستند که توسعهدهندگان اپ باید کار خود را با آن تطبیق دهند.
عدم توانایی برای تطبیق دادن اپها با آپدیتهای جدید میتواند فاجعهآمیز باشد و مشکلات امنیتی زیادی را به بار آورد. از طرفی هزینههای توسعه و به روز رسانی مداوم اپ بسیار بالا و نجومی است.
بنابراین توسعه و ساختن یک اپ، تنها در صورتی به صرفه است که بتوانیم یک اپ فوقالعاده طراحی کنیم. یک اپ که دارای تجربه کاربری ضعیفی باشد، به راحتی کاربران را فراری میدهد. بنابراین قبل از طراحی اپ، باید به همه جوانب آن به صورت دقیق فکر کنیم و جنبههای اقتصادی آن را نیز بسنجیم.
مراحل طراحی و توسعه اپلیکیشن
صرف نظر از این که چه پلتفرمی را برای توسعه و طراحی اپ خود انتخاب میکنید، مراحل طراحی اپ را میتوان به ۶ مرحله کلی تقسیم کرد که در هر شرایطی باید آنها را دنبال کنید.
- ایده: اولین مرحله در طراحی هر اپلیکیشن، یافتن یک ایده مناسب است. برای این که مطمئن شوید اپلیکیشن شما میتواند موفقیت کسب کند، لازم است تا به چند سوال پاسخ دهید: اپلیکیشن شما قرار است دقیقاً چه مشکلی را حل کند؟ مخاطب شما کیست و دقیقاً چه کسانی یا چه گروهی از مردم قرار است از اپلیکیشن شما استفاده کنند؟ ویژگیهای اپ شما چیست و چرا مهم هستند؟ آیا اپلیکیشن رقیبی برای آن وجود دارد؟ اگر اپلیکیشن رقیبی وجود دارد، چرا فکر میکنید که اپلیکیشن شما بهتر از آن خواهد شد؟
- طراحی: مرحله بعدی به طراحی رابط کاربری (UI) و تجربه کاربری (UX) اختصاص دارد. در این مرحله است که باید دیاگرام یوزر فلو (User-Flow) را بسازید و سپس به طراحی وایرفریم (Wireframe) بپردازید. در دیاگرام یوزر فلو شما مشخص میکنید که ویژگیهای اپلیکیشنتان چیست و کاربران چه کارهایی میتوانند با آن انجام دهند. در مرحله طراحی وایرفریم، شما باید به صورت دستی یا با استفاده از کامپیوتر، ظاهر اپلیکیشن خود را طراحی کنید. بعد از این باید یک سری اسکچ یا طرح اولیه آماده کنید که در واقع به نوعی اسکرینشات از اپی هستند که هنوز ساخته نشده. به این تصاویر ماکآپ (Mock-up) میگویند.
- توسعه: بعد از اتمام مرحله طراحی، نوبت به توسعه و برنامهنویسی میرسد. در این مرحله شما یا باید خودتان به زبانهای برنامهنویسی موبایل مسلط باشید یا آن را به توسعهدهندگان دیگر بسپارید. در هر دو صورت، کدهای اپلیکیشن باید به صورت کامل نوشته و آماده تست شوند.
- تست: در این مرحله اپلیکیشن آماده شده و باید برای سنجش کیفیت و ارزیابی، مورد تست و آزمون قرار بگیرد. در اینجا معمولاً مشکلات و باگهای زیادی ممکن است در اپلیکیشن پیدا شود که باید اصلاح شوند.
- انتشار عمومی: بعد از آماده شدن اپلیکیشن و برطرف شدن مشکلات، میتوانید آن را به صورت عمومی منتشر کنید. معمولاً در ابتدا اپلیکیشنها به صورت نسخه بتا و محدود عرضه میشوند تا برخی مشکلات و باگهای احتمالی مرتفع شود.
پلتفرمهای ساخت اپلیکیشن بدون نیاز به دانش برنامهنویسی
تا همین چند سال پیش، شما برای ساخت اپلیکیشن مجبور بودید تا دانش برنامهنویسی موبایل داشته باشید. اما خوشبختانه پلتفرمهایی در سالهای اخیر به وجود آمدهاند که به شما کمک میکنند بدون هیچ دانش برنامهنویسی موبایل یا دانش اندک، بتوانید اپلیکیشن بسازید. تعدادی از بهترینها در این زمینه را در اینجا معرفی میکنیم:
- io: اپری یک سازنده اپ موبایل است که کاملاً تحت وب عمل میکنند به این معنا که نیازی نیست تا برای اجرای آن نرمافزاری دانلود یا نصب کنید.
- Mobile Roadie: برای آنهایی که به دنبال طراحی اپلیکیشنی هستند که از نظر ظاهری بهترین باشد، موبایل رودی بهترین انتخاب است.