SlideShare a Scribd company logo
たのしいnode.js

イベントドリブンの世界
ある日のkanpou_さん
12/04の私
• いいネタがない
 – クラウドとはなんだったのか
 – 「伽藍とバザール」「UNIXという考え方」
 – 投資のやりかた
         ・・・ピンとこない

• じゃあネタを借りよう! ⇒ node.js
        node.jsという環境
特にイベントドリブン・非同期I/Oを知ってもらおう!
おもいっきり技術志向です。

残念ながら楽しげなスライドになりませんでした。
node.jsとは?
• サーバーサイドJavaScript環境
  – Ruby, Python, perl   ⇔   (node.js & JavaScript)
• 特長
  – 単一プロセス、単一スレッド
  – イベントドリブン・非同期I/O
  – C10K問題クリア


• 続きはWebで!http://nodejs.org/
何がうれしいのか
• みんな大好きJavaScript
  – Google Chrome V8 JavaScript Engine
     • C言語より高速なJavaScriptによるバイナリ操作が話題 « A-
       Listers http://tech.a-listers.jp/2012/10/10/faster-than-c/
  – YUIも    jQueryも

• ネットワークプログラム(含Web)が超ラク
  – ソケット処理はライブラリ丸投げ
  – イベントドリブン

• (うまく書けば)高パフォーマンス
  – 非同期I/O前提の環境: CPU Idleを活用
Echo Server

var net = require(‘net’);

var srv = net.createServer(function (sock) {
  sock.on(‘data’, function (buf, err) {
    sock.write(buf);
  });
});
srv.listen(4050); //TCP port 4050

                             イベント
                            コールバック
イベントドリブンとは
 • 並列プログラミングモデル
   – 内部状態の通知によってプログラムが動く
   – 同時に動いているプログラムは1つ
 手続き型・同期I/O                     イベントドリブ
 ン・非同期I/O

          ファイルを読み込む             ファイルを読み込む


                                            裏方が
  待ってる                  別の作業
                                             仕事

          読み込みおわった              読み込みおわった


読んだファイル               読んだファイル
に対する作業                に対する作業
非同期I/O
var fs = require(‘fs’);

//’/to/a’, ‘/to/b’は同時に読み込まれる
//タイマー等他イベントは読み込みが完了してなくても処理
される
fs.readFile(‘/to/a’, function (err, data) {
  //読み込んだ結果を表示
  console.log(data);
});
fs.readFile(‘/to/b’, function (err, data) {
  //読み込んだ結果を表示
  console.log(data);
});
ライブラリ
• Web Framework
  – Express
• Middleware
  – RDB, NoSQL(CouchDB, MongoDB, Redis),
    Memcached, AMQP
• Template Engine
  – ejs, Jade
• Real-Time Web(Comet, WebSocket)
  – socket.io
使用例
• Web GUIを持つTVサーバ
                主な仕事
                1.   チューナから映像が来たら:
                     • UDPでストリーミング
                2.   Webサーバにアクセスされた
                     ら:
                     • Webページを返す
                3.   チャネルを選ばれたら:
                     • 切り替える
使用例
• Web GUIを持つTVサーバ
  従来型(マルチスレッ      イベントドリブン 非同期
       ド)         I/O 暇
  (ストリーミングスレッ            映像がきた
  映像がきた 映像待ち
       ド)
                         ストリーミング
  ストリーミング
         送信中
                    暇
                        WebAPIチャネル変更
  映像くれ
                 チャネル
         映像待ち           Webレスポンス
                  変更
同期ロック,スレッドセー
フ,ワークメモリ・・・
うれしくないこと
1. CPUが早くなるわけじゃない
 – あたりまえ
 – ほとんどがCPU処理のアプリにはあまり意味無し

2. イベントドリブン・非同期I/Oへの慣れ
 – 人間は仕事を直列な手続きとして考えたがる
 – どんなスケーラブル・プログラミングモデルに慣れ
   るか?

3. シングルスレッドなのでマルチコアが使えない
 – ミドルウェアによるクラスタ化
   • (memcacheによる共有メモリ,RedisやRabbitMQによるPub/Sub)

More Related Content

What's hot

TypeScriptへの入口
TypeScriptへの入口TypeScriptへの入口
TypeScriptへの入口
Sunao Tomita
 
イベント駆動プログラミングとI/O多重化
イベント駆動プログラミングとI/O多重化イベント駆動プログラミングとI/O多重化
イベント駆動プログラミングとI/O多重化
Gosuke Miyashita
 
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭するCEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
Yoshifumi Kawai
 
Observable Everywhere - Rxの原則とUniRxにみるデータソースの見つけ方
Observable Everywhere  - Rxの原則とUniRxにみるデータソースの見つけ方Observable Everywhere  - Rxの原則とUniRxにみるデータソースの見つけ方
Observable Everywhere - Rxの原則とUniRxにみるデータソースの見つけ方Yoshifumi Kawai
 
Sails.jsのメリット・デメリット
Sails.jsのメリット・デメリットSails.jsのメリット・デメリット
Sails.jsのメリット・デメリット
Ito Kohta
 
なかったらINSERTしたいし、あるならロック取りたいやん?
なかったらINSERTしたいし、あるならロック取りたいやん?なかったらINSERTしたいし、あるならロック取りたいやん?
なかったらINSERTしたいし、あるならロック取りたいやん?
ichirin2501
 
Nodejs
NodejsNodejs
C#次世代非同期処理概観 - Task vs Reactive Extensions
C#次世代非同期処理概観 - Task vs Reactive ExtensionsC#次世代非同期処理概観 - Task vs Reactive Extensions
C#次世代非同期処理概観 - Task vs Reactive Extensions
Yoshifumi Kawai
 
Study Swift
Study Swift Study Swift
Study Swift
Akihiro Urushihara
 
Reactive Extensionsで非同期処理を簡単に
Reactive Extensionsで非同期処理を簡単にReactive Extensionsで非同期処理を簡単に
Reactive Extensionsで非同期処理を簡単に
Yoshifumi Kawai
 
Node native ext
Node native extNode native ext
Node native ext
裕士 常田
 
lazy var の特徴を知る #cocoa_kansai #cswift
lazy var の特徴を知る #cocoa_kansai #cswiftlazy var の特徴を知る #cocoa_kansai #cswift
lazy var の特徴を知る #cocoa_kansai #cswift
Tomohiro Kumagai
 
Ember コミュニティとわたし
Ember コミュニティとわたしEmber コミュニティとわたし
Ember コミュニティとわたし
Ryunosuke SATO
 
SlackのIncomingWebhooksとOutgoingWebhooksを使って電子工作と連携させてみよう
SlackのIncomingWebhooksとOutgoingWebhooksを使って電子工作と連携させてみようSlackのIncomingWebhooksとOutgoingWebhooksを使って電子工作と連携させてみよう
SlackのIncomingWebhooksとOutgoingWebhooksを使って電子工作と連携させてみよう
Shigeo Ueda
 
プロトコル指向に想う世界観 #__swift__
プロトコル指向に想う世界観 #__swift__プロトコル指向に想う世界観 #__swift__
プロトコル指向に想う世界観 #__swift__
Tomohiro Kumagai
 
コンパイラ指向ReVIEW
コンパイラ指向ReVIEWコンパイラ指向ReVIEW
コンパイラ指向ReVIEWMasahiro Wakame
 
Reactive Extensions v2.0
Reactive Extensions v2.0Reactive Extensions v2.0
Reactive Extensions v2.0
Yoshifumi Kawai
 
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
Unity Technologies Japan K.K.
 
歌舞伎座Tech Rx会
歌舞伎座Tech Rx会歌舞伎座Tech Rx会
歌舞伎座Tech Rx会
Kaora Shibacaki
 
可変値変数 var を極力避けることを模索するための事前知識 #cswift
可変値変数 var を極力避けることを模索するための事前知識 #cswift可変値変数 var を極力避けることを模索するための事前知識 #cswift
可変値変数 var を極力避けることを模索するための事前知識 #cswift
Tomohiro Kumagai
 

What's hot (20)

TypeScriptへの入口
TypeScriptへの入口TypeScriptへの入口
TypeScriptへの入口
 
イベント駆動プログラミングとI/O多重化
イベント駆動プログラミングとI/O多重化イベント駆動プログラミングとI/O多重化
イベント駆動プログラミングとI/O多重化
 
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭するCEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
 
Observable Everywhere - Rxの原則とUniRxにみるデータソースの見つけ方
Observable Everywhere  - Rxの原則とUniRxにみるデータソースの見つけ方Observable Everywhere  - Rxの原則とUniRxにみるデータソースの見つけ方
Observable Everywhere - Rxの原則とUniRxにみるデータソースの見つけ方
 
Sails.jsのメリット・デメリット
Sails.jsのメリット・デメリットSails.jsのメリット・デメリット
Sails.jsのメリット・デメリット
 
なかったらINSERTしたいし、あるならロック取りたいやん?
なかったらINSERTしたいし、あるならロック取りたいやん?なかったらINSERTしたいし、あるならロック取りたいやん?
なかったらINSERTしたいし、あるならロック取りたいやん?
 
Nodejs
NodejsNodejs
Nodejs
 
C#次世代非同期処理概観 - Task vs Reactive Extensions
C#次世代非同期処理概観 - Task vs Reactive ExtensionsC#次世代非同期処理概観 - Task vs Reactive Extensions
C#次世代非同期処理概観 - Task vs Reactive Extensions
 
Study Swift
Study Swift Study Swift
Study Swift
 
Reactive Extensionsで非同期処理を簡単に
Reactive Extensionsで非同期処理を簡単にReactive Extensionsで非同期処理を簡単に
Reactive Extensionsで非同期処理を簡単に
 
Node native ext
Node native extNode native ext
Node native ext
 
lazy var の特徴を知る #cocoa_kansai #cswift
lazy var の特徴を知る #cocoa_kansai #cswiftlazy var の特徴を知る #cocoa_kansai #cswift
lazy var の特徴を知る #cocoa_kansai #cswift
 
Ember コミュニティとわたし
Ember コミュニティとわたしEmber コミュニティとわたし
Ember コミュニティとわたし
 
SlackのIncomingWebhooksとOutgoingWebhooksを使って電子工作と連携させてみよう
SlackのIncomingWebhooksとOutgoingWebhooksを使って電子工作と連携させてみようSlackのIncomingWebhooksとOutgoingWebhooksを使って電子工作と連携させてみよう
SlackのIncomingWebhooksとOutgoingWebhooksを使って電子工作と連携させてみよう
 
プロトコル指向に想う世界観 #__swift__
プロトコル指向に想う世界観 #__swift__プロトコル指向に想う世界観 #__swift__
プロトコル指向に想う世界観 #__swift__
 
コンパイラ指向ReVIEW
コンパイラ指向ReVIEWコンパイラ指向ReVIEW
コンパイラ指向ReVIEW
 
Reactive Extensions v2.0
Reactive Extensions v2.0Reactive Extensions v2.0
Reactive Extensions v2.0
 
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
 
歌舞伎座Tech Rx会
歌舞伎座Tech Rx会歌舞伎座Tech Rx会
歌舞伎座Tech Rx会
 
可変値変数 var を極力避けることを模索するための事前知識 #cswift
可変値変数 var を極力避けることを模索するための事前知識 #cswift可変値変数 var を極力避けることを模索するための事前知識 #cswift
可変値変数 var を極力避けることを模索するための事前知識 #cswift
 

Similar to たのしいNode.js

17 E-5 震災とHackとクラウドと ━ URIベースのCSLB
17 E-5 震災とHackとクラウドと ━ URIベースのCSLB17 E-5 震災とHackとクラウドと ━ URIベースのCSLB
17 E-5 震災とHackとクラウドと ━ URIベースのCSLBYuki KAN
 
密着!わたしのコンソールアプリ開発環境
密着!わたしのコンソールアプリ開発環境密着!わたしのコンソールアプリ開発環境
密着!わたしのコンソールアプリ開発環境
Fumihito Yokoyama
 
Node.js で Web アプリ開発
Node.js で Web アプリ開発Node.js で Web アプリ開発
Node.js で Web アプリ開発
Tatsumi Naganuma
 
XenServerによるお手軽開発サーバ運用
XenServerによるお手軽開発サーバ運用XenServerによるお手軽開発サーバ運用
XenServerによるお手軽開発サーバ運用
Shinya Okano
 
VMを改めて学んで見る
VMを改めて学んで見るVMを改めて学んで見る
VMを改めて学んで見る
kishima7
 
OpenStack Object Storage; Usage
OpenStack Object Storage; UsageOpenStack Object Storage; Usage
OpenStack Object Storage; Usageirix_jp
 
Nodeにしましょう
NodeにしましょうNodeにしましょう
Nodeにしましょう
Yuzo Hebishima
 
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...Naoya Ito
 
OSC2011Tokyo/Fall OpenStack Swift入門
OSC2011Tokyo/Fall OpenStack Swift入門OSC2011Tokyo/Fall OpenStack Swift入門
OSC2011Tokyo/Fall OpenStack Swift入門irix_jp
 
Bossan dentoo
Bossan dentooBossan dentoo
Bossan dentookubo39
 
.NET vNext
.NET vNext.NET vNext
.NET vNext
信之 岩永
 
Amazon RDS (MySQL) 入門
Amazon RDS (MySQL) 入門Amazon RDS (MySQL) 入門
Amazon RDS (MySQL) 入門
Manabu Shinsaka
 
初心者がOpenIndianaで自宅サーバを作ったよって話
初心者がOpenIndianaで自宅サーバを作ったよって話初心者がOpenIndianaで自宅サーバを作ったよって話
初心者がOpenIndianaで自宅サーバを作ったよって話
Masataka Tsukamoto
 
動画共有ツール
動画共有ツール動画共有ツール
動画共有ツールtamtam180
 
PlayFramework1.x基礎編
PlayFramework1.x基礎編PlayFramework1.x基礎編
PlayFramework1.x基礎編
Asami Abe
 
OSC2012 Nagoya - OpenStack - Storage System; Overview
OSC2012 Nagoya - OpenStack - Storage System; OverviewOSC2012 Nagoya - OpenStack - Storage System; Overview
OSC2012 Nagoya - OpenStack - Storage System; Overviewirix_jp
 
災害監視無人機システムと 災害監視無人機システムとFOSS4Gとの関わり ((独)宇宙航空研究開発機構 都甲 様)
災害監視無人機システムと 災害監視無人機システムとFOSS4Gとの関わり ((独)宇宙航空研究開発機構 都甲 様)災害監視無人機システムと 災害監視無人機システムとFOSS4Gとの関わり ((独)宇宙航空研究開発機構 都甲 様)
災害監視無人機システムと 災害監視無人機システムとFOSS4Gとの関わり ((独)宇宙航空研究開発機構 都甲 様)OSgeo Japan
 
誰にでもできるパフォーマンスチューニング
誰にでもできるパフォーマンスチューニング誰にでもできるパフォーマンスチューニング
誰にでもできるパフォーマンスチューニング
Kiyokazu Kaba
 

Similar to たのしいNode.js (20)

17 E-5 震災とHackとクラウドと ━ URIベースのCSLB
17 E-5 震災とHackとクラウドと ━ URIベースのCSLB17 E-5 震災とHackとクラウドと ━ URIベースのCSLB
17 E-5 震災とHackとクラウドと ━ URIベースのCSLB
 
密着!わたしのコンソールアプリ開発環境
密着!わたしのコンソールアプリ開発環境密着!わたしのコンソールアプリ開発環境
密着!わたしのコンソールアプリ開発環境
 
Node.js で Web アプリ開発
Node.js で Web アプリ開発Node.js で Web アプリ開発
Node.js で Web アプリ開発
 
XenServerによるお手軽開発サーバ運用
XenServerによるお手軽開発サーバ運用XenServerによるお手軽開発サーバ運用
XenServerによるお手軽開発サーバ運用
 
VMを改めて学んで見る
VMを改めて学んで見るVMを改めて学んで見る
VMを改めて学んで見る
 
計算機理論入門07
計算機理論入門07計算機理論入門07
計算機理論入門07
 
OpenStack Object Storage; Usage
OpenStack Object Storage; UsageOpenStack Object Storage; Usage
OpenStack Object Storage; Usage
 
Nodeにしましょう
NodeにしましょうNodeにしましょう
Nodeにしましょう
 
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
 
OSC2011Tokyo/Fall OpenStack Swift入門
OSC2011Tokyo/Fall OpenStack Swift入門OSC2011Tokyo/Fall OpenStack Swift入門
OSC2011Tokyo/Fall OpenStack Swift入門
 
Bossan dentoo
Bossan dentooBossan dentoo
Bossan dentoo
 
.NET vNext
.NET vNext.NET vNext
.NET vNext
 
Amazon RDS (MySQL) 入門
Amazon RDS (MySQL) 入門Amazon RDS (MySQL) 入門
Amazon RDS (MySQL) 入門
 
初心者がOpenIndianaで自宅サーバを作ったよって話
初心者がOpenIndianaで自宅サーバを作ったよって話初心者がOpenIndianaで自宅サーバを作ったよって話
初心者がOpenIndianaで自宅サーバを作ったよって話
 
動画共有ツール
動画共有ツール動画共有ツール
動画共有ツール
 
PlayFramework1.x基礎編
PlayFramework1.x基礎編PlayFramework1.x基礎編
PlayFramework1.x基礎編
 
OSC2012 Nagoya - OpenStack - Storage System; Overview
OSC2012 Nagoya - OpenStack - Storage System; OverviewOSC2012 Nagoya - OpenStack - Storage System; Overview
OSC2012 Nagoya - OpenStack - Storage System; Overview
 
Osoljp201204
Osoljp201204Osoljp201204
Osoljp201204
 
災害監視無人機システムと 災害監視無人機システムとFOSS4Gとの関わり ((独)宇宙航空研究開発機構 都甲 様)
災害監視無人機システムと 災害監視無人機システムとFOSS4Gとの関わり ((独)宇宙航空研究開発機構 都甲 様)災害監視無人機システムと 災害監視無人機システムとFOSS4Gとの関わり ((独)宇宙航空研究開発機構 都甲 様)
災害監視無人機システムと 災害監視無人機システムとFOSS4Gとの関わり ((独)宇宙航空研究開発機構 都甲 様)
 
誰にでもできるパフォーマンスチューニング
誰にでもできるパフォーマンスチューニング誰にでもできるパフォーマンスチューニング
誰にでもできるパフォーマンスチューニング
 

More from ishiki-takai

プログラミング学習サイト+ブラウザ上での音声読上げ
プログラミング学習サイト+ブラウザ上での音声読上げプログラミング学習サイト+ブラウザ上での音声読上げ
プログラミング学習サイト+ブラウザ上での音声読上げishiki-takai
 
保険のはなし
保険のはなし保険のはなし
保険のはなしishiki-takai
 
モノポリーと会社経営
モノポリーと会社経営モノポリーと会社経営
モノポリーと会社経営ishiki-takai
 
Stack Overflow+英文読む時、便利なツール
Stack Overflow+英文読む時、便利なツールStack Overflow+英文読む時、便利なツール
Stack Overflow+英文読む時、便利なツールishiki-takai
 
アイディアの育て方
アイディアの育て方アイディアの育て方
アイディアの育て方
ishiki-takai
 
モチベーション3.0
モチベーション3.0モチベーション3.0
モチベーション3.0ishiki-takai
 
伝説的プレゼンテーションを取り入れようと思ったらイマイチはまらなかった
伝説的プレゼンテーションを取り入れようと思ったらイマイチはまらなかった伝説的プレゼンテーションを取り入れようと思ったらイマイチはまらなかった
伝説的プレゼンテーションを取り入れようと思ったらイマイチはまらなかった
ishiki-takai
 

More from ishiki-takai (8)

プログラミング学習サイト+ブラウザ上での音声読上げ
プログラミング学習サイト+ブラウザ上での音声読上げプログラミング学習サイト+ブラウザ上での音声読上げ
プログラミング学習サイト+ブラウザ上での音声読上げ
 
Defcon
DefconDefcon
Defcon
 
保険のはなし
保険のはなし保険のはなし
保険のはなし
 
モノポリーと会社経営
モノポリーと会社経営モノポリーと会社経営
モノポリーと会社経営
 
Stack Overflow+英文読む時、便利なツール
Stack Overflow+英文読む時、便利なツールStack Overflow+英文読む時、便利なツール
Stack Overflow+英文読む時、便利なツール
 
アイディアの育て方
アイディアの育て方アイディアの育て方
アイディアの育て方
 
モチベーション3.0
モチベーション3.0モチベーション3.0
モチベーション3.0
 
伝説的プレゼンテーションを取り入れようと思ったらイマイチはまらなかった
伝説的プレゼンテーションを取り入れようと思ったらイマイチはまらなかった伝説的プレゼンテーションを取り入れようと思ったらイマイチはまらなかった
伝説的プレゼンテーションを取り入れようと思ったらイマイチはまらなかった
 

Recently uploaded

TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
Matsushita Laboratory
 
論文紹介: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
 
論文紹介: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
 
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
 
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
 
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさJSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
0207sukipio
 
キンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援します
キンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援しますキンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援します
キンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援します
Takayuki Nakayama
 
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
t m
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
CRI Japan, Inc.
 

Recently uploaded (10)

TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
TaketoFujikawa_物語のコンセプトに基づく情報アクセス手法の基礎検討_JSAI2024
 
論文紹介: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...
 
論文紹介: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
 
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.
 
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
 
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさJSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
JSAI_類似画像マッチングによる器への印象付与手法の妥当性検証_ver.3_高橋りさ
 
キンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援します
キンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援しますキンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援します
キンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援します
 
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
 

たのしいNode.js

  • 3. 12/04の私 • いいネタがない – クラウドとはなんだったのか – 「伽藍とバザール」「UNIXという考え方」 – 投資のやりかた ・・・ピンとこない • じゃあネタを借りよう! ⇒ node.js node.jsという環境 特にイベントドリブン・非同期I/Oを知ってもらおう!
  • 5. node.jsとは? • サーバーサイドJavaScript環境 – Ruby, Python, perl ⇔ (node.js & JavaScript) • 特長 – 単一プロセス、単一スレッド – イベントドリブン・非同期I/O – C10K問題クリア • 続きはWebで!http://nodejs.org/
  • 6. 何がうれしいのか • みんな大好きJavaScript – Google Chrome V8 JavaScript Engine • C言語より高速なJavaScriptによるバイナリ操作が話題 « A- Listers http://tech.a-listers.jp/2012/10/10/faster-than-c/ – YUIも jQueryも • ネットワークプログラム(含Web)が超ラク – ソケット処理はライブラリ丸投げ – イベントドリブン • (うまく書けば)高パフォーマンス – 非同期I/O前提の環境: CPU Idleを活用
  • 7. Echo Server var net = require(‘net’); var srv = net.createServer(function (sock) { sock.on(‘data’, function (buf, err) { sock.write(buf); }); }); srv.listen(4050); //TCP port 4050 イベント コールバック
  • 8. イベントドリブンとは • 並列プログラミングモデル – 内部状態の通知によってプログラムが動く – 同時に動いているプログラムは1つ 手続き型・同期I/O イベントドリブ ン・非同期I/O ファイルを読み込む ファイルを読み込む 裏方が 待ってる 別の作業 仕事 読み込みおわった 読み込みおわった 読んだファイル 読んだファイル に対する作業 に対する作業
  • 9. 非同期I/O var fs = require(‘fs’); //’/to/a’, ‘/to/b’は同時に読み込まれる //タイマー等他イベントは読み込みが完了してなくても処理 される fs.readFile(‘/to/a’, function (err, data) { //読み込んだ結果を表示 console.log(data); }); fs.readFile(‘/to/b’, function (err, data) { //読み込んだ結果を表示 console.log(data); });
  • 10. ライブラリ • Web Framework – Express • Middleware – RDB, NoSQL(CouchDB, MongoDB, Redis), Memcached, AMQP • Template Engine – ejs, Jade • Real-Time Web(Comet, WebSocket) – socket.io
  • 11. 使用例 • Web GUIを持つTVサーバ 主な仕事 1. チューナから映像が来たら: • UDPでストリーミング 2. Webサーバにアクセスされた ら: • Webページを返す 3. チャネルを選ばれたら: • 切り替える
  • 12. 使用例 • Web GUIを持つTVサーバ 従来型(マルチスレッ イベントドリブン 非同期 ド) I/O 暇 (ストリーミングスレッ 映像がきた 映像がきた 映像待ち ド) ストリーミング ストリーミング 送信中 暇 WebAPIチャネル変更 映像くれ チャネル 映像待ち Webレスポンス 変更 同期ロック,スレッドセー フ,ワークメモリ・・・
  • 13. うれしくないこと 1. CPUが早くなるわけじゃない – あたりまえ – ほとんどがCPU処理のアプリにはあまり意味無し 2. イベントドリブン・非同期I/Oへの慣れ – 人間は仕事を直列な手続きとして考えたがる – どんなスケーラブル・プログラミングモデルに慣れ るか? 3. シングルスレッドなのでマルチコアが使えない – ミドルウェアによるクラスタ化 • (memcacheによる共有メモリ,RedisやRabbitMQによるPub/Sub)