Upload
Download free for 30 days
Login
Submit Search
非同期プログラミング養成ギブスとしてのNode.js
3 likes
5,036 views
Tajima Itsuro
1 of 14
Download now
Download to read offline
1
2
3
4
5
6
7
8
9
10
11
12
13
14
More Related Content
PPTX
Azureでのプレゼン
Fukuda Takuro
PPTX
ウェブエンジニアとしての1年目を振り返って
Kohki Yamagiwa
PPTX
ググリワードを探す話
toru ishikawa
PDF
あと一つプログラミング言語を 覚えたら死ぬ! 脳みそがパンクしそうな あなたのための nodeJSことはじめ
文樹 高橋
PDF
趣味プロダクトで楽しいコードライフワークを送る
volpe_hd28v
PDF
Cumiki - エンジニアのための、ちょっといい感じのドキュメント作成ツール
Ryo Suzuki
PPTX
Bottle使ってPython学習一緒にはじめませんか?
Tatsuya Shinozuka
PDF
Django で始める PyCharm 入門
kashew_nuts
Azureでのプレゼン
Fukuda Takuro
ウェブエンジニアとしての1年目を振り返って
Kohki Yamagiwa
ググリワードを探す話
toru ishikawa
あと一つプログラミング言語を 覚えたら死ぬ! 脳みそがパンクしそうな あなたのための nodeJSことはじめ
文樹 高橋
趣味プロダクトで楽しいコードライフワークを送る
volpe_hd28v
Cumiki - エンジニアのための、ちょっといい感じのドキュメント作成ツール
Ryo Suzuki
Bottle使ってPython学習一緒にはじめませんか?
Tatsuya Shinozuka
Django で始める PyCharm 入門
kashew_nuts
What's hot
(20)
PPTX
CakePHP を使ってよかったこと
Wataru Terada
PDF
プロト〜サービスアウトまでの開発支援ツールの作り方〜CrystalFantasia〜
Keisuke Utsumi
PDF
Tropyをつくろう!
Shinya Miyazaki
PPTX
Processing on web
幸翼 長瀬
PPTX
Windows 8のTipsを5分間でできるだけお話します
Tomokazu Kizawa
PDF
Fukuoka.php 第一回勉強会 LTスライド
YUKI YAMAGUCHI
PDF
プログラミング初心者の壁の越え方
Yuichi Kato
PDF
2015/07/11 第7回G-Study発表資料-ITエンジニアのためのDTM入門
Yuta Hayakawa
PPTX
非同期系統の基礎
segayuu
PDF
Web frontend performance tuning
ssuser3c214d
PDF
PHPMATSURI2011 LT大会
Takako Miyagawa
PDF
(未発表) JavaScriptテスト勉強会@福岡#0の前に考えていたこと
Kohki Nakashima
PDF
CLR/H第54回勉強会 ライトニングトーク
Jun-ichi Sakamoto
PDF
WordBench三重 2018年7月22日「Gutenbergで作るランディングページ」
takashi ono
PPTX
Webデザイナーのためのphp wordpress
galluda
PDF
「プログラミングGroovy」入門(公開用)
orange clover
ODP
stapy#23 LT
NaoY-2501
PDF
解り方と教え方
健人 井関
PDF
簡単!Groovy入門
Lee Choong Geun
PPTX
俺と前回敗因から分析するバッドパターン
Masayuki KaToH
CakePHP を使ってよかったこと
Wataru Terada
プロト〜サービスアウトまでの開発支援ツールの作り方〜CrystalFantasia〜
Keisuke Utsumi
Tropyをつくろう!
Shinya Miyazaki
Processing on web
幸翼 長瀬
Windows 8のTipsを5分間でできるだけお話します
Tomokazu Kizawa
Fukuoka.php 第一回勉強会 LTスライド
YUKI YAMAGUCHI
プログラミング初心者の壁の越え方
Yuichi Kato
2015/07/11 第7回G-Study発表資料-ITエンジニアのためのDTM入門
Yuta Hayakawa
非同期系統の基礎
segayuu
Web frontend performance tuning
ssuser3c214d
PHPMATSURI2011 LT大会
Takako Miyagawa
(未発表) JavaScriptテスト勉強会@福岡#0の前に考えていたこと
Kohki Nakashima
CLR/H第54回勉強会 ライトニングトーク
Jun-ichi Sakamoto
WordBench三重 2018年7月22日「Gutenbergで作るランディングページ」
takashi ono
Webデザイナーのためのphp wordpress
galluda
「プログラミングGroovy」入門(公開用)
orange clover
stapy#23 LT
NaoY-2501
解り方と教え方
健人 井関
簡単!Groovy入門
Lee Choong Geun
俺と前回敗因から分析するバッドパターン
Masayuki KaToH
Ad
Viewers also liked
(19)
PDF
Deeplearning with node
Kai Sasaki
PDF
Node.jsなら日曜プログラマーでも簡単に通信対戦ゲームが作れる
Yuusuke Takeuchi
PDF
リアルタイムweb入門
Hiromu Shioya
PDF
Learn Http Requests & Responses for Test Engineer
Takashi Moriyama
PDF
Python を使ってカメリオを高速化した話
Nozomu Kaneko
ODP
Wxasyncweb
guestf8860c
PDF
非同期の時代がやってくる!
Takaaki Suzuki
PDF
スクレイピングとPython
Hironori Sekine
PPTX
Python札幌201406
Shinya Okano
PDF
いまさら恥ずかしくてAsyncをawaitした
Kouji Matsui
PDF
これからの「async/await」の話をしよう
Kouji Matsui
PDF
async/awaitダークサイド is 何
Kouji Matsui
PDF
Pythonによる非同期プログラミング入門
Hironori Sekine
PDF
Pythonによるソーシャルデータ分析―わたしはこうやって修士号を取得しました―
Hisao Soyama
PPTX
非同期処理の基礎
信之 岩永
PDF
Test Yourself - テストを書くと何がどう変わるか
Takuto Wada
PDF
Gunosy go2015 06-02
Yuta Kashino
PDF
組織にテストを書く文化を根付かせる戦略と戦術
Takuto Wada
PPTX
Python Project (3)
Tatsuya Nakamura
Deeplearning with node
Kai Sasaki
Node.jsなら日曜プログラマーでも簡単に通信対戦ゲームが作れる
Yuusuke Takeuchi
リアルタイムweb入門
Hiromu Shioya
Learn Http Requests & Responses for Test Engineer
Takashi Moriyama
Python を使ってカメリオを高速化した話
Nozomu Kaneko
Wxasyncweb
guestf8860c
非同期の時代がやってくる!
Takaaki Suzuki
スクレイピングとPython
Hironori Sekine
Python札幌201406
Shinya Okano
いまさら恥ずかしくてAsyncをawaitした
Kouji Matsui
これからの「async/await」の話をしよう
Kouji Matsui
async/awaitダークサイド is 何
Kouji Matsui
Pythonによる非同期プログラミング入門
Hironori Sekine
Pythonによるソーシャルデータ分析―わたしはこうやって修士号を取得しました―
Hisao Soyama
非同期処理の基礎
信之 岩永
Test Yourself - テストを書くと何がどう変わるか
Takuto Wada
Gunosy go2015 06-02
Yuta Kashino
組織にテストを書く文化を根付かせる戦略と戦術
Takuto Wada
Python Project (3)
Tatsuya Nakamura
Ad
Similar to 非同期プログラミング養成ギブスとしてのNode.js
(20)
PPTX
テストコードの DRY と DAMP
Yusuke Kagata
PDF
phpstudy_php_to_node
Suguru Shirai
PPT
Pythonで始める競技プログラミング
shunki fujiwara
PPTX
Ciecleci
YosukeHojo
PPTX
211120 他人の書いたPythonスクリプトをステップ実行で理解する
Takuya Nishimoto
PDF
受託開発でAnsibleを導入した話
Yuto Matsukubo
PDF
第45回PHP勉強会(里洋平)
Yohei Sato
PDF
YAPC::Hokkaido 2016 「普段使い言語環境」更新によるスキルリセットサバイバルガイド
keroyonn
PDF
LT: 今日帰ってすぐに始められるPython #nds45
civic Sasaki
PDF
Python勉強会 2015-12-02
WoodPecker (Shizuoka Univ)
PDF
TOPPERS as an IoT OS(kernel)
Kiyoshi Ogawa
PDF
ひよこテスト駆動開発(PHPカンファレンス2014)
Oonishi Keitarou
PDF
DBエンジニアに必要だったPythonのスキル
Satoshi Yamada
PPTX
あたしデザイナだけど"ナントカ.js"と仲良くできたよ
momo yagi
PDF
20120927 findjob4 dev_ops
ume3_
PDF
エンジニア×デザイナー GitHubで変わるコミュニケーション(PHPカンファレンス2014 P4Dセッション)
Hiroyuki Yamaoka
PDF
vscode pipenv docker
ikdysfm
PPTX
ソフトウェア開発が好きだ
Koichi Ota
PDF
Selenium再入門-W3C勧告とページオブジェクトパターンと私-201707webエンジニア勉強会#2神田
Y Watanabe
PDF
20230226ゆるあさ.pdf
ssuser31cff0
テストコードの DRY と DAMP
Yusuke Kagata
phpstudy_php_to_node
Suguru Shirai
Pythonで始める競技プログラミング
shunki fujiwara
Ciecleci
YosukeHojo
211120 他人の書いたPythonスクリプトをステップ実行で理解する
Takuya Nishimoto
受託開発でAnsibleを導入した話
Yuto Matsukubo
第45回PHP勉強会(里洋平)
Yohei Sato
YAPC::Hokkaido 2016 「普段使い言語環境」更新によるスキルリセットサバイバルガイド
keroyonn
LT: 今日帰ってすぐに始められるPython #nds45
civic Sasaki
Python勉強会 2015-12-02
WoodPecker (Shizuoka Univ)
TOPPERS as an IoT OS(kernel)
Kiyoshi Ogawa
ひよこテスト駆動開発(PHPカンファレンス2014)
Oonishi Keitarou
DBエンジニアに必要だったPythonのスキル
Satoshi Yamada
あたしデザイナだけど"ナントカ.js"と仲良くできたよ
momo yagi
20120927 findjob4 dev_ops
ume3_
エンジニア×デザイナー GitHubで変わるコミュニケーション(PHPカンファレンス2014 P4Dセッション)
Hiroyuki Yamaoka
vscode pipenv docker
ikdysfm
ソフトウェア開発が好きだ
Koichi Ota
Selenium再入門-W3C勧告とページオブジェクトパターンと私-201707webエンジニア勉強会#2神田
Y Watanabe
20230226ゆるあさ.pdf
ssuser31cff0
More from Tajima Itsuro
(17)
PDF
ドラクエ映画の問題点
Tajima Itsuro
PDF
カジュアル・デジタル・コレクション
Tajima Itsuro
PDF
新しい並行計算ライブラリ js-csp のご紹介
Tajima Itsuro
PDF
完全韻
Tajima Itsuro
PDF
Foss4g2013tokyo geothematics
Tajima Itsuro
PDF
Binbo
Tajima Itsuro
PDF
Androidとオープンデータ ~国のデータを アプリに取り入れよう!~
Tajima Itsuro
PDF
ロケーションデータの取り扱い方法、わかりやすいビジュアライズの方法
Tajima Itsuro
PDF
Gisとは何か
Tajima Itsuro
PDF
オープンデータを活用したアプリケーション開発
Tajima Itsuro
PDF
Development - International Open Data Hackathon Tokyo - Chiyoda ward geolocat...
Tajima Itsuro
PDF
International Open Data Hackathon Tokyo - Chiyoda ward geolocation team
Tajima Itsuro
PDF
現実世界をハックせよ!
Tajima Itsuro
PDF
Open Data
Tajima Itsuro
KEY
Space Apps Challenge Ideathon Presentation
Tajima Itsuro
PPT
iModela で モコモコ立体を作る
Tajima Itsuro
PDF
Nottingam Gms
Tajima Itsuro
ドラクエ映画の問題点
Tajima Itsuro
カジュアル・デジタル・コレクション
Tajima Itsuro
新しい並行計算ライブラリ js-csp のご紹介
Tajima Itsuro
完全韻
Tajima Itsuro
Foss4g2013tokyo geothematics
Tajima Itsuro
Binbo
Tajima Itsuro
Androidとオープンデータ ~国のデータを アプリに取り入れよう!~
Tajima Itsuro
ロケーションデータの取り扱い方法、わかりやすいビジュアライズの方法
Tajima Itsuro
Gisとは何か
Tajima Itsuro
オープンデータを活用したアプリケーション開発
Tajima Itsuro
Development - International Open Data Hackathon Tokyo - Chiyoda ward geolocat...
Tajima Itsuro
International Open Data Hackathon Tokyo - Chiyoda ward geolocation team
Tajima Itsuro
現実世界をハックせよ!
Tajima Itsuro
Open Data
Tajima Itsuro
Space Apps Challenge Ideathon Presentation
Tajima Itsuro
iModela で モコモコ立体を作る
Tajima Itsuro
Nottingam Gms
Tajima Itsuro
非同期プログラミング養成ギブスとしてのNode.js
1.
非同期プログラミング 養成ギブスとしてのnode.js niryuu<niryuu@gmail.com> 14年2月28日金曜日
2.
自己紹介 • プログラミング初心者 • C→Python→PHP→node.js •
Android,iOS • 地理情報システムの会社 • 皆さん、酒飲んでて下さい 14年2月28日金曜日
3.
私と非同期プログラミング • PHPでWebアプリケーションフレームワークを使ってやっていた→非同 期とは無縁 • iOS/Android:まあHTTP通信とかNSOperationQueueとかAsyncTaskとかいろ いろ非同期プログラミングが登場する場面はあるが、イディオムに従っ ていた感じ • • • • 14年2月28日金曜日 要はわかっていない node.jsで非同期プログラミングをやっていくことで、教訓を得ていった koaとかQとかがあるが、実際どうなっているのか Webの話をするが、他のことでも本質的に変わらないと思う
4.
ざっくりと記述すると • • • • • 非同期処理をやる前の処理(Context A) 非同期処理(Context B) やった後の処理(Context
A) Thread でも Event Loop でも変わらない 継続とかの議論は省く(とはいっても、コルーチン などが事実上使われ始めているので、無視はでき ないが) 14年2月28日金曜日
5.
何で難いか • 一旦元のコンテキストから切り離して、戻っ てくるので、処理がリニアではない(非同期処 理を言い換えてるだけじゃん!) • • • 14年2月28日金曜日 concurrentとかparallelとかその辺の議論は勘弁 切り離すのはOK どう戻ってくるか
6.
戻すのをマズると どうやばいか • • 終わった/失敗した非同期処理、終わらない実行 非同期がないなら、処理が成功したらいけるしダメだったらた だ死ぬのだが、そうでないのでデバッグが大変 • node.jsの場合→プロセスが1つなので、死んだら終わり(実際の ところ passenger とかで解決可能であるが、望ましくはない) • • • 14年2月28日金曜日 clusterで4つ立ち上げたら、4つとも刺さって死んだ →デバッグが大変 複数の非同期処理が混在してると、さらにわけわからなくなる
7.
コールバックによる方法 • hidouki(arg1, arg2,..
,cb) • hidouki を呼ぶコンテキストと、cbが実 行されるコンテキストが同じ • とてもわかりやすい • しかし 14年2月28日金曜日
8.
コールバック地獄 • • • 省略(みなさんお分かりでしょう) 要約すると「▶」 問題:コードが汚い • コードの汚さが記法によるため、リファクタリングする気 もなくなる • • 問題:cbにちゃんと戻さないとダメ • 14年2月28日金曜日 解決策:ちゃんとcbの関数を定義して、それを呼びましょう 解決策:ちゃんとやる
9.
Promise(Q) • • • もうコールバックスタイルの記法嫌だ • • • 利点:記法がわかりやすい、スコープがわかりやすい、続けて書ける Promiseでしょ hidouki(args) .then(a) .then(b) .fail(e) 変わらない点:ちゃんとresolve/rejectしましょう 変わらない点:長い処理を書くと、thenの中身が凄く長くなる • 14年2月28日金曜日 解決策:ちゃんと関数を定義して、それを呼びましょう
10.
koa - yield/coによる方法 • • • • • • 期待の新星 var
result = yield hidouki(args) よっしゃ!これは良い! 利点:スコープがわかりやすい、非同期でないように書ける 例外処理を自然に使える なぜ「記法がわかりやすい」が利点でないか? • 非同期処理してる部分とそうでない部分の区別が一見してつきに くい • 14年2月28日金曜日 解決策:ちゃんと責務を分けましょう
11.
yield/coによる方法 • 変わらない点 • ちゃんとreturnしましょう •
return しないなら、ちゃんと例外を吐 いて、catchしよう • 例外!全然使ったことなかった! 14年2月28日金曜日
12.
教訓 • 最適解はあっても、ちゃんとしたコードが書け ないと仕方がない • ダラッダラ同じ所に処理を書くのをやめて、 処理を分割しよう • ちゃんとエラー処理とか例外とかをハンドリ ングしよう • 14年2月28日金曜日 当たり前のことを要求する養成ギブス
13.
まとめ • 養成されました • node.js
ありがとう • おわり にしようと思ったが 14年2月28日金曜日
14.
• きれいに書けるに越したことはない • ユーザーインタフェースとかの実装も 簡潔に書けて、なおかつ検証も可能な 計算モデルを構築したくなった •
博士課程に行きます 14年2月28日金曜日
Download