書いて覚える暗記アプリ、カキオク
イタリア語の動詞の活用を描いて覚えるアプリを作りたい。 AnkiDroidの手書き版みたいなもの。
リンク
大まかな方針
仕様をなるべく工夫して楽に実装したいので、まず仕様を考える。
データは適当なクラウドストレージにフォルダごとsyncして共有したい。 DBとか使わず素のファイルでいいだろう。 Storage Access Frameworkでフォルダ内に必要なデータをpngとテキストファイルで書いていく。
デッキはフォルダとする。フォルダ名がデッキ名。 暗記対象はidを振り、これはDateのlong値でいいだろう。ぶつからないだろうし。 簡単の為idを1234とする。
まずデータとしては以下の3ファイルとしよう。
- 1234_Q.png
- 1234_A.png
- 1234_D.txt
Qが問題、Aが答え、Dがいつ答えたかとか正解とかを表すデータをなんかテキストファイルで。
アプリとしては画面を上下に二分割して、上半分に問題を出して、その上にペンで書き込む。 そのあと答えを出すと下半分に答えの画像が出る。 基本的にはAnkiDroidと同じ感じだが、 書いて覚える場合、最初のうちは答えを出して見ながら書いたり消して書いたりをしたいので、 答えは出したり隠したりを好きに出来るようにする。
あとはデータの方針が分かれば作れるかな。
データに何を保存するか
基本的には答えた時間は要るだろう。そして次までのインターバルを表すなにかがあればいいか。 正解するとだんだんと次が遠くなって、不正解だと翌日にリセットされて、難しいを選ぶと適当に短くなる感じか。
まあいいや。レベルとしよう。 作った時はレベル0。正解するとレベル1で5分後、次正解するとレベル2で翌日、とかでいいか。 以後は普通だとレベルが1上がり、難しいだと1下がり、簡単だと2上がり、不正解だとレベル1に戻る、でいいか。
レベルとどれだけ開けるかはまぁ適当にヒューリスティックでいいだろう。 で、適当に上限は設けるか。
書いて覚えたい対象は、AnkiDroidとかに比べると問題を作るのもかったるいし、いちいち書くのも時間が掛かるので、 項目数は少ないだろう。そしてある程度覚えたら卒業でいいと思う。ずっとやり続けたい訳じゃないと思うんだよな。 だからそんなに先の事は気にしないで良いと思う。 もういいや、と思ったらやめるだろうし、復習したくなったら勝手に再開するだろうから、あんまり長期のリマインダーを作り込む意義はなかろう。
という事で、データには解いた日付のlong値とレベルのintで十分だろう。カンマ区切りでいいか。
作業ログ
2021-07-02
とりあえずリソースに画像を置いて、それでUI作る所から。
最初はJetpack ComposeでCanvasとかPathとか使って頑張っていたが、どう考えても面倒になっているので、 CanvasはViewで作ってAndroidViewで使う、という方針に変更。
あっさり一発で動く。
今後の方針を考えよう
- File IO回りを書く
- カード登録のUIを書く
- 解答時の遷移を書く
- モデル(いつ次のカード出すか)を書く
どれもそんな大変じゃないが、全部やろうと思うとめんどくさいな。 ちょっとずつ進めよう。
2021-07-03
ざっとカード登録のUIを書いて、手書きしたものをpngで保存するようにした。 色を変えてないのでこれは変えてもいいかなぁ、という気はしているが、 その辺は後回しでも良かろう(所詮pngなのであとから解答を赤に直すのはLayerPaintとかですぐ出来る)。
残りはディレクトリの中からカードデータのリストを作って、 期限が来ているもののリストを作れば、とりあえずドッグフードは出来るか?
2021-07-06
とりあえずドッグフードが出来る所まで来たかな。デバッグの為にたくさん活用を書いた結果、結構覚えてきた。よしよし。
少しやってみた所、AnkiDroidに比べるとカード一枚あたりに覚えるべき事が多いので、もっと反復してやりたくなるな。 次にいつやるかのアルゴリズムはもっと手書きに合わせた方がいいのかもしれん。
点がいまいち描けないな。なんとかしよう>mouseupをlineToにした
2021-07-09
色を変えるようにしてみた。割といい感じ。これでもうドッグフード的には完成でいいなぁ。 残りの作業は何があるか?
- 選んだフォルダを覚える
- フォルダを設定出来るようにする
- 現在見ているカードの編集モードをつける
- 現在見ているカードの削除をつける
- デッキ作成
- デッキの何分の何表示
- カード一覧
この位出来たらリリース出来るな。
編集モードとカード一覧以外はどうという事は無いので、この2つをやったらアイコン頼むかなぁ。
2021-07-13
カードの一覧表示と、そこからEditに飛べるよにして編集出来るようにした。 大枠はこれで完成かなぁ。
少し評価して、悪くない感じなので今回もきみどりさんにアプリアイコンを依頼してみる。 今回は完成までまでもう少しあるが、向こうの描く時間も考えると少しまだ完成まで時間がある段階で頼む方がいいのだよな。 早すぎると途中で自分が挫折する可能性があって難しいが。
2021-07-27
きみどり先生のアイコンがあがってきたので組み込んでGoogle Playに登録。審査待ち中。 反響を見て復習モード的なのは作るかもしれないが、とりあえずはこれで完成という事で。
実際自分で使っている分には割と十分だからなぁ。 たまにシェルスクリプトで進捗状況を戻したりはするが、このローテクさも良いと思うんだよね。
TODO
デッキの何分の何表示現在見ているカードの編集モードをつけるデッキ作成選んだフォルダを覚えるフォルダを設定出来るようにする見た目をいい感じに(アイコンとか)カードリストの高さをデバイスに応じて調整Undo-Redo国際化
優先度低め(アップデートで実装?)
- 現在見ているカードの削除をつける
- 復習モード
2021-07-29
無事公開されたヽ(´ー`)ノ