Почему ваше портфолио на Swift должно выделяться
Если вы читаете эту статью, значит, уже знаете: один сухой список навыков в резюме больше не работает. Рекрутеры хотят видеть живые проекты на Swift, которые можно запустить, покрутить и понять — способен ли кандидат мыслить как инженер. Но есть нюанс: 90% портфолио выглядят как копия туториала из YouTube. Та же погода, тот же список дел, те же мемы про котиков.
Давайте поступим иначе. Я покажу вам 7 проектов, которые не просто заполнят страницу, а станут вашими козырями на собеседовании. От простого Swift приложения до нейросети на Core ML — каждый проект решает реальную задачу. И да, весь код рабочий.
Что мы будем строить: чек-лист проектов
Прежде чем нырять в код, давайте наметим маршрут. Вот что вы сможете добавить в своё портфолио разработчика iOS:
- Приложение для заметок с iCloud синхронизацией — база, но с изюминкой
- Трекер привычек с виджетами — покажет знание SwiftUI и WidgetKit
- Мини-банкинг с Core Data — демонстрация работы с данными
- Чат-бот на основе нейросети — ваш билет в мир ML
- Приложение для распознавания объектов — ARKit + Vision
- Анализатор текста с NLP — NaturalLanguage фреймворк
- Собственная игра на SpriteKit — чтобы показать креативность
Каждый проект я разберу с примером кода и объяснением, почему он «продаёт» вас как специалиста.
Проект 1: Умные заметки с iCloud
Начнём с классики. Приложение для заметок на Swift — это как «Hello, World!» для iOS-разработчика. Но мы сделаем так, чтобы оно работало на всех устройствах через iCloud. Вот минимальный код с использованием NSUbiquitousKeyValueStore:
import UIKit
class NoteManager {
static let shared = NoteManager()
private let store = NSUbiquitousKeyValueStore.default
func saveNote(_ text: String, forKey key: String) {
store.set(text, forKey: key)
store.synchronize()
}
func loadNote(forKey key: String) -> String? {
return store.string(forKey: key)
}
}
Почему это круто для портфолио на Swift? Вы показываете, что понимаете экосистему Apple: работаете с облаком, синхронизацией и знаете, как сделать приложение «живым» на всех девайсах. Добавьте SwiftUI для интерфейса — и проект готов к демонстрации.
Как улучшить: добавляем Core Data
В реальном проекте вы не будете хранить заметки в UserDefaults. Используйте Core Data для локального кэша и CloudKit для синхронизации. Вот как создать простую модель данных:
import CoreData
@objc(Note)
public class Note: NSManagedObject {
@NSManaged public var id: UUID
@NSManaged public var title: String
@NSManaged public var content: String
@NSManaged public var createdAt: Date
}
Этот код — основа для любого проекта по iOS разработке, где важна работа с данными. Покажите это на собеседовании — и вы сразу перейдёте в категорию «middle».
Проект 2: Трекер привычек с живыми виджетами
Второй проект — это уже не просто «записная книжка». Трекер привычек на SwiftUI с виджетами покажет, что вы умеете работать с современными технологиями. Начнём с модели данных:
struct Habit: Identifiable, Codable {
let id: UUID
var name: String
var isCompleted: Bool
var streak: Int
init(name: String) {
self.id = UUID()
self.name = name
self.isCompleted = false
self.streak = 0
}
}
А теперь добавим виджет. Самый простой способ — использовать WidgetKit:
import WidgetKit
import SwiftUI
struct HabitWidgetEntry: TimelineEntry {
let date: Date
let habits: [Habit]
}
struct HabitWidgetProvider: TimelineProvider {
func getSnapshot(in context: Context, completion: @escaping (HabitWidgetEntry) -> Void) {
let entry = HabitWidgetEntry(date: Date(), habits: HabitDataManager.shared.loadHabits())
completion(entry)
}
// ... другие методы
}
Этот Swift проект показывает, что вы не боитесь выходить за рамки стандартного экрана. Виджет на главном экране — это вишенка на торте для любого портфолио разработчика.
Проект 3: Мини-банкинг с анимациями
Теперь берёмся за серьёзную тему — финансы. Приложение на Swift для учёта расходов с анимациями переходов. Вот как можно сделать красивый график трат за месяц:
import SwiftUI
struct ExpenseChart: View {
var expenses: [Double]
var body: some View {
GeometryReader { geometry in
HStack(alignment: .bottom, spacing: 4) {
ForEach(expenses.indices, id: \.self) { index in
Rectangle()
.fill(Color.blue)
.frame(width: 20, height: CGFloat(expenses[index]) / 1000 * geometry.size.height)
.animation(.easeInOut(duration: 0.5), value: expenses[index])
}
}
}
}
}
Почему это важно? Анимации в SwiftUI — это не просто красивость. Они показывают, что вы понимаете UX и умеете делать интерфейсы, которые приятно использовать. Для проектов для портфолио на Swift это must-have.
Проект 4: Чат-бот с нейросетью
А вот и фаворит. Нейросеть на Swift — звучит страшно, но на деле это просто. Используем Core ML с предобученной моделью GPT-2 (можно скачать из сети). Вот как загрузить и запустить модель:
import CoreML
class ChatBot {
let model: MLModel
init() {
guard let modelURL = Bundle.main.url(forResource: "GPT2", withExtension: "mlmodelc") else {
fatalError("Model not found")
}
model = try! MLModel(contentsOf: modelURL)
}
func generateResponse(prompt: String) -> String {
let input = try! MLMultiArray(shape: [1, 128], dataType: .float32)
// Заполняем массив токенами из prompt
let output = try! model.prediction(from: <#T##MLFeatureProvider#>)
return output.featureValue(for: "text")!.stringValue
}
}
Этот Swift проект — ваш пропуск в мир AI. Даже если модель не идеальна, сам факт работы с Core ML говорит о вас как о разработчике, который следит за трендами. Для портфолио iOS разработчика это золотая жи