در سه روز یک اپلیکیشن iOS ساختم بدون هیچ‌ دانشی پیشین در Swift

چینش‌های برنامه‌نویسی Vibe، ابزارهای هوش مصنوعی، و شروع کار به‌عنوان تک‌کارآفرین را از چه چیزهایی آموختم

در سه روز برنامه Brush Tracker را بدون تجربه قبلی با Swift ساختم؛ زبانی که برای توسعه iOS به‌کار می‌رود. هرچند یک برنامه کاملاً کارآمد بر روی App Store منتشر کرده‌ام، اما هنوز دانش کمی در Swift دارم چون از «vibe coding» برای توسعه این برنامه استفاده کردم.

در این مقاله، روند کار، ابزارهای هوش مصنوعی که به‌کار برده‌ام را توضیح می‌دهم و برخی از آموخته‌ها و بینش‌هایم را به اشتراک می‌گذارم.

Anything به‌عنوان جایگزین Lovable

قبلاً برای توسعه برنامه‌های وب از Lovable استفاده کرده‌ام اما به‌نظر نمی‌رسد که این ابزار برای توسعه برنامه‌های موبایل، حداقل در حال حاضر، قابل‌استفاده باشد.

برای توسعه برنامه‌های موبایل، جایگزین‌های Lovable وجود دارد. به‌تازگی با ابزاری به نام Anything آشنا شدم و چون تجربه‌ی بسیار خوبی با Lovable داشته‌ام، تصمیم گرفتم برای توسعه برنامه‌ام از آن استفاده کنم. ابتدا به‌نظر می‌رسید عملکرد خوبی دارد، اما تجربه کلی به‌اندازه‌ای که انتظار داشتم کارآمد نبود.

سخت‌ترین قسمت، ناتوانی در تست فوری تغییرات، اصلاحات و بهبودها بود. Anything یک رابط کاربری داخلی برای تست دارد، اما تجربه‌ی کاربری آن چندان روان نبود. همچنین شما را به تست کد از طریق برنامه Expo هدایت می‌کند که برای من به خوبی کار نکرد.

باید بگویم که تجربه‌ای قبلی در توسعه برنامه‌ها ندارم. برای توسعه‌دهندگان یا افرادی که پیش‌زمینه‌ای در برنامه‌نویسی دارند، Anything می‌تواند ابزار موثرتری نسبت به تجربه‌ی من باشد.

کد خروجی‌گیری شده از Anything را صادر کردم و سعی کردم آن را در Xcode روی مک‌ام تست کنم، اما با تعداد زیادی خطا مواجه شدم و نتوانستم آن را اجرا کنم. بنابراین تصمیم گرفتم از گزینه‌ای دیگر استفاده کنم. Cursor به‌نظر گزینه‌ی واضحی می‌رسید.

Cursor

از دوستانی که فعالانه از Cursor استفاده می‌کنند، چیزهای بسیار خوبی درباره‌اش شنیده‌ام. خودم نیز می‌خواستم آن را امتحان کنم.

در Cursor همان درخواست (prompt) را وارد کردم و از آن خواستم برنامه را بسازد. سپس یک پروژه Xcode با پوشه‌ها و فایل‌های تولید شده توسط Cursor ایجاد کردم. شبیه‌ساز Xcode را اجرا کردم و در اولین تلاش کار کرد.

هدف Brush Tracker کمک به شما برای حفظ ثبات مسواک زدن روزانه است. این برنامه امتیاز پاکیزگی را که از ۱۰۰٪ شروع می‌شود، به‌ شما می‌دهد. اگر یک روز مسواک نزنید، این امتیاز کاهش می‌یابد و دندان‌های نمایشی در برنامه کمی زردتر می‌شوند تا با امتیاز پاکیزگی همخوانی داشته باشد.

توجه: تمام تصاویری که در این مقاله استفاده شده‌اند، شامل اسکرین‌شات‌هایی از برنامه من، Brush Tracker می‌باشند.

نسخه‌ی اول فقط شامل ویژگی اصلی برنامه بود. به‌نظر من این کارآمدترین روش برای ساخت محصولات با ابزارهای مبتنی بر هوش مصنوعی است. ابتدا نسخه‌ی اولیه را آماده و عملیاتی کنید و سپس ویژگی‌های دیگر را اضافه کنید.

برای تست ویژگی اصلی برنامه در شبیه‌ساز، مجبور شدم تاریخ شبیه‌ساز را بدون تکمیل «مسواک امروز» تغییر دهم تا ببینم آیا امتیاز پاکیزگی کاهش می‌یابد و تجسم‌های دندان به‌صورت مورد انتظار به‌روز می‌شوند یا خیر.

Cursor پیشنهاد داد تاریخ شبیه‌ساز Xcode را تغییر دهم، اما دیگر شبیه‌ساز تنظیمات تاریخ و زمان ندارد. نسخه‌های قبلی این تنظیمات را داشتند، اما در نسخه‌های جدید این امکان موجود نیست.

یک راه‌حل جایگزین این بود که تاریخ مک خود را تغییر دهم. به این ترتیب، تاریخ شبیه‌ساز نیز به‌روز شد و توانستم ویژگی را تست کنم.

نکته‌ای که متوجه شدم این بود که وقتی تاریخ مک‌ام را تغییر دادم، Cursor حساب من را مشاهده نکرد و کار نکرد. پس از بازگرداندن تاریخ به حالت خودکار، همه چیز به‌ حالت عادی برگشت.

ویژگی زمان‌سنج

یک زمان‌سنج داخلی برای مسواک زدن به‌نظر افزودنی عالی برای Brush Tracker می‌رسید. کاربران می‌توانند به‌سادگی یک جلسه مسواک‌زدن را به‌عنوان انجام‌شده علامت‌گذاری کنند یا همزمان با مسواک زدن از زمان‌سنج استفاده کنند.

چندین بار سعی کردم تا این ویژگی را به‌صورت مورد انتظار پیاده‌سازی کنم. می‌توانید به سادگی به Cursor بگویید یک ویژگی اضافه کند، اما وقتی فرمان (prompt) را دقیق تنظیم کنید و دقیقاً خواسته‌تان را شرح دهید، کار بهتر می‌شود. وقتی دستور واضحی بدهید، Cursor معمولاً کار عالی انجام می‌دهد.

ویژگی پاداش

می‌خواستم هنگام تکمیل مسواک‌های روزانه، انگیزه‌ای افزایشی به کاربر بدهم. پس از پایان جلسات، می‌توانند روی «دریافت پاداش روزانه» کلیک کنند و یک نقل‌قول کوتاه انگیزشی را ببینند. این یک افزودنی کوچک اما یادآور خوبی برای سلامت دندان‌هاست.

می‌توانید همزمان با Vibe Coding یاد بگیرید

Cursor نه تنها کد را می‌نویسد، بلکه به یادگیری شما نیز کمک می‌کند. وقتی سعی می‌کردم ویژگی پاداش را اضافه کنم، پیاده‌سازی اولیه درست نبود و به‌درستی کار نمی‌کرد.

مسئله را برای Cursor توضیح دادم و او هم دلیل بروز مشکل و هم راه‌حل آن را شرح داد. در ادامه دو نمونه از چگونگی کمک Cursor به یادگیری شما را می‌بینید:

مشکل این است که rewardQuote در اولین لمس خالی است چون handleRewardTap() آن را تنظیم می‌کند، اما شیت بلافاصله نمایش داده می‌شود. باید اطمینان حاصل کنم که نقل‌قول قبل از نمایش شیت تنظیم شده باشد.

مشکل رفع شد! مشکل این بود که showReward = true بلافاصله پس از rewardQuote تنظیم می‌شد، اما نمایش شیت در SwiftUI می‌تواند پیش از اینکه به‌روزرسانی وضعیت به‌طور کامل پردازش شود، رخ دهد.

استفاده کارآمدتر از Cursor

Cursor ابزار عالی‌ای است، اما می‌توان راه‌هایی برای بهینه‌سازی کارایی‌اش پیدا کرد.

فرض کنیم کد خراب می‌شود یا به‌درستی اجرا نمی‌شود. اگر بخش مشکل‌دار را می‌دانید، آن را برجسته کنید و به گفت‌وگو اضافه کنید. این کار قطعا برای Cursor اصلاح مشکل را آسان‌تر می‌کند.

در Brush Tracker، هنگام تنظیم اعلان‌ها با مشکلی مواجه شدم. مشکل را تعریف کردم و از Cursor خواستم آن را رفع کند. Cursor گفت که مشکل برطرف شده است، اما هنوز هم ادامه داشت. سپس از تغییرات کد، محل بروز مشکل را پیدا کرده و آن بخش را به گفت‌وگو افزودم.

Cursor در تلاش بعدی آن را اصلاح کرد: مشکل این است که onTapGesture به Picker اعمال شده است، اما در SwiftUI، pickerهای تقسیم‌بندی‌شده همیشه به لمس‌ها واکنش مناسبی نشان نمی‌دهند چون خودشان دارای رفتارهای داخلی هستند. اصلاح‌کننده onChange تنها زمانی فعال می‌شود که انتخاب واقعاً تغییر کند، نه وقتی همان مقدار دوبار لمس شود.

نکته دیگری که شایان ذکر است، درصد «context used» در Cursor است. این ابزار به‌طور خودکار بافت‌های مرتبط از پایه کد شما را استخراج می‌کند، بنابراین نیازی نیست به آن بگویید کدام فایل‌ها را بررسی کند. اما تاریخچه گفت‌وگو نیز در این بافت گنجانده می‌شود و گاهی شامل مشکلات قدیمی یا کدهای نامربوط است.

این شلوغی اضافی می‌تواند مصرف توکن‌ها را افزایش دهد یا کارایی Cursor را کاهش بدهد. وقتی درصد بافت استفاده‌شده افزایش می‌یابد، من تاریخچه گفت‌وگو را پاک می‌کنم.

توزیع برنامه در App Store

پس از کامل کردن تست برنامه‌تان با استفاده از شبیه‌ساز یا یک دستگاه فیزیکی (مثلاً آیفون خود)، زمان آن می‌رسد که برنامه‌تان را در App Store منتشر کنید تا دیگران بتوانند آن را ببینند (و امیدواریم استفاده کنند).

این فرآیند پیچیده نیست اما جزئیات زیادی دارد که به‌ویژه در اولین بار ممکن است زمان‌بر باشد. من یک ویدئوی یوتیوب پیدا کردم که به‌صورت گام به گام تمام مراحل را به وضوح توضیح می‌دهد.

پس از تکمیل تمام مراحل، برنامه‌ام را برای بررسی ارسال کردم. وقتی مورد تأیید قرار گرفت، ایمیلی از App Store Connect دریافت کردم که اطلاع داد برنامه برای توزیع آماده است.

شایان ذکر است که من هیچ وابستگی‌ای با ابزارهای هوش مصنوعی ذکرشده در این مقاله ندارم.

از مطالعه شما سپاسگزارم! می‌توانید Brush Tracker را در App Store بررسی کنید. خوشحال می‌شوم اگر آن را امتحان کردید یا نظری دارید، با من در میان بگذارید.

دیدگاه‌ خود را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

پیمایش به بالا