パッケージデッキ
Ankiパッケージ(.apkgファイル)を使用すると、他のユーザーからデッキ、ノート、ノートタイプ、およびカードをインポートできます。これらは通常、AnkiWebで共有されています。
スケジューリング
Ankiパッケージにはスケジューリング情報も含まれている場合があり、デバイスやプロファイル間でデッキを転送したい場合に便利です。ただし、他の人が共有したデッキをインポートする場合、通常はその人のカード間隔や復習履歴を採用したくないでしょう。
インポートしたカードに予想外に長い間隔がある場合、デッキの作成者が誤ってスケジューリング情報を含めてしまった可能性があります。期日設定機能を使用してインポートしたカードをリセットできます。Anki 23.10以降では、インポートプロセス中にスケジューリング情報を削除することができます。
更新
.apkgファイルをインポートすると、Ankiは以前のインポートによって既にコレクションに含まれているノートを識別します。ファイル内のノートがローカルコピーより新しい場合、デフォルトでファイルの内容に基づいてノートが更新されます。
この更新プロセスは、ノートタイプが変更された場合(例えば、あなたやデッキの作成者がノートタイプにフィールドを追加するなど)には通常は不可能です。この場合でも、ファイルから欠落しているノートをインポートすることはできますが、デッキの作成者が変更を加えた場合、以前にインポートしたノートは更新されません。
Anki 23.10以降
Anki 23.10では、より柔軟なオプションが導入されました。ノートやノートタイプを無条件に更新し、あなたの変更を常に上書きするか、既存のオブジェクトを一切更新しないかを選択できます。
また、あなたとデッキの作成者の両方が同じノートタイプを変更した場合、2つのバージョンをマージすることもできます。これにより、どちらか一方に含まれるすべてのテンプレートとフィールドが保持されますが、完全な同期が必要となり、他の既存のノートが変更されたとマークされる場合があります。
デッキ作成者への注意
マージはAnki 2.1.67で導入されたテンプレートおよびフィールドIDに依存しています。テンプレートやフィールドにIDがない場合(以前のリリースで作成されたため)、Ankiは名前を比較して同等のものを見つけようとします。
フィールドおよびテンプレートIDを持つノートタイプを共有することの利点と、既存のノートタイプにそれらを追加する方法については、このアドオンを参照してください。
Anki 2.1.66以前の回避策
デッキ作成者が変更を加えたことを知っていて、それらにアクセスしたい場合、ノートタイプを元に戻すことは可能ですが、かなり難しいです。以下の手順を実行する必要があります:
- 新しいプロファイルを作成し、そのプロファイルに .apkg ファイルをインポートします。
- ブラウズ画面で更新に失敗したノートの1つを見つけて選択します。
- フィールドとカードボタンを使用してフィールド名とカードテンプレート名を確認し、それらをメモします。
- デバッグコンソールを使用してノートタイプIDを確認します。それは最後の行に表示される番号です。
nt = bcard().note().note_type()
print("notetype", nt["name"], "has id", nt["id"])
- 通常のプロファイルに戻り、同じカードを見つけて選択します。デバッグコンソールで次のコマンドを実行し、上記で取得したIDを
xxx
に置き換えます:
nt = bcard().note().note_type()
print("current:", nt["name"], "has id", nt["id"])
nt = mw.col.models.get(xxx)
print("desired:", nt["name"], "has id", nt["id"])
-
もし2つの異なるノートタイプ名が表示された場合、既存のノートのノートタイプを希望するものに変更するために「ノートタイプの変更」アクションを使用する必要があります。
-
次に、「フィールド」と「カード」ボタンを使用して、フィールド名とテンプレート名がテストプロファイルのものと一致するか確認する必要があります。これらは完全に一致する必要があります。多すぎても少なすぎてもいけませんし、スペルも同一でなければなりません。