Bamdad Dashtban

Developer

Tag: برنامه نویسی

برنامه نویسی آیفون با بامداد دشت بان – قسمت اول (پروسه طراحی اپلیکیشن و محیط کاربری)

در این جلسه به  معرفی فرایندی که ساخت یک اپلیکیشن  موفق آیفون طی می کند می پردازیم.
شاید خیلی از شما برنامه آیفونی نوشته و آن را برای فروش قرار داده باشید ،ولی شاید فروش شما آن طور که فکر می کردید نبوده! یا شاید می خواهید که App بعدیتون واقعا خوب باشه، ما امروز و جلسه بعدی به این موضوع می پردازیم  و فرایند ساخت یک App را با هم مرور می کنیم.
در این جلسه اصلا به برنامه نویسی نمی پردازیم بلکه نکات بنیادی برای برنامه نویسی آیفون را بررسی خواهیم کرد.

پس با یک سوال شروع می کنیم : بهترین قدم ها برای ساخت چیزی عالی چیست ؟

به طور کلی 4 مرحله اصلی برای ساخت یک  محیط کاربری قوی آیفون وجود داردطراحی محیط کاربری آیفون

  • مرحله  اول شالوده (Foundation) :
    در این مرحله تفاوت هایی که در استفاده از دستگاه های تاچ بوجود می آید را درک می کنیم و به راه های جدیدی در حل مسائل می اندیشیم.
  • · مرحله دوم – تعریف محصول (Product Definition) :
    اینجا می فهمیم آن چیزی که دست مشتری می دهیم چیست ؟
  • · مرحله سوم طراحی و نمونه سازی (Design & Prototyp) :
    درک می کنیم که طراحی محیط کاربری آیفون چگونه است و از کاغذ برای نمونه سازی استفاده می کنیم.
  • · مرحله چهارم پولیش و بهبود (Polish & Refine):
    مرحله ایست  که نرم افزار پایدار ولی معمولی را تبدیل به اپلیکییشن جذاب و عالی می کند.

در این جلسه به دو مرحله اول می پردازیم و در جلسه بعد به دو مرحلی باقی مانده خواهیم پرداخت.

مرحله  اول شالوده (Foundation) :

آیفون انقلابی

به طور قطع آیفون دستگاهی انقلابی است . آیفون دستگاهی همواره متصل به شبکه های مخابراتی است که درون جیب ما جا می شود و دارای GPS ، قطب نما ، دوربین ، شتاب سنج و یک مرورگر کامل وب  است وبه برنامه نویس اجازه می دهد تا از بهترین ورودی های موجود برای ساخت اپلیکیشن استفاده کند.

وقتی آیفون ارائه شد ، بسیاری از قوانین تغییر کرد. برای مثال در کامپیوتر های دسک تاپ دقت استفاده از ماوس 1 پیکس در 1 پیکسل بود و تنها یک بار در زمان رخ می داد، دقت در کامپیوترها تعریف شده بود ولی در آیفون که دستگاهی مالتی تاچ و دقت آن از 22 پیکسل  تا 55 پیکسل بسته به اندازه و نوع استفاده از انگشتان کاربر بر روی صفحه متغیر است . بر این اساس ما 5 ورودی همزمان داریم که باید آن ها را در یک زمان پیگیری کنیم.لمس در مقابل کلیک

در نتیجه بسیاری از ابزار هایی که در گذشته به کار می رفت و به یک استاندارد تبدیل شده بود کنار گذاشته شد و جایگزینی بهتر برای کار با انگشتان طراحی شد.

  • اولین آن ها Scroll-Bar بود که بسیار کوچک بود و به سختی می توانستیم با آن ارتباط برقرار کنیم.و به طور کل آن ها حذف شد چراکه  دیگر با حرکات انگشتان می توانستیم کار آن ها را شبیه سازی کنیم و در اپلیکیشنContacts و یا مرور وب حتما جایگزین آن را دیده اید .
  • دومین آن ها Drop Down Menu ها بودند که به خوبی کار نمی کرند و در کار با انگشتان بسیار ضعیف بود. چندین جایگزین برای آن معرفی شد که Picker یکی از آن ها بود که بیشترین کاربرد را در داده های از پیش تعیین شده دارد.

در آیفون برای اولین بار کاربران می توانستند به طور مستقیم تغییر ایجاد کنند(Direct Manipulation) و نیازی به استفاده از ماوس و کیبورد نداشت. این تغییرات مستقیم به انواع زیر تقسیم می شود:

  • دستکاری مستیقم (Direct Manipulation): برای مثال در یک بازی تیر اندازی وقتی تنها یک بار صفحه را لمس می کنید تا تیری شلیک شود
  • لمس پی درپی (Sequential Tapping): مثلا وقتی که در نرم افزار Mail پشت سر هم  از لحظه باز شدن برنامه صفحه را لمس می کنید تا به ایمیل مورد نظرتان برسید.
  • لمس و کشیدن(Tapping & Dragging): بیشترین شباهت به دنیای واقعی را دارد زیرا شما می توانید با لمس کردن نقاشی کنی , چیزی را تکان دهید و .. 90 درصد کاربران در هنگام کار با صفحه لمسی برای اولین بار لمس کردن و کشیدن را امتحان میکنند.

پس حتما باید فکر کنید کدامیک از این ها در چه موقعی بیشتر در Application  شما به کار می رود.

خوب بیایید به تغییراتی که در طراحی محیط کاربری ایجاد شده بپردازیم:

فهمیدن اینکه چیزی یک Button یا دکمه است بسیار ساده است و آن با نرم کردن گوشه های مربع قابل درک است. پس معمولا هر موقع دیدید دور چیزی نرم شده و همچنین درخشش خاصی دارد آن یک دکمه است. ولی در ToolBar  نمی توان اطراف همه دکمه ها را نرم کرد پس به جای آن می بینید که از تکنیک عمق دادن به دکمه استفاده شده که به آن یک Inner Shadow داده شده است و خود نوار هم درخشان یا Glossy  شده است که به کاربر یاد آوری می کند که قابل لمس شدن است.

دکمه های آیفون

در اکثر پلت فرم ها اغلب 5 یا 6 درصد وقت طراحی می شود ولی در آیفون پیشنهاد می شود که حداقل نیمی از زمان شما به طراحی پرداخته شود. خیلی از شما با خود میگویید من یک برنامه نویس یا یک مهندس هستم و من طراحی نمی کنم و در فتوشاپ چیز ها را خوشگل نمی کنم ولی وقتی من در مورد طراحی می گویم منظورم تعیین وسعت نرم افزار ، اندیشیدن به سلسله مراتب و یافتن جریان نرم افزار  و درک اشیا موجود است و این ها همان کار های هستند که مهندسان از انجام آن لذت می برندو تنها راجع به نقاشی و زیبا کردن چیز ها صحبت نمی کنم ولی باید بدانید هیچ کسی در دنیای واقعی  چیزی را از شما نمی خرد که طراحی خوبی نداشته باشد و وقت زیادی روی طراحی آن گذاشته نشده باشد.

مرحله دوم – تعریف محصول (Product Definition):چرخه تولید در آیفون

تا به حال ( قبل از آیفون) هر محصول نرم افزاری لیستی طولانی از خصوصیات و ویژگی ها را داشت که بدین منظور برنامه نویس مجبور بود محیطی بزرگ فراهم کند تا می توانست تمامی آن ویژگی ها را پیاده سازی کند، ولی مشکل آنجا است که خیلی از کاربران از تمام آن ویژگی ها استفاده نمی کردند.

باید بدانیم که در آیفون هدف آن است که یک راه حل تعریف کنیم نه اینکه مجموعه ای از ویژگی ها را کنار هم بگذاریم و نشان دهیم.
بهترین اپلیکیشن های آیفون آن هایی هستند که یک مشکل را برای کاربر حل می کنند.یکی از بهترین روش ها به رسیدن به این هدف تعریف کردن “شرح تعریف برنامه”  Application Definition Statement  یا ADS است .

ADS از 3 قسمت تشکیل شده است:

(تفاوت شما) ( راه حل شما) برای (مخاطب شما )

(Your Differentiator)(Your Solution) for (Your Audience)چرخه تولید پلت فرم ها غیر از آیفون

  • تفاوت شما : خاص بودن برنامه شما در مقابل سایر نرم افزار ها را نشان می دهد .برای مثال “استفاده آسان” یا “ظاهری زیبا”.
  • راه حل شما: برای خود تعریف کنید که چه مشکلی را حلی یا آسان خواهید کرد.
  • مخاطب شما : بسیار مهم است که بدانید مخاطبتان کیست ، برای مثال اگر مخاطب شما یک آتش نشان است که باید به سرعت هم تیمی های خود را پیدا کند شما نباید آن طور که برای یک تاجر محیطی طراحی می کنید که برای رسیدن به هدفش چندین بار باید صفحه را

لمس کند برنامه را طراحی کنید.

این مرحله را با یک مثال جلو می رویم:در مک ما نرم افزاری به نام iPhotos  داریم که در iOS مشابه آن Aplication با نام Photos  است که همگی ما در آیفون برای مشاهده تصاویر استفاده کرده ایم.

ADS برنامه iPhotos  این است :

Easy to use , digital photo editing ,organizing & sharing for causal & amateur  photographers

تفاوت ما نسبت به سایر نرم افزار ها easy to use  بودن نرم افزار اس و می بینید که در اینجا 3 راه حل داریم :

1.     Digital Photo Editing

2.     Organizing

3.     Sharing

همچنین مخاطبین ما هم Causal & amateur photographers  هستند.

لیست طولانی خصوصیات نرم افزار در این ADS خلاصه شده است و خیلی از این ها برای آیفون مناسب نیست زیرا انجام این کارها با انگشت سخت و زمانگیر است و کاربر آیفون می خواد به هدفی بسیار سریع برسد.پس با مشاهده راه حل ها می بینیم که تنها یکی به کار ِ کاربران آیفون می آید:

همه دوست دارند که عکس هایشان مرتب و Organize شده باشد و لی افراد کمی هستند که برای مرتب کردن عکس هایشان وقت می گذارند و اکثر مردم از یک لیست طولانی تصویر مورد نظرشان را پیدا می کنند.

همچنین افراد کمی هم هستند تا تصاویرشان را ویرایش یا Edit  کنند , آنها فقط عکس می گیرند و اگر عکسی بد شد آن را پاک می کنندو عکس جدید می گیرند و حوصله بریدن , چرخاندن و تنظیم نور آن ها را ندارند.

ولی به اشتراک گذاشتن یا Sharing کاری است که اکثر مردم آن را انجام می دهند چه از طریق نمایش Slide show برای اطرافیان چه از طریق ایمیل کردن یا آپلود کردن در وب سرور ها.

پس با توجه به مطالب گفته شده ADS برنامه Photos را اینگونه می نویسیم:

Easy to use digital photo sharing for casual iphone users

باید به مخاطب برنامه که در اینجا کاربران عمومی آیفون یاد شده هم توجه کرد که اگر عوض شود ، به طور کل ویژگی های برنامه نیز عوض می شود برای مثال ADS برنامه Apertureکه برنامه ای برای عکاسان حرفه ای است و کاملا متفاوت است به صورت زیر است:

Easy to use digital photo sharing for professional photographers

جمله ای معروف وجود دارد که می گوید :

Pick the few features

Most frequently used

By the majority of your users

Most appropriate for the mobile context

تنها چند ویژگی را انتخاب کنید

که بیشترین استفاده را داشته باشد

توسط اکثر کاربران بکار برده شوند

و مناسب برای دستگاهی قابل حمل باشند.

اگر به لیست ویژگی های iPhoto در مک نگاهی بیندازید می بینید که تنها قسمت کوچکی از ویژگی های آن برای نرم افزار Photos   آیفون پیاده سازی شده و همه با نرم افزار Photos کار کرده ایم.با  یک لیست از آلبوم ها شروع می کنیم و عکس مورد نظرتان را انتخاب می کنید , عکس تمام صفحه را می بینید و Toolbar در پایین کارهای مربوط به اشتراک گذاری را انجام می دهد. همان راه حلی که هدف ما ایجاد آن بود. می توانیم Slideshow  ببینیم ، عکس های بعدی و قبلی را ببینیم و به گالری mobileMe آپلود یا ایمیل کنیم.

با سادگی که این نرم افزار دارد ولی یکی از مهم ترین نرم افزار های آیفون است.پس هنگاهی که نرم افزاری را تهیه می کنید که نیاز ساده ای را براورده می کند تصور نکنید که نرم افزار شما برای کاربر بی ارزش است.

اگر شما به نرم افزار های موفق در App Store نگاهی بیندازین در خواهید یافت که بیش از 70 درصد آن ها وقتی برای نوشتنADS گذاشته اند.

ادامه در مطلب بعدی

خسته نباشید.

بامداد دشت بان

این جاوا اصلا چی هست ؟

باید بگم که با دوستانم راجع به مطالبی که در بلاگم نوشتم صحبت کردم ، از اونجایی که خیلی ها خودشون برنامه نویسند کلی نظرات خوب دادند و همچنین خیلی از دوستان که آشنایی نداشتند سوالات خوبی کردند که من را بر آن داشت [:دی ] تا از بیخ و بن به معرفی جاوا بپردازم چون اون طور که فهمیدم برداشت دوستان نسبت به جاوا خیلی متفاوته.
اول از همه بگو ببنینم کلا جاوا چی هست ؟
جاوا یک زبان برنامه نویسی است که در ابتدا توسط جیمز گاسلینک در شرکت سان ( که در حال حاضر قسمتی از شرکت اوراکل است ) توسعه و تولید پیدا کرد و در سال 1995 ارائه شد ،شکل و سینتکس دستور ها از زبان های سی و سی پلاس پلاس گرفته شد و رشد داده شد ولی تفاوت های عمده ای در مدل شی گرایی ارائه شده و همچنین دسترسی های محدود تر شده به امکانات سطح پایین مثل رم و هارد و .. داره .

به چه دردی می خوره ؟
به همه درد ، شما میتونید با استفاده از جاوا برنامه ای برای کنسول خط فرمان , محیط دسکتاپ , دستگاه های جیبی و دستی مثل موبایل و تبلت  و همچنین برای وب برنامه بنویسید .
پس واقعا زبون کاملیه البته باید بدونید هر قسمتییش واسه خودش دنیایی داره ولی اگه علاقه داشته باشید می تونید همه بخش هارو امتحان کنید .

زبان برنامه نویسی سختیه ؟
نمیشه گفت سخته یا سخت نیست ، به اونجا بر میگرده که شما با مفاهیم شی گرایی چقدر آشنا هستید و می تونید کنار بیایین، به نظر من اگه چیزی از برنامه نویسی   رویه ای ندونید  برای شروع شاید راحت تر بتونید درک کنید ولی چون با مفاهیم شی گرایی درگیر خواهید بود و باید مفاهیم جدید یاد بگیرید شاید یادگیریتون نسبت به سایر زبون ها کند تر پیش بره ولی بعد ها با همون مفاهیم کلی عشق خواهید کرد.

چه بخشایی داره هر کدوم به چه کاری می آیند ؟

در حال حاضر میشه برنامه ها و SDK  های جاوا رو به 4 دسته تقسیم کرد که این دسته بندی بر اساس کاربرد نرم افزار هاست که به صورت زیره :

  • Java Micro Edition  یا همون JavaME
    برای برنامه نویسی دستگاه های موبایل و دستی  به کار میره
  • Java Standard Edition یا همون JavaSE
    برای برنامه نویسی برنامه های کنسول و دسکتاپ ازش استاده میشه البته باهاش میشه به سختی اپلیکیشن وب  هم تولید کرد.
  • JavaFX
    برای تولید برنامه هایی که بیشتر با اینترنت سرو کار دارند هستش ، قابلیت تولید برنامه هایی که روی موبایل , دسکتاپ و مرورگر رو داره ، کلا یه چیزی تو مایه های ادوبی ایر هست اگه میشناسید .
  • Java Enterprise Edition  یا همون Java EE
    اصل داستان جاوا به نظر من همین نسخه سازمانی جاوا هستش  که باهاش میشه برنامه های بزرگ ، سایت های بزرگ و سیستم های توزیع شده تولید کرد .

هزینه تولید برنامه توش زیاده ؟
نمیشه درست پاسخ داد ، قاعدتا اگه بخواهید باهاش سایت راه بندازید نیازمند استفاده از یک سرور یا سرور مجازی رو داره که هزینیش می تونه از وب هاست های اشتراکی بالا تر باشه ولی خوب پروژه تون باید این قدر بزرگ باشه که برید طرف جاوا وگرنه نمی ارزه!

میشه باهاش سایت ساخت ؟
بله ، تکنولوژی هایی مثل Java Server Faces  و Java Server Pages  برای همین کارند البته کتابخانه های دیگه ای هستند که باهاشون میشه سایت ساخت مثل Google Web Toolkit که همگی روی بستر جاوا هستند.

می ارزه از زبان هایی مثل PHP  یا .NET  گذشت و جاوا یاد گرفت ؟
صد درصد باید وارد دنیای جاوا شید اگه می خواهید برنامه نویسی حرفه ای رو دنبال کنید ، به محض وارد شدن لذت خواهید برد.

بازار کارش چه طوره ؟
این طوری که من دیدم خوب میشه ازش پول در آورد اگه حرفه باشید ( یه سر به ایران تلنت بزنید ) ولی حرفه شدن توش تجربه می خواد. برنامه نویس هاشم تو ایران کمند و بازار بکری داره!

می گن تولید و دیپلویمنت و به پا کردن نرم افزار پایانی توش سخته ؟
شاید اگه خودتون بخواهید این کارو بکنید این طور باشه ولی ابزار های قدرمندی به وجود اومده که اصلا شما رو با این پیچیدگی ها درگیر نمی کنند مثل نت بینز که کلی داستانه واسه خودش. کلا خیلی از سیستم های اتوماسیون توش بسیار پیشرفته تر از زبان های دیگس و توی تیم هم خیلی راحت می شه باهاش کد زد.

من بیشتر می خوام بدونم چیکار کنم ؟
عزیز دلم یه سر به ویکی پدیا فارسی بزن بعدش به انگلیسیش بزن بعدشم از گوگل استفاده کن ، اگه به جواب نرسیدی خودم اینجام


شروع مجدد

خوب
از ابتدا شروع می کنیم…
شروع نوشتم در اینجا ، جعبه ابزار وب گوگل و پروژه کلوپ همگی با موضوع کامیت بود و اکثر نوشته ها حول موضوع تکنولوژی های وب می گذشت، متاسفانه مطالب من بازدید و طرفدار زیادی پیدا نکرد و دلیلش هم به نظر خودم این بود که خیلی زود بود که در وب فارسی به چنین مطالبی پرداخته شد و باعث شد تا علاقه من به  نوشتن کاهش پیدا کنه.

متاسفانه سرمایه گذاری ضعیف و بی برنامه  ، کمبود متخصصین و موضوعات دیگری مثل تحریم و .. اجازه رشد و تولید اپلیکیشن های بزرگ ، سازمانی  و کاربردی را از ما ایرانیان گرفته و اکثر انرژی  و هزینه صرف موضوعات و پروژه هایی می شه که شاید اصلا لازم نباشند.

در این مدت که نمی نوشتم خوش بختانه وقتم را با مطالعه و یادگیری گذراندم و بیکار نبودم ، دوست دارم نوشتنم رو دوباره آغاز کنم.

خوب حالا راجع چی مطالعه داشتم و چی می تونم بنویسم؟ کاملا روشن هستش که توی این مدت تغییر مسیر ندادم و مطالعات من در همان  راستای برنامه نویسی وب بوده با این تفاوت که به دید خودم کاملا منظم تر و علمی تر شده

مطالبی که در نظر گرفتم به برنامه نویسی در زبان جاوا ، تولید اپلیکیشن های غنی شده ، اپلیکیشن های سازمانی برنامه نویسی Test Driven  می باشد ولی حتما مطالبی خواهم نوشت که  برای علاقه مندان به وب هم مفید باشه.

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

در ضمن شاید شما منو بشناسید و دلتون بخواد راجع به مطالبی بنویسم یا نظر بدم پس درنگ نکنید و حتما یادآوری کنید.

امیدوارم که مطالب مفید باشه و من بتونم در نوشتن پایدار باشم