SlideShare une entreprise Scribd logo
1  sur  14
Télécharger pour lire hors ligne
非同期プログラミング
養成ギブスとしてのnode.js
niryuu<niryuu@gmail.com>

14年2月28日金曜日
自己紹介
• プログラミング初心者
• C→Python→PHP→node.js
• Android,iOS
• 地理情報システムの会社
• 皆さん、酒飲んでて下さい
14年2月28日金曜日
私と非同期プログラミング
•

PHPでWebアプリケーションフレームワークを使ってやっていた→非同
期とは無縁

•

iOS/Android:まあHTTP通信とかNSOperationQueueとかAsyncTaskとかいろ
いろ非同期プログラミングが登場する場面はあるが、イディオムに従っ
ていた感じ

•
•
•
•

14年2月28日金曜日

要はわかっていない
node.jsで非同期プログラミングをやっていくことで、教訓を得ていった
koaとかQとかがあるが、実際どうなっているのか
Webの話をするが、他のことでも本質的に変わらないと思う
ざっくりと記述すると
•
•
•
•
•

非同期処理をやる前の処理(Context A)
非同期処理(Context B)
やった後の処理(Context A)
Thread でも Event Loop でも変わらない
継続とかの議論は省く(とはいっても、コルーチン
などが事実上使われ始めているので、無視はでき
ないが)

14年2月28日金曜日
何で難いか
•

一旦元のコンテキストから切り離して、戻っ
てくるので、処理がリニアではない(非同期処
理を言い換えてるだけじゃん!)

•
•
•
14年2月28日金曜日

concurrentとかparallelとかその辺の議論は勘弁
切り離すのはOK
どう戻ってくるか
戻すのをマズると
どうやばいか
•
•

終わった/失敗した非同期処理、終わらない実行
非同期がないなら、処理が成功したらいけるしダメだったらた
だ死ぬのだが、そうでないのでデバッグが大変

•

node.jsの場合→プロセスが1つなので、死んだら終わり(実際の
ところ passenger とかで解決可能であるが、望ましくはない)

•
•
•
14年2月28日金曜日

clusterで4つ立ち上げたら、4つとも刺さって死んだ
→デバッグが大変
複数の非同期処理が混在してると、さらにわけわからなくなる
コールバックによる方法
• hidouki(arg1, arg2,.. ,cb)
• hidouki を呼ぶコンテキストと、cbが実
行されるコンテキストが同じ

• とてもわかりやすい
• しかし
14年2月28日金曜日
コールバック地獄
•
•
•

省略(みなさんお分かりでしょう)
要約すると「▶」
問題:コードが汚い

•

コードの汚さが記法によるため、リファクタリングする気
もなくなる

•
•

問題:cbにちゃんと戻さないとダメ

•
14年2月28日金曜日

解決策:ちゃんとcbの関数を定義して、それを呼びましょう

解決策:ちゃんとやる
Promise(Q)
•
•
•

もうコールバックスタイルの記法嫌だ

•
•
•

利点:記法がわかりやすい、スコープがわかりやすい、続けて書ける

Promiseでしょ
hidouki(args)
.then(a)
.then(b)
.fail(e)

変わらない点:ちゃんとresolve/rejectしましょう
変わらない点:長い処理を書くと、thenの中身が凄く長くなる

•
14年2月28日金曜日

解決策:ちゃんと関数を定義して、それを呼びましょう
koa - yield/coによる方法
•
•
•
•
•
•

期待の新星
var result = yield hidouki(args)
よっしゃ!これは良い!
利点:スコープがわかりやすい、非同期でないように書ける
例外処理を自然に使える
なぜ「記法がわかりやすい」が利点でないか?

•

非同期処理してる部分とそうでない部分の区別が一見してつきに
くい

•
14年2月28日金曜日

解決策:ちゃんと責務を分けましょう
yield/coによる方法
• 変わらない点
• ちゃんとreturnしましょう
• return しないなら、ちゃんと例外を吐
いて、catchしよう

• 例外!全然使ったことなかった!
14年2月28日金曜日
教訓
•

最適解はあっても、ちゃんとしたコードが書け
ないと仕方がない

•

ダラッダラ同じ所に処理を書くのをやめて、
処理を分割しよう

•

ちゃんとエラー処理とか例外とかをハンドリ
ングしよう

•
14年2月28日金曜日

当たり前のことを要求する養成ギブス
まとめ
• 養成されました
• node.js ありがとう
• おわり にしようと思ったが

14年2月28日金曜日
• きれいに書けるに越したことはない
• ユーザーインタフェースとかの実装も
簡潔に書けて、なおかつ検証も可能な
計算モデルを構築したくなった

• 博士課程に行きます
14年2月28日金曜日

Contenu connexe

Tendances

CakePHP を使ってよかったこと
CakePHP を使ってよかったことCakePHP を使ってよかったこと
CakePHP を使ってよかったことWataru Terada
 
プロト〜サービスアウトまでの開発支援ツールの作り方〜CrystalFantasia〜
プロト〜サービスアウトまでの開発支援ツールの作り方〜CrystalFantasia〜プロト〜サービスアウトまでの開発支援ツールの作り方〜CrystalFantasia〜
プロト〜サービスアウトまでの開発支援ツールの作り方〜CrystalFantasia〜Keisuke Utsumi
 
Windows 8のTipsを5分間でできるだけお話します
Windows 8のTipsを5分間でできるだけお話しますWindows 8のTipsを5分間でできるだけお話します
Windows 8のTipsを5分間でできるだけお話しますTomokazu Kizawa
 
Fukuoka.php 第一回勉強会 LTスライド
Fukuoka.php 第一回勉強会 LTスライドFukuoka.php 第一回勉強会 LTスライド
Fukuoka.php 第一回勉強会 LTスライドYUKI YAMAGUCHI
 
プログラミング初心者の壁の越え方
プログラミング初心者の壁の越え方プログラミング初心者の壁の越え方
プログラミング初心者の壁の越え方Yuichi Kato
 
2015/07/11 第7回G-Study発表資料-ITエンジニアのためのDTM入門
2015/07/11 第7回G-Study発表資料-ITエンジニアのためのDTM入門2015/07/11 第7回G-Study発表資料-ITエンジニアのためのDTM入門
2015/07/11 第7回G-Study発表資料-ITエンジニアのためのDTM入門Yuta Hayakawa
 
非同期系統の基礎
非同期系統の基礎非同期系統の基礎
非同期系統の基礎segayuu
 
Web frontend performance tuning
Web frontend      performance tuningWeb frontend      performance tuning
Web frontend performance tuningssuser3c214d
 
(未発表) JavaScriptテスト勉強会@福岡#0の前に考えていたこと
(未発表) JavaScriptテスト勉強会@福岡#0の前に考えていたこと(未発表) JavaScriptテスト勉強会@福岡#0の前に考えていたこと
(未発表) JavaScriptテスト勉強会@福岡#0の前に考えていたことKohki Nakashima
 
CLR/H第54回勉強会 ライトニングトーク
CLR/H第54回勉強会 ライトニングトークCLR/H第54回勉強会 ライトニングトーク
CLR/H第54回勉強会 ライトニングトークJun-ichi Sakamoto
 
WordBench三重 2018年7月22日「Gutenbergで作るランディングページ」
WordBench三重 2018年7月22日「Gutenbergで作るランディングページ」WordBench三重 2018年7月22日「Gutenbergで作るランディングページ」
WordBench三重 2018年7月22日「Gutenbergで作るランディングページ」takashi ono
 
Webデザイナーのためのphp wordpress
Webデザイナーのためのphp wordpressWebデザイナーのためのphp wordpress
Webデザイナーのためのphp wordpressgalluda
 
「プログラミングGroovy」入門(公開用)
「プログラミングGroovy」入門(公開用)「プログラミングGroovy」入門(公開用)
「プログラミングGroovy」入門(公開用)orange clover
 
解り方と教え方
解り方と教え方解り方と教え方
解り方と教え方健人 井関
 
俺と前回敗因から分析するバッドパターン
俺と前回敗因から分析するバッドパターン俺と前回敗因から分析するバッドパターン
俺と前回敗因から分析するバッドパターンMasayuki KaToH
 

Tendances (20)

CakePHP を使ってよかったこと
CakePHP を使ってよかったことCakePHP を使ってよかったこと
CakePHP を使ってよかったこと
 
プロト〜サービスアウトまでの開発支援ツールの作り方〜CrystalFantasia〜
プロト〜サービスアウトまでの開発支援ツールの作り方〜CrystalFantasia〜プロト〜サービスアウトまでの開発支援ツールの作り方〜CrystalFantasia〜
プロト〜サービスアウトまでの開発支援ツールの作り方〜CrystalFantasia〜
 
Tropyをつくろう!
Tropyをつくろう!Tropyをつくろう!
Tropyをつくろう!
 
Processing on web
Processing on webProcessing on web
Processing on web
 
Windows 8のTipsを5分間でできるだけお話します
Windows 8のTipsを5分間でできるだけお話しますWindows 8のTipsを5分間でできるだけお話します
Windows 8のTipsを5分間でできるだけお話します
 
Fukuoka.php 第一回勉強会 LTスライド
Fukuoka.php 第一回勉強会 LTスライドFukuoka.php 第一回勉強会 LTスライド
Fukuoka.php 第一回勉強会 LTスライド
 
プログラミング初心者の壁の越え方
プログラミング初心者の壁の越え方プログラミング初心者の壁の越え方
プログラミング初心者の壁の越え方
 
2015/07/11 第7回G-Study発表資料-ITエンジニアのためのDTM入門
2015/07/11 第7回G-Study発表資料-ITエンジニアのためのDTM入門2015/07/11 第7回G-Study発表資料-ITエンジニアのためのDTM入門
2015/07/11 第7回G-Study発表資料-ITエンジニアのためのDTM入門
 
非同期系統の基礎
非同期系統の基礎非同期系統の基礎
非同期系統の基礎
 
Web frontend performance tuning
Web frontend      performance tuningWeb frontend      performance tuning
Web frontend performance tuning
 
PHPMATSURI2011 LT大会
PHPMATSURI2011 LT大会PHPMATSURI2011 LT大会
PHPMATSURI2011 LT大会
 
(未発表) JavaScriptテスト勉強会@福岡#0の前に考えていたこと
(未発表) JavaScriptテスト勉強会@福岡#0の前に考えていたこと(未発表) JavaScriptテスト勉強会@福岡#0の前に考えていたこと
(未発表) JavaScriptテスト勉強会@福岡#0の前に考えていたこと
 
CLR/H第54回勉強会 ライトニングトーク
CLR/H第54回勉強会 ライトニングトークCLR/H第54回勉強会 ライトニングトーク
CLR/H第54回勉強会 ライトニングトーク
 
WordBench三重 2018年7月22日「Gutenbergで作るランディングページ」
WordBench三重 2018年7月22日「Gutenbergで作るランディングページ」WordBench三重 2018年7月22日「Gutenbergで作るランディングページ」
WordBench三重 2018年7月22日「Gutenbergで作るランディングページ」
 
Webデザイナーのためのphp wordpress
Webデザイナーのためのphp wordpressWebデザイナーのためのphp wordpress
Webデザイナーのためのphp wordpress
 
「プログラミングGroovy」入門(公開用)
「プログラミングGroovy」入門(公開用)「プログラミングGroovy」入門(公開用)
「プログラミングGroovy」入門(公開用)
 
stapy#23 LT
stapy#23 LTstapy#23 LT
stapy#23 LT
 
解り方と教え方
解り方と教え方解り方と教え方
解り方と教え方
 
簡単!Groovy入門
簡単!Groovy入門簡単!Groovy入門
簡単!Groovy入門
 
俺と前回敗因から分析するバッドパターン
俺と前回敗因から分析するバッドパターン俺と前回敗因から分析するバッドパターン
俺と前回敗因から分析するバッドパターン
 

En vedette

Deeplearning with node
Deeplearning with nodeDeeplearning with node
Deeplearning with nodeKai Sasaki
 
Node.jsなら日曜プログラマーでも簡単に通信対戦ゲームが作れる
Node.jsなら日曜プログラマーでも簡単に通信対戦ゲームが作れるNode.jsなら日曜プログラマーでも簡単に通信対戦ゲームが作れる
Node.jsなら日曜プログラマーでも簡単に通信対戦ゲームが作れるYuusuke Takeuchi
 
リアルタイムweb入門
リアルタイムweb入門リアルタイムweb入門
リアルタイムweb入門Hiromu Shioya
 
Learn Http Requests & Responses for Test Engineer
Learn Http Requests & Responses for Test EngineerLearn Http Requests & Responses for Test Engineer
Learn Http Requests & Responses for Test EngineerTakashi Moriyama
 
Python を使ってカメリオを高速化した話
Python を使ってカメリオを高速化した話Python を使ってカメリオを高速化した話
Python を使ってカメリオを高速化した話Nozomu Kaneko
 
非同期の時代がやってくる!
非同期の時代がやってくる!非同期の時代がやってくる!
非同期の時代がやってくる!Takaaki Suzuki
 
スクレイピングとPython
スクレイピングとPythonスクレイピングとPython
スクレイピングとPythonHironori Sekine
 
Python札幌201406
Python札幌201406Python札幌201406
Python札幌201406Shinya Okano
 
いまさら恥ずかしくてAsyncをawaitした
いまさら恥ずかしくてAsyncをawaitしたいまさら恥ずかしくてAsyncをawaitした
いまさら恥ずかしくてAsyncをawaitしたKouji Matsui
 
これからの「async/await」の話をしよう
これからの「async/await」の話をしようこれからの「async/await」の話をしよう
これからの「async/await」の話をしようKouji Matsui
 
async/awaitダークサイド is 何
async/awaitダークサイド is 何async/awaitダークサイド is 何
async/awaitダークサイド is 何Kouji Matsui
 
Pythonによる非同期プログラミング入門
Pythonによる非同期プログラミング入門Pythonによる非同期プログラミング入門
Pythonによる非同期プログラミング入門Hironori Sekine
 
Pythonによるソーシャルデータ分析―わたしはこうやって修士号を取得しました―
Pythonによるソーシャルデータ分析―わたしはこうやって修士号を取得しました―Pythonによるソーシャルデータ分析―わたしはこうやって修士号を取得しました―
Pythonによるソーシャルデータ分析―わたしはこうやって修士号を取得しました―Hisao Soyama
 
非同期処理の基礎
非同期処理の基礎非同期処理の基礎
非同期処理の基礎信之 岩永
 
Test Yourself - テストを書くと何がどう変わるか
Test Yourself - テストを書くと何がどう変わるかTest Yourself - テストを書くと何がどう変わるか
Test Yourself - テストを書くと何がどう変わるかTakuto Wada
 
Gunosy go2015 06-02
Gunosy go2015 06-02Gunosy go2015 06-02
Gunosy go2015 06-02Yuta Kashino
 
組織にテストを書く文化を根付かせる戦略と戦術
組織にテストを書く文化を根付かせる戦略と戦術組織にテストを書く文化を根付かせる戦略と戦術
組織にテストを書く文化を根付かせる戦略と戦術Takuto Wada
 

En vedette (19)

Deeplearning with node
Deeplearning with nodeDeeplearning with node
Deeplearning with node
 
Node.jsなら日曜プログラマーでも簡単に通信対戦ゲームが作れる
Node.jsなら日曜プログラマーでも簡単に通信対戦ゲームが作れるNode.jsなら日曜プログラマーでも簡単に通信対戦ゲームが作れる
Node.jsなら日曜プログラマーでも簡単に通信対戦ゲームが作れる
 
リアルタイムweb入門
リアルタイムweb入門リアルタイムweb入門
リアルタイムweb入門
 
Learn Http Requests & Responses for Test Engineer
Learn Http Requests & Responses for Test EngineerLearn Http Requests & Responses for Test Engineer
Learn Http Requests & Responses for Test Engineer
 
Python を使ってカメリオを高速化した話
Python を使ってカメリオを高速化した話Python を使ってカメリオを高速化した話
Python を使ってカメリオを高速化した話
 
Wxasyncweb
WxasyncwebWxasyncweb
Wxasyncweb
 
非同期の時代がやってくる!
非同期の時代がやってくる!非同期の時代がやってくる!
非同期の時代がやってくる!
 
スクレイピングとPython
スクレイピングとPythonスクレイピングとPython
スクレイピングとPython
 
Python札幌201406
Python札幌201406Python札幌201406
Python札幌201406
 
いまさら恥ずかしくてAsyncをawaitした
いまさら恥ずかしくてAsyncをawaitしたいまさら恥ずかしくてAsyncをawaitした
いまさら恥ずかしくてAsyncをawaitした
 
これからの「async/await」の話をしよう
これからの「async/await」の話をしようこれからの「async/await」の話をしよう
これからの「async/await」の話をしよう
 
async/awaitダークサイド is 何
async/awaitダークサイド is 何async/awaitダークサイド is 何
async/awaitダークサイド is 何
 
Pythonによる非同期プログラミング入門
Pythonによる非同期プログラミング入門Pythonによる非同期プログラミング入門
Pythonによる非同期プログラミング入門
 
Pythonによるソーシャルデータ分析―わたしはこうやって修士号を取得しました―
Pythonによるソーシャルデータ分析―わたしはこうやって修士号を取得しました―Pythonによるソーシャルデータ分析―わたしはこうやって修士号を取得しました―
Pythonによるソーシャルデータ分析―わたしはこうやって修士号を取得しました―
 
非同期処理の基礎
非同期処理の基礎非同期処理の基礎
非同期処理の基礎
 
Test Yourself - テストを書くと何がどう変わるか
Test Yourself - テストを書くと何がどう変わるかTest Yourself - テストを書くと何がどう変わるか
Test Yourself - テストを書くと何がどう変わるか
 
Gunosy go2015 06-02
Gunosy go2015 06-02Gunosy go2015 06-02
Gunosy go2015 06-02
 
組織にテストを書く文化を根付かせる戦略と戦術
組織にテストを書く文化を根付かせる戦略と戦術組織にテストを書く文化を根付かせる戦略と戦術
組織にテストを書く文化を根付かせる戦略と戦術
 
Python Project (3)
Python Project (3)Python Project (3)
Python Project (3)
 

Similaire à 非同期プログラミング養成ギブスとしてのNode.js

テストコードの DRY と DAMP
テストコードの DRY と DAMPテストコードの DRY と DAMP
テストコードの DRY と DAMPYusuke Kagata
 
phpstudy_php_to_node
phpstudy_php_to_nodephpstudy_php_to_node
phpstudy_php_to_nodeSuguru Shirai
 
Pythonで始める競技プログラミング
Pythonで始める競技プログラミングPythonで始める競技プログラミング
Pythonで始める競技プログラミングshunki fujiwara
 
211120 他人の書いたPythonスクリプトをステップ実行で理解する
211120 他人の書いたPythonスクリプトをステップ実行で理解する211120 他人の書いたPythonスクリプトをステップ実行で理解する
211120 他人の書いたPythonスクリプトをステップ実行で理解するTakuya Nishimoto
 
受託開発でAnsibleを導入した話
受託開発でAnsibleを導入した話受託開発でAnsibleを導入した話
受託開発でAnsibleを導入した話Yuto Matsukubo
 
第45回PHP勉強会(里洋平)
第45回PHP勉強会(里洋平)第45回PHP勉強会(里洋平)
第45回PHP勉強会(里洋平)Yohei Sato
 
YAPC::Hokkaido 2016 「普段使い言語環境」更新によるスキルリセットサバイバルガイド
YAPC::Hokkaido 2016 「普段使い言語環境」更新によるスキルリセットサバイバルガイドYAPC::Hokkaido 2016 「普段使い言語環境」更新によるスキルリセットサバイバルガイド
YAPC::Hokkaido 2016 「普段使い言語環境」更新によるスキルリセットサバイバルガイドkeroyonn
 
LT: 今日帰ってすぐに始められるPython #nds45
LT: 今日帰ってすぐに始められるPython #nds45LT: 今日帰ってすぐに始められるPython #nds45
LT: 今日帰ってすぐに始められるPython #nds45civic Sasaki
 
TOPPERS as an IoT OS(kernel)
TOPPERS as an IoT OS(kernel)TOPPERS as an IoT OS(kernel)
TOPPERS as an IoT OS(kernel)Kiyoshi Ogawa
 
ひよこテスト駆動開発(PHPカンファレンス2014)
ひよこテスト駆動開発(PHPカンファレンス2014)ひよこテスト駆動開発(PHPカンファレンス2014)
ひよこテスト駆動開発(PHPカンファレンス2014)Oonishi Keitarou
 
DBエンジニアに必要だったPythonのスキル
DBエンジニアに必要だったPythonのスキルDBエンジニアに必要だったPythonのスキル
DBエンジニアに必要だったPythonのスキルSatoshi Yamada
 
あたしデザイナだけど"ナントカ.js"と仲良くできたよ
あたしデザイナだけど"ナントカ.js"と仲良くできたよあたしデザイナだけど"ナントカ.js"と仲良くできたよ
あたしデザイナだけど"ナントカ.js"と仲良くできたよmomo yagi
 
20120927 findjob4 dev_ops
20120927 findjob4 dev_ops20120927 findjob4 dev_ops
20120927 findjob4 dev_opsume3_
 
エンジニア×デザイナー GitHubで変わるコミュニケーション(PHPカンファレンス2014 P4Dセッション)
エンジニア×デザイナー GitHubで変わるコミュニケーション(PHPカンファレンス2014 P4Dセッション)エンジニア×デザイナー GitHubで変わるコミュニケーション(PHPカンファレンス2014 P4Dセッション)
エンジニア×デザイナー GitHubで変わるコミュニケーション(PHPカンファレンス2014 P4Dセッション)Hiroyuki Yamaoka
 
vscode pipenv docker
vscode pipenv dockervscode pipenv docker
vscode pipenv dockerikdysfm
 
ソフトウェア開発が好きだ
ソフトウェア開発が好きだソフトウェア開発が好きだ
ソフトウェア開発が好きだKoichi Ota
 
Selenium再入門-W3C勧告とページオブジェクトパターンと私-201707webエンジニア勉強会#2神田
Selenium再入門-W3C勧告とページオブジェクトパターンと私-201707webエンジニア勉強会#2神田Selenium再入門-W3C勧告とページオブジェクトパターンと私-201707webエンジニア勉強会#2神田
Selenium再入門-W3C勧告とページオブジェクトパターンと私-201707webエンジニア勉強会#2神田Y Watanabe
 
20230226ゆるあさ.pdf
20230226ゆるあさ.pdf20230226ゆるあさ.pdf
20230226ゆるあさ.pdfssuser31cff0
 

Similaire à 非同期プログラミング養成ギブスとしてのNode.js (20)

テストコードの DRY と DAMP
テストコードの DRY と DAMPテストコードの DRY と DAMP
テストコードの DRY と DAMP
 
phpstudy_php_to_node
phpstudy_php_to_nodephpstudy_php_to_node
phpstudy_php_to_node
 
Pythonで始める競技プログラミング
Pythonで始める競技プログラミングPythonで始める競技プログラミング
Pythonで始める競技プログラミング
 
Ciecleci
CiecleciCiecleci
Ciecleci
 
211120 他人の書いたPythonスクリプトをステップ実行で理解する
211120 他人の書いたPythonスクリプトをステップ実行で理解する211120 他人の書いたPythonスクリプトをステップ実行で理解する
211120 他人の書いたPythonスクリプトをステップ実行で理解する
 
受託開発でAnsibleを導入した話
受託開発でAnsibleを導入した話受託開発でAnsibleを導入した話
受託開発でAnsibleを導入した話
 
第45回PHP勉強会(里洋平)
第45回PHP勉強会(里洋平)第45回PHP勉強会(里洋平)
第45回PHP勉強会(里洋平)
 
YAPC::Hokkaido 2016 「普段使い言語環境」更新によるスキルリセットサバイバルガイド
YAPC::Hokkaido 2016 「普段使い言語環境」更新によるスキルリセットサバイバルガイドYAPC::Hokkaido 2016 「普段使い言語環境」更新によるスキルリセットサバイバルガイド
YAPC::Hokkaido 2016 「普段使い言語環境」更新によるスキルリセットサバイバルガイド
 
LT: 今日帰ってすぐに始められるPython #nds45
LT: 今日帰ってすぐに始められるPython #nds45LT: 今日帰ってすぐに始められるPython #nds45
LT: 今日帰ってすぐに始められるPython #nds45
 
Python勉強会 2015-12-02
Python勉強会 2015-12-02Python勉強会 2015-12-02
Python勉強会 2015-12-02
 
TOPPERS as an IoT OS(kernel)
TOPPERS as an IoT OS(kernel)TOPPERS as an IoT OS(kernel)
TOPPERS as an IoT OS(kernel)
 
ひよこテスト駆動開発(PHPカンファレンス2014)
ひよこテスト駆動開発(PHPカンファレンス2014)ひよこテスト駆動開発(PHPカンファレンス2014)
ひよこテスト駆動開発(PHPカンファレンス2014)
 
DBエンジニアに必要だったPythonのスキル
DBエンジニアに必要だったPythonのスキルDBエンジニアに必要だったPythonのスキル
DBエンジニアに必要だったPythonのスキル
 
あたしデザイナだけど"ナントカ.js"と仲良くできたよ
あたしデザイナだけど"ナントカ.js"と仲良くできたよあたしデザイナだけど"ナントカ.js"と仲良くできたよ
あたしデザイナだけど"ナントカ.js"と仲良くできたよ
 
20120927 findjob4 dev_ops
20120927 findjob4 dev_ops20120927 findjob4 dev_ops
20120927 findjob4 dev_ops
 
エンジニア×デザイナー GitHubで変わるコミュニケーション(PHPカンファレンス2014 P4Dセッション)
エンジニア×デザイナー GitHubで変わるコミュニケーション(PHPカンファレンス2014 P4Dセッション)エンジニア×デザイナー GitHubで変わるコミュニケーション(PHPカンファレンス2014 P4Dセッション)
エンジニア×デザイナー GitHubで変わるコミュニケーション(PHPカンファレンス2014 P4Dセッション)
 
vscode pipenv docker
vscode pipenv dockervscode pipenv docker
vscode pipenv docker
 
ソフトウェア開発が好きだ
ソフトウェア開発が好きだソフトウェア開発が好きだ
ソフトウェア開発が好きだ
 
Selenium再入門-W3C勧告とページオブジェクトパターンと私-201707webエンジニア勉強会#2神田
Selenium再入門-W3C勧告とページオブジェクトパターンと私-201707webエンジニア勉強会#2神田Selenium再入門-W3C勧告とページオブジェクトパターンと私-201707webエンジニア勉強会#2神田
Selenium再入門-W3C勧告とページオブジェクトパターンと私-201707webエンジニア勉強会#2神田
 
20230226ゆるあさ.pdf
20230226ゆるあさ.pdf20230226ゆるあさ.pdf
20230226ゆるあさ.pdf
 

Plus de Tajima Itsuro

ドラクエ映画の問題点
ドラクエ映画の問題点ドラクエ映画の問題点
ドラクエ映画の問題点Tajima Itsuro
 
カジュアル・デジタル・コレクション
カジュアル・デジタル・コレクションカジュアル・デジタル・コレクション
カジュアル・デジタル・コレクションTajima Itsuro
 
新しい並行計算ライブラリ js-csp のご紹介
新しい並行計算ライブラリ js-csp のご紹介新しい並行計算ライブラリ js-csp のご紹介
新しい並行計算ライブラリ js-csp のご紹介Tajima Itsuro
 
Foss4g2013tokyo geothematics
Foss4g2013tokyo geothematicsFoss4g2013tokyo geothematics
Foss4g2013tokyo geothematicsTajima Itsuro
 
Androidとオープンデータ ~国のデータを アプリに取り入れよう!~
Androidとオープンデータ ~国のデータを アプリに取り入れよう!~Androidとオープンデータ ~国のデータを アプリに取り入れよう!~
Androidとオープンデータ ~国のデータを アプリに取り入れよう!~Tajima Itsuro
 
ロケーションデータの取り扱い方法、わかりやすいビジュアライズの方法
ロケーションデータの取り扱い方法、わかりやすいビジュアライズの方法ロケーションデータの取り扱い方法、わかりやすいビジュアライズの方法
ロケーションデータの取り扱い方法、わかりやすいビジュアライズの方法Tajima Itsuro
 
オープンデータを活用したアプリケーション開発
オープンデータを活用したアプリケーション開発オープンデータを活用したアプリケーション開発
オープンデータを活用したアプリケーション開発Tajima Itsuro
 
Development - International Open Data Hackathon Tokyo - Chiyoda ward geolocat...
Development - International Open Data Hackathon Tokyo - Chiyoda ward geolocat...Development - International Open Data Hackathon Tokyo - Chiyoda ward geolocat...
Development - International Open Data Hackathon Tokyo - Chiyoda ward geolocat...Tajima Itsuro
 
International Open Data Hackathon Tokyo - Chiyoda ward geolocation team
International Open Data Hackathon Tokyo - Chiyoda ward geolocation teamInternational Open Data Hackathon Tokyo - Chiyoda ward geolocation team
International Open Data Hackathon Tokyo - Chiyoda ward geolocation teamTajima Itsuro
 
現実世界をハックせよ!
現実世界をハックせよ!現実世界をハックせよ!
現実世界をハックせよ!Tajima Itsuro
 
Space Apps Challenge Ideathon Presentation
Space Apps Challenge Ideathon PresentationSpace Apps Challenge Ideathon Presentation
Space Apps Challenge Ideathon PresentationTajima Itsuro
 
iModela で モコモコ立体を作る
iModela で モコモコ立体を作るiModela で モコモコ立体を作る
iModela で モコモコ立体を作るTajima Itsuro
 

Plus de Tajima Itsuro (17)

ドラクエ映画の問題点
ドラクエ映画の問題点ドラクエ映画の問題点
ドラクエ映画の問題点
 
カジュアル・デジタル・コレクション
カジュアル・デジタル・コレクションカジュアル・デジタル・コレクション
カジュアル・デジタル・コレクション
 
新しい並行計算ライブラリ js-csp のご紹介
新しい並行計算ライブラリ js-csp のご紹介新しい並行計算ライブラリ js-csp のご紹介
新しい並行計算ライブラリ js-csp のご紹介
 
完全韻
完全韻完全韻
完全韻
 
Foss4g2013tokyo geothematics
Foss4g2013tokyo geothematicsFoss4g2013tokyo geothematics
Foss4g2013tokyo geothematics
 
Binbo
BinboBinbo
Binbo
 
Androidとオープンデータ ~国のデータを アプリに取り入れよう!~
Androidとオープンデータ ~国のデータを アプリに取り入れよう!~Androidとオープンデータ ~国のデータを アプリに取り入れよう!~
Androidとオープンデータ ~国のデータを アプリに取り入れよう!~
 
ロケーションデータの取り扱い方法、わかりやすいビジュアライズの方法
ロケーションデータの取り扱い方法、わかりやすいビジュアライズの方法ロケーションデータの取り扱い方法、わかりやすいビジュアライズの方法
ロケーションデータの取り扱い方法、わかりやすいビジュアライズの方法
 
Gisとは何か
Gisとは何かGisとは何か
Gisとは何か
 
オープンデータを活用したアプリケーション開発
オープンデータを活用したアプリケーション開発オープンデータを活用したアプリケーション開発
オープンデータを活用したアプリケーション開発
 
Development - International Open Data Hackathon Tokyo - Chiyoda ward geolocat...
Development - International Open Data Hackathon Tokyo - Chiyoda ward geolocat...Development - International Open Data Hackathon Tokyo - Chiyoda ward geolocat...
Development - International Open Data Hackathon Tokyo - Chiyoda ward geolocat...
 
International Open Data Hackathon Tokyo - Chiyoda ward geolocation team
International Open Data Hackathon Tokyo - Chiyoda ward geolocation teamInternational Open Data Hackathon Tokyo - Chiyoda ward geolocation team
International Open Data Hackathon Tokyo - Chiyoda ward geolocation team
 
現実世界をハックせよ!
現実世界をハックせよ!現実世界をハックせよ!
現実世界をハックせよ!
 
Open Data
Open DataOpen Data
Open Data
 
Space Apps Challenge Ideathon Presentation
Space Apps Challenge Ideathon PresentationSpace Apps Challenge Ideathon Presentation
Space Apps Challenge Ideathon Presentation
 
iModela で モコモコ立体を作る
iModela で モコモコ立体を作るiModela で モコモコ立体を作る
iModela で モコモコ立体を作る
 
Nottingam Gms
Nottingam GmsNottingam Gms
Nottingam Gms
 

非同期プログラミング養成ギブスとしてのNode.js