2011-06-05

iKnow!の学習結果を通知するサービス「TwiKnow! (仮)」

以前にも書きましたが、英語学習SNSのsmart.fmが3月末で終了したことに伴い、新サービスiKnow!に移行して、毎日の英語学習を細々と続けています。しかし、新iKnow!にてSNS要素が完全に撤廃されたことは思ったよりもモチベーションに対する影響が大きく、4月以降の勉強時間がガタ落ちしている状態です(4月から急に仕事が忙しくなったこともありますが……)。

smart.fmのSNS機能では、自分とまわりのフォロワーとの間で学習状況の情報が通知されるようになっていて、他の人が頑張っているのを見て自分も頑張って学習する、といった正のフィードバックが回っていました。幸い、smart.fmで知り合った人々の何人かとはTwitter上でフォローしている関係にあり、今でも継続してiKnow!で学習を続けているユーザーもいます。

そこで、毎日のiKnow!の学習時間をTwitterでtweetするサービスを作ってみようかなと考えています。大昔、まだsmart.fmでなく(旧)iKnow!だったころは、「おめでとうございます! 学習アイテムが1000アイテムに到達しました」みたいなメッセージも出ていたので、そのあたりも再現したいところです。こういった通知メッセージのtweetで、iKnow!学習者間でのコミュニケーションのきっかけになればいいなと思います。

サービス名は「TwiKnow! (仮)」とします。サービス内容からしてこれしかない、という感じの名前です。プラットフォームは例によってGoogle AppEngineです。AppEngineだと、おあつらえむきに、一日一回タスクを起動するといったことが簡単にできるので楽そうです。とりあえず、「twiknow.appspot.com」のドメインを取っておきました。

現在、OAuthについて調べながら実装していますが、TwitterでOAuthを使う時って出来ることが多すぎるため、痛くもない腹を探られる感がありますね。単にtweetしかしないサービスなのに、OAuthの認証画面でアプリが出来ることのリストには「新しいユーザーをフォローする」とか「プロフィールを更新する」などと書かれていたりします。もっと細分化してほしいなあ。

2011-05-31

残り人生を見える化するアプリ「Lifetime Calendar」

Lifetime Calendar

ここしばらく非常に多忙な状態が続いていました。忙しいと、あっという間に月日が流れていく感覚があり、気がつけば5月も終わりです。このままでは1ヶ月後に「今年ももう半分過ぎた」などと言っているに違いありません。忙しくなってくると、一週間の仕事の疲れがたまって土日を無為に過ごすことも多くなり、人生無駄にしている感がつのる一方です。

さて、少し前から、Twitterでのタイムライン上で「@foobar は12345日生きた。人生あと17655日しかない。今日は有意義だったか?」といった感じのTweetが定期的に見られるようになりました。これは30thouというサービスからのTweetで、人生は30000日と仮定して、今まで何日生きて、あと何日残っているかというのを数字で意識させるようにして、一日一日を有意義に生きるようにしよう、という趣旨のメッセージのようです。

これを見て、興味深いと感じると同時に、「日数の数字だけでなく、もっとビジュアル的な表現はできないかな」と思いました。いわゆる「見える化」というやつでしょうか。で、ぱっと思いついたのが、1年(12ヶ月)分のカレンダーを3×4の形で並べたものを、さらに一生分(例えば80年分)並べるというものです。

百聞は一見にしかず、というわけで、さくっとWebアプリとして実装してみました。HTML5のcanvas要素を使用したので、サポートしていないブラウザでは動きません(端的にはIE8)。ご了承ください。

Lifetime Calendar (実際の表示例)

しかし、こうやって改めて可視化してみると、一日が一個の長方形に相当するとして、一生全体でたったこれだけしかないのかという気持ちになりますね……。

スクリーンショット

Lifetime Calendar

カレンダー内の文字は、自前で5×5ピクセルの英数字フォントをでっち上げて描画しています。現状、canvas要素におけるテキスト描画はいまいち怪しいので……。また、「Save As ...」のボタンを押すと、カレンダーをPNG画像として保存できます。

Lifetime Calendar

生年月日の入力には、jQuery UIの「Datepicker」を使っています。「PLEASE ENTER YOUR BIRTH DATE」のメッセージは、わざわざcanvas要素で描画する必要はなかったのですが、せっかく自前でフォントを作ったので使ってみました。妙な雰囲気になったかも。

2011-05-14

オーディオプログラミング言語「ChucK」をさわる

ちょっとした音データを作る必要があって、何かいいツールはないかと探していたときに、「ChucK」という言語(「オーディオプログラミング言語」だそうです)を知りました。これはなかなか面白そう。音声データの編集(エフェクトとか)や、音ネタをさくっと作るときなんかに重宝しそうです。

まずは"Hello, world"代わりに、適当に音を出すプログラムを書くとこんな感じになります。懐かしのPC-98の起動音(「ピポッ」てやつです)を鳴らして、wavファイルにも出力するプログラムです。出力結果はこちら(pc98.wav)。

SqrOsc osc => WvOut wout => dac;

0.1 => osc.gain;
wout.wavFilename("pc98.wav");

osc.freq(2000);
100::ms => now;
osc.freq(1000);
100::ms => now;

ChucKの言語仕様は少し独特な感じですが、見れば何となく分かるかと思います。まずは、いろんなモジュール(ChucKでは"UGen"(unit generator)というようです)を「=>」という演算子(「ChucK演算子」と呼ぶらしい)でつないでいって、最終的に「dac」に渡すように結線します。そして、「now」に経過時間を入れることで時間が進み、時間経過に伴って結線に従った音が鳴るという流れのようです。

ちなみに、「WvOut wout」は、音声データをファイル出力するために噛ませているもので、外しても音は鳴ります。逆に、音声ファイル出力だけやりたい(その場で音は鳴らさない)場合は、dacの代わりに「blackhole」という /dev/null 的なUGenにつなげればOKです。

ChucKで組み込みで用意しているUGenのリストを見ると、矩形波・のこぎり波・フィルタ・エンベロープ・リバーブ・コーラス・FM・etc...といった、シンセ方面でよく見かけるものが揃っていて、いろいろと楽しそうなことができそうです。

以下は、エンベロープで整形した矩形波を3和音で鳴らし、リバーブとコーラスをかけたサンプルです。「♪セーガー」ってやつですね。出力結果はこちら(sega.wav)。

2011-05-04

iKnow!の「チェックポイント」について

ここ最近非常に忙しくて、日々の勉強もほとんど出来ていない状況です。先月(4月)のiKnow!の勉強時間は、わずか「8時間51分」とのこと。今年に入ってから、1~3月の勉強時間は、26時間・23時間・24時間と推移していたのですが、ここにきて勉強しない(できない)ことが常態化しつつある状況で、よくない傾向です。しかし、さすがにゴールデンウィークはある程度は休めそうなので(本当は10連休の予定だったのですが)、久々にiKnow!をやっています。

で、久しぶりにiKnow!を使っていて気づいたことについてメモしておきます。新iKnow!には「チェックポイント」というものがあって、公式の説明では以下のように記載されています。

iKnow! アプリケーションでは、コースプログレスが10%増加するごと(10%、20%…)にチェックポイントというイベントが発生します。

チェックポイントに達すると、次の学習セッションはこれまでの確認も兼ねてトレーニングアプリを用いた学習となります。

http://iknow.jp/faqs/361

しかしながら、iKnow!ユーザーでも、上記のようなチェックポイント到達のイベントを一度も見たことがない方もいるかと思います。どうも、このチェックポイントがあるかどうかは、コースによって違っているようです。簡単に言うと、smart.fm時代のコース(昔は「ゴール」という名前でしたっけ)にはチェックポイントはなく、新iKnow!向けのコースでのみチェックポイントのイベントが有効になっているようです。smart.fm→新iKnow!の移行時に、内容としては同じなのに、100アイテム前後で小分けされた新コースがたくさん追加されましたが、これらのコースは新iKnow!向けのコースに相当します。

このチェックポイントイベントの有り無しですが、実は画面を見れば一発で分かります。チェックポイントのあるコースでは、進捗を表すグラフで10%毎に印がついています。単なるデザイン上の要素かと思っていましたが、それだけではなかったんですね。今頃になってようやく気づきました……。

iKnow! progress bar (new)

iKnow! progress bar (old)

2011-04-21

Japanese 8-bit games: Are they suitable for learners of the Japanese language?

As you can see from my profile icon, I like video games. And the icon also shows that I'm the kind of person who cannot follow the latest trends of video games.

Well, there seem to be many people studying Japanese on Lang-8. However, the Japanese language is not easy to learn, I guess. Normal Japanese sentences consist of hiragana, katakana, and kanji characters without breaking spaces. I think that such Japanese sentences are not easy to read for beginners of Japanese.

Meanwhile, most Japanese 8-bit games didn't use kanji on screen because of the limitation of performance. They displayed messages in hiragana and katakana without kanji. And they left a space between words in the sentence for readability.

A screenshot of DRAGON QUEST II

  • 「まさおは わたすふりをしたが けっきょく じぶんで もった。」(original)
  • 「まさおは渡すふりをしたが、結局自分で持った。」(normal Japanese)
  • "Masao pretended to hand in an item, but took it back after all." (English translation by me)

Such Japanese sentences seem to be understandable for learners of Japanese. What do you think?

2011-04-17

Monster surprised you.

たまには趣向を変えて、ゲーム(video game)の話を。自分のアイコンにこんな画像 を使っているのでお分かりかもしれませんが、私はそれなりにゲームが好きです。そして、これもアイコン画像から想像がつくかもしれませんが、昔はゲーム好きだったものの、最近のゲームにはあまりついていけていない類の人間です。(ちなみにこのアイコン画像は、ファミコンの「ドラゴンクエストII (1987, エニックス)」に登場するキャラクターのドット絵です)

さて、ゲームと並んで、ここ数年で私の中で興味のあることの一つとして「英語学習」が挙げられますが、ゲームと英語学習といえば、私の中ではファミコン版「Wizardry」が思い浮かびます(非常に有名なゲームなので説明は割愛)。このゲームはアメリカのゲームで、当然ゲーム内の文章は英語なのですが、ファミコンに移植された際に「日本語/英語のメッセージ切り替え」というフィーチャーがサポートされました。これを意識してか、ファミコン版Wizardryのパッケージや広告には「このゲームは、13歳以上の方に特にオススメします。Ages 13 to adult.」というフレーズが書かれており、妙に意味深な雰囲気があったのを今でも覚えています。

で、当時私も「13歳以上」である中学生の頃にこのゲームにはまったわけですが、「英語モード」の文章は、中学生の英語力ではまったく太刀打ちできませんでした。それでも、日本語モードと照らし合わせることで「“piety”というのは“信仰心”という意味か」みたいな感じで(非常に偏った方面の)ボキャブラリ増強につながった……かもしれません。

しかし、ちゃんと辞書を引いて調べていたわけではないので、間違った理解をすることもしばしばでした。英語モードでは、敵から先制攻撃を受ける際に「MONSTER SURPRISED YOU」というメッセージが表示されるのですが、これを見ててっきり「surprised」というのは「先手を取る」とか「機先を制する」といった意味なんだろうとしばらく思い込んでいました。後から「surprise」の本当の意味を知ったときには文字通り驚いたものです……。

Wizardryの画面写真(わざわざファミコンをひっぱり出してきて撮影しました)

今あらためて見ると、「THE MONSTERS SURPRISED YOU.」の方がしっくりくる気がしますが、どうなんでしょうね? 日本人にとって、冠詞や複数形についての感覚を理解するのは難しい……。

iKnow!の画面幅を広くするユーザーCSS

(2011年5月19日追記: 本件、5月17日のiKnow!のアップデートにて解決した模様です。そのため、現在では本記事のユーザーCSSを適用すると逆に表示がおかしくなります)

ここ最近非常に忙しく、せっかく料金を払ったiKnow!も活用できていません。勉強時間が少ない毎日が常態化してしまい、よくない傾向です。なんとかしなくては。

ところで、iKnow!を使っていて前々から気になっていたのですが、例文が長い時に、文章の配置がかぶってしまい、非常に読みづらくなる場合が多々あります。例えば以下の画面のような状態です。

iKnow! window (normal)

iKnow!のサポートフォーラムでは前々から上がっていた問題なので、いつかは改善するかと思っていたのですが、いつまでたっても直らない模様。表示上の問題なので、簡単に解決しそうなものなのですが。

そういうわけで、ユーザーCSSを使って自力で解決することにしました。iKnow!の学習アプリはウェブアプリなので、HTML・CSS・JavaScriptで構成されています。ネイティブアプリやFlashアプリと異なり、ユーザー側からいろいろちょっかいを出せます。

作成したユーザーCSSは、Gistに置いておきました。<https://gist.github.com/923850> これを適用した結果は以下のとおりです。まあ、こんなところでしょうか。

iKnow! window (widened)

残念ながら、CSSではウィンドウサイズを変更することはできないので、学習アプリのウィンドウ幅については自分で広げてください(最大化するのが手軽だと思います)。また、ユーザーCSSの使い方については、適当に検索して調べてみてください。