Hatena::Diary

RunRun Ajax 出張版 このページをアンテナに追加 RSSフィード

AIRはじめました Adobe AIR を javascript + HTML で
Ajax開発日記 ライブラリ公開ページ RunRunAjax本家

2007-04-14 Wiiインターネットチャンネル 正式版

Wiiのインターネットチャンネル正式版がリリースされた。

仕様変更仕様変更点 - RunRun Ajax 出張版 を含むブックマーク はてなブックマーク - 仕様変更点 - RunRun Ajax 出張版

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-21 GPSビュアーを汎用化

wakufactory2007-01-21

汎用GPSデータビュアー 汎用GPSデータビュアー - RunRun Ajax 出張版 を含むブックマーク はてなブックマーク - 汎用GPSデータビュアー - RunRun Ajax 出張版

GPS Data Viewer on Googlemap

NMEA-0183形式のGPSデータをgooglemapにマッピングするwebアプリ

SONYGPS-CS1K等で使えます。

googlemap APIでハマったメモ googlemap APIでハマったメモ - RunRun Ajax 出張版 を含むブックマーク はてなブックマーク - googlemap APIでハマったメモ - RunRun Ajax 出張版

IEだと

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml">

を書かないと、javascriptライブラリ内でエラーになる。

2007-01-16 新しいおもちゃ

GPSロガー GPSロガー - RunRun Ajax 出張版 を含むブックマーク はてなブックマーク - GPSロガー - RunRun Ajax 出張版

SONYのGPSロガーGPS-CS1Kをようやく手に入れた。

これはGPSを使って、一定時間間隔で自動的に位置を記録してくれるデバイス。

デジカメのオプション品として売られているが、カメラ使わなくとも、地図に歩いた軌跡をプロットしたりすることができる。

Amazonでもずっと品切れ状態で、たまにマーケットプレイスで出てるところを運よくゲット。amazon:GPS-CS1K

紹介記事はこちら ソニー「GPS-CS1K」

googlemapにプロットしてみる googlemapにプロットしてみる - RunRun Ajax 出張版 を含むブックマーク はてなブックマーク - googlemapにプロットしてみる - RunRun Ajax 出張版

デバイス自体はUSBストレージになっていて、GPSのデータはテキストファイルとして取り出すことができる。フォーマットは、NMEA-0183 という標準形式。かようにオープンなところはすばらしい。

早速データファイルを読み込んで、google mapにプロットするものを作ってみる。

no title

測地系もWGS84なので、座標データをそのままプロットするだけ。距離と速度は自前で計算している。サンプルの場所はわりとひらけたところなので精度はいいほう。ビルの谷間などだともうちょっと誤差が生じることがある。

イリーガルなデータをちょこっと修正する機能をつけてやれば、行動記録をDB化することができそう。写真との連携もサーバ側で処理するようにししてみたいところ。

2006-12-27 Wiiサイトブーム到来か?

Wii用サイト Wii用サイト - RunRun Ajax 出張版 を含むブックマーク はてなブックマーク - Wii用サイト - RunRun Ajax 出張版

奇しくも同じ日にWii用YouTubeを作成されてた方がいるようなので、トラバっておきます。

デジモノに埋もれる日々: Wii向けページ作成ブーム?! 次々に登場するWiiサイト

なまえもかぶっちゃってますね。

WiiTube検索の改良 WiiTube検索の改良 - RunRun Ajax 出張版 を含むブックマーク はてなブックマーク - WiiTube検索の改良 - RunRun Ajax 出張版

公開されてる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専用YouTube検索 - RunRun Ajax 出張版 を含むブックマーク はてなブックマーク - Wii専用YouTube検索 - RunRun Ajax 出張版

WiiのOperaはYouTube用じゃないかってくらい相性がよい。

YouTubeのAPIを使ってこんなものを作ってみた。

http://wii2.wakufactory.jp/wt/


PCからの閲覧は制限してますので、下でどうぞ。

D

お茶の間でYouTubeって図式が本当に一般的になるなら、TV等のコンテンツ事業者にとって本当に脅威になるかもしれない。

中身について 中身について - RunRun Ajax 出張版 を含むブックマーク はてなブックマーク - 中身について - RunRun Ajax 出張版

YouTubeのAPIはこちら。

http://www.youtube.com/dev

トークンを取得すると、RESTで検索できる。現在のAPIでは、ビデオのタグの検索のみなので本家の検索よりヒット数は少ないようだ。

例によって、サーバ側でAPIから取得したXMLをJSONにしてクライアントに渡し、クライアント側でテンプレートを使って画面を構成してるという単純な作り。ビデオの埋め込みembedタグも、テンプレートから展開したものをinnerHTMLに放り込んでるだけで問題なく再生できている。

WiiのOperaはajax通信もテンプレートの展開もストレス無く動作してくれるので、特別意識する必要は無い。Wii用のコンテンツは、とにかく文字やボタンを大きくするだけで、大分使い勝手が向上する。

2006-12-22 wii

wiiのインターネットチャンネル wiiのインターネットチャンネル - RunRun Ajax 出張版 を含むブックマーク はてなブックマーク - wiiのインターネットチャンネル - RunRun Ajax 出張版

DSにくらべて大分PCのOperaに近い。拙作ライブラリも問題なく動作。

ds2chを焼き直してみる。文字とボタンを大きくするだけで、wii用

っぽくなる。

http://wii.wakufactory.jp/2ch/

2006-09-08 ひさびさ更新

DS用2ちゃんねるビュアー DS用2ちゃんねるビュアー - RunRun Ajax 出張版 を含むブックマーク はてなブックマーク - DS用2ちゃんねるビュアー - RunRun Ajax 出張版

ひさびさの更新。ぼちぼちとこんなものを作っていた

テーマは、ニンテンドーDSブラウザー用に、むりやりajaxで特化したwebアプリを作る、というもの。


サーバ側で2ちゃんねるのdatデータを取得したものを、JSONPでクライアント側に非同期に送り、ページの遷移をしている。分割読み込み、分割表示をして、レスポンスを工夫したつもり。UIはスタイラスではなく十字キーでの操作に最適化した。アンカースレや画像直リンのポップアップ表示もある。


結論からいうと、本文をみるだけなら携帯用2chゲートウェイのほうが反応は早い。

サーバからのデータの表示は、jhtmltemplateを使っているがこれもあまり早くない。尤も、単純にボタンクリックでstyleのdisplayを操作するだけのような場合でも、ワンテンポ待たされる感じがあるので、これがDSのOperaの速度限界のような気もする。

しばらく使っていると、メモリ不足で不安定になりそのうち固まる。無駄なデータは持たないようにしているつもりだが、ガベージコレクションのタイミングが不明なので、どこでメモリが無駄遣いされているかいまいちよく分からない。


まあ、ちょっとDSで2ちゃんをチェックするという用途には使えるかな、ってところ。

2006-08-11 JSONPで行こう

JSONPという方法 JSONPという方法 - RunRun Ajax 出張版 を含むブックマーク はてなブックマーク - JSONPという方法 - RunRun Ajax 出張版

DSブラウザーでXMLHttpRequestが使えないので、代替案をどうしようかと思っていたのだが、JSONPというのが注目されているらしい。

JSONPについて - snippets from shinichitomita’s journal

要は、javascriptの外部スクリプト読み込みタグを動的に追加し、その中でコールバック関数を実行させ、結果をJSONで受け取るという方式なのだが、クロスドメインが可能な上に、いくつかのwebサービスで対応を始めているということである。

早速DSブラウザーでも試してみたが、問題なく動作するようなので、フレームワークにJSONPも取り込むことにする。

JSONPライブラリ JSONPライブラリ - RunRun Ajax 出張版 を含むブックマーク はてなブックマーク - JSONPライブラリ - RunRun Ajax 出張版

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クラス側で動的に決めて、複数の非同期通信が同時に起こっても大丈夫なようになっている。

ごく簡単な実働サンプルはこちら


ニンテンドーDSブラウザーでAjax 再び ニンテンドーDSブラウザーでAjax 再び - RunRun Ajax 出張版 を含むブックマーク はてなブックマーク - ニンテンドーDSブラウザーでAjax 再び - RunRun Ajax 出張版

というわけで、上のライブラリを使ってDSブラウザー用に作ってみた。

なんの変哲もないチャットだが、フレームや全体をリロードする通常のcgi式のものに比べて軽いのではないだろうか。

DSブラウザーのように通信速度も画面描画も遅い環境の場合、ajax的アプローチで、通信データと書き換え部分を最小限にするのはかなり有効なはずである。

2006-07-30 ニンテンドーDSブラウザーでAjax

ニンテンドーDSブラウザーでAjax ニンテンドーDSブラウザーでAjax - RunRun Ajax 出張版 を含むブックマーク はてなブックマーク - ニンテンドーDSブラウザーでAjax - RunRun Ajax 出張版

XMLHttpRequestが動かないのでinlineFrame方式で一つ作ってみた。

DS辞書検索

手抜きしてるので、PCのブラウザだとちゃんと表示されない。

単純にiframeの中に検索結果を読み込んでいるだけ。検索のたびにiframから取り出したのを履歴としてページに加えていってる。こんなのをAjaxと言っていいのだろうか。


DSブラウザーの縦長モードではiframeのdisplayやvisibilityが効かないようなので、隠しフレームにするには工夫が要りそう。


辞書の検索は こちら(http://www.btonic.com/ws/)のAPIを利用。SOAPなのだが、サーバ側スクリプトは汚いのでとりあえず公開は無し。

wakufactorywakufactory 2006/08/03 13:27 上記のAPI、デイリーコンサイスの全件検索ができてたのに、試用版で一部しか検索できなくなってます。ヤラレタ。

2006-07-24 DSオペラ

ニンテンドーDSブラウザー ニンテンドーDSブラウザー - RunRun Ajax 出張版 を含むブックマーク はてなブックマーク - ニンテンドーDSブラウザー - RunRun Ajax 出張版

早速検証。XMLHttpRequestは動かないorz。テンプレートライブラリは動いた。

タッチペンのドラッグをマウスのイベントとして取得できなさそうだし、

縦長モードでは、レイアウトを勝手に変換されまくりなので、

UIの構築には独自のノウハウが要りそう・・・・

各種ブラウザ情報のメモ 各種ブラウザ情報のメモ - RunRun Ajax 出張版 を含むブックマーク はてなブックマーク - 各種ブラウザ情報のメモ - RunRun Ajax 出張版

UserAgent=Mozilla/4.0(compatible;MSIE 6.0; Nitro) Opera 8.50[ja]

2画面モード
window.innerWidth = 768
window.innerHeight = 528

縦長モード
window.innerWidth = 256
window.innerHeight = 352

十字キーはカーソルと同じ、AボタンはEnterと同じキーコードが取れる。

その他のポタンは取得できない模様。