
2025/12/15 1:55
Hashcards: A plain-text spaced repetition system
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
Hashcards は、すべてのフラッシュカードデータをプレーンマークダウンファイル(例:
Cards/Math.md や Chemistry.md)として保持する軽量でローカル優先のスペースドリピテーションアプリです。ウェブ UI を起動すると (hashcards drill <path> が localhost:8000 を開く)、レビュー履歴は SQLite データベースに保存されますが、カード自体は Git に対応し続けます。各カードはテキストのハッシュでコンテンツアドレス化されているためです。インターフェイスは作成をスムーズにすることを優先しており、クローズ削除は Mochi の冗長な {{ }} ではなく [ ] を使い、単一行ブロック(例:Q: … A: や C: …)でカードを定義します。
著者は Anki の煩雑な UI、“すべて期限切れを学習” ボタンの欠如、WYSIWYG エディティング、そして不安定なプラグインサポートを批判しています。Mochi は過度に冗長なクローズ構文、ノートタイプ自動化がないこと、および長期的には性能が劣る単純な倍率ベースのスケジューラーという欠点があります。Hashcards はこれらの痛みを解消し、最小限の摩擦、最適なスケジューリングのための高度な FSRS アルゴリズム、および任意のエディタや Unix ユーティリティ(例:
wc、awk)でカードを編集できる機能を提供します。デッキは Git でバージョン管理・ブランチ化・マージが可能で、サードパーティサービスなしにユーザーがデータを完全にコントロールできます。
将来的には CSV ベースのカードインポート、Python で書かれたノートタイプロジック、および Git 主導の共有ワークフロー拡張をロードマップに含めています。これらの機能は協力を容易にし、コンテンツ生成を自動化するとともに、開発者が Hashcards を自身のプロジェクトへ拡張できるようにし、オープンソーススペースドリピテーション エコシステムを形成する可能性があります。
本文
hashcards(ハッシュカード)
hashcards はローカルファーストのスペースドリピテーションアプリで、Anki や Mochi に似た機能を備えています。Anki と同様に、最先端のスケジューリングアルゴリズムである FSRS(現行最強)を使って復習を管理します。
hashcards の特徴は データベースを使用しない ことです。代わりにフラッシュカードコレクションは Markdown ファイルのディレクトリ構造として保存されます。
Cards/ Math.md Chemistry.md Astronomy.md …
各ファイル(=「デッキ」)は次のような形式です。
Q: シナプス小胞の役割は何ですか? A: ニューロトランスミッターをシナプス末端で放出するために貯蔵します。 Q: ニュリートとは何ですか? A: 神経細胞から伸びる突起:軸索または樹状突起のいずれかです。 C: 話し言葉は [ブローカ―] 領域で [生成] されます。 C: 話し言葉は [ベルニッケー] 領域で [理解] されます。
カードは通常のメモと同じように書き、軽量マークアップで基本的な(質問/回答)カードやクローズドリープラッシュを表現します。学習するには:
$ hashcards drill <cards ディレクトリへのパス>
localhost:8000 で Web インターフェースが起動し、カードをレビューできます。性能と履歴は SQLite データベースに保存されます(同じディレクトリ内)。カードは内容アドレス化されており、テキストのハッシュ値で一意に識別されます。
なぜこの設計なのか?
- 好きなエディタで編集 – Markdown ファイルを開くだけ。
- バージョン管理 – Git でコレクションを保存すれば、変更履歴の追跡・GitHub への共有・ブランチ統合が可能です。
- スクリプト対応 –
やwc
のような Unix ユーティリティでカードを検索・更新したり、CSV/JSON などからデッキを生成するカスタムスクリプトを書けます。awk - オープンフォーマット – データベースの不透明なバイナリではなく、人が読めるテキストです。
- フリクションレス作成 – クローズドは
で表現し、追加キー入力不要。[…]
私が求めていたもの
-
高速カード作成
スペースドリピテーションの最大のボトルネックはレビューではなく、知識をカードに変換することです。カード作成が面倒だと数が減り、学習量が制限されます。 -
既存カードの簡単編集
教科書は更新されるものです。定義が変わったら多くのカードを修正しなければならない場面もあります。hashcards ではデッキが Markdown ファイルそのままで、関連カードが隣に並び、場所を移動せずに編集できます。 -
所有権と透明性
フラッシュカードをプレーンテキストの Git ファイルとして保存すれば、完全な制御と共有・公開が可能です。
Anki との比較
- インターフェース – Anki の UI は使いにくい(特にレビュー画面)。
- カード入力 – WYSIWYG エディタはキーボード⇔マウス切替を強いる。キー割り当ては覚えづらい。
- プラグイン – 便利だが、動作が不安定で「ジャンク」になりやすい。
- アルゴリズム – FSRS は Anki でも十分に機能します。
Mochi との比較
- インターフェース – 直感的でショートカット豊富、遅延なし。
- カード入力 – Markdown が便利だが、クローズは
のように冗長。hashcards は{{1::…}}
を使う。[…] - ノートタイプ – Mochi には Anki の強力なノート型システムが無い。hashcards は Python スクリプトで拡張可能です。
- アルゴリズム – 以前は単純乗数式だった Mochi が、最近 FSRS を採用。
デザイン決定
-
Markdown デッキ – ファイル一つにデッキをまとめる。カードは
・Q:
・A:
(クローズ)で始まる。C:
例:Q: カーボンの原子番号は何ですか? A: 6 C: 原子番号は [カーボン] の [6] です。 -
最小マークアップ – カードは行単位で書き、空白行で区切ります。質問・回答カードは
/Q:
、クローズカードはA:
。C: -
コンテンツアドレス化 ID – 各カードのハッシュが一意に識別します。
利点
- どんなエディタでも編集可能で、ファイルブラウザからコレクションを操作できます。
- Unix ユーティリティやカスタムスクリプトでカードを検索・フィルタリング・バッチ更新が可能です。
- Git でバージョン管理し、ブランチやマージ、PR を活用できます。
- GitHub 上にフラッシュカードを公開すれば、他者も閲覧・再利用できます。
- CSV → Markdown などでデッキをプログラム的に生成し、Makefile で統合。
hashcards は洗練された UI と高度なスケジューラー、そしてテキストベースのフリクションレスワークフローを提供し、知識を「手元に残す」ことができます。