Rambler's Top100
DeepHome
05.09.2008  00:00
С чего начать разработку под iPhone?
Море опасно. Даже в наши дни, несмотря на навигационные спутники, службы спасения и накопленный немаленький опыт, оно неустанно собирает кровавую дань с тех, кто отважился ступить на палубы ничтожных песчинок, именуемых кораблями.

В древности, мореплаванье было стократ опаснее. Тех, кто выжил в схватке с стихиями, и вернулся домой, страшное и беспощадное море снова и снова звало к себе. И в ответ на изумленные вопросы близких, мореплаватели отвечали, гордо и почти бессмысленно: "navigare necessitum est". "Плавать необходимо".

История развития нашей цивилизации доказала, что плавать действительно было необходимо. Подвиг этих бесстрашных людей трудно переоценить.

Второе название этой статьи - "программировать необходимо". Да простят меня древние, но бесконечное цифровое море, в которое отправляются современные "путешественники", не менее кровожадно и беспощадно, чем моря Древнего Мира...

И тем не менее, кто-то должен этим заниматься.

1. Сказки и быль

О том, как кто-то заработал кучу денег написав удачную программу, сложены чуть ли не баллады. Сказители, задыхаясь от умиления, живописуют подвиги нынешних навигаторов, опуская скучные подробности и не вдаваясь в детали... И получается такое, что тысячи совершенно нормальных людей, способных к ведению бизнеса, просто потеряли головы, пытаясь делать на этом деньги "из воздуха"...

Сегодня эти люди несут соплеменникам неблагую весть о том, что "софтверный бизнес - это ..." (замените многоточие на название одной мучительной болезни, которую не принято упоминать в приличном обществе, этим же словом принято называть крайне утомительные, но абсолютно бесплодные, занятия). Им даже в голову не приходит, что это они могли делать что-то не так.

С одной стороны, разработать удачную программу ничуть не проще чем, скажем, спроектировать многоквратирный многоэтажный дом, реактивный самолет бизнес-класса, или написать успешный роман.

С другой, из-за непрерывного и быстрого развития платформ программирования, ни в какой другой области человеческой деятельности не бывает, и не может быть, такого спроса на "качественные изделия", как здесь...

Иногда спрос в разы превышает "спрос фонового режима", как сейчас на iPhone.

Поймав попутный ветер, избегая грубых ошибок, в софтверной индустрии и в самом деле можно найти несметные сокровища...

Залог успеха в [софтверной] индустрии - любые два фактора из приведенных трех: (а) блестящий замысел (б) мастерство и (в) удача. Из всех этих факторов, нам не подвластна только удача.

Правильная организация процесса, и упорный труд всех его участников вынесены за скобки. Они подразумеваются.

Как в команде судна, участники софтверного проекта должны исправно выполнять свою судовую роль. Штурман - указывать путь, рулевой - удерживать выбранный курс, мачтовые быстро и правильно управлять парусами. В наши дни, несмотря на прогресс в средствах разработки, удачный проект все более становится делом коллективным.

Сам я - "волк-одиночка", но чем дольше живу, тем больше убеждаюсь, что в нашем деле один человек уже "не воин", и что посвященных должно быть, как минимум, двое. И совсем необязательно, чтобы все члены команды были программистами.

Создание хороших программ - одновременно и искусство, и наука. Как и любое конструирование, особенно принципиально новой техники, открывающей новые горизонты перед человечеством... Или, увы, умеющей уничтожать это самое человечество быстро и эффективно (закрывающей горизонты).

В команде, разрабатывавшей первый Макинтош, когда дела шли не слишком хорошо, ситуацию спас лозунг "The real artists ship". То есть, "Настоящие художники поставляют [готовый продукт]".

2. Начало начал

iPhone SDK доступен всем желающим, "за так". Если вы попробуете его скачать, вам потребуется сообщить кое-какие сведения о себе, и согласиться на условия NDA (соглашения о нераспространении информации). Кроме того, то же самое согласие от вас потребуется, если вы захотите пользоваться iPhone Developer Center на "http://developer.apple.com". Тоже подписка, и тоже бесплатная.

Сделать это стоит в любом случае. iPhone SDK установится на любой Маки с Intel внутри, с Mac OS 10.5 и выше. Вот только реально ли то, что вы задумали?

Если вы никогда в жизни не программировали ни на одном из языков высокого уровня (разработка Web-сайтов и написание небольших скриптов на JavaScript, увы, не в счет - хотя эти навыки вам очень пригодятся), пытаться воплотить свой замысел в профессиональной среде разработки, осваивая ее по ходу дела, увы, скорее всего, бессмысленная трата времени.

Это то же самое, что попытаться написать бестселлер (именно бестселлер, а не просто роман или новеллу) на незнакомом вам иностранном языке, попутно изучая его (сначала с нуля, потом тонкости, потом...). Даже если иностранный язык вам довольно хорошо знаком, но он неродной, это почти безнадежно.

Зато, если у вас есть "блестящий замысел" (о замыслах ниже), у вас есть одна из составляющих успеха. Те, кто умеет писать программы, превращая замыслы в реальность, в таком же положении, как и вы. У них - другая составляющая, столь же бесполезная без того, что есть у вас.

Я даже не знаю, стоит ли советовать вам прочитать "Мифический человеко-месяц" профессора Питера Брука. При всем моем уважении к его наблюдательности и остроумию, написанное им очень сомнительно. Особенно в наши дни. В 1975 году, в год первого издания его книги, процесс и цели разработки были... другими.

Куда более полезной мне кажется книга Ли Якоки о том, как ему удалось спасти от неминуемого краха "Крайслер". О том, что такое "замысел", о превращении замысла в "концепции", о превращении ментальных конструкций в реальный продукт (пусть даже речь идет о легковых автомобилях) он написал гораздо лучше.

Воплощение замысла - дело нелегкое. В iPhone SDK и на сайте iPhone Developer Center - очень много полезной и нужной информации. Сырые идеи (хочу программу, которая делает то то и то то; есть программа А, которая делает то то и то то, но я знаю, как то же самое сделать удобнее/проще/продуктивнее) почти бесполезны.

Сырую идею необходимо культивировать. Основываясь на особенностях целевой платформы (в нашем случае, это iPhone, программы для которого отличаются как от программ для компьютеров, так и от программ для других мобильных устройств), идею необходимо переформулировать с учетом местных реалий.

Может показаться, что если двигаться от битов и байт, и не стеснять свою свободу никакими условностями, можно добиться большего. Это иллюзия. Современные операционные системы и среды программирования велики и сложны именно из-за того, что десятки тысяч проблем, которые встали бы перед разработчиком, кем-то уже решены. Чаще всего, решены очень неплохо. Они используются уже не первый раз, и как минимум, надежнее, чем любой новодел.

Не следует (а) изобретать новый интерфейс, интерфейс хороших программ вовсе не случайно похож, (б) изобретать новые сервисы вместо тех, которые уже есть.

Из того, что вам было бы очень трудно (мягко говоря) превратить ваш замысел в программу для iPhone самостоятельно, если вы никогда до сих пор не занимались программированием (этому можно научиться, но не одновременно с практической работой), вовсе не следует, что вы не обязаны знать, хотя бы в общих чертах (а лучше даже еще глубже), как устроены программы, библиотеки, железо iPhone, что такое Objective-C, а главное...

На "http://developer.apple.com/iphone/library/navigation/Guides.html" Apple разместила (в хронологическом порядке) десятки руководств по самым разным аспектам программирования для iPhone. Нет смысла читать их все подряд. Для превращения сырого замысла в "зрелый", как минимум, следует изучить следующие три:

- (Самое важное): iPhone Human Interface Guidelines
- (Второе по важности): iPhone OS Programming Guide
- (Второе по важности): Cocoa Fundamentals Guide.

Увы, все руководства, справочники, статьи, заметки и т.п. в iPhone Developer Center на английском. Документацию, написанную профессиональными авторами с Apple Developer Connection, в индустрии оценивают очень высоко - обычно она написана простым и понятным языком, и тем не менее, если для вас это проблема, обращайтесь.

Даже если у вас за плечами опыт разработки для компьютерных или мобильных платформ, прежде чем браться за сотворение шедевра прочтите (внимательно, и даже несколько раз) эти три "гайда". Вы ведь даже не представляете, за что беретесь...

Но, если вы выезжаете на улицы города на новеньком сверкающем и пахнущем заводом супер-автомобиле, под капотом которого бьют, в нетерпении, копытцами сотни "лошадей", вы ведь соблюдаете правила! Во всяком случае, большую их часть... а те, которые вы нарушаете, вы нарушаете только в тех ситуациях, в которых уверены, что знаете, что делаете... И ровно настолько, насколько это допустимо.

Иначе как читатель вы мне не интересны: у вас нет будущего, или оно слишком мрачно, и вам будет не до воплощения блестящих замыслов. Рисковать собой без необходимости - глупо. Подвергать риску других, ни в чем не виноватых, людей - мерзко и подло. Лирика? Все это имеет самое непосредственное отношение к программному обеспечению!

3. Блестящие замыслы

Тоже никакой мистики: из истории вычислительной техники известно, как именно появились на свет некоторые из идей, перевернувших мир. Электронные таблицы, одно из важнейших изобретений 20-го века, еще и отличная иллюстрация...

Весной 1978 года, соискатель степени MBA Дэн Бриклин, в аудитории номер 108 Гарвардской Школы Бизнеса, слушал лекцию о бизнес-моделях. В таблице на доске, значения большинства ячеек вычислялись из значений других ячеек. Меняя исходные параметры, преподаватель каждый раз пересчитывал зависимые: стирал старые значения и вписывал новые.

Иногда он ошибался в расчетах, и тогда ему приходилось нелегко. Опустим детали: во время очередной утомительной паузы, когда преподаватель в очередной раз смиренно устранял ошибку, Дэн Бриклин подумал о том, как все это можно было бы упростить.

Визуальный калькулятор VisiCalc превратил Apple II в ценный инструмент для сотен тысяч офисов, и вызвал рост предложения на рынке программного обеспечения для персональных компьютеров. Пользователи приобрели 700 000 копий VisiCalc. Персональных компьютеров во всем мире, в начале 80-х, было примерно столько же, сколько iPhone сегодня.

Электронные таблицы не были защищены патентом (кажется, в конце 70-х это еще было невозможно), и очень скоро у VisiCalc появились "клоны", более совершенные и удобные: SuperCalc, MS Multiplan, 1-2-3... В 1985 появились электронные таблицы нового поколения (MS Excel для Макинтош), и история VisiCalc на этом закончилась.

10 лет назад, в PC World, один умно выражающийся товарищ написал, что "все уже изобретено". То есть, больше никаких революций, ни в программном обеспечении, ни в "железе", уже не будет. Windows 98, последняя версия VisualStudio, Office 97 - вершина вершин. Как вскоре выяснилось, этот товарищ был совершенно не прав.

iPhone более чем в 700 раз производительнее, чем Apple II. Объем памяти, хоть он и меньше, чем у настольных и портативных компьютеров, вырос за 30 лет в тысячи раз. iPhone умещается в кармане... его запросто можно использовать там, куда не могли добраться даже самые легкие лаптопы. И еще слишком многое в этом мире делается не самым лучшим и удобным образом...

Например... Виртуальная клавиатура iPhone не слишком хорошо подходит для ввода больших объемов текстовой информации. Apple обвиняют в том, что до сих пор нет возможности подключить к iPhone, например, беспроводную клавиатуру...

iPhone "чувствует" свое географическое положение, сенсоры положения постоянно следят за ориентацией устройства в пространстве, и за изменениями в этой ориентации. Данные вовсе необязательно вводить с клавиатуры.

На днях, один умно выражающийся товарищ "приговорил" iPhone к участи игротеки, сомневаясь в его пригодности для чего-то стоящего, отмечая при этом, правда, что некоторые умные программы все-таки в App Store есть.

Знаете, как придумываются "крутые штучки" на Apple? Все до одной придумывает Джобс? Нет! Регулярно проводятся "мозговые штурмы без тормозов". У участников только одлно ограничение: они должны оставаться "в теме". Фиксируются даже самые сумасшедший и идиотские предложения.

Затем они тщательно изучаются, фильтруются, и принятые к реализации идеи прорабатываются в нескольких, обычно 10, вариантах. Наконец, взвесив все "за" и "против", при непосредственном участии вездесущего Джобса, два-три варианта включаются в план и активно разрабатываются. Если всем, от макроуровня (идеи) до ее воплощения в кодах, тестирования, графики и анимации, занимается один человек (вы), вам этот совет поможет.

4. Как нам обустроить Рабкрин?

Пока iPhone SDK существовал только в мечтах сторонних разработчиков, а на Apple программное обеспечение для iPhone разрабатывалось в стандартном Xcode с нестандартными компиляторами и компоновщиками, сотни тысяч любознательных проникли в глубинные тайны устройства iPhone, ставя перед собой благородную цель научиться им управлять...

В результате, по крайней мере, теоретически, писать программы для iPhone можно без какого-либо SDK, на Маке и на компьютере с Windows или Linux... И даже для того, чтобы попробовать свою программу на настоящем iPhone, не требуется ни специального разрешения от Apple, ни всех этих сложностей... Есть способы!

Как и следовало ожидать, едва iPhone OS 2.0 вышла в свет, ее тоже "взломали", и все выше сказанное относится теперь и к новейшему iPhone 3G. Это как паста, которую выдавили из тюбика: обратно ее уже не запихнуть. Все эти нелегальные возможности и штучки стоит иметь в виду. Ими даже стоит пользоваться, когда не видно других способов понять, почему что-то упорно и загадочно не получается.

Но в наши дни это не должно быть основным инструментом создания программ. В конце концов, это не мы, а Apple, пообещала, что iPhone будет самой защищенной платформой в мире. Это их разработка, на которую несколько десятков инженеров потратили несколько лет своей жизни, и оплатили его семейными неурядицами, ссорами, даже разводами. Им удалось создать Нечто, и как минимум, они достойны уважения.

Самопальные инсталлеры - опасный путь. Даже если вы совершенно не намерены никому причинять зло, пользователь, грешащий приобретением софта из странных мест очень рискует. App Store, вроде бы, гарантирует от приобретения троянов и вирусов. Не вводите пользователя в искушение, без веских на то причин!

Я начал с моральных аспектов, которые редко принимаются всерьез - и это самый опасный симптом в общественном сознании.

На самом деле, iPhone SDK на базе Xcode, с великолепным симулятором iPhone на десктопе компьютера - настолько мощный и производительный инструмент, что все остальные, известные до 6 марта 2008 года, безнадежно отстали и устарели.

Фактор времени при разработке программного обеспечения для "горячей" платформы играет очень важную роль. Самые лучшие идеи, как правило, носятся в воздухе, и в гонке побеждает тот, что быстрее выводит на рынок качественное их воплощение. С 6 марта у нас просто нет выбора. Только SDK.

Поэтому, для разработки программного обеспечения для iPhone необходим, хотя бы, один единственный Мак с Интелом внутри. Для кого-то это плохая новость. Но вполне подойдет, хоть и не самым лучшим образом, даже MacBook самого первого 64-битного поколения.

MacBook Pro или iMac последних двух-трех поколений для наших целей почти идеальны. А 8-ядерный Mac Pro с максимально возможной тактовой частотой, огромной оперативной и дисковой памятью и с несколькими большими и хорошими мониторами... просто мечта.

Разрабатывать программное обеспечение для устройства, которое вы никогда не держали в руках, и с которым не знакомы в роли пользователя... даже если его эмулятор также хорош, как эмулятор iPhone в iPhone SDK... Нормально ли это? Ну да, в 19-м веке один астроном открыл планету Плутон не вставая из-за стола. Вычислил.

Ну и где этот Плутон сейчас? В 2007 году, астрономы вычеркнули его из списка ПЛАНЕТ Солнечной системы. Теперь это один из десятков планетоидов в зоне Койпера. То есть, опыт владения iPhone тоже почти обязателен.

Почему в проекте должно быть, по возможности, не менее двух человек?

У того, кто проводит долгие нелегкие часы "под капотом", неизбежно изменяется сознание. Ну не может такой человек (может, но крайне редко: исключения только подтверждают правила) воспринимать свое детище также, как потенциальный пользователь. Разработчик слишком многое знает из того, о чем пользователь ни за что не догадается. Нужен еще один человек, не менее глубоко понимающий цель, вовлеченный в решение задачи, но все еще способный смотреть на результаты "глазами пользователя".

Кроме того, возможность "проговорить" задуманное с кем-то понимающим и заинтересованным в успехе проекта - это просто энергосберегающая технология, позволяющая избежать огромных трудозатрат на направлениях, которые потом будут признаны нецелесообразными. А время дорого.

Второй пилот проекта, скорее даже штурман, который, время от времени, просит первого пилота рассказать о том, что такое вообще делается - нонсенс. Продукт - как концепция разрабатываемого автомобиля. Инженеры и дизайнеры творят его компоненты и узлы, и только "штурман" знает в любой момент "общую картину", ее положение на фоне большого мира, тенденций и достижений конкурентов.

Цены на софт для iPhone в AppStore... странные. Очень редкий продукт стоит больше 10 долларов. Программу, за которую разработчик просит 6 долларов 99 центов, в обзорах называют "дорогой". Потом, правда, приходят к выводу, что она стоит этих денег - но 6.99 и "дорогой" в одной фразе наводят на размышления.

Очень много программ, за которые просят минимально возможные в AppStore 99 центов. Такие программы имеют коммерческий смысл только в условиях массового спроса. Низкая цена способствует массовости. Любые ошибки, даже, вроде бы, самые незначительные, могут поставить на этой массовости крест.

К счастью, критерии хорошей программы (пусть и не все - есть еще такие, как полезность, нужность, понятность применяемых метафор, usability, применимость в ситуациях, для которых программа предназначена и т.п. - тут без воображения разработчиков не обойтись) довольно хорошо исследованы - и это тема для отдельной статьи...

Придумать, кодировать, оптимизировать, вылизывать workflow, непрерывно пробовать и искать изъяны (не со зла, а во избежание) - с этим все ясно. Есть еще два пункта, очень важные и самые трудно достижимые.

Во-первых, язык интерфейса. Оптимальнее всего использовать английский (его понимают везде, если программа интересна, ее купят даже французы), но это должен быть настоящий, корректный и адекватный, английский язык. Нужен "проуфридер", лучше всего носитель языка. Русская локализация не помешает, но сколько русскоязычных пользователей покупает программы в App Store?

Во-вторых, графика и анимация. Те времена, когда программист, в минуту грусти, мог "повышивать" в графическом процессоре или редакторе битмапов, и создать иконку или пиктограммку, вполне отвечавшую духу и эстетике времени, прошли.

Слишком качественно графика и анимация рисуются в интерфейсе современных компьютеров и мобильных платформ. Графика должна быть трехмерной и профессиональной. С этим тоже проблема.

У маленькой команды с ограниченным бюджетом (я не очень верю в возможность разработки серьезного продукта в свободное от основной работы время...) едва ли найдутся средства для содержания профессионального художника...

Решением могла бы стать "федерация", живущая за счет небольших взносов от ее членов и получающая небольшие процентные отчисления от продаж, в случае если поступления от продаж превысят какую-то пороговую сумму... Федерация могла бы (а) нанять художника, (б) организовывать конкурсы среди участников (победа в таком конкурсе - хорошая причина появиться на страницах обзоров), (в) проводить тренинги, переводить литературу, содержать справочно-информационный сайт...

С чего начать разработку под iPhone?
Источник/Source: Олег Свиргстин
(495) 933 6737 | sales@deepapple.com deepapple.com | deepstore.ru | griffintech.ru | macally.biz | xtrememac.ru | wacomstore.ru | ipodcentre.ru
Rambler's Top100 Индекс цитирования