Статья о программе (iOS) для запоминания английских слов методом интервальных повторений, которая учитывает ваш распорядок дня.
На хабрахабре уже несколько раз освещался вопрос о методе интервальных повторений для запоминания информации: habrahabr.ru/post/246459/, habrahabr.ru/post/196448/, habrahabr.ru/post/240451/. Если вкратце, то интервальные повторения — это подход к запоминанию информации, заключающийся в повторении изучаемого материала через определенные, постоянно возрастающие интервалы времени (например, через 5 минут, потом через 25 минут, потом через 2 часа и т.д.).
Как пришла идея создать приложение
Примерно год назад я решил применить эту технику (интервальные повторения) к запоминанию английский слов, т.к. при чтении документации, статей на английском часто ощущаю нехватку словарного запаса. Сперва начал искать полностью готовые решения. Мне нужна была программа для мобильного телефона, т.к. он всегда со мной и я могу повторить слова в любой момент времени. Мой поиск не увенчался успехом. Программы, которые я находил, либо требовали создание базы со словами самостоятельно, либо слишком много стоили (Anki), либо имели на мой взгляд недостаточную функциональность именно в плане реализации повторений.
Не найдя готовой программы, было решено написать собственную, которая будет полностью отвечать моим требованиям:
- Слова для запоминания должны быть в частотном порядке, а не просто в алфавитном или еще каком-то. В первую очередь я хочу изучить наиболее используемые слова, а редко используемые могут и подождать — это вопрос эффективности обучения. (Зачем мне учить слова, которые я вообще могу не встретить?)
- Я не могу повторять слова в произвольный момент времени, поэтому в программе должны быть настройки, которые ограничат программу в ее действиях для заданных временных промежутков. (Согласитесь, неприятно размыкать веки среди ночи на просьбу программы о необходимости повторения слов.)
- Программа должна быть настойчивой: напоминать, что пора повторять слова. Это крайне важно, так как человек может забыть как о необходимости повторений, так и о самой программе.
- Программа должна быть под мобильную платформу, чтобы в нужный момент можно было повторить слова (т.к. телефон всегда под рукой).
И я приступил к написанию заветной программы. Небольшой опыт программирования под iOS уже имелся, так что с выбором целевой платформы колебаний не было. На разработку программы ушло 8 месяцев, в основном по вечерам после работы. И сейчас я, наконец-то, готов поделиться результатами с вами.
Отличительные возможности приложения
Главное отличие моей программы от аналогов — это учет вашего распорядка дня. Вы можете указать программе интервалы времени, когда не можете изучать слова: сон, обед на работе, занятие спортом и т.д. В заданные промежутки времени программа не побеспокоит вас напоминанием о необходимости повторения слов. Более того, на основе ограничений времени будет вычислено время, когда вы сможете учить новые слова. Данную особенность лучше пояснить на следующем примере. Предположим, вы задали ограничение времени для сна: 23:00-06:30 на каждый день недели. Предположим также, что интервалы повторений такие: 30 минут, 2 часа… Вы начинаете учить новое слово в 22:59, время первого повторения наступит в 23:29, второго — в 01:29. В это время вы уже скорее всего заснете, повторение будет считаться просроченным. Для предотвращения подобной ситуации программа ограничивает время для изучения новых слов (повторять слова можно в любой момент времени). Для вышеприведенного примера программа запретит изучать новые слова после 20:30.
В программе на выбор представлены несколько разных методов интервальных повторений: по Пимслеру, по Эббингаузу и др. Я не решусь судить, какой из них наиболее эффективный, но по умолчанию выбрал метод Пимслера, т.к. он использовал интервальные повторения применительно к изучению иностранных языков.
Взаимодействие с программой достаточно простое: вы видите слово, его транскрипцию и перевод. Каждое слово может быть озвучено (я использую встроенный в iOS синтезатор речи, что позволило существенно сократить размер приложения). Когда вы изучаете новое слово, вам доступны два действия: либо вы будете в дальнейшем повторять это слово, либо оно вам уже известно (не будете его повторять).
В случае, когда вы повторяете ранее изученное слово, вы сообщаете программе, помните ли вы его или нет. В соответствии с этой информацией, программа примет решение о времени следующего повторения.
Для автовладельцев предусмотрен специальный режим. Достаточно положить телефон под лобовое стекло автомобиля и включить режим проецирования (HUD): слова будут видны перед вами на лобовом стекле — вы видите как дорогу, так и слова.
Когда подойдет время для повторения слова, программа вас об этом уведомит (создаются локальные уведомления):
Сторонние продукты
Для отслеживания падений приложения я встроил Crashlytics (регистрация на сайте занимает несколько недель, сервис бесплатный). Также этот сервис позволяет организовать beta-тестирование приложения. Реализовано все крайне удобно. Для себя я создал небольшую шпаргалку по добавлению устройства в список для AD HOC распространения:
- Получить udid устройства
- Зайти на developer.apple.com в раздел Certificates, Identifiers & Profiles -> Devices -> All
- Нажать на +
- Ввести Name (любое, главное чтобы было понятно что это за устройство и кому оно принадлежит) и UDID, нажать Continue
- Нажать Register
- Перейти в Provisioning Profiles -> Distribution
- Выбрать profile который используется для распространиения AD HOC -> нажать Edit
- В разделе Devices: поставить чекбокс напротив нового добавленного устройства
- Нажать Generate
- Можно скачать профайл на компьютер (НЕОБЯЗАТЕЛЬНО), нажать Done
- Перейти в Xcode
- Xcode -> Preferences -> Accounts -> Выбрать нужный id -> Двойной щелчек по Name
Помимо Crashlytics с января этого года стал пользоваться сервисом TestFlight для бета-тестирования. Его несомненный плюс в количестве тестеров: 1000 внешних тестировщиков и отсутствие необходимости собирать udid устройств (соответственно, при добавлении нового тестировщика не нужно перекомпилировать приложение). Вот хорошая статья как пользоваться этим сервисом: iOS 8: Beta Testing with TestFlight
Для сбора статистики использовал Flurry (сервис бесплатный). На данный момент меня интересует эффективность каждого метода интервальных повторений, попробую оценить ее по отношению количества нажатий на кнопки ”Помню”, “Не помню“.
Для записи возникающих мыслей по улучшению приложения, текстов справки, TODO списка я использовал сервис Google Docs: с мобильного телефона — чтобы не потерять мысль, на компьютере вечерами — просто удобно.
Иконка
На иконке я хотел показать, что для запоминания слов задействуются “механизмы” памяти — нашел удачную на мой взгяд идею — человеческая голова с шестеренкой вместо
В Xcode-проекте приложения создано три цели: альфа (компилируется сразу на устройство), бета (не компилируется на устройство, приложение собирается через product — > archive и далее распространяется через сервис бета-тестирования Crashlytics) и финальная версия для магазина (во многом повторяет бета-версию, также используется для бета-тестирования через сервис TestFlight). Соответственно на устройстве могут быть установлены сразу все три версии приложения:
Чтобы эти версии можно было легко отличить друг от друга, были созданы маски Alfa и Beta для иконок (делюсь ими с вами).
Баги
Система контроля версий Xcode не воспринимает пути на русском с буквой “й”. Решение: заменить “й” на “и” в названиях папок. После этого файлы успешно добавляются в систему контроля версий.
Вместо вывода
Если у вас есть не просто идея, а решение какой-либо вашей проблемы, и это решение лично для вас удобнее уже созданных — возможно ваш продукт имеет шанс на успех. Надеюсь, что мое приложение окажется для кого-нибудь полезным.
Промо-коды
Промо-коды для приложения «Повторяй и запоминай английский слова со SpacedRepetitionApp»:
964H7HWJJKET
NL3MNNMJR3EJ
KFJPKT3NPFXY
EXJEAWL44XXJ
KTLAEF3363N3
EHPKEERT44FT
WYPKF7EE7PXW
T9JPPXYY4YWR
64T6HXLKFNHR
KMYKP7RNATYP
F4XJLT77PM9E
43T3HAXTN7L3
7KW6FWT3FJTN
PAFKMYM3XL4A
LTPWYNNE64EY
PAPM3PNTM3HW
4ATX4F6ELHA7
EAJFK39XJHTM
3PKJYLHRX7HN
6J977N49PKR6
Автор: Watchman142