読者です 読者をやめる 読者になる 読者になる

reminDO開発日記

脳科学に基づく記憶に残るメモアプリreminDOを開発しています

reminDOに使ったiOS便利ライブラリ24まとめ+参考にしたまとめ集

先日正式公開した、忘却曲線/脳科学に基づいた記憶に残せるメモアプリ「reminDO」を作った際に使ったiOS系のライブラリをまとめてみました。便利につかえるものを、備忘録的にまとめてみました。全てSwiftで動作確認済みでpodでインストール可能です。

UI系

FontAwesome.swift
ピクトグラムアイコンの定番 FontAwesome をSwiftで使えます。
これさえ入れておけば、汎用的で使えるアイコンを大量に使えるので、わざわざ画像をインポートして選択する必要がなくなり開発速度があがります

f:id:remindo:20160705115941p:plain

UILabel, UIImage, UIButton等に利用できるのでアイコン系はコレ一本で対応できます
ベクター形式なので拡大縮小しても劣化せず、Retinaディスプレイ対応ばっちこいです

JTSImageViewController
UIImage(画像)をその場でモーダル化し、拡大表示できます

f:id:remindo:20160705120309p:plain

DZNEmptyDataSet
TableViewのデータが空の際に表示するビュー設定
TableView使うなら必須かもしれませんね

f:id:remindo:20160705120754p:plain


AMScrollingNavbar

画面をスクロールした際にNavbarを隠すFacebookアプリ風の機能を実装。
f:id:remindo:20160705120352g:plain

BBBadgeBarButtonItem
NavbarのBarButtonにバッジを付けます。通知件数等を分かりやすくバッジで表示できます。なんで標準でないのかが疑問。

f:id:remindo:20160705120658p:plain


TTTAttributedLabel
ラベルのテキスト修飾(太字、色変え、タップ時アクション設定)を簡単に。
reminDOでは登録アイテムのタグ部分の実装に活用しています。


RKNotificationHub
あらゆる要素にバッジを付けられる便利ライブラリ。バッジにアニメーション機能を付けてより目立たせることが出来ます。SegmentedControlにバッジをつける部分で使っています。

f:id:remindo:20160705120822g:plain

SGNavigationProgress
NavBarにプログレスバーを表示。学習の進捗表示や、WebViewのロード進捗に使用してます

f:id:remindo:20160705120855p:plain


SCLAlertView
ちょっとカッコいい(?)アラート。通常のアラートよりもちょっと目立たせたい場合に活用してます

f:id:remindo:20160705120926p:plain


RMUniversalAlert
アラートの実装を統一した記法で書けるライブラリ.

JBChartView
学習履歴のグラフ表示に利用。タッチ端末で使いやすく美しいグラフが実装できます
グラフライブラリは様々試しましたが、これが一番だと感じました。

f:id:remindo:20160705121007j:plain



Toast
画面上にAndroid風の通知を出せます。タスク完了時やネットワークエラー時に邪魔にならない程度に表示できて良い感じ

f:id:remindo:20160705121049j:plain

 

SVProgressHUD
ド定番のローディングインジケーター。ネットワークのデータ読込等に使ってます

f:id:remindo:20160705121112g:plain

データベース

Realm / RealmSwift
データベースはRealmで。SwiftベースのアプリなのでRealmSwiftも利用。

フォーム

XLForm
UITableViewベースのフォームを作成できます。
アイテム登録時のフォーム作成に利用しています。サンプルプログラムが充実していて独自にビューをカスタマイズして使うのもかなり簡単なので、オススメです。(FxForms等も検討しました)

f:id:remindo:20160705121410g:plain

ユーティリティ

AAMFeedback
フィードバック用のメール文面作成に使えます。
テキストの送信機能はメールアプリに送ります

Appirater
評価をお願いするお馴染みのダイアログ実装

チュートリアル

EAIntroView
アプリ起動時の初期スライド実装に使ってます

f:id:remindo:20160705121541p:plain


WSCoachMarksView
アプリ初期利用時のチュートリアル実装に使ってます。

f:id:remindo:20160705121610p:plain

解析系

Google/Analytics
アクセス解析。単純なアクセス解析と、Funnel作成に活用しています


Fabric
 / Crashlytics
クラッシュ解析

ネットワーク

Alamofire
もはや説明不要のSwift用ネットワークライブラリ

SwiftyJSON
Alamofireで受け取ったJSON結果のパース

SDWebImage
非同期の画像ダウンロード。定番ですね

参考にしたライブラリまとめサイト x 8

ライブラリ探しの際に参考にしたサイトをまとめてみます。

あのSlackが使っているライブラリがまとまっている。
とにかく量が豊富で参考になるものが多いです




iOSアプリ開発で使えるSwiftライブラリまとめ | システム開発ベンチャー・株式会社Luxy



Swiftライブラリのまとめサイト

 

今度は、WEBバージョンで使ったフロントエンド活用で使えるライブラリやjQueryライブラリなんかも解説してみたいと思います。

忘却曲線を使った記憶に確実に残せるメモアプリ「reminDO」を公開しました!

f:id:remindo:20160526145304p:plain

reminDO(リマインドゥ)というサービスを公開しました。
reminDOはあらゆる情報を忘却曲線と間隔反復を使って記憶に定着化させるためのアプリ+WEBサービスです。
簡単に言うと、記憶に特化したTODOリストのようなものです。

f:id:remindo:20160606114625p:plain

このサービスを作った背景

私自身、日々大量にあふれるニュースやWEB、書籍などの情報に触れていますが、よい情報もただその時に読んで「なるほど」と思うだけで、1週間後、どころか翌日にはほとんど忘れていたりします。

英単語や熟語、知らなかった言葉が出てきても学生さんでなければテストに出るわけでもないし、覚える仕組みもないからそのまんま忘れてしまう。

本を読んでマーカーを引いても見返した試しが殆どなく、ほとんどの情報が折角インプットしたにも関わらず、消えていってしまっています。

時間だけを消費して殆ど人生のプラスになっていない場合がほとんどではないでしょうか。

人間は100の情報を覚えたとしても1ヶ月後には20ぐらいの情報しか思い出すことが出来ず、80個ぐらいは思い出せなくなるそうです。

これはエビングハウス忘却曲線という実験結果でテストされ、勉強法に関する書籍等で紹介されているのでご存知の方も多いかと思いますf:id:remindo:20160606114723p:plain
時間と共に80%の情報が思い出せなくなる、の図(Wikipedia:忘却曲線)

20分後には42%、1時間語には56%、1日後には74%、1週間後には77%、1ヶ月後には79%が失われる


記憶力のいい人、悪い人がいるとはいえ、大体の人は殆どの情報を忘れてしまうように出来ています。

忘れるということは、嫌なことを忘れたりと、脳の必要な機能であると共に、こと学習においては欠陥であると断言できます。

PCを使って頑張って書いたテキストを保存して、1ヶ月後には80%が文字化けして、断片的には思い出せるけど、元の形を留めてないとしたらおかしいと思うんです。

そんな普通に考えておかしな事が、実際に脳内では起きています。

重要なことを忘れない仕組みを作る、
学習にかけた時間に対して知識の保持という形でのリターンを最大化する、
そして忘れてしまった!クソッ脳め、というストレスを無くすためにこのサービスを作りました。

reminDOを使えば、覚えたいことを忘れる事はゼロになります。

忘れる事で損しているシーン

具体的にもったいないなぁ、というシーンを考えてみます

  • 読書をしても、マーカーをひくだけで、読み返した試しがなく、読み返したとしても1,2回、それもタイミングは気分次第。結果的に1ヶ月後にはほとんど忘れている…
  • ライフハック記事を納得したのでブクマ、しただけで読み返す事無く、何もライフハックできてない…
  • 初めてみる英単語が出てきても、覚えてもどうせ忘れるだけだし、ということで覚えることをそもそも諦めてしまう…
  • 尊敬する人が言ってた言葉。その時に感動しても「感動するだけ」で、自分の人生に何か影響をおよぼすことも殆ど無く、意識から消えていく…
  • 勉強会で必死にメモしたけど、あまり見返すこともなく、次の勉強会でも同じことの繰り返し…
  • 「あとで読む」して後で読んだことが殆ど無い…仮に後で読んでも1回だけで忘れてしまう...
  • 10時間かけて勉強しても1ヶ月後には2時間分しか残っていない、10時間読書しても2時間分しか残っていない…

学びの多くが時間と共に失われてしまうのは勿体ないですね。
折角、学習というストレスを感じたり、よい学びに偶然出会ったのであれば、その知識をフルに自分の物にして人生をより良い物にすべきです。

忘れないためには

忘れる事に対するには誰もが思い浮かぶと思いますが、復習をするということです。

ただ復習の回数が多すぎると復習に時間を取られすぎてしまいますし、どれだけをどんなタイミングでやったらいいのか?も分かりません。

復習のタイミングは、間隔反復が有効と言われています。

忘却曲線に対して、忘れる前のタイミングにだけ学習内容を思い出すという反復作業で、海馬という脳の一時記憶領域から、大脳皮質という長期記憶領域に送られ、記憶が強化できる、という方法です。

復習回数は、そろそろ脳が忘れるな、という前だけで、必要最小限の手間に抑えることができます。

この方法は東京大学の教授で脳科学について研究し、海馬など著書もベストセラーで有名な池谷裕二さんもすすめています。

闇雲に復習すればいいというわけではありません。潜在的な記憶の保存期間は1か月と考えられているので、その間に復習することが大切です(海馬は1か月かけて情報を整理整頓していると考えられています)。具体的には、学習した翌日に1回目、その1週間後に2回目、2回目の復習から2週間後に3回目、さらに3回目の復習から1か月後に4回目――このように少しずつ間隔をあけ、2か月かけて復習すればいいでしょう。
こうすれば記憶力は高まる!~脳の仕組みから考える学習法(東京大学・池谷教授)2014/6/6 | WAOサイエンスパーク


ただ、覚えたい事が沢山ある場合は手動で復習時期を効率的にいちいち管理することは困難で時間もかかるので、機械に任せないと絶対に無理で続きません。

reminDOを使えば、とりあえず学習は登録さえしておけば、後は復習タイミングは任せてしまって時間のある時に見返すだけ、という仕組みを生活に取り入れられます。

f:id:remindo:20160606114714p:plain
復習することで殆どの知識を保持できる概念図 (Wikipedia:間隔反復)

具体的にはreminDOに登録すると、1日、3日、1週間、2週間、1ヶ月後、というタイミングでアプリが計算をしてその日復習が必要なものがリストで表示されます。(復習すべきアイテムがある場合のみ通知)

表示されたものをTODOリストを片付ける感じで、Facebookアプリのタイムラインを確認していくような簡単な操作で確認していくだけです。

復習という作業は面倒ですが、適切なタイミングに見直すことで忘れることがなくなります。それをしないと、殆ど忘れてしまうわけです。

面倒な復習の負荷を下げるための工夫

いくら最小限の復習でいい、といっても復習は退屈で面倒なものかもしれません。
そのため、復習自体の面倒さを軽減するための仕組みを考えて実装してあります。

  • 復習にかかる時間(残り~分)を表示してみたり
  • 音声にしてバックグラウンドで読み上げる機能や(聴覚を使い、通勤/通学中にハンズフリーで復習)
  • 日々の学習で特定の日だけ、復習量が多くなり過ぎないよう、自動で復習日時を平均化・調整する機能
  • PC、スマホでいつでも隙間時間に知識の見直しが出来るFacebookのタイムライン風に流し見をして一括して完了させる機能を入れる等

面倒さや心理的な負荷を減らせるように工夫しており、今後も改善を続けていきます!

f:id:remindo:20160606115311p:plain

アプリを使って変わったこと

いろんなことを楽に記憶にとどめておくことが出来るようになります。

英単語や名言、WEB記事のスクラップから、プログラミング、Githubのライブラリなど覚えたいこと全部。

記憶だけでなく、読書等によって得た、人生を変えうるような有用な知識について繰り返し反復をすることで、よい習慣を作って人生をより良いものにできている、と確信できています。

アプリを使うことで、覚えたいことを忘れる、というストレスがなくなり、
「どうせ忘れるし」と覚えようとすることを諦めなくなり、
とりあえずアプリに入れておけば忘れないし覚えたいことはすべて1箇所にある、
というタスク管理におけるGTDのような安心感が得られます。

覚えるまで繰り返し表示してくれる、ということで「忘れた」ということは全て防げます。
脳は忘れる仕組みになっているため、覚えたいことを忘れないためにはアプリ等のサービスによって脳を拡張する必要があるのかなと思っています。

reminDOは、学習を登録するだけで、あとは気にも止めず、単に表示される物を処理していくだけで記憶を保証するフレームワークを提供するアプリです。

このアプリ自体での評価ではありませんが、過去に類似のデスクトップベースの間隔反復のソフトウェアを通して英単語や熟語を学び、TOEICのスコアを倍以上に上げたり、取りたい資格を取るのに役立てたり、という長年の経験もあったりして、間隔反復のメリットを個人的には強く経験として実感しているため、以前よりアプリ等の形でいつでもどこでも学べるサービスとして形にしてみたいという思いが強くありました。

こだわっている点

アプリ(iOS)、WEB(PC,Android)からサクサクアクセスでき、
ツールのUIや、アイテムの登録の簡単さ、速さ、見やすさ、などにもこだわっています。
(使ったWEB/iOSのライブラリはこのブログにて紹介していく予定です)

アプリを開くとすぐに追加できるようにしていたり、iOSの共有機能から簡単にSafariで見ているサイトを登録したり、
WEBベースでの利用の場合はChromeの拡張やブックマークレットからテキストを選択してブックマークするように簡単に追加できるようにしていますし、
英単語や熟語を登録すれば、そのままアプリに発音させたり、辞書サイトに飛ぶことができたり、
手書きのノート等を撮影してそのまま登録して復習できるようにしたり、
読書記録であればAmazonから書籍を検索してサムネイル付きで要点を記録できたり、
Facebookのタイムラインを見ているような感覚で見やすく気軽に復習できるようにしたりと、

今後もどんどん、機能改善・拡張を続けていく予定ですのでお気軽にご要望等お寄せ頂ければと思っています。

その他機能の紹介

  1. SNS機能
    素晴らしい学びや教材、知識をサイト内でシェアし、相互に学ぶことが出来ます。シェアするには投稿時に公開設定にします。誰かが公開した知識を覚えていくことも出来ます。
    こんな感じで知識を公開可能です
    http://remindo.co/user/remindo
  2. サイト運営者様向け、remindoボタン
    TwitterFacebookのシェアボタンのようにサイトに設置することで、自サイトのコンテンツをreminDOに簡単登録でき記憶学習に活かしてもらえるボタンです。要点となるテキストを選択した状態でボタンを一発で気になった部分をブックマーク可能。
    一度reminDOに登録されれば、復習の度に何度もページを見てもらう事ができPVを増やせるので運営者様にも1記事あたりの価値を上げるメリットがあります
    f:id:remindo:20160606115420p:plain

今後の改善点など

  • 人工知能を使った、その人それぞれに合わせた復習タイミングの調整
  • 学習項目毎に一般的にどのぐらいで覚えられたかという事をベースにより復習の回数を減らせるような工夫
  • Androidアプリ。現状、ブラウザベースでも使えるようにしてありますが、アプリも作っていきたいです
  • インポート/エクスポート機能
  • 現在のUI/機能はあくまでも、自分含めた既存ユーザ用に最適化された形になっているので、より多くの人にとって使いやすく、続けられる仕組みに出来るよう改善を続けたいと思います

本気でやってます!

  • 人々が100を学習したにも関わらず見直す事なく復習しないと20しか残っていない、そのことに誰も疑問を持っていない現状、を変えたいと思っています
  • とかく社会人になると復習を自然にやるという習慣がなくなり、情報を消費するだけで、もったいないと考えていてそれを変えたいです
  • 勿論、学生さんの学習にも役立てられると思います。英単語、熟語など覚える事が大量にある場合に有効な方法です
  • 単にサービスを作ってみた、後は放置、という事にするつもりは一切なく、本気で開発と運用を行っていき、最低でも5年は運用を続けます
  • 記憶にちゃんと残せるメモ帳サービス、として他にはない価値を作り、記憶定着化サービスとしてのデファクトスタンダードを狙いたいです

リンク

長々となってしまいましたが、使ってみて頂ける方は以下より是非!

reminDO: 脳科学に基づいた記憶に残るメモ / ブックマークサービス - Twitter/Facebook/Googleでログイン可能。iOSアプリもサイトから辿れます

reminDO: Chrome拡張


アプリについてお問合せ頂ける場合はこちらまで
ご意見ご要望など、絶賛募集中です

使ってる動画

とりあえずインストール面倒だけど、動きだけでも見てみたい場合はiOS、PC版それぞれ以下で

iOS

ブラウザ(PC, Android)