Не просто iOS-приложение, а умное — с Core ML внутри
Машинное обучение и искусственный интеллект. Эти слова настолько часто мелькают в новостях и соцсетях, что уже начинают вызывать легкое раздражение — примерно как очередной пост про нейросети в ленте Facebook (который, кстати, тоже был отранжирован с помощью ИИ). Но если вы разработчик iOS-приложений, у вас нет выбора — придется погрузиться в эту тему. И дело не в том, что Apple принуждает нас использовать их инструменты для машинного обучения (хотя, кого я обманываю — конечно, принуждает), а в том, что без этих технологий современные приложения уже сложно представить.

Помните времена, когда для создания «умного» приложения достаточно было написать пару условных операторов? Эти дни безвозвратно ушли. Сегодня пользователи ожидают, что приложение будет не просто выполнять команды, а предугадывать их желания, адаптироваться под их привычки и, возможно, даже писать за них код (привет, GitHub Copilot!). И именно здесь на сцену выходят инструменты машинного обучения и искусственного интеллекта для iOS, о которых мы и поговорим в этой статье.
- Основные концепции машинного обучения и искусственного интеллекта
- Инструменты и фреймворки для работы с МО и ИИ в iOS
- Процесс интеграции моделей МО в iOS-приложения
- Примеры использования МО и ИИ в iOS-приложениях
- Обработка естественного языка
- Персонализация контента
- Преимущества и вызовы использования МО и ИИ в iOS
- Рекомендации для разработчиков
- Оптимизация моделей для мобильных устройств
- Тестирование и отладка
- Рекомендуем посмотреть курсы по обучению iOS разработчиков
- Заключение
Основные концепции машинного обучения и искусственного интеллекта
Прежде чем погружаться в технические дебри iOS-разработки (которые, признаюсь честно, иногда напоминают квест в стиле «найди документацию Apple и попробуй её понять»), давайте разберемся с базовыми понятиями. И нет, я не буду пересказывать википедию — постараюсь объяснить так, как объяснял своей бабушке, когда она спрашивала, чем я занимаюсь.
Машинное обучение — это как ребенок, который учится ходить. Сначала он много падает (и тут мы, разработчики, нервно усмехаемся, вспоминая первые попытки обучения моделей), но постепенно, на основе множества проб и ошибок, начинает понимать, как это работает. Только вместо ходьбы наши «дети» учатся распознавать лица, переводить текст или предсказывать, какой фильм вам понравится следующим.
Искусственный интеллект — это уже более широкое понятие. Представьте себе швейцарский нож, где машинное обучение — один из инструментов. Только этот нож еще и сам решает, какой инструмент достать в каждой конкретной ситуации. В контексте iOS-разработки это означает, что ваше приложение может не просто выполнять заранее запрограммированные действия, а принимать решения на основе анализа данных.
Кстати, об iOS — Apple, как всегда, создала свою экосистему для работы с ИИ и МО (потому что кто бы сомневался). И если вы думаете, что это просто маркетинговый ход — вы частично правы. Но только частично. Neural Engine в современных iPhone — это не просто красивые слова в презентации, а реальное железо, способное обрабатывать сложные модели машинного обучения прямо на устройстве. И да, это действительно впечатляет, даже если вы циничный разработчик со стажем, который повидал всякое.
И если вы до сих пор думаете, что всё это слишком сложно и вам не нужно — позвольте напомнить, что даже простая функция автокоррекции в клавиатуре вашего iPhone использует машинное обучение. Так что добро пожаловать в будущее, которое уже наступило!
Инструменты и фреймворки для работы с МО и ИИ в iOS
Так, настал момент погрузиться в то, чем Apple порадовала (или озадачила — нужное подчеркнуть) нас в плане инструментария для работы с ИИ и МО. Держитесь крепче, будет интересно!
Core ML
Core ML — это как швейцарский армейский нож от Apple для работы с машинным обучением. Только в отличие от реального ножа, его нельзя просто достать из кармана и начать использовать — сначала придется разобраться с документацией (спойлер: она местами настолько загадочна, что расшифровка египетских иероглифов кажется детской забавой).
Фреймворк появился в 2017 году, и с тех пор Apple его холит и лелеет как любимое дитя. Главная фишка Core ML — возможность запускать модели машинного обучения прямо на устройстве. Да-да, никакого облака, никаких задержек, никаких «извините, сервер временно недоступен». И, что особенно приятно для параноиков (или просто ответственных разработчиков), все данные остаются на устройстве.

Скриншот официальной документации Apple по фреймворку Core ML. На изображении виден обзорный раздел, в котором описаны ключевые возможности библиотеки: интеграция моделей машинного обучения, запуск на устройстве и взаимодействие с другими фреймворками.
Create ML
Create ML — это попытка Apple сделать машинное обучение доступным для всех. Получилось… ну, скажем так — интересно. Представьте себе конструктор LEGO для создания моделей машинного обучения. Только вместо разноцветных кубиков у вас Playground в Xcode и набор готовых инструментов.
С помощью Create ML можно обучать модели для классификации изображений, распознавания текста, анализа тональности и много чего еще. И всё это без необходимости писать тонны кода или погружаться в дебри нейронных сетей. Звучит прекрасно, не правда ли? (Хотя опытные разработчики сейчас наверняка скептически усмехаются).
Vision Framework
Vision Framework — это как очки дополненной реальности для вашего приложения. Только вместо показа покемонов в реальном мире, он занимается распознаванием лиц, текста, штрих-кодов и прочих визуальных элементов. И да, он прекрасно интегрируется с Core ML, образуя что-то вроде супергеройского дуэта.
Самое приятное в Vision Framework — это то, как элегантно он абстрагирует всю сложную математику и алгоритмы компьютерного зрения. Вам не нужно быть экспертом в области компьютерного зрения (хотя, если вы им являетесь — примите мои поздравления и соболезнования одновременно).
Natural Language Framework
И наконец, Natural Language Framework — инструмент для работы с текстом, который пытается научить ваше приложение понимать человеческий язык. Что, согласитесь, задача не из легких — я вот до сих пор иногда не понимаю технические задания от менеджеров, а тут машина должна разобраться!
Фреймворк умеет определять язык текста, выделять части речи, анализировать тональность и даже находить именованные сущности. И всё это, опять же, прямо на устройстве. Правда, пока только для ограниченного набора языков (но русский там есть, и это уже победа).
Конечно, это далеко не все инструменты, которые Apple предоставляет для работы с ИИ и МО. Есть еще Speech Framework для распознавания речи, SoundAnalysis для анализа звука и множество других специализированных фреймворков. Но если я начну рассказывать про каждый, мы рискуем застрять здесь до следующего WWDC.
Процесс интеграции моделей МО в iOS-приложения
Настало время поговорить о том, как же впихнуть невпихуемое — то есть интегрировать модели машинного обучения в ваше iOS-приложение. Спойлер: это немного сложнее, чем добавить очередной UIButton на экран.
Подготовка и обучение модели
Первый шаг — это сбор данных и обучение модели. И тут начинается самое интересное (читай: сложное). Представьте, что вы учите ребенка различать кошек и собак. Только вместо милых питомцев у вас тысячи изображений, а вместо ребенка — модель машинного обучения, которая поначалу путает таксу с багетом.
Apple настоятельно рекомендует (читай: настаивает) использовать минимум 10 изображений на категорию. Хотя, между нами говоря, это как сказать, что для счастливой жизни достаточно минимальной зарплаты — технически возможно, но лучше иметь побольше. В реальности вам понадобится несколько сотен или даже тысяч образцов для каждой категории.

Диаграмма, визуализирующая процесс интеграции модели машинного обучения в iOS-приложение: от сбора данных до финальной интеграции в Xcode
Конвертация модели в формат Core ML
После того как ваша модель научилась отличать таксу от багета (надеюсь), нужно конвертировать её в формат, который понимает Core ML. Это как перевод с человеческого языка на «яблочный» — процесс не всегда очевидный, но необходимый.
Для конвертации Apple предоставляет утилиту Core ML Tools. Звучит просто, да? Ха! Подождите, пока не столкнетесь с загадочными ошибками конвертации, которые описаны в документации примерно так же подробно, как инструкция к китайской бытовой технике.
Интеграция модели в проект Xcode
Теперь самое простое (относительно, конечно) — добавление модели в проект Xcode. Просто перетащите файл .mlmodel в навигатор проекта, и… о чудо! Xcode автоматически сгенерирует класс для работы с моделью. Правда, иногда он генерирует такой код, что хочется спросить «а кто это писал?» — но это уже детали.
Реализация функционала в приложении
И вот мы добрались до самого интересного — использования модели в приложении. Тут вам придется познакомиться с Vision Framework (если еще не успели), потому что просто загрузить картинку в модель — это слишком просто, правда?
let modelobj = ImageClassifier() var myrequest: VNCoreMLRequest? myrequest = VNCoreMLRequest(model: fruitmodel) { request, error in // Здесь магия, которая превращает ответ модели в что-то осмысленное // И да, обработка ошибок тоже нужна, хотя в примерах её часто "забывают" }
К этому моменту вы уже, вероятно, успели познакомиться с такими прекрасными вещами, как:
- Асинхронная обработка результатов (потому что никто не любит зависающий интерфейс)
- Обработка ошибок (потому что модели, как и люди, иногда ошибаются)
- Оптимизация производительности (потому что батарейка пользователя не бесконечна)
И помните: все эти операции лучше выполнять не в главном потоке, если, конечно, вы не хотите, чтобы ваше приложение попало в зал славы «Почему оно так тормозит?».
Примеры использования МО и ИИ в iOS-приложениях
Давайте посмотрим на реальные примеры того, как ИИ и МО используются в iOS-приложениях. И нет, я не буду рассказывать про очередной клон ChatGPT — есть куда более интересные кейсы.
Распознавание изображений
Помните времена, когда для определения объекта на фотографии нужно было спрашивать у друзей «что это такое?»? Теперь этим занимаются нейросети, и порой они справляются лучше ваших друзей (только никому не говорите).
// Примерно так это выглядит в коде func analyzeImage(_ image: UIImage) { guard let ciImage = CIImage(image: image) else { print("Упс, что-то пошло не так с изображением") return } // Дальше идет магия Vision Framework let request = VNCoreMLRequest(model: yourModel) { request, error in // И здесь тоже магия } }
Особенно забавно наблюдать, как модель учится различать похожие объекты. Например, когда она путает чихуахуа с черничным маффином — что, кстати, случается чаще, чем вы думаете.
Обработка естественного языка
Здесь мы входим в территорию чат-ботов и систем рекомендаций. Natural Language Framework позволяет анализировать текст почти как человек. «Почти» — это ключевое слово, потому что иногда результаты бывают… скажем так, неожиданными.
let tagger = NLTagger(tagSchemes: [.nameType]) tagger.string = userInput tagger.enumerateTags(in: range, unit: .word, scheme: .nameType) { tag, range in // Здесь происходит магия определения именованных сущностей // И да, она иногда принимает название пиццы за имя человека }
Персонализация контента
А вот это действительно интересная область. Представьте, что ваше приложение — это очень внимательный бариста, который помнит не только ваш любимый кофе, но и то, в какое время дня вы его обычно заказываете.
class ContentRecommender { func predictUserPreference(for user: User) -> [Content] { // Здесь происходит анализ предыдущих действий пользователя // И немного магии машинного обучения // И щепотка "я надеюсь, это сработает" } }
Правда, иногда это приводит к забавным ситуациям. Например, когда вы один раз посмотрели видео про вязание, а приложение решило, что вы теперь заядлый вязальщик и начало рекомендовать только контент про пряжу и спицы.
Все эти примеры объединяет одно: они работают прямо на устройстве пользователя. Нет необходимости отправлять данные на сервер и ждать ответа (что особенно актуально, когда вы в метро и связь появляется раз в три станции).
И да, возможно, эти модели не такие мощные, как их серверные аналоги. Но они работают быстро, не требуют постоянного подключения к интернету и, что особенно важно, сохраняют конфиденциальность данных пользователя. Потому что никто не хочет, чтобы его фотографии котиков анализировались где-то на удаленном сервере, правда?
Преимущества и вызовы использования МО и ИИ в iOS
Давайте поговорим о плюсах и минусах внедрения машинного обучения и искусственного интеллекта в iOS-приложения. И нет, это не будет очередной маркетинговый текст в стиле «всё прекрасно, просто добавьте ИИ».
Преимущества
Начнем с хорошего (потому что плохого будет достаточно). Внедрение МО и ИИ в ваше приложение может дать:
- Персонализацию на стероидах Ваше приложение начинает подстраиваться под пользователя как дворецкий из английского поместья — предугадывает желания, запоминает привычки, и нет, не осуждает за странные предпочтения в музыке в 3 часа ночи.
- Автоматизацию рутины Всю ту работу, которую раньше делали измученные intern’ы, теперь может делать ИИ. И он даже не попросит повышения зарплаты (правда, может внезапно съесть всю оперативную память).
- Работу офлайн Благодаря Core ML всё работает прямо на устройстве. Нет интернета? Не проблема! Ваша модель продолжит классифицировать хот-доги (привет, Silicon Valley) даже в метро между станциями.
Вызовы
А теперь о том, что заставляет разработчиков нервно поправлять очки и тянуться к успокоительному:
- Обучение моделей Помните, как вы учили своего пса командам? Так вот, обучение моделей машинного обучения — это примерно то же самое, только пёс виртуальный, а команды сложнее чем «сидеть» и «лежать». И иногда кажется, что проще научить реального пса программировать, чем добиться нужной точности от модели.
- Производительность Ваши пользователи не оценят, если приложение будет съедать батарею быстрее, чем подросток поглощает пиццу. А современные модели МО умеют это делать, особенно если их неправильно оптимизировать.
- Конфиденциальность данных Apple очень серьезно относится к приватности (настолько, что иногда хочется сказать «ребята, может, чуть полегче?»). И вам придется соответствовать. Никаких «мы случайно отправили все фотки пользователя на наш сервер» — только локальная обработка и строгое соблюдение политики конфиденциальности.
// Пример того, как НЕ надо делать func processAllImagesAtOnce(images: [UIImage]) { // Давайте загрузим все изображения в память одновременно // Что может пойти не так? // Спойлер: всё }

Диаграмма наглядно показывает, как увеличивается потребление CPU и RAM в зависимости от размера модели машинного обучения
И самый главный вызов — это постоянные обновления от Apple. Только вы научились работать с Core ML 2, как вышла версия 3, и всё надо переделывать. А потом 4. И так до бесконечности (или до тех пор, пока Тим Кук не решит, что пора выпускать Neural Engine Pro Max Plus).
Но несмотря на все сложности, игра стоит свеч. Потому что когда всё работает правильно — это действительно впечатляет. И пользователи это ценят (даже если не понимают, как это работает).
Рекомендации для разработчиков
Итак, вы решили добавить немного искусственного интеллекта в свое приложение. Прекрасно! Давайте я поделюсь несколькими советами, которые я получил (и хотел бы получить) перед тем, как впервые столкнулся с МО в iOS.
Выбор подходящих инструментов
Первое правило разработчика iOS: если Apple предоставляет нативное решение — используйте его. Нет, серьезно, даже если вам кажется, что TensorFlow или PyTorch круче (они действительно круче в некоторых аспектах).
// Хороший пример let model = try VNCoreMLModel(for: YourModel().model) // "Креативный" пример // *Здесь могла бы быть реализация собственного движка ML* // (Пожалуйста, не делайте этого)
Почему? Потому что:
- Core ML оптимизирован для iOS
- Он использует Neural Engine
- Apple не даст вам забыть об этом на каждой WWDC
Оптимизация моделей для мобильных устройств
Помните: ваша модель будет работать на устройстве, которое люди используют для звонков, сообщений и просмотра котиков в Instagram. Не заставляйте их выбирать между вашим приложением и всем остальным.
Несколько советов по оптимизации:
- Используйте квантизацию моделей (да, они станут чуть менее точными, зато батарейка скажет спасибо)
- Обрабатывайте данные порциями, а не всё сразу
- Проверяйте температуру устройства (нет, серьезно — перегретый iPhone это не то, что хотят ваши пользователи)
Тестирование и отладка
О, мой любимый раздел! (Это сарказм, если что). Тестирование моделей МО — это особый вид искусства, где вам придется:
- Проверять работу на разных устройствах
if #available(iOS 13.0, *) { // Один код для новых устройств } else { // Другой код для старых // И молитва, чтобы всё работало }
- Учитывать разные сценарии использования
- Что если пользователь запустит обработку 100 фото одновременно?
- Что если модель получит на вход что-то совершенно неожиданное?
- Что если это неожиданное будет селфи пользователя в темноте?
- Логировать всё
func processImage(_ image: UIImage) { os_log("Начинаем обработку изображения %{public}@", image.description) // Потому что когда что-то пойдет не так (а оно пойдет), // вы будете благодарны за эти логи }
И самый главный совет: не усложняйте там, где можно обойтись простым решением. Иногда обычный if-else работает лучше нейронной сети. Правда-правда. Я знаю, что использовать ИИ звучит круче в резюме, но ваши пользователи оценят быстрое и стабильное приложение больше, чем наличие в нем последних технологических трендов.
И самое главное — постоянно учитесь. Технологии машинного обучения в iOS развиваются стремительными темпами, и то, что актуально сегодня, может устареть уже через год. Чтобы оставаться в курсе последних обновлений и осваивать новые инструменты, рассмотрите возможность прохождения специализированных курсов. На странице подборки курсов по iOS-разработке вы найдете актуальные программы обучения, включая курсы с фокусом на Core ML и другие технологии искусственного интеллекта для iOS. Инвестиции в образование сегодня обернутся конкурентным преимуществом на рынке труда завтра — особенно в такой быстроразвивающейся области, как ИИ для мобильных приложений.
Рекомендуем посмотреть курсы по обучению iOS разработчиков
Курс | Школа | Цена | Рассрочка | Длительность | Дата начала | Ссылка на курс |
---|---|---|---|---|---|---|
iOS-разработчик
|
Eduson Academy
58 отзывов
|
Цена
Ещё -14% по промокоду
140 000 ₽
400 000 ₽
|
От
5 833 ₽/мес
0% на 24 месяца
16 666 ₽/мес
|
Длительность
7 месяцев
|
Старт
12 мая
Пн,Ср, 19:00-22:00
|
Ссылка на курс |
iOS-разработчик с нуля
|
Нетология
42 отзыва
|
Цена
с промокодом kursy-online
104 167 ₽
208 334 ₽
|
От
2 893 ₽/мес
Это кредит в банке без %. Но в некоторых курсах стоимость считается от полной цены курса, без скидки. Соответственно возможно все равно будет переплата. Уточняйте этот момент у менеджеров школы.
6 111 ₽/мес
|
Длительность
13 месяцев
|
Старт
19 мая
|
Ссылка на курс |
iOS-разработчик
|
Яндекс Практикум
85 отзывов
|
Цена
202 000 ₽
|
От
15 500 ₽/мес
На 2 года.
|
Длительность
10 месяцев
Можно взять академический отпуск
|
Старт
3 мая
|
Ссылка на курс |
iOS-разработчик
|
GeekBrains
68 отзывов
|
Цена
с промокодом kursy-online15
132 498 ₽
264 996 ₽
|
От
4 275 ₽/мес
|
Длительность
1 месяц
|
Старт
3 мая
|
Ссылка на курс |
Профессия Мобильный разработчик
|
Skillbox
128 отзывов
|
Цена
Ещё -33% по промокоду
175 304 ₽
292 196 ₽
|
От
5 156 ₽/мес
Без переплат на 31 месяц с отсрочкой платежа 6 месяцев.
8 594 ₽/мес
|
Длительность
8 месяцев
|
Старт
29 апреля
|
Ссылка на курс |
Заключение
Ну что ж, наше путешествие в мир машинного обучения и искусственного интеллекта для iOS подходит к концу. Как говорится, мы начали за здравие (с простых концепций), а закончили… тоже вполне неплохо, учитывая сложность темы.
Внедрение МО и ИИ в iOS-приложения — это как строительство космического корабля: сложно, дорого, иногда что-то взрывается, но когда всё работает — это действительно впечатляет. И да, возможно, вам не нужен полноценный звездолет для доставки пиццы (хотя это звучит заманчиво), но даже простые элементы ИИ могут значительно улучшить пользовательский опыт.
Apple создала действительно мощную экосистему для работы с машинным обучением, и она продолжает развиваться. Core ML, Vision Framework, Create ML — это не просто модные словечки для презентаций, а реальные инструменты, которые уже сейчас меняют то, как мы разрабатываем приложения.
И знаете что? Это только начало. Технологии развиваются так быстро, что к тому моменту, как вы дочитаете эту статью, возможно, выйдет новая версия Core ML (и да, придется всё переписывать, но это уже совсем другая история).

Портфолио копирайтера: как сделать инструмент, который продает
Портфолио — это ваш главный маркетинговый инструмент. Узнайте, как собрать кейсы, показать результаты работы и выделиться среди конкурентов.

Интент запроса: как поисковики понимают вашу цель?
Почему один запрос может означать разные вещи? Как поисковые системы определяют намерения пользователей? Разбираем, что такое интент и как он влияет на выдачу.

PHP или C# — что выбрать для веб-разработки?
PHP и C# — популярные решения для веб-разработки, но какой язык больше подходит для вашего проекта? В статье обсуждаются ключевые преимущества, недостатки и случаи использования каждого языка.

Лучшие метрики тестирования для повышения качества продукта
Метрики тестирования — это ключ к пониманию, насколько качественно работают процессы QA. Разберем, как их правильно выбирать и использовать.