Статья о программе (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.
image


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


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


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


Для автовладельцев предусмотрен специальный режим. Достаточно положить телефон под лобовое стекло автомобиля и включить режим проецирования (HUD): слова будут видны перед вами на лобовом стекле — вы видите как дорогу, так и слова.


Когда подойдет время для повторения слова, программа вас об этом уведомит (создаются локальные уведомления):




Сторонние продукты


Для отслеживания падений приложения я встроил Crashlytics (регистрация на сайте занимает несколько недель, сервис бесплатный). Также этот сервис позволяет организовать beta-тестирование приложения. Реализовано все крайне удобно. Для себя я создал небольшую шпаргалку по добавлению устройства в список для AD HOC распространения:
  1. Получить udid устройства
  2. Зайти на developer.apple.com в раздел Certificates, Identifiers & Profiles -> Devices -> All
  3. Нажать на +
  4. Ввести Name (любое, главное чтобы было понятно что это за устройство и кому оно принадлежит) и UDID, нажать Continue
  5. Нажать Register
  6. Перейти в Provisioning Profiles -> Distribution
  7. Выбрать profile который используется для распространиения AD HOC -> нажать Edit
  8. В разделе Devices: поставить чекбокс напротив нового добавленного устройства
  9. Нажать Generate
  10. Можно скачать профайл на компьютер (НЕОБЯЗАТЕЛЬНО), нажать Done
  11. Перейти в Xcode
  12. Xcode -> Preferences -> Accounts -> Выбрать нужный id -> Двойной щелчек по Name


Помимо Crashlytics с января этого года стал пользоваться сервисом TestFlight для бета-тестирования. Его несомненный плюс в количестве тестеров: 1000 внешних тестировщиков и отсутствие необходимости собирать udid устройств (соответственно, при добавлении нового тестировщика не нужно перекомпилировать приложение). Вот хорошая статья как пользоваться этим сервисом: iOS 8: Beta Testing with TestFlight

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

Для записи возникающих мыслей по улучшению приложения, текстов справки, TODO списка я использовал сервис Google Docs: с мобильного телефона — чтобы не потерять мысль, на компьютере вечерами — просто удобно.

Иконка


На иконке я хотел показать, что для запоминания слов задействуются “механизмы” памяти — нашел удачную на мой взгяд идею — человеческая голова с шестеренкой вместо мозга (иконки удобно искать на IconFinder). Фон иконки стандартный для приложений по изучению языков — два флага: английский и русский.

В 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


UPD — 24 апреля 2015
Дополнительные промокоды:
tokn.co/an9hn2gh
tokn.co/wjvd8hs6
tokn.co/jsb5tpct
tokn.co/m2u9zcyc
tokn.co/sq2yf7xa
tokn.co/tmfk3hqj
tokn.co/vr539bu7
tokn.co/g3ea6fwy
tokn.co/zxd8c42k
tokn.co/24mes3zp
tokn.co/hphcgcmv
tokn.co/bza65b99
tokn.co/fgngkh32
tokn.co/y63zq2dw
tokn.co/9fzb238x

Комментарии (19)


  1. PapaBubaDiop
    06.04.2015 05:12

    Скажите, как организовано хранение слов — приложение работает в режиме offline?


    1. Watchman142 Автор
      06.04.2015 05:32

      Да, приложение работает offline, слова хранятся в БД sqlite (использую для работы с БД FMBD)


  1. awoland
    06.04.2015 07:05
    +1

    Благодарю. Забрал LTPWYNNE64EY. После тестирования напишу отзыв.


    1. Watchman142 Автор
      06.04.2015 07:25

      Вам спасибо, буду ждать с нетерпением )


  1. Keroro
    06.04.2015 07:48
    +1

    А другие языки планируются?


    1. Watchman142 Автор
      06.04.2015 08:06

      Да, но составление словаря — процесс длительный: при средней скорости добавления нового слова в 2...3 минуты для английского словаря у меня ушло 3 месяца, чтобы ввести все 4000 слов. Составлению словаря я уделял часа два в день. Следующим языком планирую слелать испанский.


  1. ViGo5190
    06.04.2015 10:37

    все коды уже использованы :( можно ещё один?


    1. Watchman142 Автор
      06.04.2015 11:35

      Да, ближе к вечеру вам отправлю


  1. AlexanderAnisimov
    06.04.2015 11:31

    Использование частотности для ранжирования мне кажется спорным подходом, т.к. некоторые слова могут быть редкими в среднем по больнице, но достаточно полезными в определенной предметной области или сфере деятельности.
    Чего мне не хватает в анки-дройд, так это возможности автоматически выравнивать количество слов в разные дни. Бывает иногда что на некоторые дни приходится совсем мало слов, а в некоторые их относительно много. Хотелось бы размазывать слова по соседним дням там где интервалы составляют недели и месяцы.


    1. Watchman142 Автор
      06.04.2015 12:11

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


  1. buddax2
    06.04.2015 12:22

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

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

    В целом, техника напоминания мне очень нравится и даже работает для меня :)

    на правах рекламы: Troga https://itunes.apple.com/ua/app/troga/id954585070?mt=12


  1. ReanGD
    06.04.2015 13:37
    +1

    Я сам писал небольшое приложение для заучивания слов, но в дальнейшем понял, что работают подобные техники не очень хорошо и имеют несколько проблем:
    — заучивания слов без контекста — работает плохо, уж очень много в английском многозначных слов, синонимов и т.п.
    — заучивание без постоянной практики — приводит к тому, что язык «откатывается» очень быстро, мозг отказывается запоминать информацию, которая ему не нужна. Я сейчас пытаюсь посмотреть в строну мнемотехники, как способу обмануть мозг и заставить запомнить слово навсегда, не знаю поможет ли.
    — что бы лучше запоминать слово, нужно задействовать как можно больше каналов взаимодействия с мозгом — картинки, звук, дать возможность написать слово, тут как я понял только звук.
    — опять же грамматика, которая порой меняет сильно смысл предложения.
    Н-р недавно нашел пример, когда один артикль поменял смысл предложения
    He reads her book (Он читает ЕЁ книгу)
    He reads her a book (Он читает ЕЙ книгу)


    1. buddax2
      06.04.2015 13:48

      вот вот, потому я и сделал не просто карточки со словом, переводом и транскрипцией, но и с примерами использования слова в предложениях.


    1. AlexanderAnisimov
      06.04.2015 14:02

      По первому пункту:
      1. В карточках должны быть не отдельные слова а фразы с новыми словами
      2. Нужно не просто повторять слова по карточкам, но и пытаться самому составлять из них фразы. Допустим мне сегодня нужно повторить 20 карточек. Я повторяю первые три, а потом начинаю пытаться составить из них какое-то осмысленное предложение, фразу. Не всегда это получается, иногда приходится составлять две фразы в каждой из которых будет по два слова (одно слово повторяется в обеих фразах).

      По поводу того что мозг отказывается запоминать ненужную информацию: нужно каждый раз пытаться ранжировать слова по некоторой субъективной ценности. Допустим, опять же повторяем первые три карточки, потом начинаем усиленно соображать, какое из этих слов является наиболее «ценным» (грубо говоря, наиболее часто употребимым для выражения наиболее ценных идей в твоем конкретном жизненном контексте). Лень искать ссылку, но вроде бы есть мнение что подобное ранжирование способствует лучшему запоминанию.

      По третьему пункту: Можно как минимум проговаривать вслух и в деталях представлять как выглядит в письменном виде (как вариант: что бы было написано каким-то заковыристым шрифтом).


      1. ReanGD
        06.04.2015 14:19

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

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


        1. AlexanderAnisimov
          06.04.2015 14:49

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


  1. DnV
    06.04.2015 14:39
    +1

    Я в своё время немного по-другому посмотрел на этот вопрос. Зачем нужны устаревшие «методики повторения» с фиксированными интервалами, если у нас в руках полноценный компьютер? Зачем доверять ученику с его вечным «Знаю! Но не помню...», если можно проверять его знания? Под капотом хитрые формулы оценки изученности слов и динамические расчёты графиков повторений! Варианты перевода и произношение с Гугла. Писал ещё под iOS 5/6, так что имеем старый добрый скевоморфизм в интерфейсе. Найти в App Store можно по названию «Tutor of foreign words».


  1. Stas911
    06.04.2015 23:04
    +1

    Есть приложение Anki — практически стандарт де-факто


  1. aperechnev
    07.04.2015 16:38

    Каким образом эта статья оказалась в профильном блоге? Меня год назад забанили просто за мимолётное упоминание своего приложения в статье. Я чего-то недопонимаю?