My (Internal and remote) talk presentation slides at GMO Pepabo Fukuoka Office / GMOペパボ福岡オフィス やさしい発表会 22-JUN-2018
ιϑτΣΞͱΠϯλʔωοτͱาΜͩʑʢཁ൛ʣྗ ݈࣍ྗ݈ٕ࣍ज़࢜ࣄॴ / ϖύϘݚڀॴ20186݄22 ϖύϘԬ ͍͞͠ൃදձKenji Rikitake / Pepabo Fukuoka 22-JUN-2018 (summarized version) 1
View Slide
ྗ ݈࣍Γ͖͚ͨ ͚Μ͡@jj1bdx1965ੜ·Ε 53ࡀKenji Rikitake / Pepabo Fukuoka 22-JUN-2018 (summarized version) 2
@komei͔Βͷ͓• ͲͪΒ͔ͱ͍͏ͱྗ͕͜Ε·ͰʹֶΜͰ͖ͨςΫχΧϧͳ෦ͰͷΛฉ͖͍ͨ• ϖύݚݚڀձͰݴ͍ͬͯͨؔܕ͕ͤͱ͍͏ͷ͕ؾʹͳ͍ͬͯͯɼ@komeiؔܕॻ͍ͨ͜ͱ͕ͳ͍ͷͰɼؔܕϓϩάϥϛϯάͱΦϒδΣΫτࢦϓϩάϥϛϯάͷҧ͍ʹؔ͢Δൃද͕ฉ͖͍ͨKenji Rikitake / Pepabo Fukuoka 22-JUN-2018 (summarized version) 3
͜ͷൃදͷߏʢͱͱ2࣌ؒͷͭΓͰ͍ͨΜͰ͕͢ϦϞʔτͩͱ͕͢͞ʹ2࣌ؒͭΒͦ͏ͳͷͰʣςΫχΧϧͳʹߜΓ·͢ΦϒδΣΫτࢦͱؔܕͷ͠·ࣗ͢ͷʢΩϟϦΞΩʔϊʔτతͳʣྺ࢙ͷ͠·࣭ٙ͢Ԡ࠷ޙʹ࣌ؒऔͬͯ·͕͢దٓͲ͏ͧൃද༰͋͘·ͰྗݸਓͷݟղͰ͢Kenji Rikitake / Pepabo Fukuoka 22-JUN-2018 (summarized version) 4
1973 8ࡀ ʹFORTRANΛڭΘΔ• ྗৗ࣍ʢ1956ɺӈͷࣸਅʣ• খֶ2ੜͩͬͨ• 2࣍ํఔࣜͷղͷެࣜͱෳૉΛ֮͑ͨ• ܭࢉ͔Βίϯϐϡʔλʹೖͨ͠Kenji Rikitake / Pepabo Fukuoka 22-JUN-2018 (summarized version) 5
FORTRANʢ1973෩ʣʹΑΔHello WorldPROGRAM HELLOWORLDC HELLO WORLD IN FORTRANINTEGER II = 10500 FORMAT(1H ,12HHELLO WORLD!,1H ,11HAND NUMBER ,I5)WRITE(6,500) ISTOPENDKenji Rikitake / Pepabo Fukuoka 22-JUN-2018 (summarized version) 6
ϚΠΫϩίϯϐϡʔλʢϚΠίϯʣ• 1971ʹIntel 4004 → ࠷ॳͷϚΠίϯɺ༻్ి• 1974ʹIntel 8080 → ·ͱʹ͑Δ࠷ॳͷ8bitϚΠίϯ• 1975ʹMOS Technology 6502 → Apple ][ɺϑΝϛίϯ• 1976ʹZilog Z80 → ͍·ͩʹύνϯίͰओྲྀ• 1978ʹIntel 8086 → ͔͜͜Βݱͷx86_64ͷܥේ͕ଓ͘Kenji Rikitake / Pepabo Fukuoka 22-JUN-2018 (summarized version) 7
ϚΠίϯͷΠϊϕʔγϣϯ• ίϯϐϡʔλΛICͱͯ͠ΈࠐΊΔΑ͏ʹͳͬͨ• ిࢠػثΛιϑτΣΞͰ੍ޚͰ͖ΔΑ͏ʹͳͬͨ• ίϯϐϡʔλ͕୭Ͱങ͑ΔΑ͏ʹͳͬͨ• ίϯϐϡʔλ͕୭Ͱ࡞ΕΔΑ͏ʹͳͬͨ• ιϑτΣΞΛ୭Ͱॻ͍ͯՔ͛ΔΑ͏ʹͳͬͨKenji Rikitake / Pepabo Fukuoka 22-JUN-2018 (summarized version) 8
ͦͯ͠Apple ][ͱͷʑ• 1978͔Βඦ՟ళͰ৮Γ͢• 1979ʹʹങͬͯΒ͏• GAME-APPLEίϯύΠϥΛॻ͖ɺTL/1ͱ͍͏খ͞ͳݴޠͷେ͖ͳྗΛֶΜͩ• ήʔϜॻ͍ͨ• ωοτϫʔΫϋʔυ࡞ͬͨKenji Rikitake / Pepabo Fukuoka 22-JUN-2018 (summarized version) 9
1986: ແઢɺ௨৴ɺίϯϐϡʔλͷ༥߹• 1985ʹNTTຽӦԽͱճઢࣗ༝Խ• ࠃڥΛ͑ͨࣗ༝ͳ௨৴͕Մೳʹͳͬͨ• UNIX͕͍Α͍ΑݸਓͰ͑ΔΑ͏ʹͳͬͨ• ϚϧνλεΫɺϚϧνϢʔβɺλΠϜγΣΞϦϯά• ΞϚνϡΞແઢͰίϯϐϡʔλؒଓ͕Ͱ͖ΔΑ͏ʹͳͬͨKenji Rikitake / Pepabo Fukuoka 22-JUN-2018 (summarized version) 10
Kenji Rikitake / Pepabo Fukuoka 22-JUN-2018 (summarized version) 11
1988: ΠϯλʔωοτͱϫʔΫεςʔγϣϯ• WIDEϓϩδΣΫτൃ• ຊʹTCP/IPωοτϫʔΫͱΠʔαωοτ͕͖ͬͯͨ• ϫʔΫεςʔγϣϯͰUNIX• MicroVAXʢӈͷࣸਅʣ, ULTRIX, VMS• γϯάϧCPUͰͷฒߦॲཧΛֶͿKenji Rikitake / Pepabo Fukuoka 22-JUN-2018 (summarized version) 12
1990͝ΖͷϓϩάϥϛϯάελΠϧ• ࠓͱ͋·ΓมΘΒͳ͍͕نখ͔ͬͨ͞• 4.3BSD UNIX ʢݱࡏͷFreeBSDmacOSͷઌʣ• ͻͨ͢ΒCݴޠɺΤσΟλviɺͨ·ʹEmacs• VAXͷϝϞϦ࠷େ2GBɺ͜ΕΛ100ਓͰ͚ͨ• σΟεΫ10GBͱ͔20GB͋Εͨ͘͞ΜͩͬͨKenji Rikitake / Pepabo Fukuoka 22-JUN-2018 (summarized version) 13
1990 25ࡀ ֶम࢜Digital Equipment Corporation ຊ๏ਓͷݚڀ։ൃηϯλʔͰࣾձਓੜ׆Λ࢝ΊΔKenji Rikitake / Pepabo Fukuoka 22-JUN-2018 (summarized version) 14
1990ʙ1992: VAX/VMSͷ։ൃ• ը໘੍ޚϥΠϒϥϦʢϛυϧΣΞʣΛ࡞͍ͬͯͨ• ࠃࡍిͰςϨΧϯɺόʔδϣϯཧγεςϜɺυΩϡϝϯτ࡞γεςϜɺϦϞʔτϩάΠϯڥɺඞཁͳͷશ෦͋ͬͨ• ࣌ͱͯ͠࠷ઌͷڥͩͬͨɺ͕…• Φʔϓϯιʔε͡Όͳ͍ͷͰษڧࣾͰ͔͠Ͱ͖ͳ͍• VAXͱ͍͏ϋʔυʹґଘ͍ͯͨ͠ͷͰ্͕͕Βͳ͍• ݁Ռͱͯ͠ڝ૪ྗΛࣦ͍ΘΕͳ͘ͳ͍ͬͯͬͨKenji Rikitake / Pepabo Fukuoka 22-JUN-2018 (summarized version) 15
1992 27ࡀ݁ࠗɺస৬ɺେࡕҠॅKenji Rikitake / Pepabo Fukuoka 22-JUN-2018 (summarized version) 16
ͦͷޙ1990ΠϯλʔωοτͦͷͷΛݚڀςʔϚʹͯ͠׆ಈͨ͠• 1995ͷWindows95ͷීٴҎલࣾձతೝ͕ಘΒΕͳ͔ͬͨ• ࣌ͷۈઌͷࣾωοτߏஙɺࣾ֎ϑΝΠΞΥʔϧߏஙɺϓϩόΠμࣾؔऀͱͷંিɺͯͬͨ͢• ීٴ͢ΔʹͭΕҰࢁͯΑ͏ͱ͍͏ߟ͑ͷٕज़ͱؔͳ͍ਓୡ͕܈͕͖ͬͯͨKenji Rikitake / Pepabo Fukuoka 22-JUN-2018 (summarized version) 17
͜ͷ··ωοτͰ৯͍͚ͬͯΔͷ͔?ത࢜߸ͳ͘ݚڀ։ൃΛଓ͚͍͚ͯΔͷ͔?↓200012݄ ۈઌͷ෦ॺ͕ดͱͳΓࣙ৬ͨ͠20011݄ KDDݚڀॴ༗ظܖࣾһͱͯ͠స৬ʢ͙͢ʹKDDIݚڀॴʹͳΓݱࡏKDDI૯߹ݚڀॴʣωοτϫʔΫͱใηΩϡϦςΟͷݚڀΛ࢝ΊΔKenji Rikitake / Pepabo Fukuoka 22-JUN-2018 (summarized version) 18
20024݄ 37ࡀେࡕେֶใՊֶݚڀՊത࢜ޙظ՝ఔʹೖֶम࢜ͷޙ12Λܦͯͬͱݚڀੜ׆ʹೖKenji Rikitake / Pepabo Fukuoka 22-JUN-2018 (summarized version) 19
20025݄Ξτϐʔͱഊ݂ҰาखલͰΕΔ·Δ·Δ5िؒೖӃKenji Rikitake / Pepabo Fukuoka 22-JUN-2018 (summarized version) 20
ਓ͍ͭࢮ͵͔Θ͔Βͳ͍ͳΒΓ͍ͨ͜ͱ͙͢Ζ͏Βͳ͍Ͱޙչ͢ΔΑΓͬͯޙչͨ͠΄͏͕ͣͬͱ͍͍Kenji Rikitake / Pepabo Fukuoka 22-JUN-2018 (summarized version) 21
ത࢜߸औಘͷݚڀςʔϚ• DNSͷUDPύέοτͱMTU• ࠷ۙͰQUICDTLS͕ಉ༷ͷ՝Λղܾத• MTUIPv4/IPv6ͰऔΓѻ͍͕·ΔͰҟͳΔͷͰ͍͠• ࡕେ͔ΒNDAલఏͷσʔλఏڙΛड͚ͯจʹͨ͠• T/TCPΛͬͨDNSͷॲཧ࣌ؒݮʹऔΓΜͩKenji Rikitake / Pepabo Fukuoka 22-JUN-2018 (summarized version) 22
20053݄େࡕେֶ ത࢜ʢใՊֶʣ݁Ռͱͯ͠ത࢜ͷࢿ֨ͷ͓͔͛Ͱ8ؒαϥϦʔϚϯΛ͞Βʹଓ͚Δ͜ͱ͕Ͱ͖ͨKenji Rikitake / Pepabo Fukuoka 22-JUN-2018 (summarized version) 23
2005ʙ2010: ใ௨৴ݚڀػߏ(NICT)• ۀࢦࣔͰΔݚڀ+ࣗओݚڀ• NICTERϓϩδΣΫτͷجૅઃܭ• DNSϖΠϩʔυͱDNSSECͷݚڀ• NGNͱIPv6ͷීٴʹؔ͢Δௐࠪݚڀ• Erlang/OTPͷηΩϡϦςΟKenji Rikitake / Pepabo Fukuoka 22-JUN-2018 (summarized version) 24
͜ͷ࣌ͷٕज़తͳઈ͏Cݴޠ͚ͩͰ৯͑ͳ͍Kenji Rikitake / Pepabo Fukuoka 22-JUN-2018 (summarized version) 25
͖ͦͯ͠ʹͳͬͨͷErlang/OTP• Immutability ʢೖޙͷมෆมʣ• ܰྔฒߦϓϩηε• ΤϥʔϋϯυϦϯά• 2018ͷࠓͰे௨༻͢ΔݴޠγεςϜͱͯ͠ɺElixirͱͱʹਐԽ͠ଓ͚͍ͯΔKenji Rikitake / Pepabo Fukuoka 22-JUN-2018 (summarized version) 26
໋ྩܕ͔Βؔܕͷൃͷస͕ࣗΛٹͬͨͦͷޙ͋ΒΏΔݴޠγεςϜ͕ؔܕͷύϥμΠϜΛऔΓೖΕ͍ͯΔKenji Rikitake / Pepabo Fukuoka 22-JUN-2018 (summarized version) 27
20104݄ 45ࡀژେֶใڥػߏ ڭत• ୯ஶͰݚڀ͕Ͱ͖ΔΑ͏ʹͳͬͨ• ࠃࡍձٞจΛ2ຊग़ͤͨ• ࠃࡍձٞͷ࣮ߦҕһΛମݧͰ͖ͨ• ژେͷεύίϯ͕͑ͨ• ͓͠Ζ͍ݚڀ͕Ͱ͖͔ͨͲ͏͔ࣗ৴͕ͳ͍Kenji Rikitake / Pepabo Fukuoka 22-JUN-2018 (summarized version) 28
ͦͯ͠·ͨΕɺࣦ৬ژେͷࣄ201211݄ΑΓٳΈɺ20131݄Ͱୀ৬20132݄ʹErlang/OTPͷؔ࿈ͰBasho Technologiesͷຊ๏ਓʹब৬͔͠͠20136݄ʹ༧ࢉ͕ͳ͘ͳͬͨͱ͍͏ձࣾ߹Ͱઓྗ֎௨ࠂ20139݄Λͬͯղޏɺ226ϲ݄ͷαϥϦʔϚϯੜ׆ʹऴࢭූΛଧͭ201310݄ 48ࡀ ΕࣦͯۀऀʹͳͬͨKenji Rikitake / Pepabo Fukuoka 22-JUN-2018 (summarized version) 29
20144݄ੜ͖ΔͨΊʹݸਓࣄۀ։ۀKenji Rikitake / Pepabo Fukuoka 22-JUN-2018 (summarized version) 30
2016ՆϖύϘݚڀॴઃཱͷΒ͙ͤ͢ʹԠืͨ͠…࠾༻͍͍ͯͨͩͨ͠Kenji Rikitake / Pepabo Fukuoka 22-JUN-2018 (summarized version) 31
ϖύϘͷจԽ• Ͱ͍͍ͭͯ͘ͷ͕͍ͨΜ• ͰϖύϘʹॿ͚߹͏จԽ͕͋Δ• ࣗΑΓए͍ਓୡ͔Βγό͔Εͳ͕ΒࣄͰ͖Δͷوॏ• ͜Μͳձࣾͳ͔ͳ͔͋Γ·ͤΜKenji Rikitake / Pepabo Fukuoka 22-JUN-2018 (summarized version) 32
20185݄7ϲ݄ଓ͍ͨC++ͱC#ͷ։ൃ࡞ۀΛऴ͑ͨʢΨνͳΦϒδΣΫτࢦͷ։ൃ࡞ۀʹ͔͔Θͬͨͷ࣮ਓੜॳͩͬͨʣKenji Rikitake / Pepabo Fukuoka 22-JUN-2018 (summarized version) 33
C++C#ͰͭΒ͔ͬͨ͜ͱ• σʔλʹϝιου͕͍ͬͭͯ͘͘Δˠঢ়ଶґଘʹͳΔ• ֊໊Λ͚ͭΔͷͰ໊લ͕͘ͳΔ• σʔλͳ͠Ͱϝιου͕ݪଇݺͳ͍ʢྫ֎͋Δ͕ʣ• σʔλΛऔΓѻ͏ͱ͖࣮ମͱࢀর͕ࠞࡏ͢Δ• ίϯετϥΫλ͕͍ͭݺΕΔͷ͔͕Θ͔Βͳ͍Kenji Rikitake / Pepabo Fukuoka 22-JUN-2018 (summarized version) 34
Erlang/Elixirతͳؔܕϓϩάϥϛϯά• ؔͱσʔλͱಠཱ͍ͯ͠Δˠঢ়ଶґଘʹͳΒͳ͍• Erlangଟஈ֊Λ͚ͤ͞ͳ͍ʢElixirڐ༰ʣ• σʔλ͕ͳ͍ͯؔ͘͘ΒͰ࡞ΕΔ• σʔλΛऔΓѻ͏ͱ͖࣮ମ͚ͩΛߟ͑Ε͍͍• ೖৗʹίϐʔͳͷͰίϯετϥΫλͷ͜ͱߟ͑ͳ͍͍ͯ͘• ͦͷΘΓ͍ (GCͱcopy-on-write͕͋Δͱ͍͑)Kenji Rikitake / Pepabo Fukuoka 22-JUN-2018 (summarized version) 35
ϓϩάϥϛϯάͲ͜ʹߦ͘ͷ͔҆શΑΓ?ΑΓ҆શ?…͜ͷ2߲ରཱࣗମ͕ؒҧ͍ͬͯΔ҆શඞਢɺՃػೳͰ͋Δ͖Kenji Rikitake / Pepabo Fukuoka 22-JUN-2018 (summarized version) 36
Webͷ͢Β͠͞ɺݶքɺͦͷઌʹ͋Δͷ• HTTP(/2)͚ͩߟ͑Εྑ͘ͳͬͨɺͣ• ͰDNSTCP/IP͔ΒಀΕΒΕͳ͍• Webͷઌʹग़ͯ͘ΔͷHTTP/2ࣗͷநԽ• ͦͯͦ͠ͷഎޙʹ͋ΔΧϦΧϦͷνϡʔχϯά• FastContainerHaconiwaͷग़൪• ͞Βʹػցֶशͱʮਓೳʯͷग़൪Kenji Rikitake / Pepabo Fukuoka 22-JUN-2018 (summarized version) 37
࠷ޙʹKenji Rikitake / Pepabo Fukuoka 22-JUN-2018 (summarized version) 38
20186݄18ຊ࣌ؒޕલ7࣌586ऑͷΛࣗͰମݧ͠·ͨ͠23લʹಉ͡Α͏ͳ͜ͱ͕͋Γ·ͨ͠ɺͰ·ͩੜ͖͍ͯ·͢Kenji Rikitake / Pepabo Fukuoka 22-JUN-2018 (summarized version) 39
ʢࣦۀͨ͠͠ɺ࠳ંͨ͠͠ɺਓੜল͖͢͜ͱ͔ΓͰ͕͢)·ͩԶࢮͳͳ͍ࢮΜͰͳΔͷ͔Kenji Rikitake / Pepabo Fukuoka 22-JUN-2018 (summarized version) 40
͋Γ͕ͱ͏͍͟͝·ͨ͠Kenji Rikitake / Pepabo Fukuoka 22-JUN-2018 (summarized version) 41
ࣸਅΫϨδοτ• ϖύϘݚڀॴϩΰ: GMOϖύϘגࣜձࣾ• ྗৗ࣍: ʮΞαώάϥϑʯ19562݄5߸ͷը૾ΛWikipediaΑΓҾ༻ɺpublic domain• Apple ][ͱͷࣸਅ: ʮिץேʯ19823݄1߸ΑΓҾ༻• MicroVAX II: http://www.chookfest.net/computers/mv2.html ΑΓҾ༻Kenji Rikitake / Pepabo Fukuoka 22-JUN-2018 (summarized version) 42