Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
Submit search
EN
Uploaded by
Ryunosuke SATO
83,305 views
Node.js を選ぶとき 選ばないとき
東京Node学園祭2013 での発表資料です。
Related topics:
Node.js Development
•
Read more
208
Save
Share
Embed
Download
Downloaded 184 times
1
/ 102
2
/ 102
3
/ 102
4
/ 102
5
/ 102
6
/ 102
7
/ 102
8
/ 102
9
/ 102
10
/ 102
11
/ 102
12
/ 102
13
/ 102
14
/ 102
15
/ 102
16
/ 102
17
/ 102
18
/ 102
19
/ 102
20
/ 102
21
/ 102
22
/ 102
23
/ 102
24
/ 102
25
/ 102
26
/ 102
27
/ 102
28
/ 102
29
/ 102
30
/ 102
31
/ 102
32
/ 102
33
/ 102
34
/ 102
35
/ 102
36
/ 102
37
/ 102
38
/ 102
39
/ 102
40
/ 102
41
/ 102
42
/ 102
43
/ 102
44
/ 102
45
/ 102
46
/ 102
47
/ 102
48
/ 102
49
/ 102
50
/ 102
51
/ 102
52
/ 102
53
/ 102
54
/ 102
55
/ 102
56
/ 102
57
/ 102
58
/ 102
59
/ 102
60
/ 102
61
/ 102
62
/ 102
63
/ 102
64
/ 102
65
/ 102
66
/ 102
67
/ 102
68
/ 102
69
/ 102
70
/ 102
71
/ 102
72
/ 102
73
/ 102
74
/ 102
75
/ 102
76
/ 102
77
/ 102
78
/ 102
79
/ 102
80
/ 102
81
/ 102
82
/ 102
83
/ 102
84
/ 102
85
/ 102
86
/ 102
87
/ 102
88
/ 102
89
/ 102
90
/ 102
91
/ 102
92
/ 102
93
/ 102
94
/ 102
95
/ 102
96
/ 102
97
/ 102
98
/ 102
99
/ 102
100
/ 102
101
/ 102
102
/ 102
More Related Content
PPTX
【東京Node学園祭2016】Node.js × Babel で AWS Lambda アプリケーションを開発する
by
Hiroyuki Kusu
PDF
Node.jsでブラウザメッセンジャー
by
Yahoo!デベロッパーネットワーク
PDF
TypeScriptへの入口
by
Sunao Tomita
PDF
Node.js基礎の基礎 - Miyazaki.js vol.2
by
Nobuhiro Nakashima
PDF
Node.js Tutorial at Hiroshima
by
Yoshihiro Iwanaga
PPT
Node.js で Web アプリ開発
by
Tatsumi Naganuma
PDF
Node.js入門
by
俊夫 森
PDF
Nodeについて
by
Natsuki Yamanaka
【東京Node学園祭2016】Node.js × Babel で AWS Lambda アプリケーションを開発する
by
Hiroyuki Kusu
Node.jsでブラウザメッセンジャー
by
Yahoo!デベロッパーネットワーク
TypeScriptへの入口
by
Sunao Tomita
Node.js基礎の基礎 - Miyazaki.js vol.2
by
Nobuhiro Nakashima
Node.js Tutorial at Hiroshima
by
Yoshihiro Iwanaga
Node.js で Web アプリ開発
by
Tatsumi Naganuma
Node.js入門
by
俊夫 森
Nodeについて
by
Natsuki Yamanaka
What's hot
PPTX
Node.js Hands-On
by
Akinari Tsugo
PPTX
Node.js×mongo dbで3年間サービス運用してみた話
by
leverages_event
PDF
Node js 入門
by
Satoshi Takami
PPTX
ビルド職人の朝は早い
by
Masashi MATSUI
PPTX
Sails.jsのメリット・デメリット
by
Ito Kohta
PPTX
AngularJS2でつまづいたこと
by
Takehiro Takahashi
PDF
サーバサイドNodeの使い道
by
pospome
PDF
最近のフロントエンドツールの紹介
by
Ryo Iinuma
PDF
づや会 Vol4 Node.jsとphpのパフォーマンスを比較してみる
by
zuya
PDF
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
by
Hiroh Satoh
PPT
[大図解]ピグライフはこう動いている
by
Akihiro Kuwano
PDF
Bp study39 nodejs
by
Yohei Sasaki
PDF
大阪Node学園 七時限目 「ゼロからはじめるnode.js」
by
Shunsuke Watanabe
PDF
Hello, Node.js
by
Shin Sekaryo
PDF
Node.jsでサーバプログラマ デビューしよう
by
Yuusuke Takeuchi
PDF
MVCフレームワーク Sails.jsについて機能紹介
by
kamiyam .
PPT
20131012 nodejs
by
Amuro Nishizawa
PPTX
Hokuriku.net 2013 01-26 node.js
by
Tadahiro Ishisaka
PDF
Nodeとフロントエンド − 知っておかなければならない、今と未来の話 −
by
Kohei Asai
PDF
もっとはじめる Ember.js !! ~ Getting started with Ember.js more ~
by
Ryunosuke SATO
Node.js Hands-On
by
Akinari Tsugo
Node.js×mongo dbで3年間サービス運用してみた話
by
leverages_event
Node js 入門
by
Satoshi Takami
ビルド職人の朝は早い
by
Masashi MATSUI
Sails.jsのメリット・デメリット
by
Ito Kohta
AngularJS2でつまづいたこと
by
Takehiro Takahashi
サーバサイドNodeの使い道
by
pospome
最近のフロントエンドツールの紹介
by
Ryo Iinuma
づや会 Vol4 Node.jsとphpのパフォーマンスを比較してみる
by
zuya
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
by
Hiroh Satoh
[大図解]ピグライフはこう動いている
by
Akihiro Kuwano
Bp study39 nodejs
by
Yohei Sasaki
大阪Node学園 七時限目 「ゼロからはじめるnode.js」
by
Shunsuke Watanabe
Hello, Node.js
by
Shin Sekaryo
Node.jsでサーバプログラマ デビューしよう
by
Yuusuke Takeuchi
MVCフレームワーク Sails.jsについて機能紹介
by
kamiyam .
20131012 nodejs
by
Amuro Nishizawa
Hokuriku.net 2013 01-26 node.js
by
Tadahiro Ishisaka
Nodeとフロントエンド − 知っておかなければならない、今と未来の話 −
by
Kohei Asai
もっとはじめる Ember.js !! ~ Getting started with Ember.js more ~
by
Ryunosuke SATO
Similar to Node.js を選ぶとき 選ばないとき
PPTX
how to create a web server with a raspberry pi
by
nshmzlose
PDF
Nodejs
by
和樹 川端
PDF
配布用Supervisordによるnode.jsの運用
by
yut148atgmaildotcom
ODP
今流行りのウェブアプリ開発環境Yeoman
by
tomo_masakura
PPTX
オタク×Node.js勉強会
by
虎の穴 開発室
PDF
新技術で未来の扉を開け! - Node-REDの環境構築と社内導入 -
by
Makoto SAKAI
PDF
Node.jsアプリの開発をモダン化するために取り組んできたこと
by
bitbank, Inc. Tokyo, Japan
PDF
プロのためのNode-RED再入門
by
Makoto SAKAI
PDF
Node-REDのノード開発容易化ツールNode generator
by
BMXUG
PDF
Nodeにしましょう
by
Yuzo Hebishima
PDF
Nodejs beginner
by
SoheiUchino1
ODP
node.js koとhtml5とwebsocketsと
by
scdn
PDF
20131116 creators meetup
by
Seigo Tanaka
PPTX
新しいWEBフロントの開拓.pptx
by
Ryo Higashigawa
PDF
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
by
Naoya Ito
PDF
ヒカラボ「自社サービス開発会社で活躍し続けるために必要な○○とは?」開発エンジニア
by
Isamu Suzuki
PDF
ヒカラボ「自社サービス開発会社で活躍し続けるために必要な○○とは?」開発エンジニア
by
leverages_event
PPTX
devsami kansai 2012 #c2
by
Yushi_Takagi
PDF
Node red hands on - public
by
Takehiko Amano
PDF
後期02
by
Takenori Nakagawa
how to create a web server with a raspberry pi
by
nshmzlose
Nodejs
by
和樹 川端
配布用Supervisordによるnode.jsの運用
by
yut148atgmaildotcom
今流行りのウェブアプリ開発環境Yeoman
by
tomo_masakura
オタク×Node.js勉強会
by
虎の穴 開発室
新技術で未来の扉を開け! - Node-REDの環境構築と社内導入 -
by
Makoto SAKAI
Node.jsアプリの開発をモダン化するために取り組んできたこと
by
bitbank, Inc. Tokyo, Japan
プロのためのNode-RED再入門
by
Makoto SAKAI
Node-REDのノード開発容易化ツールNode generator
by
BMXUG
Nodeにしましょう
by
Yuzo Hebishima
Nodejs beginner
by
SoheiUchino1
node.js koとhtml5とwebsocketsと
by
scdn
20131116 creators meetup
by
Seigo Tanaka
新しいWEBフロントの開拓.pptx
by
Ryo Higashigawa
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
by
Naoya Ito
ヒカラボ「自社サービス開発会社で活躍し続けるために必要な○○とは?」開発エンジニア
by
Isamu Suzuki
ヒカラボ「自社サービス開発会社で活躍し続けるために必要な○○とは?」開発エンジニア
by
leverages_event
devsami kansai 2012 #c2
by
Yushi_Takagi
Node red hands on - public
by
Takehiko Amano
後期02
by
Takenori Nakagawa
More from Ryunosuke SATO
PDF
Rails あるある
by
Ryunosuke SATO
PDF
ServerSideJavaScript
by
Ryunosuke SATO
PPTX
片手間JS on Rails
by
Ryunosuke SATO
PDF
How to relaunch "sapporojs.org" ~Introduction to middleman~
by
Ryunosuke SATO
PDF
はじめる Ember.js!! ~ Getting started with ember.js ~
by
Ryunosuke SATO
KEY
Node.jsってどうなの?
by
Ryunosuke SATO
PDF
Social coding をもっと楽しみたいあなたへ
by
Ryunosuke SATO
PDF
コミュニティのある風景
by
Ryunosuke SATO
PDF
Ember コミュニティとわたし
by
Ryunosuke SATO
KEY
capybara で快適なテスト生活を
by
Ryunosuke SATO
PDF
Testable JavaScript
by
Ryunosuke SATO
PDF
Pusherとcanvasで作るリアルタイムグラフ
by
Ryunosuke SATO
PDF
Introduction for Browser Side MVC
by
Ryunosuke SATO
PDF
脱レガシー化計画
by
Ryunosuke SATO
PDF
gem の探し方
by
Ryunosuke SATO
PDF
Clean Javascript
by
Ryunosuke SATO
KEY
アジャイル的アプローチから見えてきたこと
by
Ryunosuke SATO
Rails あるある
by
Ryunosuke SATO
ServerSideJavaScript
by
Ryunosuke SATO
片手間JS on Rails
by
Ryunosuke SATO
How to relaunch "sapporojs.org" ~Introduction to middleman~
by
Ryunosuke SATO
はじめる Ember.js!! ~ Getting started with ember.js ~
by
Ryunosuke SATO
Node.jsってどうなの?
by
Ryunosuke SATO
Social coding をもっと楽しみたいあなたへ
by
Ryunosuke SATO
コミュニティのある風景
by
Ryunosuke SATO
Ember コミュニティとわたし
by
Ryunosuke SATO
capybara で快適なテスト生活を
by
Ryunosuke SATO
Testable JavaScript
by
Ryunosuke SATO
Pusherとcanvasで作るリアルタイムグラフ
by
Ryunosuke SATO
Introduction for Browser Side MVC
by
Ryunosuke SATO
脱レガシー化計画
by
Ryunosuke SATO
gem の探し方
by
Ryunosuke SATO
Clean Javascript
by
Ryunosuke SATO
アジャイル的アプローチから見えてきたこと
by
Ryunosuke SATO
Node.js を選ぶとき 選ばないとき
1.
Node.js を選ぶとき 選ばないとき 東京Node学園祭 2013 2013.10.26 Sapporo.js 佐藤
竜之介(Ryunosuke SATO)
2.
提供 Community for people
who like JavaScript. Sapporo.js
3.
自己紹介
4.
@tricknotes I am a
software developer who love JavaScript and Ruby. http://tricknotes.hateblo.jp/
5.
I love OSS
6.
I am a
contributer of Ember.js
8.
Sapporo.js http://sapporojs.org/
9.
/* * advertising * * !!Important!! *
10.
2013.11.30 JavaScript 道場 http://connpass.com/event/3674/
11.
n i 幌 札 2013.11.30 JavaScript 道場 http://connpass.com/event/3674/
12.
Idobata https://idobata.io
13.
*/
14.
よろしく お願いします
15.
Node.js を選ぶとき 選ばないとき 東京Node学園祭 2013 2013.10.26 Sapporo.js 佐藤
竜之介(Ryunosuke SATO)
16.
今日の話 私が web アプリケーション
を作るときに、 Node.js を選んだ場面、選ばなかった場面があります そのときの背景を交えつつ、 Node.js と Rails を比較し Node.js の適切な使い所について考察 します
17.
Why Rails?
18.
Node.js ライブラリには Ruby
/ Rails の影響を 受けているものが多い * * * * Rails(generator)<-> Sinatra <-> Sprockets <-> Rails <-> yeoman Express Mincer Sails なので、有意義な比較ができそう
19.
対象者 * Node.js 以外の選択肢を知らない方 *
Node.js をあまり使ったことがない方
20.
注意 早く快適にアプリケーションを開発する、 ということに主眼を置いて考察していきます パフォーマンスやサーバリソースなどの 優先順位は低めです
21.
さて、みなさんが web ア プリケーション
を作りはじ めるとき、どういう基準でそ の手段を選ぶでしょうか?
22.
Node.js の場合
23.
Node.js での web
アプリ ケーション開発について 確認してみましょう
24.
http://nodejs.org/
25.
まずは素の状態で始めてみる var http =
require('http'); http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello Worldn'); }).listen(1337, '127.0.0.1'); console.log('Server running at http://127.0.0.1:1337/'); $ curl http://localhost:1337 Hello World
26.
Node.js の基本的な仕組みを理解する には大事な一歩 でも、これだけだとまだまだ簡単には作れそうにない
27.
実際にはもっと複雑なアプリケーション を作ることになるでしょう 複雑さに立向うために ライブラリを使う
28.
http://expressjs.com/
29.
例えば、 express を使ってみる var
express = require('express'); var app = express(); app.get('/', function(req, res){ res.send('Hello World'); }); app.listen(3000);
30.
express はとてもシンプル コアが大きくないし、拡張も簡単 ただ、自由度が高いために整理するのに工夫が必要
31.
確かに、express だと、 学習コストは低いかもしれない 学習コスト? 開発速度を維持するコスト? どっちが大事? もうすこし大きなフレームワークを好むひともいるか もしれない
32.
http://sailsjs.org/
33.
model 周りが貧弱 * 関連を扱えない *
マイグレーションがない データベースとつなげればいいんじゃなくて、 ドメインロジックの管理も適切に行いたい...!! そこまで大きな手助けしてくれるフレームワークでは ないのでは...?
34.
最初に大長編 Gruntfile.js を生成する 生成されたコードはバージョンアップに 追従するのが面倒 デフォルトで上手いことやってほしい
35.
http://gruntjs.com/
36.
contlib で様々なタスクが配布され ているのはありがたい but...
37.
設定を毎回書くのは手間 grunt.loadNpmTasks('grunt-contrib-coffee'); grunt.initConfig({ coffee: { compile: { files:
{ 'result.js': 'source.coffee' } } } });
38.
もっと、スムーズに開発を進めたい...!!
39.
Rails の場合
40.
Asset pipeline * CoffeeScript
や Sass のコンパイル * asset ファイルの minify, concat * digest hash の付与 Grunt 使ってやりたくなるようなことは、 デフォルトでやってくれる
41.
Asset pipeline * application.js //=
require jquery //= require underscore // //= require app application.js にリクエストを投げると、 すべて連結して取得できる ビルド時には minify + digest が付与される
42.
ビルドタスク $ rake asset:precompile そもそもデフォルトで入っている
43.
js のライブラリの管理 * jquery-rails *
underscore-rails * moment-rails ... assets のパスが追加される、だけ 静的なファイルをリポジトリに含めなくてOK
44.
ActiveRecord * * * * validation relation migration ドメインロジックの管理
45.
一本の道があるということ の良い所
46.
その道に沿うように他のライブラリが成長していく Rails に乗る形で、まとまった単位の機能を提 供するライブラリが多い * 画像アップロード
-> carrierwave * 認証管理 -> devise * OAuth provider -> doorkeeper やりたいことを実現するまでの手数が少ない
47.
ちょっと基本に立ち返る
48.
そもそも、Node.js と Rails ではスタートが違う
49.
“Evented I/O for
V8 javascript.” あくまで、非同期 IO の環境 web 開発以外でも活躍している
50.
http://nodeos.github.io/
51.
https://github.com/rogerwang/node-webkit
52.
“Web development that
does’t hurt” web 開発のためのフレームワーク 7 年かけて環境が整備されてきている
53.
フレームワーク ライブラリ 言語(実装) 言語(仕様)
54.
Rails が開発効率に重点を置いているので、 使いやすいのは納得できる Node.js では、まだその大きさのフレーム ワークは出てきてなくて、
小回りが効くライ ブラリが多い
55.
Node.js にも、 道を敷いてくれるような フレームワークがあるとよいの...? そうでもない、ような...
56.
私の例
57.
自分の例① ->
58.
NotHub http://nothub.org/
59.
NotHub * GitHub のイベントをリアルタイムに通知する Chrome
Extension * 受け取るイベントを設定可能 * public なリポジトリ限定
60.
よくある使い方 * ライブラリのバージョンアップを早く知りたい * 自分のリポジトリが
star されたのを知りたい * 興味があるハッカーの活動を知りたい
61.
GitHub API Pub Crawler Redis Sub Publisher Chrome Extension crawl
62.
最初は Ruby で書き始めたが、 パフォーマンスでなくて
Node.js で書き直した * GitHub の API をとにかく叩く必要があった * Ruby でマルチスレッド処理するのは意外と面倒 * Ruby で非同期書くのも手間
63.
そもそも、Rails が得意な 分野ではない
64.
通知の部分は単純な push 通知なので、 Socket.IO
がフィットした
65.
ビルドタスクは Rake 当時は Grunt
の開発が始まったばかり Chrome Extension をパッケージしたい 今だと Grunt を使うかも
66.
自分の例② ->
67.
starseeker http://starseeker.so/
68.
starseeker * GitHub の
followings の star を daily メールでお知らせする web アプリ * リアルタイムじゃなくてアーカイブ
69.
よくある使い方 * 良さそうなライブラリを知る手がかりに!! * 朝、仕事を始める前に
hot なリポジトリをチェック
70.
GitHub API save Crawler MongoDB read Web Application PostgreSQL crawl
71.
* * * * Crawl したデータを MongoDB
へ MongoDB なら Node.js と思って書き始めたが... ユーザ管理とか OAuth 周りが意外と面倒 Rails でやることに
72.
Crawl する部分は Node.js
73.
メール配信も、Rails がいい感じにフィットした * html/text
の multipart メール * html とのコード共有
74.
<-> 両方ともそれぞれに良さがあるので、 それぞれに適切な場面がある!!
75.
よくある誤解集
76.
これだけで選択するのは まだ早い
77.
‘ クライアントとサーバの 言語統一できて開発がはかどる
78.
* DOM を扱う
JavaScript と、ネットワーク、 ドメインロジックを扱う JavaScript は違う * 確かに言語は統一できるけど、思考の スイッチングコストは発生する
79.
イベント発火だけでも結構違う // DOM jQuery('form').trigger(‘form’); // Node.js stream.emit('fetch’,
data);
80.
‘ クライアントとサーバで ロジックの共有がスムーズにできる
81.
* サーバ側でもクライアント側でも使いたい ロジックはそこまでないのでは...? * utility
的な関数群だと、ありえるかも * underscore.js など既存のライブラリ を使いましょう
82.
互換性のあるコードを維持するのは結構手間 関数定義の工夫 var exports =
typeof(module) === 'undefined' ? this : module.exports; exports.method = function() { // ... };
83.
互換性のあるコードを維持するのは結構手間 対象ブラウザで使えないメソッドのチェック array.every(function() { // ... }); fn.bind(this);
84.
‘ 簡単にスケールできる
85.
* 採用するアーキテクチャに依存する * Node.js
を使っていてもある程度想定して おかないと、スケール出来ない設計になってしまう
86.
Node.js 以外でも ある程度は課金で解決できることもある
87.
‘ バージョン間の互換性が高い
88.
* Node.js の
API 自体は安定している * しかしバージョンアップしたら意外と動かなくなる (パフォーマンス劣化/メモリリークしていることも) * 拡張ライブラリは全く動かなくなる場合もある
89.
‘ サーバを API 化すれば、 JSON
を返すだけのサーバで OK
90.
* ドメインロジックの管理のしやすさは ライブラリに依存する * サーバのデータをすべてクライアントに送れない 場合が多々あるので、その制御が必要 *
OAuth の認証トークン * 行動履歴 * ...
91.
‘ リアルタイム通信 = Socket.IO
92.
リアルタイム通信の手段はたくさんある * WebSocket * Server-Sent
Events * XHR polling * Socket.IO * Pusher ...
93.
リアルタイムを扱わない部分とのバランス も考慮に入れる必要がある
94.
まとめ
95.
実際はこれに運用周りの話が加わってくるので、 もっと複雑 サービスの性質、規模やパフォーマンスによって、 落とし所はまた違ってくる
96.
Node.js は大変素晴らしいけど、 適切に選択する必要がある Node.js 以外の文化も踏まえた上で Node.js
を選択できると選択の幅が広がるのでは いざというときに移行する判断ができるのも大事
97.
で、これは常に変わっていくので、 バランスを見極めながら選択するんですかねー * エコシステム * ライブラリ *
自分の作ろうとしているもの 答えはない
98.
for more information...
99.
静的サイト開発ツールとしての MiddlemanとGrunt http://webtech-walker.com/archive/2013/09/middleman_vs_grunt.html
100.
Node.jsをサーバサイドの UIレイヤに限定するのか? http://wazanova.jp/post/63449778024/node-js-ui
101.
ダブルMVCの意味するところ [GoGaRuCo 2013] http://wazanova.jp/post/64057743910/mvc-gogaruco-2013
102.
http://www.flickr.com/photos/sakura-kame/479871795/ 快適なweb開発を!
Download