モバイル端末でPC版Ankiの機能を使う
みんな大好きAnki
(Ankiユーザーには有用であると思いたいが)Ankiのマニアックな記事が続く。 そろそろAnki入門の記事も書きたいし、Ankiをまじめに触って一年なるのでその記事も書きたい。
この記事の趣旨
PC版Ankiにしか無い機能をモバイル端末(iPad 第六世代)で使えるようにした。 Androidタブレットでもいけると思う。
結論
『Chrome リモートデスクトップ』というiOSアプリとGoogle chromeの拡張機能がある。 それらを使い、iPadから自分のノートPCをリモートデスクトップで遠隔操作して、iPadでPC版Ankiの機能を使えるようにした。
iPadでノートPC(Windows10)を操作しているスクショ
なぜしたのか
後述するが、PC版Ankiにしか無い機能がとても便利なのだけど、私は勉強はいつもiPadでしている。 加えて、ノートPCを持ち歩くのが面倒なので事実上デスクトップPCになっている。
なので、図書館で勉強をした後、いつもPC版の機能を使うためだけにPCを起動する。 そしてPC版Ankiにしか無い機能を使用していた。そんなことがあり、常々iPadだけで作業を完結したいなあと思っていた。
そのため、今回少し強引ではあるがiPadでPC版Ankiの機能を使えるようにした。
詳細
AnkiはPC版(Win/Mac/Linux)、iOS版、Android版、Web版がある。
機能の多さ
機能の多さとしては
PC版(Win/Mac/Linux) >>> Android版 > iOS版 = Web版
くらいだと思う。PC版Ankiは拡張性と検索性において圧倒的に高性能である。
デバイスによってできること/できないこと
PC版(Win/Mac/Linux) | Android版 | iOS版 | Web版 | |
---|---|---|---|---|
ブラウザ機能 | ◯ | △ | × | × |
アドオン機能 | ◯ | × | × | × |
AnkiAPI | ◯(Python) | ◯(Java) | × | × |
単語帳の追加/削除 | ◯ | ◯ | ◯ | ◯ |
単語帳の復習 | ◯ | ◯ | ◯ | ◯ |
PC版は圧倒的に機能が多い。 その特色は二点ある。 1つは単語帳のブラウザ機能が豊富な点。 もう1つはアドオン拡張(≒AnkiAPIを使うこと)が出来る点。
以下これらの点について素晴らしいと思う所を述べたい。
ブラウザ機能
PC版(Win/Mac/Linux) | Android版 | iOS版 | Web版 | |
---|---|---|---|---|
ブラウザ機能 | ◯ | △ | × | × |
PCでは登録してあるカードを検索できたり、一括変換ができる(正規表現も使える)。
Androidでも一応は検索機能はあるが、一括変換できない。
iPadとWeb版は検索機能すらない。
これは不便である。
アドオン機能
PC版(Win/Mac/Linux) | Android版 | iOS版 | Web版 | |
---|---|---|---|---|
アドオン機能 | ◯ | × | × | × |
Ankiのアドオン機能こそがPC版とそれ以外における決定的な違いである。
アドオン機能とは、第三者がAnkiの機能を拡張できて、それをAnkiユーザーがダウンロードして使えるというもの。 Ankiアドオンはプログラミング言語Pythonで作る。
このアドオン機能、PC版でしか使えないが、大変完成度が高いものが多い。(アドオンを元に作った単語カードはモバイルでも使える)
ここでは特に有用なアドオンである Image Occlusion Enhancedを紹介したい。
Image Occlusion Enhancedっていうアドオンがすごい
このアドオン、なにがすごいってAnki上で暗記ペンが実現できること。
- 出版社/メーカー: クツワ
- メディア: オフィス用品
- この商品を含むブログを見る
ゼブラ 暗記用 チェックペン アルファ 水性マーカー 緑 WYT20-G 【 3本】
- 出版社/メーカー: ゼブラ
- メディア:
- この商品を含むブログを見る
誰しもが受験生時代に覚えたい箇所にこの緑色のマーカーを引いて赤いシートで覚えたことがあると思う。
これがAnki上でできるのがImage Occlusion Enhanced。
しかも、Anki自体の機能である記憶に適切なタイミングでそのマーカーの部分を問題として出してくれる
例えば、この画像に対して、
以下のように任意の部分を隠して覚えることができる。
大ッ変に素晴らしい。
大ッ変に素晴らしいのだけど、このマーカーを引くのはPC版Ankiでしかできない。
そこでこの機能をiOSで使うために(半ば強引に)実現した。
選択肢を考えた
- ラズベリーパイ3 zero wを使ってその中にankiをインストールして持ち歩いてSSH接続する
- いや欲しいけど、いちいち持ち歩くの...?ってか電源は...?
- Google Cloud Platformなりクラウド上でOSを起動してankiをインストールする
- 選択肢として悪くはないが設定がめんどくさい。
- 自分のノートPCを遠隔操作してiOSでankiを操作する
- 操作性は悪いがリモートデスクトップなので設定が簡単で手がつけやすい。
リモートデスクトップを導入した
ここらへんを参考にした。
「Chromeリモートデスクトップ」を使ってみる:簡単設定でPCからもAndroidからも大丈夫
おおまかな手順は
まずPC側でgoogleにログインした上で
①google chromeで「Chromeリモートデスクトップ」拡張アドオンをインストールする
②タブレットで使えるようにボタンを押して、PINコード(パスワード)を設定する
次にタブレット側で
③ 「Chromeリモートデスクトップ」アプリをダウンロードして、PINコードを入力するだけ。
これで遠隔操作ができるので、タブレット端末でPC版Ankiが使える。
AnkiでMarkdownファイルを読み込む
こんな感じで表示される。
.apkgファイルのインポートの仕方はこちらを参考にしてください。
前提
Anki では以下の拡張子のみ読み込める。マークダウン形式は原則対応していない。(ちなみにPDFも非対応)
上記表は画像、音声、動画などメディアファイルを Anki へ一括登録 - the Right Stuffより引用
今回JavascriptをいじることでWindowsでマークダウン形式のファイルを読み込むことができたのでそのメモを残す。
実行環境
Windows 10
Anki 2.0.51
Qt 4.8.4
PyQt 4.10
(Ankiアドオンの)JS-Boosterインストール済
カード
Marked.js で Markdown をクライアント側でパースして表示する を参考にJavascriptで作成した。
表面のテンプレート
{{Front}} {{Deck}}
書式
.card { font-family: arial; font-size: 20px; text-align: center; color: black; background-color: white; } .markdown { text-align: left; }
裏面のテンプレート
<div class = "markdown" > <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script> <script type="text/javascript" src="https://raw.githubusercontent.com/markedjs/marked/master/lib/marked.js"></script> <script> $(document).ready(function(){ var target = $("#markdown_content"); $.ajax({ url: target[0].attributes["src"].value, }).success(function(data){ target.append(marked(data)); }).error(function(data){ target.append("This content failed to load."); }); }); </script> </div> {{FrontSide}} <br> <hr id=answer> {{Back}} <hr> {{Example}} <hr> {{Tags}}
使い方
AnkiアドオンのJS-Boosterインストールしたうえで、
①.markdownをメディアコレクションのディレクトリに置く
今回sample.markdownというファイルを使う。中身はシンプルで以下のようになっている。ダウンロードはこちらから
# markdowntest - hoge - fuga
マークダウンファイルを
WindowsならC:\Users\userxxx\AppData\Roaming\Anki2\userxxx\collection.media
に置く。このディレクトリはAnkiで表示するメディアファイルを一括で置く場所。
登録するメディアファイルをメディアフォルダ (collection.media) に保存します。 既定のメディアフォルダは、 (書類, ドキュメントフォルダ)/Anki/(プロファイル名: ユーザー 1)/collection.media になります。サブディレクトリは使用できません。
画像、音声、動画などメディアファイルを Anki へ一括登録 - the Right Stuffより引用
②単語カードを追加する
下記のスクリーンショットの左上のように種類をmarkdownにする
適当に問題文と答えを書いて、そのうえでBackにカーソル位置合わせて、Ctrl+Shift+XでHTMLを編集する。 その際に先ほど追加したsample.markdownを以下のようなタグで指定する。
<div class ="markdown" id = "markdown_content" src= "sample.markdown"></div>
カードを追加しているときは何も表示されないが、とりあえず「閉じる」>「追加」を押す。
③ankiで学習する
markdown形式で表示される。
メリット
マークダウンファイルでメモしたことをもとに解説を作成できる。 ファイルなので、どの単語カードからも呼び出すことが可能だし、内容の修正などをしても一括で書き換えができるのがメリット。
問題点
AnkidroidやiOS版Ankiでは非対応。MacOSでは未確認。
原因としてはアドオンのJS Boosterがないと起動せず、アドオンはAnkidroidやiOS版Ankiではほぼ非対応だからだと思われる。 jQueryを使わずに普通のJavaScriptベースでマークダウンを表示ができるなら、AnkidroidやiOS版Ankiにも対応できると思う。要改善。
追記
iOS版Ankiに対応できた。
RedditのAnki iOS Use javascript as in Anki Desktopを見ていたら
Try pasting the JavaScript from the library directly into a script section of your card template.
訳:ファイルを読み込めていないから直接ソースコードをテンプレートに打ち込んだらiOSでもいけるで
ということでiOS対応できた。
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script> <script type="text/javascript" src="https://raw.githubusercontent.com/markedjs/marked/master/lib/marked.js"></script>
の部分を直接ソースコードに変えたらいけた。でもAnkidroidではできなかった。なんでだろう。
文系卒だけど独学でCGエンジニア検定エキスパートとCGクリエイター検定エキスパートにダブル合格した話
2018/7/8(日)にCG-ARTS協会主催のCGエンジニア検定エキスパートとCGクリエイター検定エキスパートをダブル受験した。
2018/8/3追記
CGエンジニア検定エキスパート CGクリエイター検定エキスパート 両方とも合格しました。
CGクリエイター検定の概要
https://www.cgarts.or.jp/kent,ei/about/creator/index.htmlwww.cgarts.or.jpより
CGエンジニア検定の概要
なぜこの記事を書くのか
コンピュータグラフィックスを勉強したかったことと、文系かつ独学でCGエンジニア検定エキスパート(とCGクリエイター検定エキスパート)を受けたという記事がネットになかったから記事にした。
あったのは理系の人の記事だけで、中には10時間でCGエンジニア検定と画像処理エンジニア検定に受かったという人もいた。(両方ともエキスパート)
記事を伺う限り、頭脳明晰で大変優秀なお方で、むしろ凡人にとっては外れ値として扱うべきなのではないかとすら思う受験の記録であった。
残念ながら物覚えが悪い文系出の私にはあまり参考にならなかった。
そんな経緯があり、 「高校数学1Aまでしか履修していない文系卒が独学でCGエンジニア検定エキスパート(とCGクリエイター検定エキスパート)を受けてみたらどうなるのか?」、そう思い受験をし、両方とも自己採点で合格点が取れているようなので記事にした。
以下、 CGエンジニア検定エキスパートをCGE
CGクリエイター検定エキスパートをCGC と呼ぶことにする。
総勉強時間
2018年のGWくらいから一日大体約3hやっていた。直前期は諸々あり体調を崩したので1週間ほぼほぼできなかった。 なので、準備期間が2か月間、勉強時間が60日*3h=180hくらい。
内訳
- CGE 150h
- 新規 96h
- 復習 34h
- CGEに必要な数学 20h
- CGC 30h
- 新規 19h
- 復習 11h
資格が欲しいというよりはCGの知識やロジックをしっかり理解して覚えたいという感じだったので、CGEの勉強量は多いのではないのかな。
CGC:CGE=1:5の割合で勉強したのに、悲しいことに点数はCGC>CGEだった。
復習でankiというアプリを使っているが、その復習の統計データがあるから載せておく。
メインで使った教材
CGE/CGCの公式のテキストと問題集。
CGクリエイター検定エキスパート・ベーシック公式問題集 [改訂第二版]
- 出版社/メーカー: 公益財団法人画像情報教育振興協会(CG-ARTS協会)
- 発売日: 2016/03/29
- メディア: Kindle版
- この商品を含むブログを見る
CGエンジニア検定エキスパート・ベーシック公式問題集 [改訂第三版]
- 作者: 画像情報教育振興協会(CG-ARTS)
- 出版社/メーカー: 公益財団法人画像情報教育振興協会(CG-ARTS協会)
- 発売日: 2018/04/18
- メディア: Kindle版
- この商品を含むブログを見る
ディジタル映像表現 -CGによるアニメーション制作- [改訂新版]
- 出版社/メーカー: 公益財団法人画像情報教育振興協会(CG-ARTS協会)
- 発売日: 2015/08/10
- メディア: Kindle版
- この商品を含むブログを見る
- 出版社/メーカー: 公益財団法人画像情報教育振興協会(CG-ARTS協会)
- 発売日: 2015/08/10
- メディア: Kindle版
- この商品を含むブログを見る
数学の復習で使ったサブ教材
前提として私は高校が普通科ではなかったので、履修したのは数学1Aまで。数学2B以上は未履修。大学も私大文系であることに留意していただきたい。
必要になった数学の知識は
内、①~⑤を復習した。ベクトルはやっていない。あとΣも出てくるけど、Σは知っていた。
①~⑥はがっつりやったわけではないが「何をしているのか」だけをざっくり押さえた。
各知識の概念を抑えるために下記参考書を使った。
①行列の基礎(未履修)
- 作者: 北垣絵美,鍵本聡
- 出版社/メーカー: 講談社
- 発売日: 2013/07/19
- メディア: 新書
- この商品を含むブログ (2件) を見る
この本の二章までの「行列の掛け算の求め方」まで理解できれば試験対策上は問題ないように思える。
「行列の掛け算は左の行列のヨコの要素とそれに対応する右の行列のタテの要素を順番に掛けて足すだけかあ」とだけわかればいい。
②三角比 ⑥ネイピア数(未履修)
- 作者: 馬場敬之
- 出版社/メーカー: マセマ
- 発売日: 2017/09/01
- メディア: 単行本
- この商品を含むブログを見る
単位円の代表角がなぜそうなるのかとかラジアンらへんを抑えればよい。
ちなみにこれと上記の行列の知識だけ理解し、教科書を読んだら、三次元同次座標におけるアフィン変換の問題は満点だった。
ネイピア数は exp1 = 2.718282...
円周率みたいなもので、かつ、n乗によって値が変わるんだなとだけ把握。 メタボールの公式で使う。
③確率
確率はネットの適当な記事でなんとかした。 パラメトリック曲線の一つであるベジェ曲線のバーンスタイン基底関数にnCrが使われる。
④微分(未履修)
マンガでわかる微分積分 微積ってなにをしているの?どうして教科書はわかりにくいの? (サイエンス・アイ新書)
- 作者: 石山たいら,大上丈彦,メダカカレッジ,森皆ねじ子
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2007/12/15
- メディア: 新書
- 購入: 29人 クリック: 139回
- この商品を含むブログ (17件) を見る
積分は「面積を求める」、微分は「曲線のある点における傾きを求める」みたいな感じでざっくり理解できれば問題ない。
⑤偏微分(未履修)
参考書ではなく、ネットの記事だが、参考になった。 偏微分っていうと大学数学の範囲だし仰々しいイメージがあったのでビビっていたが、ちょっと考えたらそんなに難しいことではなかった。
「xyzの三次元上の空間に何らかの曲面があり、その曲面上のある点の傾きは、xyzのいろんな方向から取ることができる。つまり、どの座標の方向からその傾きを見るかで、傾きが決まる」とざっくりと理解した。
普通の微分は「一つの方向からしかその点と曲線の傾きは見れない」のに対して、「xyzのどの座標の方向からその点と曲面の傾きを見るのか」っていう要素が加わったのが偏微分だと。
偏微分はパラメトリック曲線の法平面、主曲率、平均曲率、ガウス曲率らへんで使う。 本試験でも法平面、主曲率、平均曲率、ガウス曲率の問題が出たが、正解できていたようなので、偏微分もざっくりイメージを理解するだけでいい。
⑦ベクトル(未履修)
ベクトルも必要なんだろうけど何も数学の復習はやっていない。 シェーディングの理解が進むんだろうがあまり乗り気がしなかった。
具体的な勉強の進め方
問題集のベーシックの問題をとりあえず解いてみる
分からないなら答えとテキストの該当箇所をざっくり見る
数学の知識が必要なら上記のようにざっくり捉える
なんとなく理解したらベーシックの同じ単元の問題をすべて解く
理解したことを書き留めておいてankiに登録して復習する
大体ベーシックの問題を終えたらエキスパートの問題も上記やり方でこなしていく
直前期にやったことは
- mindmeisterを使って知識を体系的にまとめた
- ankiで苦手なところをひたすら復習した
- 問題集の苦手なところに付箋を貼っておき、ひたすら復習した
- テキストの流し読みをした
その他
ダブル受験するのであれば、知的財産権の対策はしっかりやったほうがいい。 範囲が狭い割に得点が他の問題と比べて(ダブル受験する場合)二倍になるので、コスパがいいから。
説明をすると
CGEとCGCは各40問出題されるが、そのうち知的財産権は4問出題される。
構造としてはこんな感じ。
CGE = 知財4問 + 他の単元36問
CGC= 知財4問 + 他の単元36問
その上、この知財4問は共通問題。
なので4問とも正解であれば全80問中8問正解したことになる。 逆に、4問とも不正解であれば全80問中8問不正解ということになる。
このようにダブル受験するなら、知的財産権はレバレッジが他の単元に比べて二倍大きい。 覚えることも大して多くなく、ダブル受験を考えるのなら優先順位が高い単元と言える。
パラメトリック形式についてまとめた
カラーモデルについてまとめた(WIP)
色について勉強をしたのでまとめた。
テクニカルアーティストスタートキット -映像制作に役立つCG理論と物理・数学の基礎- [演習データ付属]
- 作者: 曽良洋介,Marc Salvati,四倉達夫,平谷早苗,堀越祐樹,株式会社オー・エル・エム・デジタル研究開発部門
- 出版社/メーカー: ボーンデジタル
- 発売日: 2012/03/07
- メディア: 大型本
- クリック: 140回
- この商品を含むブログ (2件) を見る
- 出版社/メーカー: 画像情報教育振興協会
- 発売日: 2016/09/20
- メディア: 単行本
- この商品を含むブログを見る
『テクニカルアーティストスタートキット』 p93-98
『コンピュータグラフィックス』 p245-250
より
カラーモデル
光は電磁波
光は電磁波で、色は電磁波の中の可視光線と呼ばれる波長のことを指す。その波長の違いが色として認識される。
色を表現する時には二つの決め方(基準)がある。
それが色空間と表色系。
まず色空間から。
色空間とは
色空間は三種類または四種類の数値を用いて色を表現する方法。
色空間にはRGBカラーモデル(=加法混色、光の三原色)とCMYKカラーモデル(減法混色、色の三原色)がある。CMYKはCyan:藍 / Magenta:紅 / Yellow: 黄色 / Key plate: 黒。
前者はディスプレイやデジカメの撮像素子などデジタル機器に使われ、対し、後者はプリンタのインクやセロファンや水彩画などアナログなものを表す時に使われる。
ただ、色空間にも問題がある。
例えばRGBカラーであれば、8bitで量子化するのであればRGBの値を0-255で指定する(8bit * 3色 = 24bit)。 色は波長によって決定され、また、ディスプレイによって指定されるRGBの色の値が違う。なので使うディスプレイによっては色合いが違ってしまう。
だからそのために表色系という色の決め方が出てくる。
表色系の説明に移る。
表色系とは
(ここは整理できていないところなので間違っている可能性が高い)
表色系
CIE表色系 = 加法混色 = 足したら白色になる
マンセル表色系
色相(hue)…色の違い
彩度(chroma / saturation)…色の鮮やかさ。無彩色~鮮やか
明度(value / intensity)…色相の明るさ。黒(0)から白(10)
Red Yellow Green Blue Purpleの五色(基本色相)とその間の五色を足して計10色を円状に並べる
RGBの値を定義して、これらを三刺激値と呼ぶ
RGB表色系は色をマイナスにするときもある
だからCIE XYZ表色系が出てきた。虚色のことを指し、Yは色の明るさ、輝度を指す
XYZは三次元を扱う
CIE Yxy表色系 Yは輝度だからとりあえず切り離す
そうするとxyだけになるから楽になる
色度図
Pythonを使って二次元座標で任意の点を回転させた
前提
CG-ARTS協会(2015)『コンピュータグラフィックス』の2-1 二次元座標変換の回転 p23がよくわからず、理解の足しになると思いPythonで書いてみた(がいまだによくわかっていない)。
- 出版社/メーカー: 画像情報教育振興協会
- 発売日: 2016/09/20
- メディア: 単行本
- この商品を含むブログを見る
以下の数式は、二次元直交座標系の点(x,y)を、原点(0,0)を軸として反時計回りに角度θ分回転する式。回転後の座標は点(x',y')になる。
x' = xcosθ - ysinθ
y' = xsinθ + ycosθ
CGソフトでオブジェクトを回転(rotation)するときはこの式が使われる。
今思えば、「なぜこの式になるのか」が問題だったので、コードを書くよりこの式の証明やっておけばよかったと思った...。 ちなみにnumpyとmatplotlibを使うのはほぼ初めて。
出力
横軸をx、縦軸をyとする二次元直交座標系に点(2,0) (2,2)(4,0)(4,2)を取り、原点(0,0)を軸として、これらの点すべてを反時計回りにθ = 45°分回転させた。
変換前の点を青で、変換後の点を赤でプロットしている。
コード
所感
プログラミング書く前にやることを前倒しで徹底的に紙に書いたら大分捗った。 次からはこうしよう。