公開中のBRAVIA用アプリ一覧

リリースしてから1年ほど経過していたtvitterですが、先日の更新がきっかけか少し話題になっているみたいですね。便乗して公開中のBRAVIA用アプリを改めて紹介。

neltv - BRAVIAで動く2ちゃんねるのTV番組実況ビューア


個人的には最も使用頻度の高いアプリです。
視聴中のTV番組の2ch実況をひたすら表示するのですが、その高速&無秩序なレスっぷりにテレビの視聴体験が激変します(大げさ)。
こちらのエントリにデモ動画があります。


tvitter - BRAVIAで動くtwitterクライアント


twitterのつぶやきを閲覧・投稿できるアプリです。
白状するとあまりアクティブなtwitterユーザではないので、作ったものの自分ではあまり使ってなかったりします...


AnySearch - BRAVIAのWeb検索フロントエンド


Google、Yahooなどいろいろな検索エンジンでキーワード検索するアプリです。
アプリキャスト本家の投稿ページのランキングでは公開以来3位以内をキープしています。

BRAVIAで動くtwitterクライアント『tvitter』

今日はBRAVIAで動くtwitterクライアントの紹介です。

tvitter

テレビを見ながらにして、つぶやきを見たり投稿することが可能です。


ずいぶん前にリリースしたものですが、よくエラーになってしまうという致命的なバグを最近になって修正しました。

よろしければどうぞ!

アプリキャストのタイマの持つ致命的な欠点 + その解決策

アプリキャストのタイマ関数は以下のような問題を抱えています。

  • コールバックにグローバル関数しか指定できない*1。このためタイマを使うたびに名前空間が汚染され、またクロージャが使えません。
  • 同時に3つ以上のタイマを設定できない。多少複雑なプログラムではタイマが3つでは不足しがちです。そうでなくても、「今タイマ何個使ってたっけ?」と意識しながらプログラミングしなければいけないのは、ストレス以外の何ものでもありません。

aclibでは、これらの問題を解消するために独自のタイマ関数を用意しています。

*1:グローバル関数以外を指定すると「setting timer with anonymous function is not allowed.」というエラーが出ますが、単に関数に名前をつけるだけではダメで、グローバル関数である必要があるようです

続きを読む

aclibでアプリキャストのノード操作を100倍高速化する

アプリキャストでは、getPosX()、 getW()、などノードの属性値を取得する関数がめっぽう遅いです。

// ベンチマーク
function bench(f) {
  var d = Date.now();
  for (var i = 0; i < 100; i++) f();
  print(f.name + ' -> ' + (Date.now() - d) + ' msec');
}

var node = getNode('foo');
bench(function getPosX1() { getPosX(node); });
bench(function setPosX1() { setPosX(node, 10); });
// 結果
getPosX1 -> 1563 msec
setPosX1 -> 16 msec

get系がset系に比べてめちゃくちゃ遅いことがわかります。
上記はエミュレータでの計測結果ですが、実際のTVでも同じくらい遅いです。


aclibのNodeオブジェクトでは、

続きを読む

aclibでアプリキャストのノード操作をオブジェクト指向にする

aclibを使うと、アプリキャストでのノード操作をオブジェクト指向にすることができます。

// 標準的な記述
var node = getNode("foo");
setW(node, 100);
setPosX(node, getPosX(node) + 10);
setVisible(node, bar == 0 ? 1 : 0);
setStr(node, "bar");

// 上と同じことをaclibを使ってオブジェクト指向で記述する
var node = new Node(getNode("foo"));
node.w = 100;
node.x += 10;
node.visible = bar == 0;
node.str = "bar";

Nodeクラスを使用するには、aclibのうち、base.jsnode.jsをincludeする必要があります。

ちなみにaclibのNodeクラスにはもうひとつ大きな特徴があるのですが、それはまた次回説明します。