読者です 読者をやめる 読者になる 読者になる

モバイル版Carvoとしてzuknowを使う

perl

前回紹介したCarvo(カルボ)。note103.hateblo.jp

インストールの手順や動かし方などを書いてはみたものの、実際には自分以外の人が本当に使うことは余り想定していないというか、なにしろ意味不明なコード群やバグ(とすら言えないような不備)ばかりで、せっかく試してくれた人に迷惑をかけてしまうのもまったく本意ではないのだけど、自分では結構使っています。

とはいえ、基本的には(というか全面的に)これはコマンドラインアプリなので、Macを開いてターミナルを起動しないことには使えないもので、しかし自分のライフスタイル的にはそういうデジタル暗記帳ってモバイル環境でこそ使えてほしいものなので、ゆくゆくはSwiftなどを使って同等のiPhoneアプリも作りたいのだけど、実現するにはまだ数年かかりそうなので、さしあたってその代替的に重宝しているのが「zuknow」というサービスです。

zuknow.net

サービスの詳細はリンク先を見て頂くとして、簡単に紹介するとこれこそがまさに「ブラウザでもスマホアプリでも使える暗記カード」みたいなもので、zuknow自体が用意している豊富な教材(英語だけではなく、簿記その他ジャンルを問わず色々ある)の他、ユーザー自身が教材を作成してシェアし合うことも可能だったりして、そういう自由にカスタマイズできる感じがなかなか素敵です。

で、その「自分で教材を作れる」という機能を使って、Carvoのために作ったJSONファイルの単語カードをちゃちゃっと変換して、同じ内容の問題集をターミナルからだけでなくスマホでも解く、というのを以前から時々やっているので、簡単にその方法を書いてみます。

まずzuknowでは、自作カードのフォーマットは1行あたり「問題の語句、タブスペース、回答の語句」という要素で構成されていて、これはExcelで1列目に「問題の語句」、2列目に「回答の語句」を入れた場合と同じです。(というか、zuknow的にもExcelスプレッドシートでデータを作って、それをコピペすることを想定している)

たとえば、英単語を「問題」として、その和訳を「回答」とする場合、以下みたいなExcelの表を作っておいて、

book
flower
cat

その2列×3行を指定の編集画面にコピペすれば、それだけで3問分の学習教材が生成されます。

さらに実際には、3列目、4列目、5列目……と要素(列)を加えていくことで、さらにリッチなオプションを備えていくこともできますが、説明が煩雑になるのでここでは割愛。

また設定次第でアプリが問題や回答の読み上げもしてくれるので、それもなかなか良いです。(といっても、これを書いている時点では結構不具合が出るんですが、それも話が膨らみすぎるのでここでは割愛。開発者の皆さん頑張って!)

いずれにせよ、僕のCarvoっていうのはコードはわかりづらいけどやりたいことはすごくシンプルで、そのシンプルなアプリケーションを上記のようなシンプルな方法でスマホでも動かせてしまう(Swiftのプログラミングを習得しなくても)、というのがとてもありがたいです。

zuknowは最近あまりアップデート情報を聞かない気がするのですが、今後も息の長いサービスとして続いてくれたらなあ、と思っています。

最後に、自分が使っている「JSONデータをタブ区切りに変換するPerlスクリプト」を貼っておきます。(何となくそういうPerlモジュール普通にありそうですが……まあとりあえず)

#!/usr/bin/env perl
use strict;
use warnings;

my @foo = <DATA>;
for my $str (@foo) {
    my ($key, $value);
    if ($str =~ /^\{/) {
        next;
    } elsif ($str =~ /^\}/) {
        next;
    } elsif ($str =~ /^ {4}"(.+)" : "(.+)"/) {
        $key = $1;
        $value = $2;
    } else {
        print "error!\n";
    }
    print "$key\t$value\n";
}

__DATA__
{
    "book" : "本",
    "flower" : "花",
    "cat" : "猫"
}

結果。

book	本
flower	花
cat	猫

これを編集画面に貼り付ければ、暗記クイズの出来上がりです。

Enjoy!