Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
everyone node.js
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
ogom
October 13, 2011
Programming
120
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
everyone node.js
node.js 入門編
ogom
October 13, 2011
More Decks by ogom
See All by ogom
PicoRuby から始めるたのしい電子工作
ogom
0
2.1k
GraphQL Better Errors
ogom
0
400
Osaka RubyKaigi 02
ogom
0
380
Osaka RubyKaigi 01
ogom
0
250
Contributing to GitLab with OSS Gate
ogom
0
640
DojoCon Japan 2017
ogom
0
170
GDStudy Engage
ogom
1
820
Using Immutable.js with React Redux
ogom
0
180
CoderDojo と オープンソース
ogom
2
530
Other Decks in Programming
See All in Programming
技術記事、 専門家としてのプログラマ、 言語化
mizchi
14
7.3k
初めてのKubernetes 本番運用でハマった話
oku053
0
120
気圧・高度・GPSを記録&可視化するアプリ「Koudo」を作った話
hjmkth
1
340
The Bowling Game- From Imperative to Functional Programming - Part 1
philipschwarz
PRO
0
280
任せる範囲はこう広がった / How the Scope of AI Delegation Has Expanded
nrslib
1
240
なぜ関数型プログラミングで「型」と「証明」が語られるのか #fp_matsuri
kajitack
3
550
AI時代の仕事技芸論〜ソフトウェア開発で「遊ぶように働く」職人的熟達のすすめ(スクフェス仙台 2026バージョン)
kuranuki
0
400
エンジニアにデザインハーネスを 〜デザインプロセスを規定するためのハーネス〜 / Design harness from an engineer's perspective
rkaga
2
890
AIを活用したE2Eテスト実装効率化のあゆみ / ebisu-mobile-14-kotetu
kotetuco
0
160
AIエージェントで 変わるAndroid開発環境
takahirom
1
440
ローカルLLMでどこまでコードが書けるか -拡張版 / How much code can be written on a local LLM Extended
kishida
12
4.6k
AI 輔助遺留系統現代化的經驗分享
jame2408
1
1.2k
Featured
See All Featured
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
201
75k
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
800
Product Roadmaps are Hard
iamctodd
55
12k
Embracing the Ebb and Flow
colly
88
5.1k
Discover your Explorer Soul
emna__ayadi
2
1.2k
Code Review Best Practice
trishagee
74
20k
30 Presentation Tips
portentint
PRO
1
340
Mind Mapping
helmedeiros
PRO
1
280
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
960
Building a Scalable Design System with Sketch
lauravandoore
463
34k
Being A Developer After 40
akosma
91
590k
Java REST API Framework Comparison - PWX 2021
mraible
34
9.4k
Transcript
ΈΜͳͷ node.js node.js ೖฤ
ࣗݾհ ! •GitHubɿogom •Twitterɿ@ogomr
͡Ίʹ •ΈΜͳͷnode.jsͬͯʁ •node.js ΈΜͳͰ͏ΞϓϦέʔγϣϯʹ ద͍ͯ͠·͢ɻ •·ͨɺΈΜͳ͕͍ͬͯΔ JavaScript ͷ ݴޠͰهड़͠·͢ɻ !
•͜Ε͔Β node.js Λֶश͢Δํʹ͚ͯ ಛ͍ॴΛղઆ͠·͢ɻ hello node world!
Agenda ! •node.js ͱ •node.js ͷ͍ॴ •ྲྀߦͱظ
node.js ͱ
node.js ͷಛ •Eventide I/O for V8 JavaScript. •node.js ͷެࣜαΠτͷ࢝Ίʹग़͍ͯΔΩʔϫʔυͰ͢ɻ ͜ͷ
Evented I/O ͱ V8 JavaScript ͕ಛΛද͠·͢ɻ ! •Evented I/O •ΠϕϯτۦಈͷΈͰେྔͷೖग़ྗ(I/O)Ͱ ߴ͍ύϑΥʔϚϯεͷΞϓϦέʔγϣϯ͕࡞Ͱ͖·͢ɻ •V8 JavaScript •V8 Google ͷ Chrome ʹࡌ͞Ε͍ͯΔߴͳ JavaScript Engine Ͱ͢ɻͦͷ JavaScript ͰαʔόʔαΠυͷΞϓϦέʔγϣ ϯ͕࡞Ͱ͖·͢ɻ
node.js ͍͍Ͷʂ •ΠϕϯτϧʔϓߴͳύϑΥʔϚϯεΛཁٻ͞ΕΔ ωοτϫʔΫΞϓϦέʔγϣϯʹ࠷దͰ͢ɻ •ฒߦॲཧΛγϯάϧεϨουͰ͢ΔͨΊʹϊϯϒϩοΩϯάI/OͰඇಉظॲཧΛ࣮ݱ͍ͯ͠·͢ɻ ɹ(node.js ฒߦॲཧʹΠϕϯτϧʔϓͱݺΕΔϞσϧΛ࠾༻͍ͯ͠·͢ɻ) •γϯάϧεϨουϝϞϦͷফඅྔ͕গ͘ ϋʔυΣΞͷίετΛ͑·͢ɻ •1ͭͷϓϩηεͰෳͷϦΫΤετΛѻ͏ͷͰϝϞϦྔΫϥΠΞϯτʹൺྫ͠·ͤΜɻ
•γϯάϧεϨουͱϊϯϒϩοΩϯI/O JavaScript ͱ૬ੑ͕Α͘ ·ͨɺΫϩʔδϟ͕ΠϕϯτۦಈͷΈͷίʔϧόοΫʹͱͯศརͰ͢ɻ •ϑϩϯτΤϯυͷߏஙͰϝδϟʔͳ JavaScript Ͱ όοΫΤϯυͷॲཧΛߏஙͰ͖·͢ɻ •αʔόʔαΠυJavaScript ͱݴΘΕ͍ͯ·͢ɻ͞ΒʹɺϑϩϯτΤϯυͰख़Ε͍ͯΔ ΠϕϯτۦಈͷελΠϧόοΫΤϯυͰར༻Ͱ͖·͢ɻ
͝Μ͍͖ͨͩ·͢ •ಠͷஉ͕͝Μͷ༻ҙΛ࢝Ί·ͨ͠ɻ •ిࢠϨϯδͰࡢͷ͡Ό͕ΛԹΊ·͢ɻ •ͦͷؒʹΨείϯϩͰ͓౬Λ͔͠·͢ɻ •͝൧ΛΑͦͬͯɺ͠͠ٳܜŋŋŋ •͓౬͕ΰϘΰϘͨ͠ͷͰ͓ΛೖΕ·͢ɻ •νʔϯͱ໐ͬͨͷͰςʔϒϧͷࡼʹҠͯ͠ Ҝࢠʹ࠲Γ·͢ɻ •͠Λखʹʮ͍͖ͨͩ·͢ʯ ͋ͬςϨϏ͚ͭͳ͖Όʂ
! •ૣ͘͝ΜΛ৯͍ͨͷͰ͡Ό͕ͱ ͓ͷ༻ҙΛฒߦʹ࡞ۀ͠·͢ɻ •͡Ό͕ͷԹΊͱ͓౬͕͘ͷͲͪΒ͕ઌ ͰΑͯ͘ɺͰ͖ͨํ͔ΒऔΓֻ͔ΕΔͷ خ͍͠Ͱ͢ɻ
ΠϕϯτϧʔϓͱϊϯϒϩοΩϯάI/O •͝Μͷ༻ҙͰઆ໌͠·͢ɻ •ಠͷஉɿΠϕϯτϧʔϓ •ϨϯδͷԹΊɿΠϕϯτϋϯυϥA •νʔϯɿΠϕϯτϋϯυϥAͷίʔϧόοΫ •ίϯϩͰ౬͠ɿΠϕϯτϋϯυϥB •ΰϘΰϘɿΠϕϯτϋϯυϥBͷίʔϧόο Ϋ •Πϕϯτϧʔϓ
•Πϕϯτ͕ൃੜͨ͠λΠϛϯάͰ ίʔϧόοΫͰݺͼग़͞ΕΔΈͷ͜ͱ •ϊϯϒϩοΩϯάI/O •σʔλೖग़ྗ(I/O)͕ྃΛͨͣʹ ଞͷॲཧΛ։࢝͢Δํࣜͷ͜ͱ ϊϯϒϩοΩϯά ΠϕϯτϋϯυϥA ίʔϧόοΫA ΠϕϯτϋϯυϥB ίʔϧόοΫB ΰϘΰϘ νʔϯ ͓ࡼ ౬ͷΈ ͡Ό͕ ϨϯδԹΊ ͓ ίϯϩ౬͠ Πϕϯτϧʔϓ ϊϯϒϩοΩϯά
node.js ͷ͍ॴ
Αࣖ͘ʹ͢Δ •C10K •C clientɺ10K 10000 Λද͍ͯ͠·͢ɻ •ಉ࣌ʹଓ͢ΔΫϥΠΞϯτ͕ଟ͗͢ΔͱαʔόͷύϑΥʔϚϯε͕େ͖͘Լ͢ΔͰ͢ɻ •ϋʔυΣΞ͕ϘτϧωοΫͰͳ͘ιϑτΣΞʹ͕͋Γ·͢ɻ
•Apache ͱ nginx •Apache εϨουϞσϧͰ͢ɻ •ΫϥΠΞϯτ͔ΒͷϦΫΤετΛॲཧΛ͢Δͷʹ1ͭͷϓϩηε͕ඞཁͰ͢ɻ •ಉ࣌ʹॲཧ͢ΔϦΫΤετͷΛ૿͢ͱϓϩηεͷ૿͑ΔͷͰϝϞϦͷ༻ྔ૿Ճ͍͖ͯ͠·͢ɻ •nginx ΠϕϯτϧʔϓͰ͢ɻ •1ͭͷϓϩηεͰෳͷϦΫΤετΛѻ͏ͷͰϝϞϦͷ༻ྔ΄ͲΜͲ૿Ճ͠·ͤΜɻ •εϨουϞσϧେྔͷܭࢉॲཧ(CPUόϯυ)ʹ͍͍ͯ·͢ɻ •Πϕϯτϧʔϓେྔͷཁٻॲཧ(I/Oόϯυ)ͷωοτϫʔΫ ΞϓϦέʔγϣϯʹద͍ͯ͠·͢ɻ
ωοτϫʔΫΞϓϦέʔγϣϯͷࣄ •ϦΫΤετͱϨεϙϯε 1.ϦΫΤετΛड͚·͢ɻɹɹɹɹɹɹɹ→ɹnetwork read 2.σΟεΫ͔ΒίϯςϯπΛಡΈ·͢ɻɹ→ ɹdisk read 3.ϨεϙϯεΛฦ͠·͢ɻɹɹɹɹɹɹɹ→ɹnetwork write •ωοτϫʔΫ
ΞϓϦέʔγϣϯৗʹԿॲ͔Ͱread/write Λ ॲཧ͍ͯ͠·͢ɻ •read/write ඞͣ४උ͕ඞཁ͕ͦΕΒશͯϒϩοΫ͢Δͱ ϦΫΤετ͔ΒϨεϙϯεΛྃ͢Δ·Ͱʹ͕͔͔࣌ؒΓ·͢ɻ •node.js read/write ΛϒϩοΫ͠ͳ͍ɻ •ωοτϫʔΫ ΞϓϦέʔγϣϯͰߴ͍ύϑΥʔϚϯε͕ಘΒΕ·͢ɻ
ྲྀߦͱظ
JavaScript ͷಈ •JavaScript ͷීٴ •JSON •Web্ͷσʔλަϑΥʔϚοτ͕XML͔ΒJSONʹγϑτ͍ͯ͠·͢ɻ •HTML5 •ωοτϫʔΫ(Web Socket)ɺεϨου(Web Workers)ɺͳͲ
•HTML5ͷීٴ͢ΔͱɺJavaScript։ൃऀ͕૿Ճ͢ΔͱݴΘΕ͍ͯ·͢ɻ •υΩϡϝϯτσʔλϕʔε •CouchDB, MongoDB •JavaScriptͰͷΞΫηεΛڧ͘ҙ͍ࣝͯ͠·͢ɻ • JavaScript ։ൃऀͷ૿Ճ͕༧ଌ͞Ε·͢ɻ •࣮ߦڥ։ൃڥɾϑϨʔϜϫʔΫ͕͑ঘߋͰ͢ɻ •ࣄྫαϯϓϧίʔυͷྔ͕ JavaScript ͷར༻Λଅਐ͞Ε·͢ɻ
node.js ͷ͜Ε͔Β •node.js Λ࢝ΊΑ͏ •JavaScript ͰϓϩάϥϜΛهड़͢ΔͷͰෑډ͍Ͱ͢ɻ •socket.ioΛ͡ΊศརͳϥΠϒϥϦ͕ࢁ͋Γ·͢ɻ •npm registry Ͱެ։͞Ε͍ͯ·͢ɻ
•node.js ͷ PaaS ϩάσʔλϕʔεͳͲͷ SaaS ͕ ొ͓ͯ͠Γ؆୯ʹ࣮ߦڥ͕खʹೖΓ·͢ɻ ✤node.js ͕ϓϩάϥϛϯάΛ࢝ΊΔ ֻ͚ͬʹͳΕΑ͍ͳͱࢥ͍ͬͯ·͢ɻ enjoy node!
͋Γ͕ͱ͏͍͟͝·ͨ͠