Як оптимізувати процес розробки за допомогою AI
Всім привіт! Мене звати Діана Домославська. Вже понад два роки я у сфері розробки, і зараз працюю над створенням та розвитком застосунків у компанії Universe Group, продуктами якої користуються понад 85 млн користувачів у 180 країнах. Я обіймаю позицію iOS-розробниці у бізнесі Guru Apps — екосистемі застосунків для iOS.
У цій статті хочу поділитися з вами своїми думками та досвідом використання інструментів, які допоможуть покращити та полегшити процес розробки.
Про актуальність
Сучасний світ розробки програмного забезпечення стрімко змінюється, і нові інструменти відіграють вирішальну роль у цьому процесі. У контексті швидкого розвитку ринку та високих очікувань користувачів усі розробники працюють з викликом підтримувати високу якість продукту, забезпечуючи при цьому оперативне виведення на ринок нових функцій та оновлень.
Рутинні задачі та повторювані шаблони коду не лише поглинають значну кількість часу, але й ускладнюють підтримку проєктів.
У своїй роботі я часто зіштовхувалася з написанням повторюваного коду, що призводило до значних витрат часу та знижувало ефективність розробки. Такі виклики потребують нових підходів і рішень, щоб оптимізувати процес та зберегти якість. Також використання сучасних інструментів і технологій не лише спрощує роботу, а й дозволяє зосередитися на більш творчих та стратегічних аспектах розробки та персональному розвитку.
Чому варто використовувати інструменти
Звісно, причин для використання допоміжних інструментів може бути безліч. Однак виділю декілька, на мою думку, найголовніших та найвагоміших:
- Швидкість розробки часто є критичним фактором для успіху проєкту, особливо в умовах жорсткої конкуренції. Компанії змагаються за перші місця на ринку, і затримка в релізі може означати втрату потенційних користувачів та прибутку.
- Автоматизація рутинних задач. Використання інструментів для автоматизації — генерації документації, автозаповнення коду та інтеграції з іншими системами, значно підвищує загальну ефективність роботи команди замість витрачання часу на повторювані рутинні задачі.
- Якість коду та його підтримка є важливими аспектами довготривалого успіху мобільного застосунку. Інструменти, які допомагають забезпечувати його документування, є невіддільною частиною сучасного процесу розробки.
- Конкурентоспроможність. Щоб залишатися конкурентоспроможними, розробники повинні використовувати новітні інструменти та технології для підвищення своєї продуктивності. Клієнти очікують швидкого розв’язання проблем, нових функціональних можливостей та стабільної роботи застосунків. Використання сучасних інструментів дозволяє задовольняти ці очікування та підтримувати високий рівень задоволеності користувачів.
П’ять інструментів, які точно будуть корисними
DocC
DocC — це вбудований в Xcode інструмент, який допомагає створювати зрозумілу та структуровану документацію, перетворює коментарі, які ви пишете у своєму коді Swift, у детальний набір документації з можливістю навігації.
Функціонал:
- Автоматична генерація документації з коментарів.
- Візуальна документація з інтерактивними можливостями.
DocC створює візуально привабливу документацію з інтерактивними елементами — прикладами коду, діаграмами.
- Глибока інтеграція з Xcode.
DocC повністю інтегрований з Xcode, що дозволяє розробникам використовувати всі його можливості безпосередньо в середовищі розробки. Це зручно та ефективно.
Важливо підкреслити, що DocC переважно орієнтований на Swift. Проте, існують ситуації, коли вам може знадобитися додаткова гнучкість, і тут на допомогу приходить інший потужний інструмент — Jazzy.
Jazzy
Jazzy — це потужний інструмент для створення високоякісної документації для проєктів Swift і Objective-C, що покращує зручність обслуговування коду та співпрацю.
Функціонал:
- Автоматичне генерування документації.
Jazzy автоматично створює документацію з коментарів у вашому коді, що полегшує підтримку актуальної та вичерпної документації.
- Підтримка Swift та Objective-C.
Цей інструмент підтримує створення документації для проєктів Swift і Objective-C, що робить його універсальним для розробки під Apple. Забезпечує документування всіх частин вашого проєкту, незалежно від використаної мови програмування.
- Легке встановлення і зручний інтерфейс.
Jazzy простий у встановленні та використанні, з вичерпною документацією, яка допоможе швидко розпочати роботу. Створює чистий і простий у навігації інтерфейс для документації, роблячи її доступною та зручною.
До речі, 10 червня на WWDC 2024 Apple анонсували Apple Intelligence. Це платформа штучного інтелекту, розроблена Apple за підтримки OpenAl.
Також було випущено Xcode 16, де інтегровано AI та вже зараз можна скористатись функцією автозаповнення коду в Xcode. Крім того, протягом наступного року буде випущено Swift Assist — інтерактивний чат, який може допомагати з розробкою всередині IDE.
А для тих, хто не квапиться оновлюватись і хоче скористатись перевагами AI всередині Xcode вже зараз — хочу поділитись наступним інструментом.
Copilot для Xcode
Copilot для Xcode — це інструмент для автозавершення коду, який використовує штучний інтелект для пропонування коду на основі контексту. Він може значно прискорити процес написання зменшуючи кількість помилок та підвищуючи продуктивність розробника. Базується на штучному інтелекті та допомагає нам в автоматичному створенні коду й пропозиціях щодо завершення коду.
Функціонал:
- Code Suggestions.
Ця функція надає пропозиції щодо коду в реальному часі під час введення. Вона використовує передові алгоритми штучного інтелекту, щоб передбачити наступний сегмент коду. Який ви, можливо, захочете написати, пропонуючи параметри автозаповнення, що відповідають контексту.
- Інструмент може навчатися з вашої бази коду, пропонуючи з часом більш відповідні підказки.
- Chat (powered by OpenAl ChatGPT).
Ця функція дозволяє взаємодіяти з помічником штучного інтелекту через інтерфейс чату, ставлячи запитання та отримуючи відповіді про проблеми кодування, найкращі практики тощо.
- Prompt to Code (powered by OpenAl ChatGPT).
Вихідний код:
/// Description: Custom error enum for handling errors in the app. enum CustomError: Error { case error(message: String) case networkError(description: String) case parsingError (description: String) case unknownError(description: String) }
Запит: // make extension for CustomError to provide localized description.
Результат:
Ця функція дозволяє розробникам створювати код, надаючи підказки природною мовою, та перетворює їх у виконувані фрагменти коду.
Copilot для Xcode надає потужні функції та значні переваги для підвищення продуктивності та якості коду, але він також має певні обмеження та потенційні недоліки, які слід враховувати.
Warp Terminal
Warp Terminal — сучасний термінал, призначений для підвищення продуктивності розробників внаслідок інноваційних функцій і можливостей.
Функціонал:
- Al Command Suggestion.
Warp Terminal підтримує інтелектуальне автозаповнення команд, що дозволяє розробникам швидко вводити команди без необхідності друкувати їх повністю. Це економить час і зменшує кількість помилок при введенні команд, а також потребу запам’ятовувати їх складний синтаксис.
- Command and Session History.
Термінал автоматично зберігає історію команд та сесій, що дозволяє легко знаходити й повторно виконувати команди, які вже використовувалися. Це зручно для відстеження дій та відновлення попередніх сесій.
- Chat with Warp Al.
Чат допомагає в режимі реального часу знаходити відповіді на будь-які питання, пов’язані з комп’ютерним програмуванням.
- Real-Time Collaboration.
Warp Terminal надає можливість спільної роботи над термінальними сесіями в реальному часі через функціональність workflows та notebooks.
- Забезпечує елегантний, візуально привабливий інтерфейс із вкладками, розділенням та палітрою команд для полегшення навігації й їх виконання.
ChatGPT
ChatGPT — це інструмент на основі штучного інтелекту, який допомагає з написанням коду, автоматизацією рутинних завдань та розв’язанням технічних питань. Може бути корисним для швидкого пошуку інформації, написання документації, генерування кодових прикладів та навіть для розв’язання проблем, які виникають під час розробки.
Функціонал:
- Code Generation & Task Automation.
ChatGPT може генерувати код на основі описів і запитів, що дає змогу швидко отримувати необхідні фрагменти коду для проєктів. Це кономить час та зусилля на написання стандартних функцій і класів.
Приклад 1. Вихідний код:
#import "UIViewController+Alert.h" @implementation UIViewController (Alert) - (void)showAlertWithTitle:(NSString *)title message:(NSString *)message actionBlock:(nullable ActionBlock)actionBlock { UIAlertController *alertController = [UIAlertController alertControllerWithTitle:title message:message preferredStyle:UIAlertControllerStyleAlert]; UIAlertAction *okAction = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction *action) { [alertController dismissViewControllerAnimated:YES completion:nil]; if (actionBlock) { actionBlock(); } }]; [alertController addAction:okAction]; [self presentViewController:alertController animated:YES completion:nil]; } @end
Запит: Rewrite on Swift. Результат:
import UIKit extension UIViewController { func showAlert(title: String, message: String, actionBlock: (() -> Void)? = nil) { let alertController = UIAlertController(title: title, message: message, preferredStyle: .alert) let okAction = UIAlertAction(title: "OK", style: .default) { _ in alertController.dismiss(animated: true, completion: nil) actionBlock?() } alertController.addAction(okAction) self.present(alertController, animated: true, completion: nil) } }
Приклад 2. Запит: В мене є лейбл, потрібно вставити чистину тексту одного кольору і іншу частину — іншого. Використовуй Swift і UIKit. Потрібен лише код, де лише частина роботи з label.text.
Результат:
- Error Debugging.
ChatGPT допомагає знаходити та виправляти помилки в коді, пропонуючи рішення та рекомендації. Це сприяє зниженню кількості помилок та покращенню якості коду.
- Documentation Assistance.
Допомагає у створенні документації, генеруючи описи для функцій, класів та інших елементів коду.
Продовження прикладу 2. Запит: Оформи документацію за шаблоном: // MARK:
В мене є лейбл, потрібно вставити частину тексту одного кольору і іншу частину — іншого. Використовуй Swift і UIKit. Потрібен лише код, де лише частина роботи з label.text
Результат:
import UIKit // MARK: - UILabel Extension for Colorful Text extension UILabel { /// Sets the text of the label with different colors for specified parts. /// - Parameters: /// - fullText: The complete text to be displayed in the label. /// - coloredText: The part of the text that should be colored differently. /// - coloredTextColor: The color for the `coloredText`. /// - defaultTextColor: The color for the rest of the text. func setColoredText(fullText: String, coloredText: String, coloredTextColor: UIColor, defaultTextColor: UIColor) { let attributedString = NSMutableAttributedString(string: fullText) let coloredTextRange = (fullText as NSString).range(of: coloredText) // Set the color for the specified text attributedString.addAttribute(.foregroundColor, value: coloredTextColor, range: coloredTextRange) // Set the color for the rest of the text let defaultTextRange = NSRange(location: 0, length: fullText.count) attributedString.addAttribute(.foregroundColor, value: defaultTextColor, range: defaultTextRange) self.attributedText = attributedString } } // Example usage let label = UILabel() label.setColoredText(fullText: "Hello, World!", coloredText: "Hello", coloredTextColor: .red, defaultTextColor: .blue)
- Technical Consultation.
ChatGPT надає консультації з різних технічних питань. Допомагає вивчати нові технології та підходи, надаючи приклади коду, пояснення та рекомендації. Це сприяє професійному розвитку та підвищенню кваліфікації.
Переваги та недоліки
Пропоную також розглянути переваги та недоліки використання інструментів, оскільки жоден з них не є ідеальним і має свої нюанси. Важливо оцінити всі аспекти, щоб максимально ефективно та безпечно використовувати їхні можливості.
Переваги:
- Підвищення продуктивності шляхом швидкого написання коду з автоматичними пропозиціями й генерацією. Зменшує час, необхідний для розробки.
- Використання ChatGPT i GitHub Copilot може значно прискорити процес написання коду та рутинних завдань, що дасть змогу розробникам швидше створювати та випускати продукт на ринок.
- Пропозиції кращих практик та оптимізовані рішення покращують загальну якість коду, допомагають з пошуком та усуненням помилок завдяки інтерактивному чату.
- Зниження кількості помилок шляхом автоматичного виправлення, а також інтелектуальні підказки, які допомагають уникати типових багів.
- Підтримка навчання та розвитку: інтерактивний чат надає пояснення та приклади для різних концепцій програмування, що допомагає новачкам швидко навчатися та допомагає розробникам освоїти нові технології.
Недоліки:
- Труднощі з точними пропозиціями у великих та складних проєктах з великою кількістю співзалежних компонентів.
- Залежність від інтернету та вартість інструментів. Потребує підключення до інтернету для отримання пропозицій і генерації коду. Використання високоякісних інструментів може бути дорогим, а це обмеження для деяких команд або проєктів.
- Потенційні проблеми з безпекою через використання зовнішніх сервісів для генерації коду. Одні інструменти я використовую в роботі, інші — лише на пет-проєктах.
- Звикання до допомоги та залежність від AI: може вплинути на здатність самостійно розв’язувати проблеми та писати код.
Замість підсумків
Хочу закінчити цей текст прикладами, чому експериментувати корисно.
- Завдяки Copilot for Xcode та ChatGPT я змогла оптимізувати процес рефакторингу коду і тепер можу пишу рутинний код швидше.
- Використання DocC та Jazzy допомагають ефективно і розгорнуто описувати функціонал, що своєю чергою дає змогу заощадити час на створення та підтримки документації.
- Warp Terminal допомагає швидше використовувати найчастіші команди.
Рекомендую впроваджувати інноваційні рішення для оптимізації робочого процесу та зменшення рутини. Не бійтеся нових технологій, адже постійний пошук способів покращення процесів є ключем до успіху. Але не забувайте й про секʼюрність.
Підписуйтеся на Telegram-канал «DOU #tech», щоб не пропустити нові технічні статті
14 коментарів
Додати коментар Підписатись на коментаріВідписатись від коментарів