
はじめに
皆さん、Ankiは使っていますか? Ankiは、間隔反復学習システム(SRS)を採用した、非常に強力な暗記ツールです。 私も長年Ankiを愛用しており、特に語学学習には欠かせない存在となっています。
今回、私がAnkiで英語の語彙学習をするにあたり、「こんな機能があったら最高なのに…」と思う理想のカードタイプを形にし、 GitHubで公開しました。
この記事では、そのカードタイプ「Super Vocab」の紹介と、開発の経緯、そしてAnki/Emacsユー ザーには嬉しい、 anki-editor
を使ったカード作成方法について解説します。
理想の単語カードに求める機能
私が単語学習用のフラッシュカードに求める機能は、以下の5点です。
- 双方向学習: 単語を見て意味を答えるだけでなく、意味を見て単語を答える、両方向の学習ができること。
- 意味→単語カードでの例文表示:
意味から単語を答えるカードでは、定義だけでなく、例文や用例も表示すること。
- 理由:
- 単語は例文や構文とセットで覚えることで、記憶に定着しやすくなる。
- 同義語の微妙なニュアンスの違いを理解し、区別して覚えられる。
- ただし、例文中のターゲット単語は隠したい (ここがポイント!)
- 理由: 答えが見えてしまうとフラッシュカードの意味がないからカードの意味がないから。
- 理由:
- 単語→意味はシンプルに:
単語から意味を答えるカードでは、単語以外の情報は極力表示しないこと。
- 理由: 例文などがあると、単語の意味を推測できてしまい、フラッシュカード本来の目的(想起訓練)が損なわれるため。
- 簡単に単語を追加でき、経験と結びつけられる:
読書などで出会った単語を、その文脈(例文)ごと簡単にカードに追加できること。
- 理由: 自分の経験と単語を結びつけることで、より深く記憶に刻み込むため。
- 柔軟な情報追加: 発音記号、品詞、関連語、語源、メモ、ヒント画像など、単語に関するあらゆる情報を簡単に追加できること。
既存のカードとの比較、そしてSuper Vocab誕生へ
AnkiWebを探しても、上記の機能を全て満たすカードタイプは見つかりませんでした。 特に、2番目と3番目の要件(文脈付きの意味→単語カードで、ターゲット単語を自動的に隠す)を満たすものは皆無でした。
Ankiの標準機能であるクローズ削除(穴埋め問題)を使えば、この要件に近いものは作れます。 しかし、例文が増えるほど手作業でのクローズ削除は大変です。
「JavaScriptなどを使って、自動的に単語を隠せないか?」
そう考えていた時、English vocab (note type) という素晴らしいカードタイプに出会いました。 このカードタイプは、まさに私が求めていた自動クローズ削除機能を備えていました! しかし、惜しいことに、上記の要件を全て満たしているわけではありません。
そこで、私はこの「English vocab (note type)」をベースに、自分の理想とする機能を全て盛り込んだ、究極の単語カード「Super Vocab」を作ることにしました。
anki-editorとEmacs、立ちはだかる壁、そしてPull Requestへ
私は普段、Ankiのカード作成にanki-editorというEmacs packageを使っています。 org-modeで構造化されたノートをAnkiに簡単に取り込める、非常に便利なツールです。
Super Vocabのカードタイプも、anki-editorを使ってEmacsからAnkiに送信しようとしました。 しかし、ここで問題が発生しました。
通常、anki-editorはorg-modeのノートをHTMLに変換してAnkiに送信します。 しかし、HTMLに変換してしまうと、Super VocabのJavaScriptによる自動クローズ削除機能が動作しなくなってしまうのです。
anki-editorには :ANKI_FORMAT: nil
というオプションがあり、これを使うとHTML変換を無効にできます。
しかし、このオプションは全てのフィールドに適用されてしまい、カードの見た目(HTML/CSSによる装飾)も失われてしまいます。
「特定のフィールドだけ、HTML変換せずに生のテキストとしてAnkiに送りたい…」
しかし、anki-editorにはそのような機能はありませんでした。
そこで、私は思い切ってanki-editorにその機能を追加し、Pull Requestを送り、無事にマージされました。
(追記)
このマージから約1ヶ月後、latestのanki-editorでcardをexportすると、fieldの末尾に不要な改行がされてしまい、自動clozeに支障がきたすようになっていたので、packgage install 時にcommitをpinすることをおすすめします。
;; Doom Emacsの場合
(package! anki-editor
:recipe (:host github :repo "anki-editor/anki-editor")
:pin "ef50e9ce9d7f6be2c053c3fd1ec93022b5e06067")
このバグにも時間があるとき対応できればと思ってます。
まとめ:Super Vocabで最高の単語学習体験を!
Super Vocabは、私が長年Ankiと向き合い、試行錯誤を重ねてきた中で生まれた、(少なくとも現時点では)理想の単語カードです。
- *双方向学習*、*文脈重視*、*シンプルさ*、*簡単追加*、*柔軟な情報追加*、これら全てを実現しています。
- 特に、*自動クローズ削除機能*は、他のカードタイプにはない、Super Vocabの大きな強みです。
- Emacsユーザーであれば、~anki-editor~と連携することで、さらに快適なカード作成が可能です。
ぜひ、GitHubリポジトリからSuper Vocabをダウンロードして、あなたの単語学習を加速させてください!
今後の展望
Super Vocabは、現時点でも十分に実用的ですが、さらに改善していきたいと考えています。
- デザインの改良: より洗練された、目に優しいデザインを目指します。
- 機能追加: 例えば、類義語や反意語を簡単に登録できる機能などを検討しています。
- コミュニティとの連携: ユーザーの皆さんからのフィードバックを積極的に取り入れ、Super Vocabを共に進化させていきたいです。
おわりに
Super Vocabを使ってみた感想や、追加してほしい機能など、ぜひGitHubリポジトリのIssuesやPull Requestで教えてください! 皆さんの声が、Super Vocabをさらに素晴らしいものにするための原動力となります。