Ajax開発日記 ライブラリ公開ページ RunRunAjax本家
2007-04-14 Wiiインターネットチャンネル 正式版
■仕様変更点

4:3画面と16:9画面の画面解像度の違い
試用版では縦サイズが固定だったのに対して、正式版では横サイズが800ピクセル固定になっている。したがって16:9画面では縦方向の表示領域が狭くなっている。
画面表示ピクセル数
具体的なピクセル数はwindowオブジェクトのpropertyで以下のようになっている
16:9画面
ツールバー無し
window.innerHeight = 468
window.screen.height=496
ツールバーあり
window.innerHeight = 392
window.screen.height=496
4:3画面
ツールバー無し
window.innerHeight = 624
window.screen.height=664
ツールバーあり
window.innerHeight = 524
window.screen.height=664
これらの値をチェックすることで、画面サイズ、ツールバーの有り無しを判断することができる。
画面上下の余白
オーバースキャンを考慮して、上下方向にbodyの外側にある余白がある。スクロールはこの余白を含めた部分になる。
スクロール操作
Bボタンでのスクロール方法の変更に加え、十字キーでもスクロールできるようになったため、十字キーでのfocus移動は効かなくなった。
2007-01-16 新しいおもちゃ
■GPSロガー

SONYのGPSロガーGPS-CS1Kをようやく手に入れた。
これはGPSを使って、一定時間間隔で自動的に位置を記録してくれるデバイス。
デジカメのオプション品として売られているが、カメラ使わなくとも、地図に歩いた軌跡をプロットしたりすることができる。
Amazonでもずっと品切れ状態で、たまにマーケットプレイスで出てるところを運よくゲット。amazon:GPS-CS1K
紹介記事はこちら ソニー「GPS-CS1K」
■googlemapにプロットしてみる

デバイス自体はUSBストレージになっていて、GPSのデータはテキストファイルとして取り出すことができる。フォーマットは、NMEA-0183 という標準形式。かようにオープンなところはすばらしい。
早速データファイルを読み込んで、google mapにプロットするものを作ってみる。
測地系もWGS84なので、座標データをそのままプロットするだけ。距離と速度は自前で計算している。サンプルの場所はわりとひらけたところなので精度はいいほう。ビルの谷間などだともうちょっと誤差が生じることがある。
イリーガルなデータをちょこっと修正する機能をつけてやれば、行動記録をDB化することができそう。写真との連携もサーバ側で処理するようにししてみたいところ。
2006-12-27 Wiiサイトブーム到来か?
■Wii用サイト

奇しくも同じ日にWii用YouTubeを作成されてた方がいるようなので、トラバっておきます。
デジモノに埋もれる日々: Wii向けページ作成ブーム?! 次々に登場するWiiサイト
なまえもかぶっちゃってますね。
■WiiTube検索の改良

公開されてるYouTubeのAPIを使って検索すると、どうも本家の検索結果より結果が少ない。これはAPIが検索対象をタグに限定しているからのようだ。
というわけで、WiiTubeもメインの検索は、本家の検索ページからスクレイピングして取るようにした。これで、ソートも可能になった。
スクレイピングに便利なphpでwebページを取得するライブラリを作った。
http://wakufactory.jp/aj/src.php?/ajs/wget.inc
gzip圧縮にも対応。
取得したあとは、マジメにhtmlをパースするなんてことをせずに、行単位でマッチングして必要な情報を取得している。ページのhtmlがちょっとでも変わると取れなくなる罠。
2006-12-24 WiiとYouTube
■Wii専用YouTube検索

WiiのOperaはYouTube用じゃないかってくらい相性がよい。
YouTubeのAPIを使ってこんなものを作ってみた。
http://wii2.wakufactory.jp/wt/
PCからの閲覧は制限してますので、下でどうぞ。
お茶の間でYouTubeって図式が本当に一般的になるなら、TV等のコンテンツ事業者にとって本当に脅威になるかもしれない。
■中身について

YouTubeのAPIはこちら。
トークンを取得すると、RESTで検索できる。現在のAPIでは、ビデオのタグの検索のみなので本家の検索よりヒット数は少ないようだ。
例によって、サーバ側でAPIから取得したXMLをJSONにしてクライアントに渡し、クライアント側でテンプレートを使って画面を構成してるという単純な作り。ビデオの埋め込みembedタグも、テンプレートから展開したものをinnerHTMLに放り込んでるだけで問題なく再生できている。
WiiのOperaはajax通信もテンプレートの展開もストレス無く動作してくれるので、特別意識する必要は無い。Wii用のコンテンツは、とにかく文字やボタンを大きくするだけで、大分使い勝手が向上する。
2006-12-22 wii
2006-09-08 ひさびさ更新
■DS用2ちゃんねるビュアー

ひさびさの更新。ぼちぼちとこんなものを作っていた
テーマは、ニンテンドーDSブラウザー用に、むりやりajaxで特化したwebアプリを作る、というもの。
サーバ側で2ちゃんねるのdatデータを取得したものを、JSONPでクライアント側に非同期に送り、ページの遷移をしている。分割読み込み、分割表示をして、レスポンスを工夫したつもり。UIはスタイラスではなく十字キーでの操作に最適化した。アンカースレや画像直リンのポップアップ表示もある。
結論からいうと、本文をみるだけなら携帯用2chゲートウェイのほうが反応は早い。
サーバからのデータの表示は、jhtmltemplateを使っているがこれもあまり早くない。尤も、単純にボタンクリックでstyleのdisplayを操作するだけのような場合でも、ワンテンポ待たされる感じがあるので、これがDSのOperaの速度限界のような気もする。
しばらく使っていると、メモリ不足で不安定になりそのうち固まる。無駄なデータは持たないようにしているつもりだが、ガベージコレクションのタイミングが不明なので、どこでメモリが無駄遣いされているかいまいちよく分からない。
まあ、ちょっとDSで2ちゃんをチェックするという用途には使えるかな、ってところ。
2006-08-11 JSONPで行こう
■JSONPという方法

DSブラウザーでXMLHttpRequestが使えないので、代替案をどうしようかと思っていたのだが、JSONPというのが注目されているらしい。
JSONPについて - snippets from shinichitomita’s journal
要は、javascriptの外部スクリプト読み込みタグを動的に追加し、その中でコールバック関数を実行させ、結果をJSONで受け取るという方式なのだが、クロスドメインが可能な上に、いくつかのwebサービスで対応を始めているということである。
早速DSブラウザーでも試してみたが、問題なく動作するようなので、フレームワークにJSONPも取り込むことにする。
■JSONPライブラリ

XMLHttpRequestを使ったクラスPostGetと互換のインターフェイスで、JSONPでデータを取ってくるクラスGetJsonpを作った。
使い方は、Postgetクラスと同じように、
p = new GetJsonp('script.php'); //サーバ側スクリプトを指定してnew
p.setCallback( function(obj) { //読み込み完了時に呼ばれる関数定義
if(obj) {
//objを処理
}
}
p.get( {param:"hoge"} ) ; //getで渡すパラメータを指定して呼び出し
となり、ほぼ置き換えが可能。
サーバ側は、phpのライブラリpostget.incを拡張して、JSONP形式に変換する関数array2jsonpを追加した。
この関数の実体は、配列をjson形式に変換し、それを引数としてコールバック関数をコールするスクリプトを吐き出すだけである。
サーバ側のコードは。
$callback = $_GET[jsonp] ;
$data = array("hoge","hage") ;
echo array2jsonp($data,$callback ) ;
のような感じになる。いままでとほとんど同じだが、クライアント側で呼び出すコールバック関数を、GETパラメータから取り出して渡す必要がある。getのパラメータ名は"jsonp"にしてある。コールバック関数名は、GetJsonpクラス側で動的に決めて、複数の非同期通信が同時に起こっても大丈夫なようになっている。
ごく簡単な実働サンプルはこちら
2006-07-30 ニンテンドーDSブラウザーでAjax
■ニンテンドーDSブラウザーでAjax

XMLHttpRequestが動かないのでinlineFrame方式で一つ作ってみた。
手抜きしてるので、PCのブラウザだとちゃんと表示されない。
単純にiframeの中に検索結果を読み込んでいるだけ。検索のたびにiframから取り出したのを履歴としてページに加えていってる。こんなのをAjaxと言っていいのだろうか。
DSブラウザーの縦長モードではiframeのdisplayやvisibilityが効かないようなので、隠しフレームにするには工夫が要りそう。
辞書の検索は こちら(http://www.btonic.com/ws/)のAPIを利用。SOAPなのだが、サーバ側スクリプトは汚いのでとりあえず公開は無し。
wakufactory
2006/08/03 13:27
上記のAPI、デイリーコンサイスの全件検索ができてたのに、試用版で一部しか検索できなくなってます。ヤラレタ。
