« 2011年6月 | トップページ | 2011年11月 »

2011年10月の3件の投稿

2011.10.30

[P2P]Websocketでブラウザ間P2P通信は実現できるか?

□WebsocketでP2P通信ができるのか?を検討するきっかけ

第2回Websocket勉強会の開催を来年度また開催しようと考えています。今度は自分としても何か講演できるネタがないか少しずつ考えているところです。その一つのネタはWebsocketで実現できること、できないことはなにか?を解説することです。

さてWebsocketはブラウザ等によって双方向な通信を行うプロトコルとなります。Websokcetを使うことによって従来の技術では困難であった、サーバからのPush通信が容易になります。この考え方を拡張し、Websocketを用いてブラウザ間の直接通信を実施すること、すなわちP2P通信の実現を考えることは自然なことです。

ただWebsocketは現在の仕様を見る限りクライアント-サーバ間通信を基本としており、P2P通信を意識したプロトコルとは残念ながら考えにくいことは事実です。それを承知としてP2P通信をWebsocketとしてできるのか、もしできないなら何故なのかを今回思考実験してみます。

また自分が方式検討/開発として関わった050plusを世に出した後、この検討によってP2P、NAT越え技術を改めて振り返る良いきっかけになると考えています。皆様のコメントを是非頂きたいと考えています。

なお、今回は非常にラフな検討ですので(今夜思いついたアイデアをサラっと書いています)後日詳細な分析結果を改めて書きたいと考えています。

*本検討範囲はブラウザ単体で簡単に処理できるWebsocketとJavascriptの組合せまでとします。

□Weboskcetを用いたP2P通信を実現するための課題

Websocketではクライアント-サーバ間で通信する場合、HTTPのようなプロトコルにて通信を行います。P2P通信をする場合、互いの端末(ここでは端末をノードと呼ぶことにしましょう)はクライアントとサーバ機能を両方持つ必要があります。

これを実現するには以下の課題があります。

[課題1]ノード間でTCPによる接続を実現させるための技術が必要
[課題2]課題1を実現した後Websocketレイヤにおいてクライアント-サーバ間のハンドシェイクを実現するための技術が必要

まず課題1についてです。WebsocketはTCPを使う以上、ノード間でTCP接続をする必要があります。ブラウザはHTTPクライアント機能はありますがサーバ機能は一般的にはないため、どのようにしてブラウザにてサーバ機能を実現できるかが大きな課題となります。

残念ながらJavascriptだけではブラウザ間でP2P通信を行うことは2008年当時で困難であることを過去の記事で纏めています。
ブラウザー間直接通信で広がる世界と課題

すなわち、TCPにおけるブラウザ間P2P接続が実現しない限りWebsoketによるP2P通信の実現までたどり着くことはできません。ブラウザ間P2P接続を実現する可能性の一つとしてTCPのNAT越えで利用するTCP hole punchingを使い、お互い同時にTCPのハンドシェイクを開始することによってP2P実現をすることが考えられます。これを実現するにはJavascriptがTCPのsokcetレベルまでコントロールする必要があり、現在のJavascriptの規定を超えています。

仮にNATがない状態においてブラウザ間P2P接続ができたとしても、サーバレスでNAT越えを行うにはTCP hole punchingを使う必要があります。そのため、商用レベルでブラウザ間P2P通信を行うには、どうしてもブラウザにてTCPのsocketレベルでのコントロールが必須と考えられます。

課題1の解決ができた前提で課題2についても説明します。Websokcetではクライアント/サーバの役割がきっちりと明確化しています。仮にTCP hole punchingでブラウザ間P2P通信がうまく行った場合、どちらのノードがクライアントか、サーバかを決定する必要があります。Websocketのハンドシェイク前に独自プロトコルでクライアント/サーバを決定する、あるいはWebsokcetのハンドシェイク信号の受信タイミングによって役割を決定する等が考えられます。(*後者は受信タイミングによって色々なノード状態がありうるので慎重に実装の検討をする必要があります。)

そして課題1、2をクリアしてもWebsocketの実装によってはセキュリティ対策によってP2P通信が抑止される可能性もあります。参考にJavaAppletによってP2P通信を行う場合、このセキュリティ対策を回避するために、ちょっとしたおまじないをする必要があります。

□結論

上記の検討結果を踏まえると現時点でのWebsokcet+Javascirptの仕様においてはブラウザ間P2P通信の実現は困難だと考えられます。

ところで、信学会の研究会において「WebSocketを用いたWebブラウザ間P2P通信の実現とその応用に関する研究」という発表が既に行われています。サマリーを見るとJavascriptを「独自に拡張する」ことによってWebsocketにおけるブラウザ間P2P通信を実現しているようです。まだこの発表内容は未読ですが、どの程度のJavascriptの拡張をしているのか、それは今後仕様として実現できる見込みがある拡張なのか気になります。近々チェックしたいと考えています。

また、ブラウザ間でP2Pを実現することについては、W3Cのワーキンググループとして「Web Real-Time Communications Working Group」が立ち上がっていますので、本記事に興味がある方はこちらの動向をウォッチすると良いでしょう。機会があったらこの手の情報を随時ご紹介します。

websocketを勉強するには「徹底解説 HTML5 APIガイドブック コミュニケーション系API編」をお勧めします。websocketの良書が少ないなか、サンプルプログラミングを含めてwebsocketの特徴をわかりやすく、網羅的に説明しています。


また、websocketに関する資料は私が主催する「websocket勉強会」サイトにもありますので、併せてチェックすると良いでしょう。
http://homepage3.nifty.com/toremoro/study/websocketconf.html

| | コメント (0) | トラックバック (0)

2011.10.19

大人も楽しめる!幼児用学習本「World Almanac for Kids Workbook」の学習効果がスゴい!

我が家の近く(といっても車で30分ぐらいかかります)にコストコがあって、雑貨や食料品を買うのを毎回楽しみにしています。

ところでコストコで洋書が格安で売っていることをご存知でしょうか?
今回紹介する本はコストコでも売っている幼児向け英語学習本「World Almanac for Kids Workbook: Pre-Kindergarten」です。衝動買いだったのですが、子供が進んで勉強するほどの効果がある教材であったこと、意外と知られてない良書なので本Blogで紹介することにします。

この教本の特徴をまず書いてみましょう。

[1]オールフルカラーで絵や文字が大きいので読みやすい!
[2]幼稚園向けの簡単な英語で書かれているので大人も英語の勉強になる!
[3]幼稚園時代に学びたいスキルが効果的に学べる仕掛けが満載!

[3]について補足しましょう。この本は幼児向けの読み物と言うよりも幼児向けの練習ワーク本です。このワークを行うのためには子供に英語の知識は必要ありません。ワークは全て絵で構成されているので、大人が簡単な英語で書かれている本文を訳してあげれば、幼児でも問題を解くことができます。(*英語の話はまた後で書きます。)

問題の一例を書いておきます。


問題1)色々な洋服から夏に着るものを○で囲みましょう。
問題2)色々なペンギンの動作(絵)でありえないものを×で記しましょう。(*ペンギンは飛べないのが正解)
問題3)おたまじゃくしが大人になったらどのような動物になるか、動物の絵とおたまじゃくしを線で結んでみましょう。

この教材は口答で応えるのでなく、実際に鉛筆を使って丸を描いたり線を結んで子供が回答できるのがウリです。実際に子供が鉛筆を使って考え、答えを導いて褒めてあげると、喜びようが期待以上に大きくてびっくりしています。今では子供が自らワークをしているぐらいこの教材を気に入っています。

一問一問のバラエティの豊富さも素晴らしいです。一つ一つの問題を少しずつ変えること、子供が興味を持ちそうな質問をすることで飽きさせない工夫をしています。実はこの本を発刊している企業は子供用図鑑の出版社なのです。毎年子供用イミダスのような学習本を出していて、様々な分野の単語をまとめて覚えられる私のお気に入りの英語学習本の一つです。(*この本の素晴らしさは別途Blogで紹介します。)そのため、子供向けの教え方は得意中の得意の出版社なのです。

なお、本文の英語は中学生レベルの英語ですが、恐竜や動物などあまり学校で習わない単語も相当数あるので大人でも楽しめると思います。値段が安いので多読用にも使えると思います。

今回は3-5歳用の本を紹介しましたが、

【5-6歳用】World Almanac for Kids Workbook: Kindergarten  
【7-8歳用】World Almanac for Kids Workbook: Grade 2

のように子供の学習度合いに応じた教材があります。どちらもコストコには売っていましたので是非チェックしてみてくださいね!

| | コメント (2) | トラックバック (0)

2011.10.16

第3回Twitter研究会講師募集+会場募集のお知らせ(2012年1月開催)

第3回Twitter研究会については、私の稼動がなくて伸び伸びとなっていましたが、
2012年1月中旬~下旬の土日を目処に開催することで進めます。

それに伴い、講師の方/会場の募集を改めて行います。
ご興味のある方はTwitterにて@toremoro21にご連絡願います。

<参考>
第2回Twitter研究会プレゼン資料
第1回Twitter研究会プレゼン資料

□第3回Twitter研究会概要
★開催日:2012年1月中旬~下旬の土または日
★会場:都内周辺を想定
★参加者人数:100名程度
★講演の条件等
-Twitterに関わる講演内容であれば、特にテーマは限定しません。
-事務局によってテーマ内容を調整する可能性があります。
-プレゼン時間は以下のとおりです。(目安、質疑応答含まず)
 ・通常プレゼン:30分程度
 ・ミニプレゼン:15分程度
-特典
 ・講師の方は懇親会費の補助があります。
 ・学生講師の方は懇親会費を全額補助します。
★備考
USTによる中継を予定しています。

講師については自薦・推薦は問いません。

皆様のご応募、よろしくお願い致します。





| | コメント (0) | トラックバック (0)

« 2011年6月 | トップページ | 2011年11月 »