Shibuya.js TECHNICAL TALK #2 リポート
行ってきました。渋谷じゃやらない Shibuya.js。今回は神保町にある IIJ の会議室をお借りしての開催です。IIJ ではエンジニア募集中だそうです。今回の司会は幹事2.0な人。以下レポート。
私の考えるJavaScript(id:brazil)
- 九州から登場。
- 突然ですが夏目漱石。島田雅彦の「漱石を書く」に夏目漱石の使う日本語について言及しているところがある。
- 作者: 島田雅彦
- 出版社/メーカー: 岩波書店
- 発売日: 2002/07/18
- メディア: 新書
- クリック: 4回
- この商品を含むブログ (7件) を見る
- JavaScriptはその日本語に似てる!
- 本居宣長的アプローチでは,日本語をすべて漢字で書く。単言語化してしまうと可能性が失われるのではないか。
- 漱石的アプローチでは,ひらがなカタカナ漢字外来語など多言語の折り合いをつける。豊かなバリエーションがある。これぞJavaScript Wayだ。
- カルヴィーノさんは未来の文学を予測した。
- 作者: イタロカルヴィーノ,Italo Calvino,米川良夫
- 出版社/メーカー: 朝日新聞社
- 発売日: 1999/04
- メディア: 単行本
- 購入: 1人 クリック: 29回
- この商品を含むブログ (30件) を見る
- 「軽さ」「速さ」「正確性」「視覚性」「多様性」「一貫性」
- それってJavaScriptっぽい。
- 文学=プログラミング=言葉のテクノロジー
- JavaScriptのライブラリにはいろいろある。
- いいものもある。わるいものもある。
- いろんなライブラリを混ぜて使いたい。
- グローバル汚染しないのがいいよね。JSAN使うと汚染しない。
- JavaScriptはアメリカの西部時代。日本の明治時代。混沌としている。
JavaScriptインタプリタ(SpiderMonkey)埋め込み(樋口証)
- 北海道から登場。
- アプリにJavaScriptを埋め込む。なんのために。
- マクロとして使う。
- 性能と開発効率のバランスをとる。
- JavaScriptって
- 埋め込み用に使えるJavaScriptは色々ある。
- APIの使いやすさでは Rhino >>>>> SpiderMonkey
- ホスト環境との連携でも Rhino >>>>> SpiderMonkey
- SpiderMonkeyはCで書いてあるのでポータビリティが高いけど,リフレクションとか無いからホスト環境へのアクセスが限られている。
- SpiderMonkeyのGCはaccurate GC(到達できないオブジェクトはなんらかのタイミングで必ず回収される)
- いつ回収されるか分からないので必要なオブジェクトはすぐ「使用中」にしないといけない。
- 他のオブジェクトのプロパティにセットするとか。
- XPCOM : クロスプラットホームのコンポーネント技術。Netscapeが開発。WindowsとLinuxで同じコンポーネントが使える。
- (この後話はWindowsの深みに潜っていきました)
- COM
- スレッド
- ネイティブコード連携がまだ弱い。XPCOMに期待しているんだけど。
wema3(ふしはらかん)
- DHHにとんでもないDVDをプレゼントしたとの噂の。
- wema
- webの絵馬。画面上に付箋を貼れる。
- 付箋貼るだけ→移動もできる→結果を保存→付箋の再編集 と進化
- 線が引けるようになる→1×1ドットのdivの集合だった→無茶苦茶遅い
- ページの概念
- wema2
- wema3
- Q&A
- Q : 使っているライブラリは?
- A : Script.aculo.us
- Q : サーバはHaskell?
- A : Rubyです
- Q : Wema3でJavaSciptの行数が大幅に減ったわけは??
- A : 10%しかできていないから。あと汎用ライブラリのおかげで無駄が減ったから。
Orto | JavaScriptでJavaVM(小林悠)
- 「普通逆じゃね?」
- 昔は「8秒ルール」とかあって,ユーザが飽きないうちにすぐに使えることが重要。かといってHTMLだけでは限界。そこでいろんな技術が登場したx。
- Ajax
- ブラウザ互換性が低い。
- 大規模アプリに向かない。
- Flash
- Javaアプレット
- Google Web Toolkit(GWT)
- 先月登場
- JavaソースコードをJavaScriptソースコードに変換する。
- Googleのいくつかのサービスの構築に使われているらしい。
- そしてOrta
- 前からやってる。
- GWTとはアプローチが異なる。
- JavaVMをJavaScriptで記述してコンパイルしたバイトコードを直接実行する。
- Javaとの親和性が高い。
- スレッドも使える(JavaScriptにはない)。
- HTMLのdivのidを目印にJava側からアクセスできる。JavaからはPanelというクラスに見える。
- JavaScriptでスレッド実装するためにwhile(0)の中に大きなswitch文を書いて,ステータスを変えながら細かくreturnするような実装にしている。
- Q&A
inside LDR (1)(mala)
- LDR(Livedoor Reader)は「APIありき」の実装。まず全APIを先に作り,LDRはそのAPIを使う1クライアント。
- 例えばBloglinesはAPIを公開しているが,それを使ってBloglinesが実装できるわけではなく,開放されていない機能がある。
- APIが決まっていれば,サーバ側(クローラとかDBチューニングとか)とクライアント側(JavaScriptとか)で分業できる。
- LDRでは全データをJSONでやりとりする。扱いやすい。小さい。サーバ負荷が低い。
- Behavior.jsはhtmlロード時にDOMを解析してイベントをフックする。LDRのように画面書き換えが頻繁なアプリでは,そのたびに走りなおすので負荷が大きすぎる。
- イベントをまとめて捕まえて,イベント元を見て対応する処理を行うようにしている
- でもそうするとhtmlの書き方に制限が出る
- onMouseClick= 直書きなどで対応。
- イベントを割り当てる関数では,戻り値にイベントを削除するクロージャをセットするようにしている。
- 例外を無視して実行する関数 _try
- 不特定引数をとれる関数
- 1つでも複数でも配列でも配列の配列でもOK
- rubyみたいにflattenして処理する
- LDRのソースコードは別に隠していないので読んで。
- Q&A
- Q : クライアントは何人で作ってますか?
- A : 一人で。ただしグラフィックデザインは別の人。
Lightening Talk
- (ちょっと早すぎてついていけなくなってます)
- ActionScriptでクロージャ,継続渡し(久井亨)
- 継続使うとスタックを消費しないので複雑な処理でもスタックオーバフローを起こさない。
- イラレでJavaScript(dotimpact)
- 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.jsでrubyの話ができてよかった」
- PHPやRubyでJavaScriptを動かす(id:nazoking)
- PHP用やPerl用やPython用やRuby用にJavaScriptを動かすモジュールがある
- J4P5 : 単純だけど意外と使える。
- Python-Spidermonkey : ちゃんと動かない。プロジェクトとまってる?
- JavaScript::SpiderMonkey : JSとPerlで行き来できる。プロジェクト止まってない。
- Ruby/SpiderMonkey : クラス定義はできないが,その他はいろいろできる。協力者募集中。
- Mochikit(id:motemen)
- 関数言語風のJavaScriptライブラリ
- Server Side JavaScriptの歴史と未来(竹迫良範)
- (たぶん全部ネタ)
- (スプーだけはガチ)
- Live Music Programming with Rhino + JSyn(youpy)
- (例によって動画(VHS)出品)
- (JavaScriptで音楽流しました。あれはなんの曲? → 教えていただきました。「ボコスカウォーズ」とのこと)