انتخاب پلتفرم مناسب برای ساخت اپلیکیشن – رایانه شخصی، وب، موبایل یا کراسپلتفرم
اپلیکیشن شما برای چه پلتفرمی نوشته میشود؟ اگر از تازهکاران دنیای توسعه نرمافزار هستید، احتمالاً بدون فکر کردن راجع به نوع نرمافزاری که قصد توسعه آن را دارید، شروع به کدنویسی کردهاید. بااینکه این یک مشکل بزرگ بهحساب میآید اما جای نگرانی نیست. چراکه این فقط مشکل شما نیست و گریبان اغلب تازهکاران حوزه توسعه نرمافزار را میگیرد. پس برای پاسخ به این سؤال همراه ما باشید.
چگونه میتوان برای ساخت یک اپلیکیشن، مناسبترین پلتفرم را انتخاب کرد؟
اینکه قبل از شروع ساخت یک اپلیکیشن، نوع آن را مشخص کنید از اهمیت بالایی برخوردار است. آیا هدفتان رایانههای شخصی هستند؟ یا شایدیک اپلیکیشن تحت وب را مدنظر دارید؟ یا شاید هم میخواهید برای گوشیهای همراه نرمافزار طراحی کنید که این روزها خیلی هم پرطرفدار و قدرتمند هستند. یا شاید هم قصد دارید نحوه کار با ۱ ابزار کراسپلتفرم (Cross-platform) را یاد بگیرید تا بتوانید بهراحتی اپلیکیشنتان را در هر دستگاهی اجرا کنید.
اینکه میخواهید برای چه دستگاه و سیستمعاملی برنامهنویسی کنید خیلی تفاوت ندارد، درهرصورت باید چیزهای زیادی را راجع به نحوه برخورد با پلتفرم موردنظرتان یاد بگیرید. در این مقاله به روشهای مختلف طراحی اپلیکیشن برای محیطهای مختلف، فواید و معایب هر یک و دانشی که برای شروع ساخت یک اپلیکیشن نیاز است، پرداخته میشود.
اپلیکیشنها در رایانههای شخصی
طراحی اپلیکیشن برای رایانههای شخصی به چند دلیل میتواند انتخاب مناسبی باشد البته به این شرط که کاربران احتمالیتان هم از رایانههای شخصی و لپتاپها استفاده کنند.
این اپلیکیشنها، معمولاً غنیترین تجربه کاربری را ارائه میدهند. به خصوص اگر به یک طراحی ریسپانسیو (Responsive) نیاز داشته باشید، این نوع اپلیکیشنها گزینهی بسیار خوبی هستند.
در نرمافزارهای طراحی و بسیاری از بازیها لازم است که نرمافزار نسبت به عملی که کاربر انجام میدهد، بلافاصله عکسالعمل نشان دهد. فرض کنید که میخواهید یک منحنی طراحی کنید، یا به یک موجود فضایی شلیک کنید که یکدفعه نیم ثانیه تأخیر در عمل صورت میگیرد. شاید در حالت عادی این زمان به نظر زیاد نباشد، ولی در حین کار، همین زمان کوتاه تجربهی کاربر را خراب میکند.
ایراد بزرگی که در نرمافزارهای رایانههای شخصی وجود دارد این است، که این نرمافزارها قبل از اجرا نیاز به دانلود و نصب دارند (برخلاف نرمافزارهای تحت وب، که مستقیماً در مرورگر اجرا میشوند). همین مسئله باعث میشود که این نوع نرمافزارها گزینهی ایدهآلی برای اپلیکیشنهایی که کاربران میخواهند بلافاصله اجرا کنند، نباشد.
این مسئله ازآنجهت حائز اهمیت است، که گاهی کاربر حتی قادر به دانلود و نصب نرمافزار شما نیست. برای مثال شرکتهای بزرگ را در نظر بگیرید؛ این شرکتها معمولاً رایانههای خود را قفل میکنند، درنتیجه کاربر نمیتواند چیز زیادی را تغییر دهد. وجود چنین شرایطی، شما را ملزم به شناخت کاربران هدفتان قبل از شروع کار میکند.
ساخت اپلیکیشن برای رایانههای شخصی
حالا فرض میکنیم که شما میخواهید اپلیکیشنتان را برای رایانههای شخصی بسازید. اما سوالی که پیش میآید این است که کدام سیستمعامل را هدف گرفتهاید؟
یک نرمافزار میتواند برای ویندوز، مک، یا حتی لینوکس طراحی شود. که هریک از این سیستمعاملها، برای انجام اعمال عمومی سیستمها (ازجمله ساخت و ذخیرهسازی فایلها، ارسال و دریافت داده در شبکه و ...) دستورات مختص به خود را دارند. این دستورات را رابط برنامهنویسی نرمافزار (Application Programming Interfaces یا بهطور مختصر API) مینامند.
هر پلتفرم هزاران هزار از این دستورها را در خود جای داده است. البته لزومی ندارد که به همهی آنها مسلط باشید، زیرا هریک از آنها پلتفرم مخصوص به خودشان را دارند، ولی اگر قصد پشتیبانی از دو یا چند پلتفرم را دارید، مطالب زیادی هست که باید یاد بگیرید.
اپلیکیشنهای تحت وب
اپلیکیشنهای تحت وب راه فراری از نقطهضعف اپلیکیشنهایی هستند، که برای رایانهها طراحی میشوند. چراکه به کاربر این اجازه را میدهند که فوراً آنها را اجرا کند، و دیگر برای عبور از مراحل دانلود و نصب معطل نشود.
البته این اپلیکیشنها مزایایی هم برای توسعهدهندگان نرمافزار دارند. مثلاً اینکه بهروزرسانی اپلیکیشنهای تحت وب برایشان راحتتر است. کافی است که جدیدترین نسخهی اپلیکیشن را بر روی وب سرور نصب کنند. به همین سادگی این بهروزرسانی را در دسترس تمامی کاربران قرار خواهندداد.
مشکلی که در اپلیکیشنهای تحت وب وجود دارد این است، که ریسپانسیو سازی کامل آنها کاری سخت یا گاهاً غیرممکن است. بهخصوص اگر بر اطلاعاتی از سمت سرور تکیه داشتهباشد.
ازآنجاکه کنترل اینترنت در دست ما نیست، عملکرد یک اپلیکیشن تحت وب بسته به وضعیت اینترنت، در مکانها و زمانهای مختلف، متفاوت خواهدبود.
مسئله مهم دیگری که درباره این اپلیکیشنها وجود دارد، امنیت آن است. چراکه اپلیکیشن ما در سرور قرار دارد. درنتیجه اگر کسی به سرور نفوذ کند، بر روی نرمافزار تمامی کاربران تأثیر میگذارد. ایمنسازی یک وب سرور، خود نیازمند دانش و تخصص مخصوص به خود است.
ساخت اپلیکیشنهای تحت وب
اپلیکیشنهای تحت وب مزایای زیادی دارند. ولی ساختشان به این سادگیها هم نیست. هر وب اپلیکیشن درواقع دو اپلیکیشن است. یک اپلیکیشن که در مرورگر کاربر اجرا میشود، و اپلیکیشنی دیگر که در سمت سرور در حال اجرا است. برنامهنویس هر دو کد را بهگونهای مینویسید که باهم ارتباط برقرار کنند و ازنظر کاربر بهصورت یک اپلیکیشن واحد اجرا شوند.
برای نوشتن این دو اپلیکیشن معمولاً تسلط به پنج زبان برنامهنویسی تحت وب لازم است. در سمت کاربر (یا همان مرورگر) سه زبان HTML، جاوا اسکریپت (JavaScript) و CSS اجرا میشوند، و در سمت سرور تکنولوژیهای Ajax و PHP فعالیت میکنند. البته سمت سرور میتواند بر پایهی asp.net و سایر تکنولوژیها نیز باشد.
کمتر کسی هست، که به همه این تکنولوژیها آشنا باشند. معمولاً در هر تیم افرادی هستند که سمت کاربر را طراحی میکنند، و افراد دیگری هم هستند که کار کدنویسی در سمت سرور را انجام میدهند. بااینکه هر تیم در سمت مربوط به خودش کار میکند. ولی برای برقراری ارتباط بین دو اپلیکیشن، باید با یکدیگر هماهنگ باشند، و همکاری کنند.
اپلیکیشنهای تلفن همراه
اگر اپلیکیشن شما بهگونهای است، که کاربر باید در هر مکان و زمانی به آن دسترسی داشته باشد، توسعهی اپلیکیشن برای تلفن همراه بهترین گزینه برایتان خواهد بود. اپلیکیشنهای موبایل امکان اجرا بهصورت محلی (Local) در تلفنهمراه کاربر رادارند، که این امر باعث میشود سریع و ریسپانسیو باشند. بهعلاوه، درست است که درهرصورت کاربر ملزم به دانلود و نصب این اپلیکیشنها است، ولی فروشگاههای اندروید و آی او اس (iOS) این کار را بسیار راحت کردهاند.
همچنین بهروزرسانی این نرمافزارها هم برای کاربر، هم برای توسعهدهنده بسیار ساده است. تنها کافی است، که جدیدترین نسخهی اپلیکیشنتان را در فروشگاه موردنظر خود آپلود کنید، تا کاربر از وجود آن بهروزرسانی مطلع شود. و با یک ضربهی کوچک تمام عملیات بهروزرسانی را انجام بدهد. (البته برای اینکه کار به همین راحتی باشد، توسعهدهنده هم باید تنظیمات خاصی را پیادهسازی کند.)
مشکلی که در ساخت اپلیکیشن برای تلفن همراه به وجود میآید، کمبود فضا در نمایشگر آنها است. حتی گوشیهایی که از صفحهنمایش بزرگتری برخورداراند (Phablet)، در مقایسه با لپتاپها، تصویر بزرگی ندارند، البته بیشتر مردم هم ترجیح میدهند، که اغلب بهجای تبلت، گوشیهایشان را همراه داشته باشند. این مشکل باعث میشود که طراحی یک رابطکاربری غنی برای این دستگاهها چالشبرانگیز باشد.
شاید همین موجب شده است، که بیشتر اوقات مهمترین مسائل در حوزه اپلیکیشنهای موبایل، مربوط به رابطکاربری و در دسترس بودن اپلیکیشن باشد.
اپلیکیشنهایی که وضعیت چیزی را نشان میدهند (مانند یک پیشخوان از آمار یک شغل) از بهترین نمونه اپلیکیشنهای تلفن همراه هستند. معمولاً برای اینجور اپلیکیشنها نیاز به وجود فضای زیادی در صفحه نیست و اغلب هم نیاز گستردهای به تعاملی (Interactive) بودن ندارند. ولی اگر قرار باشد اپلیکیشنی به کاربر اجازهی آنالیز کردن اطلاعات و آمار و ارقام را بدهد، طراحی چالشبرانگیزی را نیز در پی خواهدداشت.
ساخت اپلیکیشن برای تلفنهای همراه
ازآنجاکه اپلیکیشنهای دسکتاپ و تحت وب معمولاً در نمایشگرهای معمول رایانهها (که ازلحاظ اندازه نسبتاً بزرگ هستند) استفاده میشوند، تقریباً رابطکاربری یکسانی را نیز ارائه میدهند.
ولی این شرایط بر اپلیکیشنهای موبایلی که قرار است در صفحهای به سایز یک پنجم نمایشگر لپتاپ اجرا شوند، حاکم نیست. این بدین معنا است که کاربران این اپلیکیشنها باید در حین استفاده، بین چندین صفحهی تمامصفحه (Full Screen) جابهجا شوند.
تلفنهای همراه هم درست مثل رایانهها و وب، سیستمعاملهای خاص خود را دارند، که هرکدام ابزار، API ها و زبانهای مربوط به خود را ارائه میدهند. برای مثال، سیستمعامل اندروید دارای مجموعهای از API ها است، ابزار توسعهی آن اندرویداستودیو، و زبان کدنویسی آن جاوا است. در آی او اس، ابزار کد نویسی اکس کد، زبان برنامهنویسی سوییفت (Swift) (یا Objective-C)، و مجموعهی API ها، کوکوتاچ (CocoaTouch) هستند.
تمام اینها به این معنا هستند، که شما در هنگام طراحی یک اپلیکیشن موبایل، با همان مشکلات دسکتاپ روبهرو میشوید. یعنی رویارویی با پلتفرمهای کاملاً متفاوت که مهارت و دانش متفاوتی را هم نیاز دارند.
راه حلی از نوع کراس پلتفرم
ممکن است که الآن حتی از قبل هم بیشتر گیج شده باشید، ولی نگران نباشید، راهی هست که از طریق آن میتوانید بهترین امکانات هر پلتفرم را داشته باشید. توسعهی کراسپلتفرم، بهترین گزینه برای کسانی است که میخواهند اپلیکیشن بسازند، ولی نمیخواهند درگیر تفاوتها و جزئیات مختلف هر پلتفرم بشوند، یا اینکه ابزارها و تکنولوژیهای مختلفی را یاد بگیرند.
بااینکه ابزارهای کراسپلتفرم در دنیای برنامهنویسی تازهکار بهحساب میآید، ولی بااینحال بسیار قدرتمند است. هنگامیکه از این ابزارها استفاده میکنید، تنها نیاز به یادگیری یک ابزار، یک مجموعه API، و یک زبان برنامهنویسی دارید. و دیگر لازم نیست، که وارد جزئیات تکتک پلتفرمها شوید.
بلکه میتوانید موارد موردنیاز را سریعتر یاد بگیرید و بر روی ارتقا اپلیکیشنتان وقت بگذارید. بهعلاوه اگر بخواهید فقط برای یک پلتفرم اپلیکیشن بسازید، معمولاً این نوع ابزارها برای توسعه نرمافزارتان سریعتر عمل میکنند.
زوجو
زوجو یکی از این ابزارها است. که بهوسیله آن میتوانید برای تمامی پلتفرمها ازجمله رایانههای شخصی (ویندوز، مک و حتی لینوکس)، تلفنهای همراه (برای آی او اس) و حتی رایانههای تکبوردی (که معروفترینشان رزبریپای (Raspberry Pi) است) اپلیکیشن بسازید. زوجو یک محیط برنامهنویسی (IDE)، یک فریمورک (Framework) کراسپلتفرم، و یک زبان برنامهنویسی است.
بهوسیلهی زوجو، میتوانید هر نوع اپلیکیشنی که میخواهید بسازید. این کار بهطور باورنکردنی در زمان صرفهجویی میکند. چراکه نه تنها نیازی به دانستن همه جزئیات پلتفرمهای مختلف ندارید، بلکه کدی که مینویسید نیز برروی همهی آنها کار میکند!
برای مثال هنگامیکه درحال ساخت یک اپلیکیشن برای رایانههای شخصی هستید، نیازی نیست که برای نسخههای مختلف آن ازجمله لینوکس، مک و یا ویندوز کاری انجام دهید. تمام اپلیکیشنهایی که مینویسید بهطور اتوماتیک کراس پلتفرم هستند و برروی تمامی این سه سیستم کار میکنند.
ساخت اپلیکیشن با ابزاری همچون زوجو همیشه ایدهی خوبی است؛ حتی اگر هیچوقت نیازی به پشتیبانی از دو یا چند پلتفرم نداشته باشید.
خیلی کم پیش میآید که بتوانیم نیازهای آینده را بهطور دقیق پیشبینی کنیم، به همین جهت، استفاده از زوجو میتواند یک نوع بیمه برای نیازهای آینده باشد. شاید امروز فقط به یک اپلیکیشن برای ویندوز نیاز داشته باشید، ولی شاید یک سال بعد کسی نیازمند یک نسخه از اپلیکیشنتان برای مک، وب یا آیاواس باشد.
اگر از ابزارهای سنتی تک پلتفرم استفاده کنید، درحال انجام کاری طاقتفرسا هستید و مثل این است که اپلیکیشنتان را از نو بسازید.
با استفاده از زوجو، چیزی حدود 95% از تمام چیزهایی که یاد گرفتهاید، و همچنین کدهایی که نوشتهاید، به پلتفرم دیگری که نیاز به پشتیبانی از آن را دارید منتقل خواهد شد. و در زمان و انرژی شما بهطور قابلتوجهی صرفهجویی میشود.
کراسپلتفرمهای دیگر
ابزارهای کراسپلتفرم دیگری هم وجود دارند، ولی یکی از خصوصیاتی که زوجو را خاص میکند، تعداد پلتفرمهای پشتیبانی شده آن است. علاوه بر آن، در اپلیکیشنهایی که توسط زوجو نوشته میشوند، کنترلهای بومی برای هر پلتفرم ساخته میشود و کدها نسبت به زبان بومی هر سیستم بهینهسازی و کامپایل میشوند.
شاید در ابتدای یادگیری برنامهنویسی، به این نتیجه رسیده باشید که هر پلتفرم بهخودیخود یک محیط کاملاً متفاوت است که نیاز به دانشی متفاوت دارد. اما خوشبختانه، ابزارهای توسعهی کراسپلتفرمی مثل زوجو، یک راهحل ساده برای نوشتن هرگونه اپلیکیشنی که ممکن است نیاز داشته باشید، ارائه میدهند.