v_kansai meetup #6 の発表資料です。
7VFKTॳ৺ऀ͕FMFDUSPOWVFͰσεΫτοϓΞϓϦέʔγϣϯΛ࡞ͨ͠WLBOTBJ7VFKT/VYUKTNFFUVQ4"8
View Slide
$(whoami)w ࢯ໊Ճ౻फҰ ࡀ Ѫग़ɾେࡕࡏॅ ϋϯυϧωʔϜ4"8‣ ϗϥʔۤखͳͷͰɺөըl4"8zΛݟͨ͜ͱͳ͍ 4/4ΞΧϯτ‣ 5XJUUFS!B[[email protected]‣ (JU)VCB[VLJQFOHVJOw ॴଐגࣜձࣾ.4&/ 2Let’s play a game.FreeBSDmacOSVue.jsLinux
.BOQBHFPG4"8w export EDITOR=vimw 04NBD04 6CVOUV-JOVY 'SFF#4% ֶੜ࣌6/*9-JOVYڥ͕ϝΠϯ‣ γΣϧओʹCBTI ࣄͷ։ൃڥ8JOEPXTw ϓϩάϥϛϯάݴޠ1FSM 1)1 +BWB4DSJQU ϑϨʔϜϫʔΫ-BSBWFMͱ7VFKT3
WLBOTBJNFFUVQࢀՃྺw ࢀՃճճ ճWLBOTBJ7VFKT/VYUKTNFFUVQ‣ લճҰൠࢀՃʹͯࢀՃ ճWLBOTBJ7VFKT/VYUKTNFFUVQ‣ ࠓճొஃʹͯࢀՃw 7VFKTྺ͓Αͦϲ݄ ΰϦΰϦͱॻ͍ͯͳ͍4
ൃද֓ཁ7VFKTॳ৺ऀ͕FMFDUSPOWVFͰ࡞ͨ͠σεΫτοϓΞϓϦέʔγϣϯΛհ5
DTWFEJUPSw &YDFMϥΠΫͳ6*Ͱ$47ϑΝΠϧΛฤू͢Δπʔϧ (JU)VCB[VLJQFOHVJODTWFEJUPSw /PEFKTWҎલͰಈ࡞ /PEFKTWܥͰಈ࡞͠ͳ͔ͬͨʜw ґଘύοέʔδͷ੬ऑੑະղܾ શવอक͍ͯ͠ͳ͍ʜ6
ͳΜͰ࡞ͬͨͷw େֶӃੜ࣌ʹ5"ͷۀͰ࠾݁ՌΛ$47ϑΝΠϧʹهड़ $47ϑΝΠϧͷจࣈίʔυ[email protected]+*4w େֶͷNBD04ͷ&YDFMͰฤूͯ͠อଘ͢Δͱຊޠ͕l_zʹ ݪҼϩέʔϧΛӳޠʹ͍͔ͯͨ͠ΒͬΆ͍ʜ /VNCFSTΛ͏ͱσϑΥϧτ͕65'ͳͷͰจࣈԽ͚w $47Λฤू͢Δπʔϧ͕ཉ͍͠ ࣗ࡞͠Α͏7
ผͷํ๏͕͋ͬͨͷͰw ϩέʔϧΛຊޠʹઃఆ͢Εྑ͍ͷͰ ͑ͯӳޠʹ͍ͯ͠Δ͔Βม͑ͨ͘ͳ͍w /VNCFST-JCSF0⒏DFͱ͔༻ͨ͠Β͍͔Μͷ͔ Θ͟Θ͟5"ͷͨΊ͚ͩʹσϑΥϧτͷจࣈίʔυΛม͑ͨ͘ͳ͍ Θ͟Θ͟5"ͷͨΊ͚ͩʹ-JCSF0⒏DFͱ͔ೖΕΔͷ໘͍͘͞8
࡞Δํ͕ΑͬΆͲखؒͰw ݐલ 7VFKTͷ࣮ફ‣ ͔ͤͬ͘झຯͰษڧ͍͔ͯͨ͠Β׆༻͔ͨͬͨ͠ &MFDUSPOΛ࠾༻ͯ͠ϚϧνϓϥοτϑΥʔϜԽ‣ NBD04͚ͩͰͳ͘ɺ8JOEPXT-JOVYͰར༻Մೳʹw ຊԻ ࡞Γ͍͔ͨΒ࡞ͬͨ‣ ָ࣮͍͠9
༻͢ΔϥΠϒϥϦw σεΫτοϓڥͷ։ൃ&MFDUSPOw +BWB4DSJQUϑϨʔϜϫʔΫ7VFKTw &YDFMϥΠΫͳ6*)BOETPOUBCMFw $47ύʔαQBQBQBSTFw จࣈίʔυͷࣗಈผFODPEJOHKBQBOFTF10
ओͳػೳw $47ΛಡΈࠐΜͰ&YDFMϥΠΫͳςʔϒϧͱͯ͠දࣔ จࣈίʔυࣗಈผw $47Λ&YDFMϥΠΫͳςʔϒϧΛͬͯฤूw ฤूͨ͠ςʔϒϧ͔Β$47ʹग़ྗ จࣈίʔυΛࢦఆͯ͠ग़ྗՄೳ11
ओͳػೳͷ֓ཁਤ12
$47ϑΝΠϧͷΦʔϓϯw ϝΠϯϓϩηε બ͞ΕͨϑΝΠϧͷ༰Λऔಘ‣ fsϞδϡʔϧͷreadFileSync()Λར༻ *1$௨৴Ͱ7VFʹϑΝΠϧͷதΛૹΔw Ϩϯμϥʔϓϩηε $47ͷςΩετ͔Βσʔλߏʹมͯ͠ಡΈࠐΈ‣ QBQBQBSTFͷparse()ϝιουͰ$47Λྻʹύʔε‣ )BOETPOUBCMFͷloadData()ϝιουͰྻΛςʔϒϧʹׂΓͯ13
ฤू݁ՌΛ$47ϑΝΠϧʹอଘw Ϩϯμϥʔϓϩηε ςʔϒϧͷߏ͔Β$47ςΩετʹม‣ QBQBQBSTFͷunparse()ϝιουͰςΩετԽ *1$௨৴ͰϝΠϯϓϩηεʹ༰Λૹ৴w ϝΠϯϓϩηε $47ϑΝΠϧͱͯ͠อଘ‣ fsϞδϡʔϧͷwriterStream.write()ʹΑͬͯϑΝΠϧʹग़ྗ14
Ϩϯμϥʔϓϩηε w 7VFKTͰϑϩϯτΤϯυͷॲཧΛ࣮ $47ϑΝΠϧͱ+BWB4DSJQUͰѻ͏จࣈྻͷΤϯίʔυͷ૬ޓม‣ FODPEJOHKBQBOFTFΛར༻ $47ͱςʔϒϧͷίϯϙʔωϯτ༻ͷσʔλߏͷ૬ޓม‣ 1BQBQBSTFͷར༻ ςʔϒϧͷॲཧ)BOETPOUBCMFʹؙ͛15
Ϩϯμϥʔϓϩηε 16$47ͱσʔλߏͷ૬ޓม$47σʔλͷಡΈࠐΈͱ$47σʔλͷग़ྗ
ϝΠϯϓϩηε w &MFDUSPOͰόοΫΤϯυͷॲཧΛ࣮ Οϯυͷૢ࡞ Οϯυͷ࡞ɾΫϩʔζͳͲ $47ϑΝΠϧͷΦʔϓϯ ςʔϒϧͷ༰Λ$47ϑΝΠϧʹอଘ‣ &MFDUSPOͷ*1$௨৴ͱ/PEFKTͷfsϞδϡʔϧʹΑ࣮ͬͯݱ17
ϝΠϯϓϩηε 18ϑΝΠϧΦʔϓϯͷॲཧϝχϡʔόʔͷઃఆ
ۤ࿑ͨ͠w 7VFͷίϯϙʔωϯτͱϦΞΫςΟϒγεςϜ ϑΝΠϧ͔ΒಡΈࠐΜͩ$47Λଈ࠲ʹςʔϒϧʹදࣔͰ͖ͳ͍ ฤू༰͕ग़ྗ࣌ʹө͞Εͳ͍ ࣮͋·Γ֮͑ͯͳ͍ʜw &MFDUSPOͷ*1$௨৴ʹΑΔϨϯμϥʔͱϝΠϯϓϩηεͷ࿈ܞ Πϕϯτ͕͏·͘Ωϟονग़དྷͳ͍19
·ͱΊw FMFDUSPOWVFͰ͓खܰʹσεΫτοϓΞϓϦέʔγϣϯΛ࡞ 7VFKTͱ&MFDUSPOॳ৺ऀͰ࡞ΕΔ‣ ؆୯ͱݴ͍ͬͯͳ͍w )BOETPOUBCMFΛ͑&YDFMϥΠΫͳΞϓϦέʔγϣϯΛखܰʹ࡞ )BOETPOUBCMFͷίϯϙʔωϯτʹσʔλΛloadData()Ͱ͚ͩ͢Ͱ0,‣ ׳Εͳ͍ͱࠞཚ͍͢͠ 20
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠