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

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

Soner Yıldırım

من برنامه Brush Tracker را در ۳ روز ساخت‌ام، بدون هیچ تجربه‌ای پیشین با Swift، زبان برنامه‌نویسی اصلی برای توسعه iOS. اگرچه یک برنامهٔ کاملاً کاربردی در App Store منتشر کرده‌ام، اما به‌دلیل استفاده از «Vibe Coding» هنوز دانش کمی از Swift دارم.

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

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 را تغییر دهم، اما دیگر شبیه‌ساز تنظیمات تاریخ و زمان را ندارد. نسخه‌های قدیمی شبیه‌ساز Xcode این گزینه را داشتند، اما در حال حاضر موجود نیست.

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

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

قابلیت تایمر

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

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

قابلیت پاداش

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

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

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

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

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

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

استفاده مؤثرتر از Cursor

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

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

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

Cursor در تلاش بعدی آن را برطرف کرد: مشکل این است که onTapGesture به Picker اعمال شده است، اما در SwiftUI، segmented pickerها همیشه به‌خوبی به لمس‌ها (tap gestures) پاسخ نمی‌دهند، زیرا هر‌کدام مدیریت داخلی ژست خود را دارند. اصلاح‌کننده onChange فقط زمانی فعال می‌شود که انتخاب واقعاً تغییر کند، نه زمانی که همان مقدار دوباره کلیک شود.

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

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

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

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

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

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

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

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

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

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

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