iKnow Archive
この春はゆるふわ愛されiKnowアイテムバンクでキメちゃおう☆
追記:cerego公式のブックマークレットがリリースされています。こっちの方が便利かも。
タイトルはホッテントリメーカーで生成したw 無駄に愛愛うるさい気もするが、まぁ気にしない。春じゃないのも気にしちゃいけない。
それはともかく。
iKnowは英語学習用SNSサービスで、英語を学ぶためのe-learningコンテンツと、SNSが融合したサービス。Ruby on RailsとFlashで作成された素晴らしい学習アプリが特徴で、TOEIC向け、TOEFL向けなど様々なコースを、目標日から自動で逆算されたペース配分に従って学習を進めることができる。
さて、そんなiKnowには、「iKnowアイテムバンク」という名前で、登録されている10万語超の英単語を調べることができる辞書機能が存在する。そして、その単語を集めて自分の英単語帳を作ることができる「マイリスト」という機能も存在している。作成したマイリストは、運営元のceregoによって提供されているコースと同じように、iKnowの学習アプリを使ってペース配分しながら勉強することが出来、iKnowを非常に効率的な英語学習プラットフォームとして活用することが出来る。
で、今回はそのマイリスト機能を活用するための基盤となる、iKnowアイテムバンクを検索するための検索プラグインを作成してみた。なお、iKnowアイテムバンクはAjaxを活用しているので、SearchQueryGeneratorは使えないので注意。
OpenSearchプラグイン
Firefox向けOpenSearchプラグイン。以下のリンクからインストールできます。
iKnow ItemBank Searchをインストール(Firefox)
- 英語ページをブラウズ
- 分からない単語に出会う
- その単語を検索バーにD&D
- 検索結果のページからマイリストに登録
- 分からなかった単語リストが出来て、しかもiKnowで復習できるので(゜Д゜)ウマー
となれる。
検索エンジンの切り替えが面倒だ、という場合は、コンテキストメニューから検索できるようにするContext Searchという拡張を入れれば幸せになれるかも知れない。
なおこのOpenSearchプラグインはIEでは使用不能。iKnowが対応していないのか検索結果ページを上手く表示できない。残念…。よってIEコンポーネントブラウザであるSleipnir、Lunascape等も同様。
ちょっとパソコンから離れて時間を作ろうと、バイト先にラップトップを置いて帰ったらiKnowが大分遅れてしまった。カツカツなスケジュールを組んだ状態で後れが出ると大分キツいな・・・。
遂にiKnowの学習完了語数が500を達成。いやはやiKnowは素晴らしい。ものぐさな自分でも毎日続くのだから。
そしてコミットメント効果を強化するために、「iKnow進捗状況」という独立ページを設け、進捗状況の可視化デモを纏めてみた。
「TOEFL Standard 3」の量の多さに心が折れないよう、頑張っていきたい。
id:amachangさんによる紹介記事を読んで知ったXPathGraphを使って、自分のiKnowの学習中アイテム数と学習完了アイテム数を表示するグラフを描いてみた。木曜の1限が休講になって、ボケっとしているうちに思いついたので勢いで書いたのだが、グラフが描かれるまで待ってたのでエントリが遅くなってしまった。
さて、XPathGraphはURLで指定したデータソースに対して、1日1回XPath式を実行し、得られる数字をグラフにしてくれるというサービス。
iKnowの学習中アイテム数は、Flashで作成されたブログパーツが使用しているXMLファイルから取得できることはiKnowLastAccessTimeCheckerを書いた時に確認済。これを使えばすぐ終わるかなと考えていたのだが…、XPathGraphは困ったことに、XMLファイルを解さないらしい。XPathなのに。…XPathなのに。その訳を調べてみると、どうやらXPathGraphはXPathの処理系にHTML::TreeBuilder::XPathとかいうHTML処理用?の奴を使っているらしく、XMLでもHTMLとして処理しようとする為らしい。仕方ないのでYahoo pipesという米Yahoo!のサービスと組み合わせてみようとしたところ、今度はiKnowのXMLファイルにXML宣言が無いせいでパースエラー。/(^o^)\ナンテコッタイ
という訳で最終的にはpipeにあたるものをphpで自作。要はXMLからデータを取ってきて、HTML化すれば良いわけだから、iKnowLastAccessTimeCheckerの時と同じ要領。
<?php
function getScores($id){
$req = 'http://www.iknow.co.jp/assets/user/' . $id . '/iknow_badge.xml';
$iknow = @simplexml_load_file($req);
if($iknow===false){
echo('パースエラー');
exit();
}
$studying = $iknow->history->fragment->score[0];
$finished = $iknow->history->fragment->score[1];
return array("studying"=>$studying, "finished"=>$finished);
}
?>
<?php
$id = htmlspecialchars($_GET['id']);
?>
<!DOCTYPE html PUBLIC '-/W3C/DTD XHTML 1.0 Strict/EN'
'http:/www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'>
<html xmlns='http:/www.w3.org/1999/xhtml' xml:lang='ja' lang='ja'>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=utf-8'>
</head>
<body>
<p>
<?php
if(!empty($id) && (strpos($id,'/')===false)){
$scores= getScores($id);
echo('<ul>');
echo('<li class="studying">');
echo($scores["studying"]);
echo('</li>');
echo('<li class="finished">');
echo($scores["finished"]);
echo('</li>');
echo('</ul>');
}
?>
</p>
</body>
</html>
これをデポに設置したうえで、XPathGraphから以下のようにidをパラメータとして渡して呼び出し。
http://depot.sharplab.net/php/iknow/PipeToXPathGraph.php?id=shiroica
XPathの方はこれだけ。
//li[1]
さて、出来たグラフ。まだ二点分のデータしかない(5/17時点)けど、まぁ動作しているのが確認できる。
そして学習完了アイテム数。
これで進捗状況が一目で分かるようになった。さぁがんばれ自分。
iKnowの「動詞コロケーション1」というコースが完了。始めたのが4/11だから、大体四週間ほどか。他にも三つのコースを進めているが、なんとか順調にこなせている。iKnowについて何度かこのBlogでも触れたが、もう一度まとめとくと、iKnowは初心者から上級者向けまで様々なコースがそろっており、単語・熟語を学習するにはもってこいのe-Learningサイト。こちらでもshiroicaというidで通しているので、やっている方、始めた方は、是非フレンドリクエストを下さいな。