SlideShare a Scribd company logo
WebSocket  +  Node.js
でつくるチャットアプリ
   2011/8/28  第2回  プログラミング勉強会
                kadoppe




               1
⾃自⼰己紹介

!  名前:kadoppe
   !  Twitter  twitter.com/kadoppe
   !  Blog  www.kadoppe.net
!  職業:プログラマ(iOS,  Web,  etc.)
!  HTML5-‐‑‒West.jp  コアメンバー
! about.me/kadoppe

                    2
質問
あなたとWebSocketの関係



       3
◆アジェンダ◆

! WebSocketとは
! WebSocketでできること
! WebSocketでかわること
!  ブラウザ・サーバ対応状況
! WebSocket  +  Node.jsでつくるチャッ
  トアプリ

                4
◆アジェンダ◆

! WebSocketとは
! WebSocketでできること
! WebSocketでかわること
!  ブラウザ・サーバ対応状況
! WebSocket  +  Node.jsでつくるチャッ
  トアプリ

                5
WebSocketとは?

!  Webブラウザ・サーバ間で双⽅方向通信
   を実現するためのプロトコル
!  元々はHTML5の仕様の⼀一部
 !  後に切切り離離されて独⽴立立




              6
双⽅方向通信
!  サーバ・クライアントの両⽅方からデー
   タ送信可能




         双⽅方向通信




           7
プロトコル概要(さらっと)

!  TCPの上で動作(not  HTTP)
 !   ※⽣生のTCPパケットを送信できるわけではない

!  80  or  443番ポートを使⽤用
!  UTF-‐‑‒8の⽂文字列列  or  バイナリデータを送
   信可能
!  Webプロキシを通過可能

                8
◆アジェンダ◆

! WebSocketとは
! WebSocketでできること
! WebSocketでかわること
!  ブラウザ・サーバ対応状況
! WebSocket  +  Node.jsでつくるチャッ
  トアプリ

                9
リアルタイムWebの実現

!  双⽅方向通信により実現
!  リアルタイムWebの例例
   !  チャット
   !  ホワイトボード共有
   !  オンライン格闘ゲーム
   !  ネット電話
   !  テレビ会議
            10
WebSocket  =  リアルタイムWeb
    を実現するための技術




           11
でも・・・



  12
昔からリアルタイムWebって
    あったよね?



      13
◆アジェンダ◆

! WebSocketとは
! WebSocketでできること
! WebSocketでかわること
!  ブラウザ・サーバ対応状況
! WebSocket  +  Node.jsでつくるチャッ
  トアプリ

                14
従来の双⽅方向通信技術

!  代表的なもの
   ! XMLHttpRequestによるPolling
   !  Comet(Long  Polling)
                     ざっくりまとめると



     HTTPを使ってリアルタイムWeb
          を実現する技術


                15
HTTP  vs.  WebSocket



         16
HTTPを使う⽅方式
!  複数のHTTPコネクションを使って通信




        HTTPコネクション




            17
HTTPを使う⽅方式の問題点

!  複数のHTTPコネクションを⽣生成
   !  サーバの負荷が⾼高くなる
   !  トラフィックが増える



 サーバスペック、通信回線が貧弱な環境
 では安定したサービスが提供しにくい


           18
WebSocket
!  単⼀一のTCPコネクションで双⽅方向通信




         TCPコネクション




            19
WebSocketの特徴

!  単⼀一のコネクション上で通信
   !  サーバの負荷が低くなる
   !  トラフィックが減る



 従来よりも効率率率的・安定した双⽅方向通信
       を実現可能!


           20
Demo
! WebSocket  Comparison  with  http  |  Ericsson  Labs  




  http://www.youtube.com/watch?v=Z897fkPn7Rw

                             21
◆アジェンダ◆

! WebSocketとは
! WebSocketでできること
! WebSocketでかわること
!  ブラウザ・サーバ対応状況
! WebSocket  +  Node.jsでつくるチャッ
  トアプリ

                22
WebSocketの標準化

!   The  WebSocket  Protocol
  !   通信プロトコルを定義
  !   IETFにより策定中(2011/7/11  Last  Call)

!   The  WebSocket  API
  !   ブラウザから利利⽤用するJavaScript  APIを定義
  !   W3Cにより策定中



                          23
ブラウザ対応状況  (PC)
プロトコル              IE       Firefox        Chrome   Safari   Opera

 hixie-‐‑‒75                                 4      5.0.0

hixie-‐‑‒76,  
                            4(無効)            6      5.0.1    11(無効)
hybi-‐‑‒00

                                6
 hybi-‐‑‒07
                           (Prefix付き)

                 HTML5  
 hybi-‐‑‒09
                  Labs

 hybi-‐‑‒10                     7
                                             14
(Last  Call)               (Prefix付き)

                            ※プロトコルの各リビジョン間の互換性はない。

                                      24
ブラウザ対応状況  (モバイル)


プロトコル            iOS        Android      BrackBerry

                       デフォルト⾮非対応
hixie-‐‑‒76,  
                 4.2     Firefox  7         OS7
hybi-‐‑‒00
                       Opera  mobile  




                       25
サーバ対応状況
!   Node.js
    ! Socket.io
    !   Node  Websocket  Server  (hybi-‐‑‒00)
    ! WebSocket-‐‑‒Node  (hybi-‐‑‒07,  hybi-‐‑‒09,  hybi-‐‑‒10)
!   Java
    !   Jetty  (hixie-‐‑‒75,  hybi-‐‑‒00,  hybi-‐‑‒07)
    ! CometD
!   PHP
    ! phpwebsocket
!   Python
    ! pywebsocket  (hixie-‐‑‒75,  hybi-‐‑‒00,  hybi-‐‑‒10)
!   その他多数


                                         26
◆アジェンダ◆

! WebSocketとは
! WebSocketでできること
! WebSocketでかわること
!  ブラウザ・サーバ対応状況
! WebSocket  +  Node.jsでつくるチャッ
  トアプリ

                27
技術紹介  
     +  
プチLive  Coding


      28
つくるもの
!  シンプルなチャットアプリ
!  ⽂文字⼊入⼒力力欄
!  Sendボタン
!  チャットログ




               29
つかうもの

!  ブラウザサイド
   !  Google  Chrome  13
   ! jQuery  1.6.1
!  サーバサイド
   ! Node.js  v0.4.10
   !   Express  –  Webフレームワーク


                    30
Node.js

!  サーバサイドJavaScript実装のひとつ
!  GoogleのJavaScriptエンジン「V8」上
   で動作
!  特徴
   !  シングルスレッド
   !  イベントループモデル
   !  ノンブロッキングI/O
              31
構成

!  ブラウザサイド
   ! chat.html
   ! chat.js
!  サーバサイド
   ! app.js



                 32
3パターンつくります
!   パターンA
    !   Node  WebSocket  Server  を使⽤用
    !   素のWebSocket  APIを使ったコーディングが楽しめます

!   パターンB
    ! Socket.IO  を使⽤用
    !   クロスブラウザ対応のリアルタイムWebアプリがとっても簡
        単に作れます

!   パターンC
    !   Pusher  を使⽤用
    ! WebSocketが動作するサーバが⽤用意できない⼈人でも
        WebSocketを使ったWebアプリが公開できます

                    33
お知らせ・おことわり
!   ひな形をベースに書いていきます。
 !   必要なモジュールなどもインストール済

!   詳しい説明は公式ドキュメントにおまかせ!

!   完成版のソースコードはGitHubにおいてあり
    ます。
 https://github.com/kadoppe/html5nado-‐‑‒websocket




                          34
パターンA

!  Node  WebSocket  Server
   ! WebSocket  プロトコルのサーバサイ
     ド実装のひとつ
   ! Node.jsのモジュールとして提供

 http://static.brandedcode.com/nws-‐‑‒docs/




                            35
システム構成


          WebSocket
ブラウザ


   WebSocket            Node  
      API             WebSocket
                       Server




                 36
サーバサイド
!   サーバインスタンスの⽣生成・起動
// モジュール読み込み!
var ws = require(“websocket-server”); !
!
var server = ws.createServer();!
server.listen(80); // 80番ポートで待機!

!   イベントハンドラの登録・データ送信
server.addListener("connection", function(connection){ !
  !connection.addListener("message", function(msg){ !
  ! !// 接続している全クライアントにデータ送信 ! !!
  ! !server.broadcast(msg);!
  !}); !
});!

                          37
ブラウザサイド  (WebSocket  API)

! WebSocketインスタンスの⽣生成
var ws = new WebSocket(“ws://example.com/chat/”);!


!   イベントハンドラの登録
ws.onopen = function() {};!
ws.onclose = function() {};!
ws.onmessage = function() {};!
ws.onerror = function() {};!

!   データ送信・切切断
ws.send(message);!
ws.close();!


                          38
パターンA  開発スタート!



      39
パターンA  開発完了了(?)



       40
気づいたこと

!   対応ブラウザが少ない
    !   IEでは使えない

!   メッセージ受信時のイベントが  onmessage  
    のみ  (WebSocket  API)
 !   メッセージの種類が増えたときにコードの
     分岐が増えそう



               41
パターンB
! Socket.IO
  !  クロスブラウザ環境で双⽅方向通信を実現
     するためのNode.jsモジュール
  !  ブラウザにより通信⽅方式を⾃自動切切替
   !   IE5.5以降降のブラウザに対応
 !  カスタムイベントに対応

 http://socket.io/


                     42
システム構成


             WebSocket
ブラウザ


        Socket.IO    Socket.IO
       クライアント
       ライブラリ




                43
サーバサイド
!   サーバインスタンスの⽣生成・起動
var io = require(‘socket.io’).listen(80)!
!
!
!   イベントハンドラの登録・データ送信
io.sockets.on('connection', function (socket) {

  !socket.on(‘message’, function(message) {!
  ! !// 接続している全クライアントにデータ送信!
  ! !io.sockets.send(message);!
  !});

});!
!



                          44
ブラウザサイド
!   ライブラリの読み込み
<script src="/socket.io/socket.io.js"></script>!
!

! Socket.IOインスタンスの⽣生成
var socket = io.connect(‘ws://example.com’);!


!   イベントハンドラの登録・データ送信
socket.on(’message', function (data) {!
  !// ...

  !socket.send(message);!
});

!
                          45
パターンB  開発スタート!



      46
パターンB  開発完了了(?)



       47
気づいたこと

!  素晴らしい
   !  対応ブラウザが多い
!  でも・・・
   ! WebSocketが使えないサーバ環境も
     存在
  !   例例)Heroku


                  48
パターンC
!   Pusher
    ! WebSocketサーバホスティングサービス
   !   20コネクション、1⽇日10万メッセージまでなら
       無料料
 ! WebSocketが利利⽤用できないブラウザでは
   Flash  Socketに⾃自動切切替
 !   サーバからのPUSH通信のみがWebSocket  

 http://pusher.com/

                      49
システム構成

               WebSocket
       ブラウザ                  Pusher

              クライアント
               ライブラリ


HTTP  POST                      REST  API

                Node.js
                サーバ
                            pusher
                           モジュール
                           (⾮非公式)
                  50
サーバサイド
!   Pusherインスタンスの⽣生成・設定
var Pusher = require('pusher');!
var pusher = new Pusher({!
  !appId: ‘YOUR_APP_ID’, // Pusherアカウントの各種情報!
  !appKey: 'YOUR_APP_KEY',!
  !secret: 'YOUR_APP_SECRET'!
});!
var channel = pusher.channel(‘chat’); // チャンネル設定!
!

!   Pusherへのデータ送信
channel.trigger('message', data);!
!
                        ※  https://github.com/fabrik42/pusher
                              で公開されているモジュールを使⽤用

                            51
ブラウザサイド
!   クライアントライブラリの読み込み
<script src=“http://js.pusherapp.com/1.8/
pusher.min.js"></script>!
!
!   Pusherインスタンスの⽣生成・設定
var pusher = new Pusher(YOUR_APP_KEY);!
var channel = pusher.subscribe('chat');!

!   イベントハンドラの登録
channel.bind('message', function(data) {!
  !//!
});!



                          52
パターンC  開発スタート!



      53
パターンC  開発完了了(?)



       54
気づいたこと

!  ホスティングできるのは魅⼒力力
!  クライアントからのデータ送信に時間
   がかかる
   !  アプリケーションが配備されている
      サーバを⼀一旦を経由するため



           55
まとめ
! WebSocket
  !  リアルタイムWebを実現するためのプ
     ロトコル
  !  従来の⽅方式よりも効率率率的な通信が⾏行行える
! Node.js  +  各種サービス・モジュールを
  使うことで簡単にリアルタイムWebアプ
  リが開発可能
  !  Letʼ’s  try!!

             56
参考資料料

!  The  WebSocket  protocol
 http://tools.ietf.org/html/draft-‐‑‒ietf-‐‑‒hybi-‐‑‒
 thewebsocketprotocol-‐‑‒10


!  The  WebSocket  API
 http://dev.w3.org/html5/websockets/




                                       57
ご清聴ありがとうございました。




      58

More Related Content

What's hot

Η τέχνη της μουσικής
Η τέχνη της μουσικήςΗ τέχνη της μουσικής
Η τέχνη της μουσικής
projects examples
 
Έλληνες Θεοί και Ήρωες πίνακες ζωγραφικής ξένων διάσημων ζωγράφων
Έλληνες Θεοί και Ήρωες πίνακες ζωγραφικής ξένων διάσημων ζωγράφωνΈλληνες Θεοί και Ήρωες πίνακες ζωγραφικής ξένων διάσημων ζωγράφων
Έλληνες Θεοί και Ήρωες πίνακες ζωγραφικής ξένων διάσημων ζωγράφων
Natasa Liri
 
εργατικη πρωτομαγια
εργατικη πρωτομαγιαεργατικη πρωτομαγια
εργατικη πρωτομαγια1odimsxoleio
 
κυκλαδικός μινωικός - μυκηναικός πολιτισμός
κυκλαδικός   μινωικός - μυκηναικός πολιτισμόςκυκλαδικός   μινωικός - μυκηναικός πολιτισμός
κυκλαδικός μινωικός - μυκηναικός πολιτισμός
Denia Chrisopoulou
 
Υπουργική Απόφαση 216/2015 ΦΕΚ 10 Β΄
Υπουργική Απόφαση 216/2015 ΦΕΚ 10 Β΄Υπουργική Απόφαση 216/2015 ΦΕΚ 10 Β΄
Υπουργική Απόφαση 216/2015 ΦΕΚ 10 Β΄
Win to Win - Business Consultants
 
παραδοσιακα επαγγελματα
παραδοσιακα επαγγελματαπαραδοσιακα επαγγελματα
παραδοσιακα επαγγελματαkar_dim
 
ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ 5
ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ 5ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ 5
ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ 5Aggeliki Nikolaou
 
Γιορτή 28ης Οκτωβρίου 2012-2013-3ο Γυμνάσιο Ρεθύμνου
Γιορτή 28ης Οκτωβρίου 2012-2013-3ο Γυμνάσιο ΡεθύμνουΓιορτή 28ης Οκτωβρίου 2012-2013-3ο Γυμνάσιο Ρεθύμνου
Γιορτή 28ης Οκτωβρίου 2012-2013-3ο Γυμνάσιο Ρεθύμνου
thirdgymreth
 
H ιστορια του αυτοκινητου
H ιστορια του αυτοκινητουH ιστορια του αυτοκινητου
H ιστορια του αυτοκινητου
tapaidiatonkaision
 
Βουνά της Θράκης
Βουνά της ΘράκηςΒουνά της Θράκης
Βουνά της ΘράκηςB3class
 
ΠΑΡΑΛΛΗΛΟΙ ΚΥΚΛΟΙ ΚΑΙ ΜΕΣΗΜΒΡΙΝΟΙ
ΠΑΡΑΛΛΗΛΟΙ ΚΥΚΛΟΙ ΚΑΙ ΜΕΣΗΜΒΡΙΝΟΙΠΑΡΑΛΛΗΛΟΙ ΚΥΚΛΟΙ ΚΑΙ ΜΕΣΗΜΒΡΙΝΟΙ
ΠΑΡΑΛΛΗΛΟΙ ΚΥΚΛΟΙ ΚΑΙ ΜΕΣΗΜΒΡΙΝΟΙdimmak27
 

What's hot (13)

Η τέχνη της μουσικής
Η τέχνη της μουσικήςΗ τέχνη της μουσικής
Η τέχνη της μουσικής
 
Έλληνες Θεοί και Ήρωες πίνακες ζωγραφικής ξένων διάσημων ζωγράφων
Έλληνες Θεοί και Ήρωες πίνακες ζωγραφικής ξένων διάσημων ζωγράφωνΈλληνες Θεοί και Ήρωες πίνακες ζωγραφικής ξένων διάσημων ζωγράφων
Έλληνες Θεοί και Ήρωες πίνακες ζωγραφικής ξένων διάσημων ζωγράφων
 
εργατικη πρωτομαγια
εργατικη πρωτομαγιαεργατικη πρωτομαγια
εργατικη πρωτομαγια
 
κυκλαδικός μινωικός - μυκηναικός πολιτισμός
κυκλαδικός   μινωικός - μυκηναικός πολιτισμόςκυκλαδικός   μινωικός - μυκηναικός πολιτισμός
κυκλαδικός μινωικός - μυκηναικός πολιτισμός
 
ινδια
ινδιαινδια
ινδια
 
Υπουργική Απόφαση 216/2015 ΦΕΚ 10 Β΄
Υπουργική Απόφαση 216/2015 ΦΕΚ 10 Β΄Υπουργική Απόφαση 216/2015 ΦΕΚ 10 Β΄
Υπουργική Απόφαση 216/2015 ΦΕΚ 10 Β΄
 
παραδοσιακα επαγγελματα
παραδοσιακα επαγγελματαπαραδοσιακα επαγγελματα
παραδοσιακα επαγγελματα
 
ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ 5
ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ 5ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ 5
ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ 5
 
Karnavali
KarnavaliKarnavali
Karnavali
 
Γιορτή 28ης Οκτωβρίου 2012-2013-3ο Γυμνάσιο Ρεθύμνου
Γιορτή 28ης Οκτωβρίου 2012-2013-3ο Γυμνάσιο ΡεθύμνουΓιορτή 28ης Οκτωβρίου 2012-2013-3ο Γυμνάσιο Ρεθύμνου
Γιορτή 28ης Οκτωβρίου 2012-2013-3ο Γυμνάσιο Ρεθύμνου
 
H ιστορια του αυτοκινητου
H ιστορια του αυτοκινητουH ιστορια του αυτοκινητου
H ιστορια του αυτοκινητου
 
Βουνά της Θράκης
Βουνά της ΘράκηςΒουνά της Θράκης
Βουνά της Θράκης
 
ΠΑΡΑΛΛΗΛΟΙ ΚΥΚΛΟΙ ΚΑΙ ΜΕΣΗΜΒΡΙΝΟΙ
ΠΑΡΑΛΛΗΛΟΙ ΚΥΚΛΟΙ ΚΑΙ ΜΕΣΗΜΒΡΙΝΟΙΠΑΡΑΛΛΗΛΟΙ ΚΥΚΛΟΙ ΚΑΙ ΜΕΣΗΜΒΡΙΝΟΙ
ΠΑΡΑΛΛΗΛΟΙ ΚΥΚΛΟΙ ΚΑΙ ΜΕΣΗΜΒΡΙΝΟΙ
 

Similar to WebSocket + Node.jsでつくるチャットアプリ

SocketStream入門
SocketStream入門SocketStream入門
SocketStream入門
Kohei Kadowaki
 
PlayFramework1.2.4におけるWebSocket
PlayFramework1.2.4におけるWebSocketPlayFramework1.2.4におけるWebSocket
PlayFramework1.2.4におけるWebSocket
Kazuhiro Hara
 
これから利用拡大?WebSocket
これから利用拡大?WebSocketこれから利用拡大?WebSocket
これから利用拡大?WebSocket
AdvancedTechNight
 
クラウドサービスを使って作る動画サイト?
クラウドサービスを使って作る動画サイト?クラウドサービスを使って作る動画サイト?
クラウドサービスを使って作る動画サイト?
Daichi Isami
 
120512 metro styleapp_javascript
120512 metro styleapp_javascript120512 metro styleapp_javascript
120512 metro styleapp_javascriptTakayoshi Tanaka
 
JavaプログラマのためのWebSocket概要
JavaプログラマのためのWebSocket概要JavaプログラマのためのWebSocket概要
JavaプログラマのためのWebSocket概要Shumpei Shiraishi
 
Html5, Web Applications 2
Html5, Web Applications 2Html5, Web Applications 2
Html5, Web Applications 2totty jp
 
Netラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考える
Netラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考えるNetラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考える
Netラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考えるdavid9142
 
websocket-survery
websocket-surverywebsocket-survery
websocket-survery
hogemaru_
 
Webフロントエンド開発の最新トレンド - HTML5, モバイル, オフライン
Webフロントエンド開発の最新トレンド - HTML5, モバイル, オフラインWebフロントエンド開発の最新トレンド - HTML5, モバイル, オフライン
Webフロントエンド開発の最新トレンド - HTML5, モバイル, オフライン
Shumpei Shiraishi
 
HTML5-pronama-study
HTML5-pronama-studyHTML5-pronama-study
HTML5-pronama-study
Naoya Inada
 
Chromebook 「だけ」で WebRTCを動かそう
Chromebook 「だけ」で WebRTCを動かそうChromebook 「だけ」で WebRTCを動かそう
Chromebook 「だけ」で WebRTCを動かそうmganeko
 
Node.jsとAWS入門(Elastic Beanstalk & AWS SDK for Node.js)
Node.jsとAWS入門(Elastic Beanstalk & AWS SDK for Node.js)Node.jsとAWS入門(Elastic Beanstalk & AWS SDK for Node.js)
Node.jsとAWS入門(Elastic Beanstalk & AWS SDK for Node.js)
崇之 清水
 
Vitochaを用いた Jail+VIMAGE Webインターフェイス
Vitochaを用いた Jail+VIMAGE WebインターフェイスVitochaを用いた Jail+VIMAGE Webインターフェイス
Vitochaを用いた Jail+VIMAGE Webインターフェイス
shutingrz
 
Firefox OS and Web server
Firefox OS and Web serverFirefox OS and Web server
Firefox OS and Web server
Tomoaki Konno
 
OSC 2010 Tokyo/Fall MSセッション
OSC 2010 Tokyo/Fall MSセッションOSC 2010 Tokyo/Fall MSセッション
OSC 2010 Tokyo/Fall MSセッション
Masaki Takeda
 
HTML5とWeb開発に関する最新動向
HTML5とWeb開発に関する最新動向HTML5とWeb開発に関する最新動向
HTML5とWeb開発に関する最新動向Shumpei Shiraishi
 
Kilimanjaro Event
Kilimanjaro EventKilimanjaro Event
Kilimanjaro Event
dynamis
 
OSC 2012 Microsoft Session [マイクロソフトの魅せるセンサー×クラウド技術]
OSC 2012 Microsoft Session [マイクロソフトの魅せるセンサー×クラウド技術]OSC 2012 Microsoft Session [マイクロソフトの魅せるセンサー×クラウド技術]
OSC 2012 Microsoft Session [マイクロソフトの魅せるセンサー×クラウド技術]
Aya Tokura
 

Similar to WebSocket + Node.jsでつくるチャットアプリ (20)

AndroidでWebSocket
AndroidでWebSocketAndroidでWebSocket
AndroidでWebSocket
 
SocketStream入門
SocketStream入門SocketStream入門
SocketStream入門
 
PlayFramework1.2.4におけるWebSocket
PlayFramework1.2.4におけるWebSocketPlayFramework1.2.4におけるWebSocket
PlayFramework1.2.4におけるWebSocket
 
これから利用拡大?WebSocket
これから利用拡大?WebSocketこれから利用拡大?WebSocket
これから利用拡大?WebSocket
 
クラウドサービスを使って作る動画サイト?
クラウドサービスを使って作る動画サイト?クラウドサービスを使って作る動画サイト?
クラウドサービスを使って作る動画サイト?
 
120512 metro styleapp_javascript
120512 metro styleapp_javascript120512 metro styleapp_javascript
120512 metro styleapp_javascript
 
JavaプログラマのためのWebSocket概要
JavaプログラマのためのWebSocket概要JavaプログラマのためのWebSocket概要
JavaプログラマのためのWebSocket概要
 
Html5, Web Applications 2
Html5, Web Applications 2Html5, Web Applications 2
Html5, Web Applications 2
 
Netラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考える
Netラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考えるNetラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考える
Netラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考える
 
websocket-survery
websocket-surverywebsocket-survery
websocket-survery
 
Webフロントエンド開発の最新トレンド - HTML5, モバイル, オフライン
Webフロントエンド開発の最新トレンド - HTML5, モバイル, オフラインWebフロントエンド開発の最新トレンド - HTML5, モバイル, オフライン
Webフロントエンド開発の最新トレンド - HTML5, モバイル, オフライン
 
HTML5-pronama-study
HTML5-pronama-studyHTML5-pronama-study
HTML5-pronama-study
 
Chromebook 「だけ」で WebRTCを動かそう
Chromebook 「だけ」で WebRTCを動かそうChromebook 「だけ」で WebRTCを動かそう
Chromebook 「だけ」で WebRTCを動かそう
 
Node.jsとAWS入門(Elastic Beanstalk & AWS SDK for Node.js)
Node.jsとAWS入門(Elastic Beanstalk & AWS SDK for Node.js)Node.jsとAWS入門(Elastic Beanstalk & AWS SDK for Node.js)
Node.jsとAWS入門(Elastic Beanstalk & AWS SDK for Node.js)
 
Vitochaを用いた Jail+VIMAGE Webインターフェイス
Vitochaを用いた Jail+VIMAGE WebインターフェイスVitochaを用いた Jail+VIMAGE Webインターフェイス
Vitochaを用いた Jail+VIMAGE Webインターフェイス
 
Firefox OS and Web server
Firefox OS and Web serverFirefox OS and Web server
Firefox OS and Web server
 
OSC 2010 Tokyo/Fall MSセッション
OSC 2010 Tokyo/Fall MSセッションOSC 2010 Tokyo/Fall MSセッション
OSC 2010 Tokyo/Fall MSセッション
 
HTML5とWeb開発に関する最新動向
HTML5とWeb開発に関する最新動向HTML5とWeb開発に関する最新動向
HTML5とWeb開発に関する最新動向
 
Kilimanjaro Event
Kilimanjaro EventKilimanjaro Event
Kilimanjaro Event
 
OSC 2012 Microsoft Session [マイクロソフトの魅せるセンサー×クラウド技術]
OSC 2012 Microsoft Session [マイクロソフトの魅せるセンサー×クラウド技術]OSC 2012 Microsoft Session [マイクロソフトの魅せるセンサー×クラウド技術]
OSC 2012 Microsoft Session [マイクロソフトの魅せるセンサー×クラウド技術]
 

More from Kohei Kadowaki

Pebble + JavaScriptでつくるスマートウォッチアプリ
Pebble + JavaScriptでつくるスマートウォッチアプリPebble + JavaScriptでつくるスマートウォッチアプリ
Pebble + JavaScriptでつくるスマートウォッチアプリ
Kohei Kadowaki
 
Firefox OSでSVGをつかってみた
Firefox OSでSVGをつかってみたFirefox OSでSVGをつかってみた
Firefox OSでSVGをつかってみた
Kohei Kadowaki
 
Inline SVG - トラブルとその対策
Inline SVG - トラブルとその対策Inline SVG - トラブルとその対策
Inline SVG - トラブルとその対策
Kohei Kadowaki
 
Webでもできるデータビジュアライゼーション
WebでもできるデータビジュアライゼーションWebでもできるデータビジュアライゼーション
Webでもできるデータビジュアライゼーション
Kohei Kadowaki
 
いまさら聞けない!?Backbone.js 超入門
いまさら聞けない!?Backbone.js 超入門いまさら聞けない!?Backbone.js 超入門
いまさら聞けない!?Backbone.js 超入門
Kohei Kadowaki
 
D3.js と SVG によるデータビジュアライゼーション
D3.js と SVG によるデータビジュアライゼーションD3.js と SVG によるデータビジュアライゼーション
D3.js と SVG によるデータビジュアライゼーション
Kohei Kadowaki
 
プログラマーのお仕事
プログラマーのお仕事プログラマーのお仕事
プログラマーのお仕事
Kohei Kadowaki
 
5分でわかる?Backbone.js ことはじめ
5分でわかる?Backbone.js ことはじめ5分でわかる?Backbone.js ことはじめ
5分でわかる?Backbone.js ことはじめ
Kohei Kadowaki
 
SVGでつくるインタラクティブWebアプリケーション
SVGでつくるインタラクティブWebアプリケーションSVGでつくるインタラクティブWebアプリケーション
SVGでつくるインタラクティブWebアプリケーション
Kohei Kadowaki
 
UnityでつくるはじめてのPONG
UnityでつくるはじめてのPONGUnityでつくるはじめてのPONG
UnityでつくるはじめてのPONG
Kohei Kadowaki
 
インラインSVGをつかって地図っぽいものをつくってみる
インラインSVGをつかって地図っぽいものをつくってみるインラインSVGをつかって地図っぽいものをつくってみる
インラインSVGをつかって地図っぽいものをつくってみる
Kohei Kadowaki
 
ShareWisをFirefoxで動かすためのSVG的とりくみ
ShareWisをFirefoxで動かすためのSVG的とりくみShareWisをFirefoxで動かすためのSVG的とりくみ
ShareWisをFirefoxで動かすためのSVG的とりくみ
Kohei Kadowaki
 
d3jsではじめるデータビジュアライゼーション入門
d3jsではじめるデータビジュアライゼーション入門d3jsではじめるデータビジュアライゼーション入門
d3jsではじめるデータビジュアライゼーション入門
Kohei Kadowaki
 
ゲーム開発初心者の僕がUnity + WebSocketで何か作ってみた
ゲーム開発初心者の僕がUnity + WebSocketで何か作ってみたゲーム開発初心者の僕がUnity + WebSocketで何か作ってみた
ゲーム開発初心者の僕がUnity + WebSocketで何か作ってみた
Kohei Kadowaki
 
WebSocketことはじめ
WebSocketことはじめWebSocketことはじめ
WebSocketことはじめ
Kohei Kadowaki
 

More from Kohei Kadowaki (15)

Pebble + JavaScriptでつくるスマートウォッチアプリ
Pebble + JavaScriptでつくるスマートウォッチアプリPebble + JavaScriptでつくるスマートウォッチアプリ
Pebble + JavaScriptでつくるスマートウォッチアプリ
 
Firefox OSでSVGをつかってみた
Firefox OSでSVGをつかってみたFirefox OSでSVGをつかってみた
Firefox OSでSVGをつかってみた
 
Inline SVG - トラブルとその対策
Inline SVG - トラブルとその対策Inline SVG - トラブルとその対策
Inline SVG - トラブルとその対策
 
Webでもできるデータビジュアライゼーション
WebでもできるデータビジュアライゼーションWebでもできるデータビジュアライゼーション
Webでもできるデータビジュアライゼーション
 
いまさら聞けない!?Backbone.js 超入門
いまさら聞けない!?Backbone.js 超入門いまさら聞けない!?Backbone.js 超入門
いまさら聞けない!?Backbone.js 超入門
 
D3.js と SVG によるデータビジュアライゼーション
D3.js と SVG によるデータビジュアライゼーションD3.js と SVG によるデータビジュアライゼーション
D3.js と SVG によるデータビジュアライゼーション
 
プログラマーのお仕事
プログラマーのお仕事プログラマーのお仕事
プログラマーのお仕事
 
5分でわかる?Backbone.js ことはじめ
5分でわかる?Backbone.js ことはじめ5分でわかる?Backbone.js ことはじめ
5分でわかる?Backbone.js ことはじめ
 
SVGでつくるインタラクティブWebアプリケーション
SVGでつくるインタラクティブWebアプリケーションSVGでつくるインタラクティブWebアプリケーション
SVGでつくるインタラクティブWebアプリケーション
 
UnityでつくるはじめてのPONG
UnityでつくるはじめてのPONGUnityでつくるはじめてのPONG
UnityでつくるはじめてのPONG
 
インラインSVGをつかって地図っぽいものをつくってみる
インラインSVGをつかって地図っぽいものをつくってみるインラインSVGをつかって地図っぽいものをつくってみる
インラインSVGをつかって地図っぽいものをつくってみる
 
ShareWisをFirefoxで動かすためのSVG的とりくみ
ShareWisをFirefoxで動かすためのSVG的とりくみShareWisをFirefoxで動かすためのSVG的とりくみ
ShareWisをFirefoxで動かすためのSVG的とりくみ
 
d3jsではじめるデータビジュアライゼーション入門
d3jsではじめるデータビジュアライゼーション入門d3jsではじめるデータビジュアライゼーション入門
d3jsではじめるデータビジュアライゼーション入門
 
ゲーム開発初心者の僕がUnity + WebSocketで何か作ってみた
ゲーム開発初心者の僕がUnity + WebSocketで何か作ってみたゲーム開発初心者の僕がUnity + WebSocketで何か作ってみた
ゲーム開発初心者の僕がUnity + WebSocketで何か作ってみた
 
WebSocketことはじめ
WebSocketことはじめWebSocketことはじめ
WebSocketことはじめ
 

Recently uploaded

キンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援します
キンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援しますキンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援します
キンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援します
Takayuki Nakayama
 
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさJSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
0207sukipio
 
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
Toru Tamaki
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
CRI Japan, Inc.
 
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
Toru Tamaki
 
Generating Automatic Feedback on UI Mockups with Large Language Models
Generating Automatic Feedback on UI Mockups with Large Language ModelsGenerating Automatic Feedback on UI Mockups with Large Language Models
Generating Automatic Feedback on UI Mockups with Large Language Models
harmonylab
 
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
t m
 
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
Matsushita Laboratory
 
This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.
chiefujita1
 

Recently uploaded (9)

キンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援します
キンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援しますキンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援します
キンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援します
 
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさJSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
 
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
論文紹介:When Visual Prompt Tuning Meets Source-Free Domain Adaptive Semantic Seg...
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
 
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
 
Generating Automatic Feedback on UI Mockups with Large Language Models
Generating Automatic Feedback on UI Mockups with Large Language ModelsGenerating Automatic Feedback on UI Mockups with Large Language Models
Generating Automatic Feedback on UI Mockups with Large Language Models
 
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
 
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
 
This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.
 

WebSocket + Node.jsでつくるチャットアプリ