Comet 勉強会

May 28th, 2007

日曜日は Comet 勉強会でドリコムに行ってきた。「勉強会」というものに参加するのは初めて。発表者を会場で決められるほどの層の厚さは、さすがに Comet や Erlang ではきびしめで、自分ももっと勉強しておくとよかったな。

DRECOM Chat に Comet 勉強会の部屋があって、話題になったページはそこに載ってたりします。

ShootingStar

瀧内さんの作っている Rails と組み合わせて使える Comet 実装について。

  • 大量のコネクションをさばけること
  • イベント通知に専念すること
    • 通知されたクライアントが、改めてイベントの内容をサーバーに問い合わせる
  • すぐに使える
    • Rails との組み合わせで便利
    • 「5分でチャット」とか Rails 風マーケもやってみたり
  • Flash 不要
    • Flash は Linux では動かない、と Juggernaut のひとがいってた
    • でもいまは動くらしい
  • クロスドメインで使えて、Web サーバー別に立てられること
    • port は 80
  • イベント通知に専念したのは我ながら良かったと思う
    • イベントの内容は、ふつうの Web アプリケーションと同じかたちで配信しているので、ふつうの Web アプリケーションと同じかたちで負荷軽減とかできる
    • Comet が使えない環境向けにポーリングするものを書くとしても、コードの共通部分が増やせる。
  • C
    • Asteroid: C で Ruby の拡張ライブラリを書いて epoll とか kqueue とか叩いている部分
    • epoll, kqueue は直でさわってもそんなに煩雑ではない
    • libevent はかゆいところに手が届かなかったりする
    • ボトルネックになっている部分から順次 C に書き換えたい
  • マルチスレッド
    • マルチコア時代といっても、IO がからむとそんなに性能向上したりしないのでは
    • 最近の memcached は libevent でマルチスレッドやっているから、読むと良いかも
  • Windows には前から epoll, kqueue みたいな仕組みがある
    • WaitForMultipleObject
    • I/O Completion Ports
  • Safari だめすぎ
    • iframe をちゃんと実装してください
    • ソースは出てるけど、コンパイルしてみると、配布されているバイナリとは微妙に違うものが出来てしまう
  • ShootingStar の今後
    • 大規模実験をしたい
    • 通信路に Flash も使えるように
    • IM 連携
    • Rails 以外への対応
  • ShootingStar は iframe の中に iframe とか作ってるけど、document.domain いじるのではだめ?
    • iframe - iframe だとドメインがまったく一致しなくても動くので自由度が高い。ただ、実際は document.domain でも困らないと思う。

Comet の用途

1時間くらいでは見つからないよねー、というまとめ。個人的にも、所詮は HTTP hack だし Flash ならコネクションはりっぱにできるしで、 FireBug でみて楽しむ以上のものになるか微妙だと思う。

  • Flash なら繋いだままというのを素直に実装できる
  • 更新が単位時間あたりに確実に起こるのであればポーリングすればいい
  • 通知系?
  • ニコニコ動画は、技術的には枯れた方向に向かっている
    • 利用者の裾野が広がっているから
    • 双方向チャンク的なものを使おうと全部実装してから、プロキシにはねられることに気づいて、捨てた
    • ポーリングは更新間隔をあければそのまま負荷が下がるのが良い

Erlang

yamaz さんの Ruby のスレッドと Erlang のプロセスの比較からはじめて、実装のはなしを。yugui さんとか rakuto さんとか、処理系の実装に詳しい人はすごい。

  • Ruby 1.8 系のスレッドは当然のように遅い
  • Erlang ってなんで速いの?
  • Erlang のスケジューラの queue は max, high, normal, low の 4種類
  • 実際のところErlang で何書くよ?
    • Haskell ブームみたいになる? 性能的メリットがあるならそうはならない?
    • ShootingStar の負荷試験クライアントでも書くか

反省会

  • ちゃんと勉強してくる
  • epoll, kqueue の簡単な使い方をやりたい
    • select はダメすぎる。だれだよこれ考えたの。
    • select から epoll, kqueue への移行は O(N) → O(1)
  • 最近の Lighttpd は Linux AIO を使っている
    • Linux AIO を使ってみたら同時接続数が極端に増えたところで kernel が落ちた
  • Comet を使ったアプリケーションやデモをやりたい
  • C やりたい
    • 負荷とか extreme なことになってくると、やっぱり避けられない
    • C はじまったな
  • Message Queue

懇親会

  • ウノウの尾藤さんは熱いひとだった。
  • rakuto さんが同い年だったことに衝撃をうけた。うわわわ。
    • 飲んでるときはなぜか自分が23だと申告していたけど、よく考えたら今年の11月までは22だ
  • 言語は好きなの使わせるよ
    • 言語にそこそこの実績と、書く人が責任をとってくれれば問題ない
    • なんでかといえば、プログラマのモチベーションはとても大事だから
    • 後からプロジェクトにはいってくるひとは、勉強すればいい
  • 実現力重要。コードが書けるけどソフトウェアが書け(か?)ないひとがいる。
    • 研究肌?
    • プロトタイプ書くのは得意とか
    • 8割の部分は2割の力で出来て、残り2割が大変
    • Podcastle Night のときも同じはなしを聞いた。
  • 尾藤さんは研究室の SPARC マシンに Linux いれてた
    • Solaris は良い OS なのに
  • 良い技術者を集めるのは大変
    • ニワンゴの 2ch 採用、ウノウのウノウラボなんかは良い成果が出ている
    • 趣味プログラマはスキル高い
    • 高専も多い
    • 人づてで来る人も強い
  • Web 稲作説
    • 投資と収穫が時期的に分かれていて、最初のうちは赤字を出していたりする。
    • でも米を収穫した金で、ほかのお金にならない植物を植えている会社もあるような。
  • ./configure しないで make して「コンパイルできません ><」ってメーリングリストに投げたことがある

4 Responses to “Comet 勉強会”

  1. masato Says:

    熱いよー 火傷しないように気をつけてねw

  2. rakuto Says:

    いやー俺もこの人(加藤さん)はかなり面白いなぁーって。 これからもよろしくです!!

  3. shachi Says:

    熱い人でした。乙。

  4. kzys (というか加藤) Says:

    みなさんおつかれさまでした。

    やっぱ仕事で負荷さばいているひとと、ソース読んでるひとは強いなー、と思いました。ソースは自分でも読めるので、来月(?)までにはもうちょっと裏の取れたはなしができるようにしておきたいです。