私の考えるJavaScript(id:brazil)

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

  • 北海道から登場。
  • アプリにJavaScriptを埋め込む。なんのために。
    • マクロとして使う。
    • 性能と開発効率のバランスをとる。
  • JavaScriptって
  • 埋め込み用に使えるJavaScriptは色々ある。
    • APIの使いやすさでは Rhino >>>>> SpiderMonkey
    • ホスト環境との連携でも Rhino >>>>> SpiderMonkey
    • SpiderMonkeyはCで書いてあるのでポータビリティが高いけど,リフレクションとか無いからホスト環境へのアクセスが限られている。
  • SpiderMonkeyGCはaccurate GC(到達できないオブジェクトはなんらかのタイミングで必ず回収される)
    • いつ回収されるか分からないので必要なオブジェクトはすぐ「使用中」にしないといけない。
    • 他のオブジェクトのプロパティにセットするとか。
  • XPCOM : クロスプラットホームのコンポーネント技術。Netscapeが開発。WindowsLinuxで同じコンポーネントが使える。
  • (この後話はWindowsの深みに潜っていきました)
    • COM
    • スレッド
  • ネイティブコード連携がまだ弱い。XPCOMに期待しているんだけど。

wema3(ふしはらかん)

  • DHHにとんでもないDVDをプレゼントしたとの噂の。
  • wema
    • webの絵馬。画面上に付箋を貼れる。
    • 付箋貼るだけ→移動もできる→結果を保存→付箋の再編集 と進化
    • 線が引けるようになる→1×1ドットのdivの集合だった→無茶苦茶遅い
    • ページの概念
  • wema2
    • 矢印がひける(スタイルシートで実装)
    • 線を引くインターフェースを改善
    • インクリメンタル検索
    • ボタンがアイコンに
    • 4つのWiki記法に対応→かえって混乱
  • wema3
    • Validator.js作ったり
    • drag.js(wemaの暗黒面)作り直したり
    • APIを整備したり
    • XML-RPCでリアルタイム保存したり
    • WIGIWYG ...(なんか違う)
    • 付箋の色によるフィルタリングができるようになったり
    • そんな目標で現在進捗10%。来月(明日じゃん)公開予定。
  • Q&A
    • Q : 使っているライブラリは?
    • A : Script.aculo.us
    • Q : サーバはHaskell
    • A : Rubyです
    • Q : Wema3でJavaSciptの行数が大幅に減ったわけは??
    • A : 10%しかできていないから。あと汎用ライブラリのおかげで無駄が減ったから。

Orto | JavaScriptでJavaVM(小林悠)

  • 「普通逆じゃね?」
  • 昔は「8秒ルール」とかあって,ユーザが飽きないうちにすぐに使えることが重要。かといってHTMLだけでは限界。そこでいろんな技術が登場したx。
  • Ajax
    • ブラウザ互換性が低い。
    • 大規模アプリに向かない。
  • Flash
    • アニメーションにはいいがアプリ開発には向かない。
    • でも最近はFlex2とかある。
  • Javaアプレット
    • ダウンロードと起動に時間がかかる。
    • WindowsだとJavaが入っていないPCも多い。
  • Google Web ToolkitGWT
  • そしてOrta
    • 前からやってる。
    • GWTとはアプローチが異なる。
    • JavaVMをJavaScriptで記述してコンパイルしたバイトコードを直接実行する。
    • Javaとの親和性が高い。
    • スレッドも使える(JavaScriptにはない)。
    • HTMLのdivのidを目印にJava側からアクセスできる。JavaからはPanelというクラスに見える。
    • JavaScriptでスレッド実装するためにwhile(0)の中に大きなswitch文を書いて,ステータスを変えながら細かくreturnするような実装にしている。
  • Q&A
    • Q : 行数は?
    • A : 10,000行ぐらい。
    • Q : GWT は基本的なJavaのライブラリをエミュレートするがOrtaは?
    • A : i-mode用ライブラリていどはエミュレート。

inside LDR (1)(mala)

  • LDRLivedoor Reader)は「APIありき」の実装。まず全APIを先に作り,LDRはそのAPIを使う1クライアント。
  • 例えばBloglinesAPIを公開しているが,それを使ってBloglinesが実装できるわけではなく,開放されていない機能がある。
  • APIが決まっていれば,サーバ側(クローラとかDBチューニングとか)とクライアント側(JavaScriptとか)で分業できる。
  • LDRでは全データをJSONでやりとりする。扱いやすい。小さい。サーバ負荷が低い。
  • Behavior.jsはhtmlロード時にDOMを解析してイベントをフックする。LDRのように画面書き換えが頻繁なアプリでは,そのたびに走りなおすので負荷が大きすぎる。
    • イベントをまとめて捕まえて,イベント元を見て対応する処理を行うようにしている
    • でもそうするとhtmlの書き方に制限が出る
    • onMouseClick= 直書きなどで対応。
  • イベントを割り当てる関数では,戻り値にイベントを削除するクロージャをセットするようにしている。
  • 例外を無視して実行する関数 _try
  • 不特定引数をとれる関数
    • 1つでも複数でも配列でも配列の配列でもOK
    • rubyみたいにflattenして処理する
  • LDRソースコードは別に隠していないので読んで。
  • Q&A

The Ajax Experience 報告(渡辺翔太)

  • アメリカのイベント。ホテルを借り切ってどーん。
  • いま流行り系の人々大集合。Dojo 関連の発表が多いのが意外。
  • Dojo.Storage : ローカルにデータをキャッシュする仕組み。ブラウザを閉じてもデータは失われない。
  • Google Map API : GTileLayer とか GMapType とか使うとカスタマイズした地図を作れる。
  • 「デスクトップアプリのUIに追いつく」
  • 日本人ももっと参加しましょう(4/300人)

Lightening Talk

  • (ちょっと早すぎてついていけなくなってます)
  • ActionScriptクロージャ,継続渡し(久井亨)
    • 継続使うとスタックを消費しないので複雑な処理でもスタックオーバフローを起こさない。
  • イラレJavaScript(dotimpact)
    • イラストレータ10あたりから使える
    • イベント/タイマー/通信意外は何でも使える(バッチ用想定なのでインタラクティブな機能は削除されているらしい)
    • イラレの書類はDOMとして見える
    • おどろき盤」を自動生成。SWFにして動画にもできる。
    • 絵が描けない人に最適。デザイナー女子とも仲良くなれる。
  • GDD(GreaseMonkey Driven Development)(cho45)
    • GMの開発めんどい。
    • どこでも使えるuser.jsを用意しておくと楽になる。
    • install scriptとかしなくていい。
    • ページ移動だけで再実行される(リロードいらない)。
  • Script.aclu.osは遅い?(id:amachang
    • (また髪の毛が立ってます)
    • エフェクト系ライブラリ
    • 名前がいい。カンタン。設計がキレイ。
    • Effect.Base使っておしまいな人多すぎ。
    • イベントハンドリング機能 ; エフェクトの途中(30%完了とか)にイベントをフックできる。
    • Queueを使うと実行順序を制御できる。ボタン連打にも大丈夫なようにできる。
    • 1文字単位にもエフェクトを付けられる。
    • まだまだいけるヨ。
  • cometの実装(id:secondlife
    • サーバプッシュ型のリアルタイム通信を行うもの。
    • xhrのコネクション張りっぱなしで,以降そのコネクションを使いまわすので速い。
    • リアルタイム系のアプリ(チャットとか)に向いている。
    • (その後実装の話。よー分からん)
    • Railsウンコ」
    • Shibuya.jsrubyの話ができてよかった」
  • PHPRubyJavaScriptを動かす(id:nazoking
  • Mochikitid:motemen
  • Server Side JavaScriptの歴史と未来(竹迫良範)
    • (たぶん全部ネタ)
    • (スプーだけはガチ)
  • Live Music Programming with Rhino + JSyn(youpy)
    • (例によって動画(VHS)出品)
    • JavaScriptで音楽流しました。あれはなんの曲? → 教えていただきました。「ボコスカウォーズ」とのこと)