Shibuya.js Technical Talk #2

July 1st, 2006

Shibuya.js の Technical Talk #2 に行ってきました。

コカ・コーラCMソング集 1962-89

とにかく brazil さんが素晴らしかった。内容は Ruby の高橋さんの「Ruby はバベル17言語」と同じ系統で、それ単体でも十分面白いんだけど、スライドのデザインが Tom Peters! って感じでかっこよすぎ。デザイン重要だ。

私の考える JavaScript

  • 複数の言語文化を背景にもつ JavaScript は、同じく複数の言語文化を背景にもつ夏目漱石、あるいは日本語に学べるところがある。
    • 本居宣長: 複数の言語を、どれかの方向に統一する
    • 夏目漱石: 複数の言語を、ばらばらのまま扱う
  • ばらばらのまま扱うのは、大変だけどエキサイティングなはず。
  • Perl, Python, Ruby を正妻に、JavaScript を恋人にするのではなく、すべての言語を恋人にするべき。
  • 恋人のコレクションは、言語のコレクションで、それは表現のコレクションになる。
  • JavaScript は場である。スタイルが無いのが JavaScript Way である。バリエーションが可能性を保証する。
  • JSAN のようなモジュール化は大切。
  • $ 関数のような愛称をライブラリの中で使うべきではない。社内で愛称で呼び合うのはダメな社内恋愛。社内ではフルネームで呼び合うのが大人。
  • グローバルな名前空間をクリーンに保つことが、言語を Mixable に保ち、それがバリエーションにつながる。

JavaScript インタプリタ (SpiderMonkey) 埋め込み

  • JavaScript は C な Lisp だ。
  • SpiderMonkey。Mozilla 由来で、低レベルな C API のみを提供。
    • 連携や API でいうと Rhino が優秀。
  • GC が accumulate GC。保守的な GC ではないので、C 側で生成したオブジェクトも、放っておくと回収されちゃって SEGV る。
  • accumulate じゃなくて accurate GC でした。
  • ドキュメントがあんまり揃っていない。
  • 連携は弱い。XPCOM も面倒。最近は OpenOffice.org の UNO に注目。

wema3

  • wema の歴史。
  • wema3 は現在進捗状況10%。
  • JSON でやりとりするようにした。サーバー側は Perl, Ruby, Haskell で3つ書くかも。
  • JavaScript もライブラリが整備されてきたので、wema3 のコード量はかなり減ってきている。
  • 壁紙が本当にプリキュアだった。オリジナルじゃなくて、二次創作イラストなのがさらにガチっぽい。dnbkktkr!
  • 20060630 Shibuya.JS Technical Talk #2 の写真を見たらプリキュアじゃなかった。まちがい。

JavaScript で Java VM

  • Orto という JavaScript で書いた Java VM を、わりと前から作っています。
  • Web で8秒以上ひとを待たせてはダメ。
  • Ajax は実行環境がバラバラすぎ。Flash はアプリケーションを書くには向かない。Java は起動が遅い。
  • Java→JavaScript って意味では Google の GWT に似てるけど、Orto はバイトコードレベルまで降りてる。
  • コード量は一万行くらい。
  • J2ME/CLDC の MIDP のクラスを実装してる。
  • 多倍長演算ができていないので、だれか助けてください。

Inside LDR (1)

  • MacBook 黒 + Safari だった。
  • LDR は API ありき。全機能に API からアクセスできる。サーバーとのやりとりは JSON。
  • 関数型言語っぽい Template がある。
  • updater で id と 関数をむすびつけて、update でそれを実行するような仕組みがある。id は正規表現で指定できる。
  • body だけにイベントハンドラをつけて、イベントが起きてからイベントハンドラ検索がはしるようになっている。
  • ユーザーが読む可能性があるものはとにかく先読みしてキャッシュ。待ち時間ゼロを実現。
  • Function.prototype
    • Function.prototype.later: あとで実行
    • Function.prototype._try: エラーを無視
    • Function.prototype.forEachArgs: 可変個引数の受け渡しを楽に
  • LDR は難読化してない。ソースに全部書いてあるので、読みましょう。

The Ajax Experience 報告

  • Ajaxian のひとがやってるカンファレンス。高い。日本人が4人しかいなかった。
  • Dojo が流行っていた。
  • dojo.storage: ブラウザ側にデータ保存。ローカルキャッシュなんかもできる。
  • Flash との連携系は要注目。socket.js とか。

Lightning Talks

ActionScript でクロージャ、継続渡し

  • 継続: show(func(x)) を func(x, show) みたいな感じにする。
  • 深い再帰→表示みたいなものを、段階的に表示できるので、ユーザービリティもあがるよ。

イラレで JavaScript

  • Adobe Illustrator は JavaScript で操作できる上に、JavaScript に濃い拡張がされてて、include, import, 演算子の override なんかができる。
  • おどろき盤を遺伝的アルゴリズムで自動生成して、さらに Flash を吐いたりなんてこともできる。
  • あとデザイナー系女子モテ。

GDD - GreaseMonkey Driven Development

  • Greasemonkey のエディタはちゃんと設定しましょう。
  • @include * な test.user.js というファイルを作っておいて、エディタで開きっぱなしで Web ブラウズ。不満があった時点で書き始めると良い。

Script.acluo.us は遅い?

  • 「高速」でぐぐると二位らしい。
  • できあいのエフェクトだけで満足するな。その先が面白いよ。
  • イベントハンドル、変化率を関数で指定、エフェクトの合成、ScopedQueue。

Comet の実装

  • 英語の発音が苦手なはてのさん。
  • connection ひとつだけはりっぱで、sever-side push する。
  • 応答性がとてもよいアプリケーションができる。
  • 実装方法はいくつかある
    • long poll: XMLHttpRequest つなぎっぱ。
    • iframe: iframe に window.parent をいじる script を流しこむ。
    • x-mixed-replace: Netscape 由来で Gecko 系のみで使える。XMLHttpRequest#multipart で指定。

J4P5 - PHP5 で JavaScript を動かす

  • JavaScript で実装して、サーバーサイドの言語で実装し直すのは面倒。
  • 実装
    • php-js: SpiderMonkey ベース。文字列経由の API しかない。
    • J4PS: PHP で書いた JavaScript のインタプリタ。プロジェクトが死んでるっぽい。
    • python-spidermonkey: SpiderMonkey ベース。Python のクラスを JS 側に流し込める。プロジェクトが死んでるっぽい。
    • JavaScript::SpiderMonkey: Perl。良さげだし生きてる。
    • Ruby-JS: NGS JavaScript Interpreter なのが嫌。
    • Ruby-SpiderMonkey: いまつくってます。
  • プロジェクト死にすぎ。

MochiKit

  • 関数型言語かぶれにおすすめ。
  • 小分けにモジュール化されてる。全体をモテ非モテでならべると、どちらかといえば非モテよりの機能を紹介します。
  • 関数型言語っぽいのや、DOM 関数。シグナルをつかったイベントハンドリングなんかができるよ。

Server Side JavaScript の歴史と未来

  • LT の時間にあんなにスプーの画像を用意して竹迫さんは何をするつもりだったんだろう。
  • Server Side JavaScript は実は商用になってるようなやつがいろいろあるよ。
  • Ajaja というのを今作っています。

Live Music Programming with Rhino + JSyn

  • 前回は無音だったけど、今回は音がメインで画面は Terminal.app。
  • VHS の音声を会場全体に出力できなかったみたいで、nagayama さんが発表用のマイクで音を拾っていた。youpy さんの VHS へのこだわりは異常。