ここ数日、フラッシュカードアプリのAnkiと格闘していました。
「PCで自作問題集を作り、Androidスマホで学習する」ということを実現するためです。
やりたかったことはどうにか実現出来ましたが、なかなか癖のあるアプリで、かなり苦戦しました。
そこで、備忘録と、同じことをやりたい人のために、手順をまとめておきます。
※基本用語はあちこちで説明されており、説明すると長くなるため、改めて解説はしません。
【AndroidのAnki(AnkiDroid)で自作問題集を使用する手順】
(1)PCとスマホのそれぞれに、Ankiアプリをインストールする。
(2)PCで、文字コードがUTF-8形式のcsvファイルを用意する。
(3)PCで、問題ごとの音声ファイルを用意する。(音声を再生する場合のみ。省略可)
(4)PCで、問題ごとの画像ファイルを用意する。(画像を表示する場合のみ。省略可)(※画像検索の結果ではなく、自分で画像を設定したい場合のみ用意。)
(5)PCのAnkiアプリを起動し、ノートタイプの設定を行う。
(6)PCのAnkiアプリに、(2)で用意したcsvファイルを、(5)で設定したノートタイプを適用してインポートする。
(7)PCのAnkiアプリのデータ保管場所の「collection.media」フォルダに、(3)で用意した音声ファイル、(4)で用意した画像ファイルをコピーする。(PCで学習する場合はここまででOK)
(8)PCのAnkiアプリから、(6)、(7)で作成したデッキのデータを、apkg形式で書き出す。
(9)書き出したapkg形式のデータ(デッキデータ)を、スマホに保存する。(本体でもSDカードでもどちらでもOK)
(10)AnkiDroidのメディアデータ保管フォルダに、(4)で用意した画像ファイルをコピーする。(完了)
【詳細な手順】
上記が大まかな流れですが、正直これだけでは意味不明だと思いますので、以下で各手順を詳しく説明します。
(1)PCとスマホのそれぞれに、Ankiアプリをインストールする。
・実際に学習に使用するのがスマホ用アプリだけだとしても、スマホ用のファイルはPCで作成するので、両方へのインストールが必要になります。
(2)PCで、文字コードがUTF-8形式のcsvファイルを用意する。
・PC用のAnkiアプリにインポートするためのcsvファイルを用意します。スマホのアプリにcsvは直接インポート出来ないので、一旦PC用アプリを経由する必要があります。
・csvファイルは、ExcelやGoogleスプレッドシートで作成し、保存するときにUTF-8形式を指定します。
・csvファイルのタイトル(フィールド)行は不要です。一行目に「英語」、「日本語」などとあると、それも問題として読み込まれてしまいます。
・csvファイルのフィールドの並び順は重要です。(Anki側で、一列目のフィールドで重複の判断をするため。また、後述のステップ(6)でノートタイプを適用する際、フィールドの並び順が自作csvで共通していれば、設定をいちいち変える必要がないため。)
※インポート用のcsvの作り方は重要なので、私の例を紹介しつつ、もう少し詳しく説明します。
<フィールドについて>
私は元のcsvを、「①ID ②日本語 ③英語 ④出典 ⑤音声 ⑥画像1 ⑦画像2 ⑧画像3」の8列に分けて作成しています。
①ID:管理をしやすくするために超重要です。これは必ず一意になる(他と被らない)ように作成します。後述しますが、音声や画像の管理をしやすくするため、一つのデッキ内でなく、他のデッキとも被らないようにすることが重要です。
例えば、SVLであれば「svl09_0001」・「svl09_0002」のように、DUOであれば「duo_001」のように、「出典_通し番号」とすると、分かりやすく、被らないので良いかと思います。
②日本語、③英語:問題部分です。自分が覚えたいように入力します。
④出典:「SVL09」、「英単語ピーナツ金」のように入力します。ただ、これはIDで分かれば不要かもしれません。私もcsvに入れてはいますが、カードには表示していません。
⑤音声:Anki上で音声を再生する場合に入力します。音声ファイルの指定方法は独特で、[sound:svl09_0001.mp3]のように、[]でファイル名を囲って入力します。ステップ(3)と前後しますが、この時、IDがファイル名になっていると管理が非常に楽です。
⑥~⑧画像1~3:Anki上で自分で用意した画像を表示する場合に入力します。「svl09_0001_1.jpg」、「svl09_0001_2.jpg」のように、ID+画像番号にすると管理が楽だと思います。 画像を表示しなくても良い、画像検索が出来れば良い、という場合は設定不要です。
※画像フィールドが3つの理由は、「自分が用意する画像は3枚もあれば十分、もっと見たければ画像検索すれば良い。ただ、1枚だけだと追加したくなった時に作り直すのが面倒くさい。」という個人的なものです。
上記を踏まえると、Excelやスプレッドシートへの入力は、フルで入力した場合、
「svl09_0001 , 短縮する , abbreviate , SVL09 , [svl09_0001.mp3] , svl09_0001_1.jpg , svl09_0001_2.jpg , svl09_0001_3.jpg」のように、A~H行に入力することになります。
※csvデータの作成は、何百、何千とデータを入力することになる場合、Excelやスプシを駆使することになると思います。一つ一つ手作業ではとてもやっていられないので… 書き出す時には、必ずUTF-8形式のcsvファイルを指定してください。
(3)PCで、問題ごとの音声ファイルを用意する。(音声を再生する場合のみ。省略可)
・「svl09_0001.mp3」のように、IDと合わせた名前の音声ファイルを用意します。
・これは用意するのが大変な場合もありますが、音声があるのと無いのでは効率がダンチなので、何とか用意しましょう。
・音声ファイルを切り分ける場合は、「Audacity」というフリーソフトが便利です。「解析→音声から自動ラベル付け」、「ファイル→書き出し→複数ファイルの書き出し」で無音部分で分割してくれます。
・元の音声ファイルが複数ある場合は、分割作業前に「mp3DirectCut」というフリーソフトでファイルを結合し、一つのファイルにしておくと、切り分け作業が一回で済みます。「Cut」とありますが、結合も出来ます。
※「mp3DirectCut」でも名前の通り切り分け作業が出来ますが、私の設定の問題かもしれませんが、mp3のタグ形式が上手く変換できず、文字化けを起こしてしまったので、切り分け作業は「Audacity」で行った方が良いかもしれません。
・mp3の切り分けが出来たことが確認出来たら、「Super Tag Editor」などのソフトでリネームを行います。
※私は派生ソフトの「STEP_K」を使用しています。この系統のソフトは、Excel等からの貼り付けが行えるので、ファイル名、トラック名をExcel等で作成し、一括で編集画面上に貼り付けることが出来て簡単です。
・音声がない場合は、合成音声を使用することになります。 「AwesomeTTS」というアドインであったり、MicrosoftのAzureの読み上げサービスを使うと出来るらしいですが、まだ勉強中で良く分かりません。
(4)PCで、問題ごとの画像ファイルを用意する。(画像を表示する場合のみ。省略可)(※画像検索の結果ではなく、自分で画像を設定したい場合のみ用意。)
・Ankiでは、フィールド上に画像を直接ドラッグアンドドロップすれば、表示画像の設定が出来ますが、一つ一つ設定するのはとても面倒そうなので、画像ファイルを別に用意して、読み込んで表示させるやり方をとってみることにしました。
・Anki上では、設定次第で画像検索も自動で行うことが出来るので、環境によっては画像を用意しなくても大丈夫ですが、通信容量を使いたくない場合や、オフラインで使いたい場合は、用意する必要があります。
(5)PCのAnkiアプリを起動し、ノートタイプの設定を行う。
・ノートタイプというのは、Anki側での表示の雛型のようなものです。csvをAnkiにインポートする前に、雛型の設定を行う必要があります。今回の例だと、フィールドが最大8つあるcsvを用意しましたが、雛型に「英語」、「日本語」の二つのフィールドしかなければ、それ以外をインポートすることが出来なくなってしまいます。csvのインポート前に、Anki側でデータの入れ物を用意してやる必要があるということです。
・PCAnkiアプリを起動し、「ツール→ノートタイプを管理」と進みます。
・「追加」をクリックします。
・「OK」ををクリックします。
・自分が分かるように名前を入力します。
・ノートタイプ一覧に追加されたことが確認出来たら、それをクリックし、選択状態にします。
・「フィールド」をクリックします。
・「追加」をクリックし、新しいフィールドを追加します。フィールド名の変更は「名前を変更」から行います。
・私の例ですと、「1:ID 2:日本語 3:英語 4:出典 5:voice 6:img1 7:img2 8:img3」となります。
・入力が完了したら、「保存」をクリックします。 ・これで作成したcsvをインポートするための準備は整いました。
※ノートタイプの管理画面に「カード」というボタンがありますが、これはインポートしたデータを実際にどのように表示するかをHTMLやCSSを使って設定する画面です。表示を変えたい場合は避けて通れない画面ですが、後で設定すれば大丈夫です。現時点では、csvをインポートするための入れ物を準備した状態です。
※他の人が作ったAnkiデッキ(apkgファイル)をインポートすれば、同時にノートタイプも追加されます。したがって、「この人の作ったこの形式を適用したいんだ」というのがあれば、それを先にインポートしておけば楽です。
(6)PCのAnkiアプリに、(2)で用意したcsvファイルを、(5)で設定したノートタイプを適用してインポートする。
・PCのAnkiアプリで、「ファイル→読み込む」と進みます。
・用意したcsvを指定します。
・読み込みオプション画面で、「ノートタイプ」を先ほど作成したものに変更します。
・「デッキ」は、「デフォルト」から変更した方が分かりやすいと思います。デッキの選択画面で「追加」を押すと新しいデッキを作成することができます。
・「フィールドの割り当て」では、csvとAnkiのフィールドが正しく対応していることを確認します。
・問題なければ「読み込む」をクリックし、インポートを行います。
(7)PCのAnkiアプリのデータ保管場所の「collection.media」フォルダに、(3)で用意した音声ファイル、(4)で用意した画像ファイルをコピーする。(PCで学習する場合はここまででOK)
・「collection.media」フォルダは、「C:\Users\ユーザー名\AppData\Roaming\Anki2\ユーザー 1\collection.media」にあります。
・Ankiでは、メディアデータを音声や画像や動画の区別なく、「collection.media」フォルダで一括で管理しています。(「collection.media」フォルダ内でさらにフォルダ分けするのは不可能) そのため、一意のIDを設定し、メディアファイル名もそれに合わせることが管理上重要になります。
※音声ファイルは「Media Import」というアドインを使ってインポートする方法と、上記フォルダを開いて直接保存する方法があります。
※画像ファイルは、Anki上でパスで指定するやり方だと、Anki上で使用していない扱いになり、Ankiの「ツール→メディアをチェック」での削除対象となるため、必ずバックアップを取っておくようにします。
(8)PCのAnkiアプリから、(6)、(7)で作成したデッキのデータを、apkg形式で書き出す。
・PCのAnkiアプリの「ファイル→書き出す」(またはデッキ選択画面のデッキ名の歯車マーク)から、スマホ用アプリで使用可能なデッキの書き出しを行います。
・ファイル形式は「Ankiデッキパッケージ(*.apkg)」を指定、対象は書き出したいデッキを選択します。
・スケジュール情報はどちらでも良いですが、音声がある場合は「メディアファイルを含める」に必ずチェックを入れます。
※「メディアファイルを含める」チェックを入れて書き出されるのは、音声ファイルと、Ankiのカード上に直接貼り付けた画像や動画のみです。今回のやり方だと、apkgに画像は含まれないので注意してください。
(9)書き出したapkg形式のデータ(デッキデータ)を、スマホに保存する。(本体でもSDカードでもどちらでもOK)
・出来上がったデータを、スマホに移します。(Googleドライブなどのオンラインストレージを使うのが簡単。)
・スマホ用のAnkiアプリ(AnkiDroid)を起動します。
・右上の「…」が縦になったマークをタップします。
・「インポート」をタップし、デッキデータをインポートします。
(10)AnkiDroidのメディアデータ保管フォルダに、(4)で用意した画像ファイルをコピーする。(完了)
・今回示した方法だと、apkgに画像データが含まれないので、画像データは別に移してやる必要があります。 私はこれを知らずに、「カードのエラー:読み込み失敗」に悩まされました。
・AnkiDroidのデータフォルダは、スマホの「内部ストレージ > AnkiDroid > collection.media」にあります。
※Ankiのデッキに画像が直接入っているわけではない(画像にリンクしているだけ)ので、「メディアのチェック」を行った際、削除対象のファイルに画像が含まれてしまうので、注意が必要です。
※このやり方で画像を表示させると、画像のリンクを正しく指定しても、Ankidroidで「解答を表示」ボタンを押した際、画像が表示されているにも関わらず、読み込み失敗のエラーが表示されることがあります。これは恐らくAnkidroid側で画像読み込みが間に合っていないために起こるエラーであり、スマホのスペックに依存するため、特に出来ることはないと思います。(20KB程度の画像ファイルでエラーが発生したため、画像の容量を軽くしても改善しない可能性が高いと思われる)(少し時間が経てば(ファイルの読み込みがされれば)、エラーは表示されなくなるので、少し鬱陶しいだけで実害はないと思われる)
以上が、PCで作成した自作問題集をAnkidroidで使用するための手順となります。
【上記手順で作成したakpgファイル】
折角なので、上記手順で作成したakpgファイルを二つ公開します。
一行目だけ入っていて、音声や画像は含まれていません。
一つ目は、機能としては、表面で日本語、裏面で英語を表示します。 設定すれば裏面を表示すると同時に音声の再生、画像の表示も行えます。 また、Google画像検索、iStockでの画像検索ボタンが付いています。 最下部にはIDが表示されます。
二つ目は、一つ目のものとほとんど同じですが、裏面を表示すると同時にGoogle画像検索を表示するようになっています。
ダウンロードは下記リンク先の「20200205_Ankiテンプレ」からお願いします。
【Ankidroidで自動でカードをめくる(解答を表示する)設定】
余談ですが、Android版で便利だと思った機能を紹介。PC版にはない機能のようです。
「設定→カードの学習→解答を自動的に表示」にチェックを入れ、「解答を表示するまでの時間」、「次の質問までの時間」を設定出来ます。
【画像一括登録のやり方】
csvに画像のパスを書いてインポートしても上手く画像が表示されないと思ったら、やり方が悪いだけでした。
元のcsvには、<img src="svl09_0001_1.jpg"> のように記述し、PCのAnkiでcsvをインポートする際に、「フィールドにHTMLを使う」にチェックを入れれば良いだけでした。
これをやればcsvを一括で読み込んでもちゃんと画像が表示されます。チェックを入れ忘れると、画像は表示されず、「<img src="svl09_0001_1.jpg">」のように文字列がそのまま表示されてしまいます。
※コメント投稿者のブログIDはブログ作成者のみに通知されます