忘却曲線を意識した学習をEvernoteで快適に実施するためのJXAスクリプトを書いた

[エビングハウスの忘却曲線](https://ja.wikipedia.org/wiki/%E5%BF%98%E5%8D%B4%E6%9B%B2%E7%B7%9A)というグラフがあります。
![Ebbinghaus’s_Forgetting_Curve_(Figure_1).jpg](https://qiita-image-store.s3.amazonaws.com/0/47437/4c732da1-eb3f-cea0-fd8b-bed97b41de51.jpeg)
[Ebbinghaus’s Forgetting Curve (Figure 1)](https://commons.wikimedia.org/wiki/File:Ebbinghaus%E2%80%99s_Forgetting_Curve_(Figure_1).jpg) by Educ320 / [CC BY 4.0](http://creativecommons.org/licenses/by/4.0/deed.ja)

これはドイツの心理学者である[エビングハウス](https://ja.wikipedia.org/wiki/%E3%83%98%E3%83%AB%E3%83%9E%E3%83%B3%E3%83%BB%E3%82%A8%E3%83%93%E3%83%B3%E3%82%B0%E3%83%8F%E3%82%A6%E3%82%B9)が、
`ある事柄を記憶した後、時間をおいたらどの程度思い出せるか、についての実験結果を図示したもの。`
です。
[忘却曲線](https://kotobank.jp/word/%E5%BF%98%E5%8D%B4%E6%9B%B2%E7%B7%9A-178857#E3.83.8A.E3.83.93.E3.82.B2.E3.83.BC.E3.83.88.20.E3.83.93.E3.82.B8.E3.83.8D.E3.82.B9.E5.9F.BA.E6.9C.AC.E7.94.A8.E8.AA.9E.E9.9B.86)


そのグラフからは以下のような事が読み取れます。

1. **忘れる速度は一定ではない**
1. **覚えた直後が最も忘れやすい**
1. **2を生き延びた記憶は割りと長持ちする**

そして、その忘却曲線を踏まえて考案された復習タイミングが以下の4回です。

1. **学習した翌日に1回目**
1. **その1週間後に2回目**
1. **2回目の復習から2週間後に3回目**
1. **3回目の復習から1ヶ月後に4回目**

全部で4回の復習を少しづつ間隔をあけながら、2ヶ月かけて行います。
このように繰り返せば[海馬](https://ja.wikipedia.org/wiki/%E6%B5%B7%E9%A6%AC_(%E8%84%B3))は、その情報を必要な記憶だと判断するようです。
逆に、これ以上に復習回数を増やす必要はないみたいです。

私は、これらの内容を <a  href="http://www.amazon.co.jp/gp/product/4890852425/ref=as_li_qf_sp_asin_tl?ie=UTF8&camp=247&creative=1211&creativeASIN=4890852425&linkCode=as2&tag=alexam-22" target="_black" rel="noopener noreferrer">最新脳科学が教える 高校生の勉強法    東進ブックス</a><img src="http://ir-jp.amazon-adsystem.com/e/ir?t=alexam-22&l=as2&o=9&a=4890852425" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> を読むことによって知りました。
<a  href="http://www.amazon.co.jp/gp/product/4890852425/ref=as_li_qf_sp_asin_il?ie=UTF8&camp=247&creative=1211&creativeASIN=4890852425&linkCode=as2&tag=alexam-22" target="_black" rel="noopener noreferrer"><img border="0" src="http://ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=4890852425&Format=_SL250_&ID=AsinImage&MarketPlace=JP&ServiceVersion=20070822&WS=1&tag=alexam-22" ></a><img src="http://ir-jp.amazon-adsystem.com/e/ir?t=alexam-22&l=as2&o=9&a=4890852425" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />
<a  href="http://www.amazon.co.jp/gp/product/4890852425/ref=as_li_qf_sp_asin_tl?ie=UTF8&camp=247&creative=1211&creativeASIN=4890852425&linkCode=as2&tag=alexam-22" target="_black" rel="noopener noreferrer">最新脳科学が教える 高校生の勉強法    東進ブックス</a><img src="http://ir-jp.amazon-adsystem.com/e/ir?t=alexam-22&l=as2&o=9&a=4890852425" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />


今回の投稿では触れないですが <a  href="http://www.amazon.co.jp/gp/product/4890852425/ref=as_li_qf_sp_asin_tl?ie=UTF8&camp=247&creative=1211&creativeASIN=4890852425&linkCode=as2&tag=alexam-22" target="_black" rel="noopener noreferrer">最新脳科学が教える 高校生の勉強法    東進ブックス</a> は他にも

```
・記憶には、どれくらいの睡眠時間が必要か？ 
・勉強の教材はどのように使えばよいか？ 
・記憶力を最大限に高めるためには、どうすればよいか？ 
・暗記がきかない科目は、どうすれば攻略できるか？
```
[Amazon.co.jp：最新脳科学が教える 高校生の勉強法 東進ブックスの 兵卒さんのレビュー
](http://www.amazon.co.jp/review/R34TQMS7IJYOC2/ref=cm_cr_dp_title?ie=UTF8&ASIN=4890852425&channel=detail-glance&nodeID=465392&store=books)
などなど、海馬の研究で博士号を取られた著者による、勉強する上で知っておくべき具体的な方法論が満載で、学生はもちろん、社会人でも、何かしら学習する機会のある人にはオススメできる本だと思います。


## Evernoteで忘却曲線を意識した学習をする
私は普段、覚えておきたい事柄などをEvernoteにpostする習慣があったため、Evernoteのリマインダー機能を使えば、手軽に忘却曲線を意識した記憶が実践できそうと考えました。

Evernoteはリマインダーを登録しておくと指定した日時に通知してくれるので、そのタイミングで復習します。
復習したら次の復習日時をリマインダーに登録し、通知が来たらまた復習します。その繰り返しです。

ただ、実際にやっていると、4回の復習タイミングを、リマインダーとして都度登録するのが段々と面倒になってきた（ex.今日は2回目の復習をしたので次は2週間後で、それはx月x日だっけ？みたいな状況に度々なる）ので、リマインダーを自動登録するための[JXA](https://developer.apple.com/library/mac/releasenotes/InterapplicationCommunication/RN-JavaScriptForAutomation/Articles/Introduction.html)スクリプトを書いてみました。

ちなみにJXAについてですが、JXAとは、JavaScript for Automationの頭文字から来ているように、Mac上でアプリケーションの操作などをJavaScriptで自動化するための技術です。以下の記事が詳しいです。
[知らないうちにMacがシステム標準でJavaScriptで操作できるようになってた (JXA)](http://qiita.com/zakuroishikuro/items/1b02378bf9e940602d87) 

私も以前にJXAを使ったVimプラグインを書いたりもしました。
[ブラウザのVim体験向上施策について](http://qiita.com/shikato/items/2e8af1330e3ac8949279)

## [FCEvernoteReminder](https://github.com/shikato/FCEvernoteReminder)
今回の要件としては「忘却曲線を踏まえた復習タイミングをEvernoteのリマインダーに自動登録する」なので、JXAで以下のような処理を書きました。※1 

* 復習タイミングを示す指定のタグ（fc0〜fc5※2 のいずれか）が付与されたノートを取得
* 取得したノートのリマインダーが完了済かどうかチェック
 * fc0（初回タグ）はリマインダー未登録なのでチェックしない
* 完了済なら次の復習タイミングを示すタグに置き換え + そのタグが示す日時のリマインダーを登録
 * ex. 
  * fc0タグならfc1タグに置き換え + 1日後のリマインダーを登録
  * fc1タグならfc2タグに置き換え + 1週間後のリマインダーを登録

※1 実際にはオンライン/オフラインチェックやEvernoteとのsync処理などもしています。
※2 fcはforgetting curveの略です。


そしてこのJXAスクリプトを、[launchd](https://ja.wikipedia.org/wiki/Launchd)を使って定期的に実行されるようにします。 
こうしておけば、Evernoteに記憶したい事柄をメモする際に`fc0`タグを付与すると、後は自動的に、それぞれ4度の復習タイミングで通知が来るようになります。

以下が今回の成果物です。

[FCEvernoteReminder](https://github.com/shikato/FCEvernoteReminder)

JXAスクリプトとlaunchdの設定ファイル（plistファイル）に加え、それらを簡単にinstallするためのシェルスクリプトなどが含まれているので、是非使ってみてください:octocat: 

```
FCEvernoteReminderはMacでのみ使用できます。
```
## さいごに
何だか`技術的なtips`というよりも`ライフハック`な投稿になってしまったかもですが、効率良く学習できるに越したことはないので、[今回の成果物](https://github.com/shikato/FCEvernoteReminder)を活用して効果的な記憶を実践していければと思っています。