英単語学習ツール "Carvo" - 機能拡張&モジュール化してGitHubに公開しました

少し前にこのようなブログ記事を書きました。
英単語の学習用スクリプトを作った - the code to rock

Perlでif文とかfor文とかを使って英単語の学習用プログラム作れるんじゃないか、やってみよう、という風に作ったものですが、これちょっとパッケージ化というかモジュール化してみたいな、なんならテストとかも作ってみたいな、と思って、作ってみました。
note103/Carvo · GitHub

で、READMEにも載せましたが、動画キャプチャも作ってみました。
f:id:note103:20140606231022g:plain

この動画はあれですね、ひとつ前の記事でもチラッと書きましたが、先日の GitHub Kaigi のRebuild.fm の生放送で @miyagawa さんが紹介されていた LICEcap をそのままさっそく(たぶん翌日の深夜ぐらいに文字通り目をこすりながら)使ってやってみたもの。
GitHub Kaigi の感想 #githubkaigi - the code to rock
Cockos Incorporated | LICEcap

何回ぐらいだろう、とりあえず10回ぐらいは撮り直したんだけど、それでもけっこう粗いですが。あと、その後にもソースコード手直ししているので実際には今実行するとところどころ出てくる文言(もんごん)とか違うと思うのですが、まあ、ヨシとします。

詳細については、README.mdけっこう頑張って作ったので(それでも同じ深夜に作ったので粗いですが)そちらで。
https://github.com/note103/Carvo/blob/master/README.md

今後こんなふうに展開したい、みたいのはTODOにまとめてみました。
最初はIssuesに入れていたのですが、基本サムデイリストみたいな感じだったので、これIssue一生閉じないんじゃ・・みたいになってふさぎ込みそうだったのでそれはやめて。
https://github.com/note103/Carvo#todo

最初に、「こんなことできたらいいな」と思ったことは結構あっさりできて、そうするとでも、「これじゃ不便だ、この方がいい」とか、なんというか自分で自分にさらなる試練を課す、みたいになって、でもそれもなんか知らんけどクリアできてしまったりして(ランダムで語句を出すとか、エンターで次の語に行くとか、英語から日本語を当てるだけだったのが逆もできるようになるとか、たぶん次には得点を加算するとかやりたいしできそう)、あれ・・俺、作れてるじゃん、みたいになってそれが嬉しいです。
自分で立てたハードルを自分で飛ぶ、というのは何だかよいものです。

名前について

このプログラムの名前、最初は、「EnglishWordsLesson.pm」とかにしていました。
それでしばらくやってて、まあでもそれだといろいろコマンドなど打ちづらいので「EWL.pm」にしたりとか。
で、そのうちに、そろそろできた感じだからじゃあGitHubにあげるかーとかなったときに、でもリポジトリ名どうしようか、と、他の先輩たちの例を見ると、なんか「EWL」とか「EnglishWordsLesson」とかはナイ感じだよなあ・・と。まあ、多少無難に倒して「english-words-lesson」とか・・?

たしかに、それならまだ周りに迷惑とかはかけない感じもしたけど、んー、でもそれって面白いのか?? とか、あとなんか先人の活動を見ていると、こういうのってもしかして、なんというかツールの名前を、その機能を象徴するようなところも絡めて造語的に作ってしまう、とかのほうがいいのかな? と思って(Carton とか Starman とか Yomico とか Otogiri とか kaminari とか idobata とか)、んーだったらなにがあるかな・・このツールって何なんだそもそも・・と考えて。

元々の「English Words Lesson」っていうのは、自分の意図としてはまったくそのとおりなんだけど、よくよく考えると、このツールって別に英単語&その和訳に限らなくて、スペイン語→中国語とかでも全然使えるんだよなあ、と。
中学生のときとかに、リングの付いた単語帳をペラペラめくっていたみたいな、ああいう単語帳のイメージだよなあ、と思って、だからEnglishとかはとりあえずナシで(そこに限定せず)、語彙のカードたち。Cards of vocabulary だなと。そっから造語的な何か・・ちょっとPOPな感じの・・とかで、おお「Carvo」いいじゃん、なんかクルマの名前みたいで。手触り感ヨイ!と思ってそれにしました。

展望

地味なTODOとしては、これ2〜3階層ぐらいのwhile文を回しているので、深いところから抜け出るにはその旨のコマンドを最大3回叩かなきゃいけなかったり、それが面倒なら < C-c > しなきゃいけないので、qqとかで一発で抜けれるようにしたいな、とか、
あとはちょっと先の話かもしれないけど、ターミナルで起動したらそのままローカルなブラウザでどんどん出来るとか、それがデータベースに記録されるとか複数マシンでもその記録が共有できるようになるとか、あとはもちろんモバイルデバイスからもできるとか、だったらSwiftの勉強もかねてそれやるか、とか展開はいろいろ考えられそうです。

ただまあそれ以前の問題というか何というか、テストもモジュールのあり方も現状はあくまで「ごっこ」的というかナンチャッテな感じなので、その辺も洗練させていきたいところですが。なんというか・・ハリボテ感すごいので。でもまあ、それでも書きなぐりGist(ジストと読むらしいfrom GitHub Kaigi知見)からこうして機能拡張&展開させたのは我ながらいいじゃん、とも思っています。

以上です。