Star Archive
一般に公開するphpスクリプトとしてはWordPressのテンプレートを除き、記念すべき第一弾かな?
「iKnowのBlogパーツの通信を覗いてみた」というエントリで書いたように、iKnowではBlogパーツのために、ユーザーの学習中アイテム数などをxmlファイル形式で外部に公開している。今回は、その中の最終学習日時を表示するphpスクリプトを書いてみた。
<?php
function getLastAccesseTime($id){
$req = 'http://www.iknow.co.jp/assets/user/' . $id . '/iknow_badge.xml';
$iknow = @simplexml_load_file($req);
if($iknow===false){
echo('パースエラー');
exit();
}
$date = strtotime($iknow->history->fragment['date']);
return $date;
}
?>
<?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'>
<title>iKnowLastAccessTimeChecker -
<?php
echo($id);
?>
</title>
</head>
<body>
<p>
<?php
if(!empty($id) && (strpos($id,'/')===false)){
$accessedTime = getLastAccesseTime($id);
echo(date('Y年m月d日 H:i:s',$accessedTime));
}
?>
</p>
</body>
</html>
こんな感じ。get変数idを与えると、そのidを持つユーザーの最終アクセス日時を表示する。で、このスクリプトを早速デポにUPしてみたので、その検索窓を設置してみる。
自分のIDで試してみた例:
http://depot.sharplab.net/php/iknow/LastAccessTimeChecker.php?id=shiroica
脆弱性対策はDirectory Traversal対策位しか思いつかなかったけど、大丈夫かな?
飲み会などで中断を挟みながらも、なんとか順調にこなせているe-learningサイトのiKnow。このiKnowには、学習状況を表示できるBlogパーツがある。前回紹介した時に貼り付けたあれである。
で、今日はちょっとした好奇心からそのBlogパーツがサーバーと何を通信しているかを調べてみた。
使ったソフトはFiddler2。FiddlerはHTTP(s)トラフィックをモニタするためのツールで、ローカルプロキシとして実装されており、http://www.fiddlertool.com/fiddler/からDL可能。実行すると、自動的にアタッチされるので、左側のリストから任意のセッションを選択して内容を覗くことができる。
さて、Fiddlerで覗いてみると、それらしいリクエストとして
http://www.iknow.co.jp/assets/user/shiroica/iknow_badge.xml?time_stamp=1209570292344
というものがあった。GETメソッドでtime_stamp=1209570292344というデータが送られているが、これは名前の通り、リクエストを送信する時点でのUNIXタイムスタンプ(ミリ秒単位)のようである。但し、この値を操作しても、返ってくる結果は変わらないようであるが。(5/2追記:よく考えたらキャッシュ対策ですね)
で、そのボディの内容について。先のリクエストに対して返却されるデータは、ニコ動同様にXML形式であった。具体的には以下のように。
<iknow>
<version>1.0</version>
<title>iKnow! バッジ</title>
<link>http://www.iknow.co.jp/clickback/iknow_public_badge/shiroica</link>
<avatar>/assets/users/49q1_small.jpg</avatar>
<language>ja</language>
<description>iKnow! で一緒に学習しよう</description>
<history application="iknow">
<fragment date="Wed Apr 30 13:11:46 UTC 2008">
<score label="学習中アイテム">706</score>
<score label="学習完了アイテム">9</score>
</fragment>
</history>
</iknow>
ということは、ユーザー名から母国語、アイコンのURL、最終学習日時(UTCであることに注意)、学習中アイテム数、学習完了アイテム数がとれるようである。
アイコンのURLと、学習中アイテム数、学習完了アイテム数はBlogパーツ上でも表示されるので、通信されているとは思っていたが、最終学習日時まで通信しているとは思わなかった。最終学習日時はプロフィールページなどでも公開されていないので、予想外の珍しいデータがとれたといえる。
「見て見て、ちゃんと勉強してるんだよ!」という意図でBlogパーツを貼り付けている自分みたいなタイプの人間は、こっちのデータも表示するようにできたらなぁと思ったりする。そのうちPHPでXMLを取得してきて最終学習日時を表示するスクリプトでも書いてみるかな。
Web 2.0 ツールのつかいかた まだ、Googleだけですか?
最近小飼氏の書いたものを読み漁っている関係で、上記の本に辿り着いた。その中の、小飼氏と梅田氏の対談の中に、Googleについて非常に興味深い指摘があった。
偵察衛星が膨大なinfomation(情報)をもたらした一方で、むしろintelligence(知性)が損なわれたのと同様のことがWebの世界にも起きているような懸念を私は感じてしまうのです。
偵察衛星の登場により、HUMINT(人間による情報収集。HUMan INTelligenceの略)は大きな痛手を負ったと言います。偵察衛星の写真の鮮明さに目を奪われるあまり、あいまいで解釈の難しいHUMINTは隅に追いやられ、その結果「神には見えない」「テロリスト」の跋扈を許した側面は大いにあると思います。いや、それこそが9.11の遠因でしょう。
それに対し合州国<原文ママ>は「人の力」を振り返るのではなく、むしろ「神の力」への飽くなき追求に突き進んでいるように思えます。
合州国が目指していたのは、世界に「神の力」をもたらすことであり、その過程としての「神の目」たる情報網と、世界最強の「神の手」たる米軍があるのですが、皮肉にもポスト冷戦の歴史というのは、合衆国の力がより「神に近づけば近づく」ほど、合衆国の行動から繊細さが失われ、傲慢への道を突き進んでいるように思えてならないのです。
Google八分が、合州国のイラクに対する態度に重なって見えるのは私だけでしょうか?
私がGoogleのありように対し、一神教的だと感じたのは、まさにGoogleのありようが合州国のManifest Destinyの延長上にあるように思えたからです。
「Web2.0をめぐる往復書簡―Web 2.0 ツールのつかいかた まだ、Googleだけですか?
」内、小飼氏の発言より引用、装飾は引用者による。
Googleの、検索テクノロジーという唯一絶対の「神の目」により、世界中の全ての知を再編成しようとする姿勢を、SIGINTを頼り、HUMINTをないがしろにしてきたアメリカ合衆国の姿勢になぞらえ、その態度を傲慢だと考え、いつか破綻をきたすと暗に示唆している。
Googleは、「世界中の情報を整理し、世界中の人々がアクセスできて使えるようにすること」を使命と言って憚らない(=Manifest Destiny?)わけだが、その信念に基づいて行われたYouTubeの買収や、Google Book Searchは、そのもたらす結果は未だ見えないが、少なくとも既存の著作権のありように対しては冷淡で、傲慢な態度と言えるだろう。
果たして、Googleが、イラク開戦の判断を誤ったアメリカのように、しっぺ返しを食らうとしたら、その時のHUMINTにあたるものとは、何なのだろうか?