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
echoサーバーを書いてI/Oと仲良くなる話
Search
kariyayo
April 07, 2017
Programming
3
830
echoサーバーを書いてI/Oと仲良くなる話
kariyayo
April 07, 2017
Tweet
Share
More Decks by kariyayo
See All by kariyayo
MobX の話
kariyayo
0
370
SpringはどうやってDIしているのか? #jjug_ccc
kariyayo
4
3.5k
Apexで複数環境のLambda関数をデプロイする話 #jawsug
kariyayo
1
1.9k
近況報告といろいろ作るのが楽しい話 #yokohama_north
kariyayo
0
860
目指せ3つ星インデックス #yokohama_north
kariyayo
2
830
Spring Boot と Swagger #渋谷java
kariyayo
4
5.8k
Gradleを使えるようになるために
kariyayo
0
93
Other Decks in Programming
See All in Programming
令和最新版手のひらコンピュータ
koba789
14
8k
大規模FlutterプロジェクトのCI実行時間を約8割削減した話
teamlab
PRO
0
490
コーディングは技術者(エンジニア)の嗜みでして / Learning the System Development Mindset from Rock Lady
mackey0225
2
580
Claude Codeで挑むOSSコントリビュート
eycjur
0
180
KessokuでDIでもgoroutineを活用する / Go Connect #6
mazrean
0
110
Claude Codeで実装以外の開発フロー、どこまで自動化できるか?失敗と成功
ndadayo
2
1.4k
The state patternの実践 個人開発で培ったpractice集
miyanokomiya
0
150
Laravel Boost 超入門
fire_arlo
1
120
Understanding Ruby Grammar Through Conflicts
yui_knk
1
130
The State of Fluid (2025)
s2b
0
200
GUI操作LLMの最新動向: UI-TARSと関連論文紹介
kfujikawa
0
1k
エンジニアのための”最低限いい感じ”デザイン入門
shunshobon
0
130
Featured
See All Featured
The World Runs on Bad Software
bkeepers
PRO
70
11k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
34
6k
Being A Developer After 40
akosma
90
590k
Become a Pro
speakerdeck
PRO
29
5.5k
Reflections from 52 weeks, 52 projects
jeffersonlam
351
21k
Raft: Consensus for Rubyists
vanstee
140
7.1k
The Cult of Friendly URLs
andyhume
79
6.5k
Unsuck your backbone
ammeep
671
58k
The Cost Of JavaScript in 2023
addyosmani
53
8.8k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
46
7.6k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Transcript
FDIPαʔόʔΛॻ͍ͯ *0ͱྑ͘ͳΔ 2017/3/25 Yokohama North Meetup ˌ5 #yokohama_north bati (@bati11_)
*0ͷ
*0ͷ • งғؾ͔͠௫Ίͯͳͯͪ͘ΌΜͱ͔ͬͯͳ͔ͬͨ • άάΔͱ৭ʑग़ͯ͘Δ • ৭ʑग़ͯ͘Δ͚Ͳɺେମ6/*9ωοτϫʔΫϓϩάϥϛϯάΛ ࢀরͯ͠Δ • IUUQTXXXBNB[PODPKQ6/*9ωοτϫʔΫϓϩάϥϛϯά7PMωοτϫʔ
Ϋ"1*ιέοτͱ95*8ϦνϟʔυεςΟʔϰϯεEQ • ಡΜͰΈͨ • ϒϩάʹ·ͱΊͨ • IUUQCBUJCMPHIBUFOBCMPHDPNFOUSZ
*0ͷ • ͭͷ*0Ϟσϧ • ϒϩοΩϯά*0 • ϊϯϒϩοΩϯά*0 • *0ଟॏ •
γάφϧۦಈ*0 • ඇಉظ*0
*0ͷ • ͭͷ*0Ϟσϧ • ϒϩοΩϯά*0 • ϊϯϒϩοΩϯά*0 • *0ଟॏ •
γάφϧۦಈ*0 • ඇಉظ*0 今回は話しない
*0ͷ • σʔλಡΈࠐΈ࣌ͷ*0ɺͭͷεςοϓ͔ΒΔ • σʔλΛͭ • Χʔωϧ͔ΒϢʔβʔϓϩάϥϜσʔλΛίϐʔ ͢Δ
σʔλͪ Χʔωϧ͔Β Ϣʔβʔ σʔλΛίϐʔ ىಈ ௨ ىಈ ྃ ϒϩοΫ ݕࠪ
४උྃ ىಈ ྃ ϒϩοΫ ϒϩοΫ ϒϩοΩϯά *0 ϊϯ ϒϩοΩϯά *0 *0ଟॏ ඇಉظ*0 ݕࠪ ྃ ݕࠪ ݕࠪ ݕࠪ ϒϩοΫ ݕࠪ
• ಉظ*0ૢ࡞ͱඇಉظ*0ૢ࡞ͷ *0ͷ ಉظI/Oૢ࡞Ͱɺ͜ΕΛཁٻͨ͠ϓϩηε ཁٻͨ͠I/Oૢ࡞͕ྃ͢Δ·ͰϒϩοΫ͢Δ ඇಉظI/Oૢ࡞Ͱɺ͜ΕΛཁٻͨ͠ϓϩηε ϒϩοΫ͠ͳ͍ UNIXωοτϫʔΩϯάϓϩάϥϛϯά ୈ2൛ Vol.1
σʔλͪ Χʔωϧ͔Β Ϣʔβʔ σʔλΛίϐʔ ىಈ ௨ ىಈ ྃ ϒϩοΫ ݕࠪ
४උྃ ىಈ ྃ ϒϩοΫ ϒϩοΫ ϒϩοΩϯά *0 ϊϯ ϒϩοΩϯά *0 *0ଟॏ ඇಉظ*0 ݕࠪ ྃ ݕࠪ ݕࠪ ݕࠪ ϒϩοΫ ݕࠪ 同期I/O操作
σʔλͪ Χʔωϧ͔Β Ϣʔβʔ σʔλΛίϐʔ ىಈ ௨ ىಈ ྃ ϒϩοΫ ݕࠪ
४උྃ ىಈ ྃ ϒϩοΫ ϒϩοΫ ϒϩοΩϯά *0 ϊϯ ϒϩοΩϯά *0 *0ଟॏ ඇಉظ*0 ݕࠪ ྃ ݕࠪ ݕࠪ ݕࠪ ϒϩοΫ ݕࠪ 非同期I/O操作
FDIPαʔόʔ
FDIPαʔόʔ • ΫϥΠΞϯτ͔ΒೖྗΛड͚͚ͯɺͦͷ··ฦ͢ αʔόʔ • ίʔυIUUQTHJUIVCDPNCBUJPSFOPFDIPTFSWFSCMPCNBTUFSTSD TJOHMF@FDIP@TFSWFSD • σϞ
σʔλͪ Χʔωϧ͔Β Ϣʔβʔ σʔλΛίϐʔ ىಈ ௨ ىಈ ྃ ϒϩοΫ ݕࠪ
४උྃ ىಈ ྃ ϒϩοΫ ϒϩοΫ ϒϩοΩϯά *0 ϊϯ ϒϩοΩϯά *0 *0ଟॏ ඇಉظ*0 ݕࠪ ྃ ݕࠪ ݕࠪ ݕࠪ ϒϩοΫ ݕࠪ
FDIPαʔόʔ • SFBEͰϒϩοΫͯ͠Δ • ҎԼͷͭͷํ๏Ͱରࡦͯ͠ΈΔ • ϒϩοΩϯά*0ͷ··Ϛϧνϓϩηεʹ͢Δ • ϊϯϒϩοΩϯά*0Λ͏ •
*0ଟॏΛ͏
ϒϩοΩϯά*0ͷ·· Ϛϧνϓϩηεʹ͢Δ
ϒϩοΩϯά*0ͷ··Ϛϧνϓϩηεʹ͢Δ • GPSLΛͬͯϚϧνϓϩηεʢϚϧνεϨουͰ ͍͍͚Ͳ$ݴޠͰϚϧνεϨου͔Βͳ͍ʣ • αʔόʔͷϓϩηεͭͰɺͭͷΫϥΠΞϯτʹ ରԠ͢Δ • ίʔυIUUQTHJUIVCDPNCBUJPSFOPFDIPTFSWFSCMPCNBTUFSTSD GPSL@FDIP@TFSWFSD
• σϞ
σʔλͪ Χʔωϧ͔Β Ϣʔβʔ σʔλΛίϐʔ ىಈ ௨ ىಈ ྃ ϒϩοΫ ݕࠪ
४උྃ ىಈ ྃ ϒϩοΫ ϒϩοΫ ϒϩοΩϯά *0 ϊϯ ϒϩοΩϯά *0 *0ଟॏ ඇಉظ*0 ݕࠪ ྃ ݕࠪ ݕࠪ ݕࠪ ϒϩοΫ ݕࠪ
ϊϯϒϩοΩϯά*0Λ͏
ϊϯϒϩοΩϯά*0Λ͏ • ιέοτΛϊϯϒϩοΩϯάʹ͓ͯ͘͠ • σʔλಡΈࠐΈ࣌ʹɺσʔλ͕౸ୡ͍ͯ͠ͳ͍߹ϒ ϩοΫͤͣʹ͙͢ʹΤϥʔ͕ฦͬͯ͘Δ • αʔόʔͷϓϩηεͭͰɺෳͷΫϥΠΞϯτʹରԠ ͢Δ •
ίʔυIUUQTHJUIVCDPNCBUJPSFOPFDIPTFSWFSCMPCNBTUFSTSD OPO@CMPDLJOH@FDIP@TFSWFSD • σϞ
σʔλͪ Χʔωϧ͔Β Ϣʔβʔ σʔλΛίϐʔ ىಈ ௨ ىಈ ྃ ϒϩοΫ ݕࠪ
४උྃ ىಈ ྃ ϒϩοΫ ϒϩοΫ ϒϩοΩϯά *0 ϊϯ ϒϩοΩϯά *0 *0ଟॏ ඇಉظ*0 ݕࠪ ྃ ݕࠪ ݕࠪ ݕࠪ ϒϩοΫ ݕࠪ
ϊϯϒϩοΩϯά*0Λ͏ • ιέοτΛཧ͢Δͷਏ͍ • ϒϩοΫ͠ͳ͍ͷͰɺσʔλΛͬͯΔ͚ͩͳͷʹ ϓϩάϥϜ͕ϧʔϓ͠ଓ͚ͯ͠·͍$16͕ແବʹͳ Δ • ϓϩηεͰಈ͍͍ͯΔͷͰɺଞͷ*0ͳͲͰϒϩο Ϋ͠ͳ͍Α͏ʹ͠ͳ͍͚ͯ͘ͳ͍
*0ଟॏΛ͏
*0ଟॏΛ͏ • ෳͷιέοτʹରͯ͠σʔλΛͭ • σʔλͷ౸ୡ͕͋ͬͨΒΧʔωϧ͔Βͷ௨Λड͚औΓɺ ͦͷޙσʔλͷಡΈऔΓΛߦ͏ • αʔόʔͷϓϩηεͭͰɺෳͷΫϥΠΞϯτʹରԠ ͢Δ •
ίʔυIUUQTHJUIVCDPNCBUJPSFOPFDIPTFSWFSCMPCNBTUFSTSD FQPMM@FDIP@TFSWFSD • σϞ
σʔλͪ Χʔωϧ͔Β Ϣʔβʔ σʔλΛίϐʔ ىಈ ௨ ىಈ ྃ ϒϩοΫ ݕࠪ
४උྃ ىಈ ྃ ϒϩοΫ ϒϩοΫ ϒϩοΩϯά *0 ϊϯ ϒϩοΩϯά *0 *0ଟॏ ඇಉظ*0 ݕࠪ ྃ ݕࠪ ݕࠪ ݕࠪ ϒϩοΫ ݕࠪ
*0ଟॏΛ͏ • *0ଟॏͷγεςϜίʔϧFQPMMҎ֎ʹز͔ͭ͋ ΔʢTFMFDUQPMMͳͲʣ • FQPMM-JOVYґଘɻϓϥοτϑΥʔϜґଘΛٵऩ͠ ͨϥΠϒϥϦͱͯ͠MJCFW͕͋Δ
*0ଟॏΛ͏ • ϓϩηεͰಈ͍͍ͯΔͷͰɺଞͷ*0ͳͲͰϒϩο Ϋ͠ͳ͍Α͏ʹ͠ͳ͍͚ͯ͘ͳ͍ • FQPMM͔Β௨͕དྷͯಡΈࠐΈͰϒϩοΫ͢Δ Մೳੑ͋Γ • ॻ͖ࠐΈ࣌ͷϒϩοΫ •
ϑΝΠϧಡΈࠐΈଞͷ௨৴ʹΑΔϒϩοΫ
ੈͷதͷαʔόʔ
ੈͷதͷαʔόʔ • /PEFKTݩʑMJCFW MJCFJPʢεϨουΛͬͯඇ ಉظ*0ͷΑ͏ʹৼͬͯ͘ΕΔϥΠϒϥϦʣΛͬ ͯͯɺMJCVWมΘͬͨ • ଞͷαʔόʔʁ • ࢀߟࢿྉ
• ϚϧνίΞ࣌ͷαʔόϓϩάϥϛϯάͱ )BTLFMMIUUQXXXJJKBEKQDPNQBOZEFWFMPQNFOUUFDI UFDIXFFLQEGUX@@IBTLFMMQEG
·ͱΊ
·ͱΊ • 6/*9ωοτϫʔΫϓϩάϥϛϯάɺࡉ͘ॻ͍ͯ͋ͬ ͯྑ͔ͬͨʢ*0ͷຊͷҰ෦Ͱ͢ʣ • ωοτϫʔΫͷࣝͱϓϩάϥϛϯάɺͰผ ډ͍ͯ͠Δײ͚֮ͩͬͨͲɺίʔυॻ͍ͨΒྑ͘ ͳΕͨ