コンテンツにスキップ

genanki からの移行

ライブラリを選んでいる段階なら、Anki Forge と genanki の比較を参照してください。

Anki Forge は安定したデータキー、検証済みの不変モデル、データを所有するメディアスナップショット、明示的なビルド・更新操作を使います。新しい作成モデルであり、genanki のオブジェクトや、削除済みの Anki Forge の Deck・lockfile インターフェースを模倣するものではありません。

genanki の概念 Anki Forge での対応
数値 ID を持つ Model NoteType.builder(stable_key)...build()
識別子として使うフィールド名 安定した Field キーと、独立した表示名
フィールドの文字列を保持する Note モデルを所有する model.note().field(key, content)
ノートをまとめる Deck 既定デッキを持つ Project。必要に応じてノート単位の .deck(name)
パッケージのメディアファイルパス データを所有する Media.file(path) の値。型付きコンテンツを通して自動収集
パッケージの書き出し project.build(BuildOptions.to(path))
フィールド由来の既定 GUID、または独自 GUID ルール 明示的で安定した名前空間とノートキー
from ankiforge import Project, NoteType, Field, Template, BuildOptions
model = (NoteType.builder('vocabulary').name('Vocabulary')
.field(Field('word', name='Word', required=True))
.field(Field('meaning', name='Meaning'))
.template(Template('recognition', '{{word}}', '{{FrontSide}}<hr>{{meaning}}'))
.build())
project = Project('vocabulary-course', default_deck='Languages::Vocabulary')
project.add('dictionary:cell', model.note().field('word', 'cell').field('meaning', '细胞'))
project.build(BuildOptions.to('vocabulary.apkg'))

キーには永続的な業務識別子を使います。表示名の変更や定義の本文の変更で、キーを変えないでください。インポーターの明示的な要件として内容に基づく識別情報が必要な場合を除き、現在のフィールド内容をハッシュにしないでください。キーのないソースデータには、SDK の外でキーを割り当てて永続保存します。

テンプレート式は Field キーを使います。表示名は独立して翻訳でき、ライブラリがキー参照を Anki のフィールド名へコンパイルします。宣言の欠落や競合は、ノートを追加する前のモデル完成時に拒否されます。ノート追加時にはモデルの依存関係を自動収集し、1つのモデルキーに競合する定義がある場合は拒否します。

文字列はプレーンテキストです。意図的な HTML は Content.html(...) で包んでください。media.image() / media.sound() と Content.sequence(...) で内容を組み合わせます。元のパスを削除・編集してもファイルのスナップショットは残ります。直接記述した HTML・CSS・スクリプトから参照する依存関係は、モデルビルダーの .asset(media) または project.add_asset(media) で明示的に宣言します。

後続リリースでは、同じ名前空間とデータキーで新しい Project を作成し、BuildOptions.to(next_path).update_from(previous_original_apkg) を呼び出します。オリジナル APKG が完全な識別情報の証拠を提供します。この手順は任意の古いパッケージから識別情報を復元したり、既存の genanki の数値 ID・GUID を自動変換したりするものではありません。別途検証済みのデータ移行で対応関係を確立しない限り、新モデルでの最初の配布物は、識別情報を引き継がない意図的な境界として扱ってください。

クイックスタート、API リファレンス、更新ポリシーを参照してください。

Markdown を表示