このブログの更新は Twitterアカウント @m_hiyama で通知されます。
Follow @m_hiyama

メールでのご連絡は hiyama{at}chimaira{dot}org まで。

はじめてのメールはスパムと判定されることがあります。最初は、信頼されているドメインから差し障りのない文面を送っていただけると、スパムと判定されにくいと思います。

参照用 記事

告知:「Erlang 30% + JavaScript 60% + 未知成分 10%」のセミナーやります

http://d.hatena.ne.jp/m-hiyama/20081120/1227159984 :

全体で90分、質疑応答でだいぶ時間を使ったので、スライドにあることを全部しゃべったわけではありません。特に、後半の Web Communication Channels は簡単なデモをしただけでした。機会があれば、もう少し説明したいと思っています。

「ちゃんと準備をしてから」とか言っていると来年になりそうなので、年内にやります。12月20日(土曜)午後にやります。

内容的には、次のエントリ(時間順)で書きかけになっているようなことです。

申し込みは、subjectに文字列「参加希望」を含めて、hiyama{at}chimaira{dot}org にメールください。本文はなくてもかまいません(あってもいいです)。[追記]檜山が目で見て手で返答するので、処理が遅くなることもあります。ご了承ください。[/追記]

面倒でまだセットしてないのですが、明日とかに有料にしますよ([追記 date="翌日"]やっぱり面倒だー、法律で決められた文面とか必要なのかも。[/追記])。これ、煽りとかじゃなくて、PayPal課金を試したいので、申し込み=PayPal送金 にします。ただし、金額は任意ですけど。

[追記 date="2008-12-12"]結局、申し込みは寄付方式にしました→詳細。あと、メールだけでもOKです。[/追記]

ここから下(続き)は、PTTのときのスライド原稿の一部です。これに沿ってやる気はありませんがやるかもしれません、多少の参考にはなるでしょう。



ことの発端

  • Webアプリケーションとはいうが…
  • 作る(or 作らせる)のはWebサイト所有者
  • ブラウザ利用者はサイトと独立にアプリケーションを作れないの?

ブラウザ上のアプリケーション

  • GUIはHTMLレンダリングエンジン
  • 実装言語はJavaScript
  • ストレージがない
  • 実は自発的に通信もできない
  • Ajaxは?
  • サイトに依存し縛られる

通信機能とストレージ

  • 中立な中継サイトを設けて、できるだけ透過的にブラウザ-ブラウザ通信をサポートする。
  • 永続的なストレージも提供する。
  • クロスドメインHTTP通信が必須
  • 現状、変な方法しかない -- 悲しいがしょうがない
  • 逆方向(サーバー --> ブラウザ)通信も必要 -- COMET
  • 参考: http://d.hatena.ne.jp/m-hiyama/20080528/1211950144

別な動機

  • サーバー側もJavaScriptで書けたらいいじゃない?
  • -- 既にあるけどあんまり流行ってない
  • JavaScriptプログラムがローミングしたら面白いのでは?
  • そりゃ無理でしょ
  • JavaScriptの小さな小さなサブセットくらいなら、、、、
  • この未練は今でも尾を引いている

Erlangがお手本

単に実装言語としてだけでなく、分散モデルも借用。

Erlang WCC
分散ノード ブラウザもノード
プロセス エージェント(動作主体)
PID エージェントID(AID)
メッセージ マイクロ・メッセージ
ターム JSONデータ
gen_server Call RGenic Call
gen_server Cast RGenic Cast

アリモノをツギハギ

100%コンフォーマントはめざしてないが、それでも標準と折り合いを付けるのは大変。用語の混乱やネーミングの理不尽さに泣く、泣く、泣く。

COMET

  • 原理は簡単
  • やってみると、ブラウザごとの挙動の違いに泣く
  • JavaScriptのシングルスレッドにも泣く -- IOブロックとかsleepしてポールとかができない
  • On Demand JavaScript方式(a.k.a JSONP)とCOMETを組み合わせて、なんとか双方向通信、… くっ、苦しい。

COMETは資源を消費する

いっぱいプロセスやスレッドがいるぞーー。が、Erlangなら、、、

Erlangで作って感じたことは

  • たしかに考えやすい、作りやすい
  • 他の言語とものすごく変わるわけではない
  • スレッドのような難しさはない
  • 静的な型概念、型チェックがないのは痛いときもある
  • YAWSというプラットフォームもあることだし、Webアプリケーションには向いているのではないか
  • 逆に、Web的手法がErlangプログラミングに生かせることもある
  • テンプラもよろしくー
  • 500メッセージ/秒くらいはさばけそう
  • フォールトトレランスや実行時コード置き換えは今後
  • 最近やっと「不要なことは書かない」「いさぎよく死ぬ」「一人で死ぬ」が分かってきた。これは、Erlangのポリシーで納得が難しい部分。

アプリケーション

  • ジャンケン大会が最初設定した目標だった
  • 多人数でやるクイズやゲーム
  • 同時アンケート/投票
  • ブラウザ・サーバー(「神社」とか)
  • ブラウザ不在時はスクリプトで動く(と、いいな)

問題

  • クロスドメイン通信とか、技術的基盤があやしい
  • セキュリティ : よくわかんない
  • モラル : これも問題になるかもしれない
  • クラスター構成 : まだやってないので未知
  • 監視 : ライブラリがあれども事例が見つからない