コードと論文で世界を変える

 コードと論文で世界を変える

インフラエンジニアのキャリアとしての研究開発

2019/01/29 麻生情報ビジネス専門学校

さくらインターネット株式会社
さくらインターネット研究所

上級研究員 松本亮介 まつもとりー @matsumotory

2b692bd83f4418103142a053ecf5ff59?s=128

MATSUMOTO Ryosuke

January 29, 2019
Tweet

Transcript

  1. ͘͞ΒΠϯλʔωοτגࣜձࣾ (C) Copyright 1996-2019 SAKURA Internet Inc ͘͞ΒΠϯλʔωοτݚڀॴ ίʔυͱ࿦จͰੈքΛม͑Δ 2019/01/29

    ্ڃݚڀһ দຊ ྄հ ΠϯϑϥΤϯδχΞͷΩϟϦΞͱͯ͠ͷݚڀ։ൃ
  2. 2 ɾ͘͞ΒΠϯλʔωοτݚڀॴ ্ڃݚڀһ ɾגࣜձࣾGrooves Forkewll ٕज़ސ໰ ɾϖύϘݚڀॴ ٬һݚڀһ ݚڀސ໰ ɾηΩϡϦςΟɾΩϟϯϓߨࢣ

    ɾ৘ใॲཧֶձ Πϯλʔωοτͱӡ༻ٕज़ݚڀձ ֤छҕһ ɾژ౎େֶത࢜ʢ৘ใֶʣ দຊ྄հ / ·ͭ΋ͱΓʔ / @matsumotory
  3. 3 ͍ͭ΋͸ɼΫϥ΢υɾϗεςΟϯάαʔϏε΍WebαʔϏεʹؔΘΔΤϯδ χΞɾݚڀऀͷΩϟϦΞΛҰൠԽ͓ͯ͠࿩͢Δ͜ͱ͕ଟ͍Ͱ͢ɽ ࠓ೔͸ֶੜͷօ༷ʹ͓࿩Ͱ͖Δͱͷ͜ͱͰɼࣗ෼ֶ͕ੜ౰࣌͸໎͍΋͋ͬͯ ૉ௚ʹͳΕͳ͔ͬͨ͜ͱɼ΋͏গࣗ͠෼ͷΩϟϦΞʹඞཁͩͬͨͱࢥ͑Δ७ ਮͳࢥ͍ΛμΠϨΫτʹ͓఻͍͑ͨ͠ͱࢥ͍·͢ɽ ҰൠతͰ͸ͳ͍͔΋͠Ε·ͤΜ͕ɼ͜͏͍͏ੜ͖ํ΋͋Γ͑Δͷͩͱɼࣗ਎ ͷʮ֩ͱͳΔελΠϧʯΛங্͖͛Δࢀߟʹͯ͠௖͚Δͱ޾͍Ͱ͢ɽ ࠓ೔ͷ࿩

  4. εϙʔπେ޷͖

  5. 5 ɾখֶߍ͸όεέοτϘʔϧ ɾεϥϜμϯΫͷӨڹͰຖ೔ಓ࿏ͷߔʹγϡʔτ࿅श ɾதֶߍ͸όϨʔϘʔϧʢژ౎෎༏উɼۙـେձೋճઓʣ ɾ౔೔ͷٳΈ΋ͳ͘ͻͨ͢Β࿅श ɾߴߍ͸ॊಓʢژ౎෎ୈ3γʔυબखɼ66ΩϩҎԼ ϕετ8ʣ ɾςϨϏ͕CMʹͳͬͨΒےτϨɾே5͔࣌ΒےτϨɾϥϯχϯά ɾଳΛΪϡοͱͶʂ ࢠڙͷࠒ͔ΒεϙʔπΛ͢Δͷ͕޷͖

  6. ڝ૪৺ɾಆ૪৺͕ڧ͍

  7. ͻͱΓͰ΍Γ͍͔ͨΒݸਓڝٕ΁

  8. ͦΕ΋ͦ΋ͦ΋ؒҧ͍ͬͯͨͱޙͰؾͮ͘

  9. ͏·͍͔͘ͳ͍

  10. ڝ૪৺͸؆୯ʹ͝·͔ͤΔ ref: ·ͭ΋ͱΓʔελΠϧ, ຊؾग़ͯ͠ͳ͍໰୊, https://speakerdeck.com/matsumoto_r/matumotorisutairu

  11. ೔ຊҰɾੈքҰ΁ͷಌΕ

  12. ͔͍͍ͬ͜

  13. ๻͸ΞεϦʔτతͳײ֮ͷϓϩάϥϚ

  14. 14 ɾαʔό؅ཧ͕େ޷͖ ɾ෦԰ΛσʔληϯλʔͷΑ͏ʹͯ͠༡ΜͰ͍ͨ ɾΞϧόΠτ΋αʔό؅ཧ ɾ͜ͷࠒ΋Ұ൪Ͱ͖ΔΑ͏ʹͳΔͱ͍͏ڝ૪৺΋͋ͬͨ 12೥લͷֶੜ࣌୅

  15. ϝοηʔδ

  16. ϝοηʔδ

  17. 17 ɾΠϯϑϥΤϯδχΞ΋ίʔυΛॻ͘ ɾαʔό؅ཧΛιϑτ΢ΣΞΤϯδχΞϦϯά͢Δ ɾαʔό؅ཧΛݚڀ։ൃ͢Δ ίʔυͰੈքΛม͑ΔΜͩ

  18. ੈքͰ׆༂͢ΔϓϩάϥϚ΁ͷಌΕ

  19. ੈքͰ׆༂͢Δݚڀऀ΁ͷಌΕ

  20. ੈքͰ޿͘࢖ΘΕΔϓϩμΫτ΁ͷಌΕ

  21. ࿦จ΍ίʔυͰੈք΁Ξϓϩʔν͢Δ

  22. τοϓΧϯϑΝϨϯε

  23. ੈքͷ୅දతͳOSSϓϩμΫτ

  24. Apache httpd

  25. nginx

  26. CRubyɾmrubyͷMatz͞Μ https://twitter.com/yukihiro_matz

  27. H2Oͷkazuho͞Μ https://twitter.com/kazuho

  28. ͔͍͍ͬ͜

  29. չ͍͠

  30. ࿦จ΍ίʔυͰੈքʹӨڹΛ༩͑Δ

  31. ϓϩάϥϚ͕ώʔϩʔʹݟ͑Δ࣌୅

  32. ֤छ໨ͷੈքνϟϯϐΦϯ

  33. ࣗ෼΋ͦ͏ͳΓ͍ͨͱ͍͏७ਮͳؾ࣋ͪ

  34. ७ਮͳڝ૪৺

  35. ώʔϩʔʹͳΔ

  36. ੈͷதΈΜͳ౒ྗ͍ͯ͠Δ

  37. 37 ɾ͍ͭͰ΋͙͢͸͡ΊΒΕΔ ɾྑ͍ίʔυ΍࿦จΛॻͨ͘Ίʹ୔ࢁษڧ͍ͯ͠Δ ɾதʹ͸͘͢͝࠽ೳ͕͋Δਓ΋͍Δ ɾ͔ͩΒͦ͜ڝ૪ݪཧ΋ಇ͖؁͍ੈքͰ͸ͳ͍ ɾͦΕͰ΋ੈքͰ஌ΒΕΔ੒Ռ΍໊લ͸ҰѲΓ ɾࣗ෼΋͍͔ͭ͸ώʔϩʔʹͳΔ ɾͦͷώʔϩʔͱͷࠩͱ͸͍͍ͬͨͳΜͳͷͩΖ͏ʁ ΈΜͳ΍͍ͬͯΔ

  38. ·ͣΘ͔ͬͨ͜ͱ

  39. 39 ɾतۀ͚ͩͰ΋΍͸Γ೉͍͠ ɾϓϩάϥϛϯά΍࿦จࢦಋڭҭͷ೉͍͠ͱ͜Ζ ɾݱঢ়Ͱ͸εϙʔπͰͷίʔν΍τϨφʔ͕ඞཁͳੈքʹࣅ͍ͯΔ ɾϓϩάϥϛϯάͷࢣঊɾݚڀͷࢦಋڭһɾίϛϡχςΟ ɾ໌Β͔ʹ੒Ռ͕ग़͍ͯΔ఻౷తͳํ๏࿦͸ಀ͛ͣʹ΍Δ΂͖ ɾͪΐͬͱ΍͚ͬͨͩͰޮՌ͕Ͱͳ͍ͱզྲྀʹ૸Βͳ͍͜ͱ ɾͦΜͳํ๏͕͋ΔͷͳΒΈΜͳ΍ͬͯ੒ՌΛग़͍ͯ͠Δ ҰਓͰզྲྀͰ΍ͬͯ΋ͳ͔ͳ্͔ୡ͠ͳ͍

  40. ֶ໰ʹԦಓͳ͠

  41. 41 ɾࢣঊΛݟ͚ͭͯԾ૝ఋࢠʹͳΔ ɾOSS΁ͷPull-RequestΛ௨ͨ͡ίʔυϨϏϡʔ ɾࠪಡ෇͖࿦จΛ౤ߘͯ͠accept or reject ɾੈքΛͻͬͺ͍ͬͯΔϓϩάϥϚ΍ݚڀऀ͔ΒϨϏϡʔ ɾଚܟͰ͖ΔΤϯδχΞͷاۀʹೖࣾ ɾത࢜՝ఔͳͲͰݚڀࣨͰࢦಋڭһʹࢦಋͯ͠΋Β͏ ɾࣗ෼ΑΓͰ͖Δ൴ΒͷࢦಋΛ৴ͯ͡࠷େݶૉ௚ʹٵऩ͢Δ

    ڭ͑ͯ΋Β͏ͨΊʹ͸ΪϒΞϯυςΠΫ
  42. ໨ඪͷաఔʹ͓͚Δݸผͷ໨ඪΛઃఆ

  43. 43 ɾ೔ຊOSS঑ྭ৆ɾߩݙऀ৆ ɾIEICE΍IPSJ౳ͷݚڀ৆΍࿦จ৆ ɾτοϓΧϯϑΝϨϯε΁ͷ࠾୒ ɾ࠷೉ٕؔज़ΧϯϑΝϨϯε΁ͷ࠾୒ʢsponsored by USENIXͳͲʣ ɾੵۃతʹ௅ઓ͢ΔɾᛙখԽͤͣ·ͣ΍ͬͯΈΔ ɾ఻౷తʹഓΘΕͨج४͕͋Δͱࣗ෼Λ٬؍తʹৼΓฦΓ΍͍͢ ϓϩμΫτ΍׆ಈΛশ͢Δ୔ࢁͷ৆΍ج४

  44. ͦͷ࿈࠯͕ଈ࣌औΓग़͠ՄೳͰଟ໘తͳ ஌ࣝͱܦݧΛੜΈग़͢

  45. ଟ໘తͳεΩϧΛ׆༻ͯ͠೔ʑࢥߟΛ දݱ͢Δ΂͘ॻ͖ଓ͚Δ

  46. 46 ɾڊਓͷݞͷ্ʹཱͭ ɾ࿦จ΍ιϑτ΢ΣΞͷαʔϕΠ ɾίʔυϦʔσΟϯά ɾυΩϡϝϯτΛ͔ͬ͠ΓಡΉ ɾͱ͘ʹιϑτ΢ΣΞͷઃܭ΍ΞʔΩςΫνϟࢿྉͳͲ ઌਓͷ஌ܙΛେ͍ʹ׆༻͢Δ

  47. গ͠ͷࠩͰ΋ެ։͢Δ

  48. ंྠͷ࠶ൃ໌ͱࢥ͑ͯ΋େ఍͕ࠩ͋Δ

  49. ৘ใ͕ᷓΕࠩΛग़͢ͷ͕೉͍࣌͠୅

  50. ͔ͩΒͦ͜গ͠ͷࠩʹ͸ҒେͳՁ஋͕͋Δ

  51. ͦΕ͕ྔΛੜΈ ଟ໘తͳՁ஋؍΍஌ࣝɾܦݧΛಘΔͨΊʹجૅΛֶͼΞ΢τϓοτ͢Δ

  52. ྔ͕࣭ʹసԽ͢Δ ྔ͔Βಘͨଈ࣌औΓग़͠Մೳͳଟ໘ੑͷ͋Δ஌ࣝͱܦݧ͕૑ൃతʹಠࣗੑΛੜΉ

  53. ·ͩώʔϩʔʹͳΕͳ͍

  54. ͦ΋ͦ΋ͳͥϓϩάϥϜ΍࿦จͳͷ͔ʁ

  55. ผͷํ๏Ͱ΋͍͍ͷͰ͸ͳ͍͔ʁ

  56. ͦΕ͕޷͖͔ͩΒ

  57. ͦΕָ͕͍͔͠Β

  58. ಌΕͱڝ૪৺͕ಉډ

  59. ͔ͩΒຊؾʹͳΕΔ

  60. ޷͖͔ͩΒίʔυͰදݱ͢Δ

  61. ָ͍͔͠Β࿦จͰՁ஋Λࣔ͢

  62. աఔ͸ָ͍͜͠ͱ͹͔ΓͰ͸ͳ͘ Ή͠ΖͭΒ͘չ͍͜͠ͱ΋ଟ͍

  63. ຊؾ͔ͩΒؤுΕΔ

  64. ޷͖Ͱ͋Δ͜ͱͱڝ૪৺ΛޡຐԽ͞ͳ͍

  65. ͦͷաఔ΋ؚΊͨίʔυ΍࿦จɼൃදɼ Ξ΢τϓοτ͕ࣗ෼ͷ࡞඼ʹͳΔ

  66. ͦͷੜ͖ํ͸पΓʹӨڹΛ༩͑ΒΕΔ ref: GMOϖύϘגࣜձࣾΛୀ৬͠·ͨ͠, https://hb.matsumoto-r.jp/entry/2018/09/11/191601

  67. ͔ͩΒʮϓϩάϥϚʯ͸ώʔϩʔʹݟ͑Δ

  68. ·ͩώʔϩʔʹͳΕͳ͍

  69. վΊͯݸਓڝٕ͕ͻͱΓͰ͸ͳ͍ͱ͸ʁ

  70. ݚڀऀ΋ͻͱΓͰ΍͍ͬͯΔΑ͏ʹࢥ͑Δ

  71. ϓϩάϥϚ΋ࣗ෼ͷؤுΓͰ੒௕Ͱ͖ͯ ͍ΔΑ͏ʹࢥ͑Δ

  72. ࣮͸ҧ͏

  73. ࢣঊɾ೔ʑͷ࿅शɾମ֎ࢼ߹ɾ஥ؒͱͷٞ࿦ɾίϛϡχςΟ ͦΕΒͷաఔ͢΂ͯͷ஌ࣝͱܦݧΛࣗ෼ʹ ϑΟʔυόοΫ͍ͤͯ͞Δ

  74. 74 ɾ࿦จ΍ίʔυΛʮҰਓʯͰॻ͖ଓ͚Δʹ͸ݶք͕͋Δ ɾ࣌ؒ୯Ґͷ੒௕΋஗͍ ɾ೔ʑඵ୯ҐͰ৽͍ٕ͠ज़΍৘ใ͕ੜΈग़͞Εଓ͚͍ͯΔ ɾࢣঊɾ೔ʑͷ࿅शɾମ֎ࢼ߹ɾ஥ؒͱͷٞ࿦ɾίϛϡχςΟɽɽɽ ɾͦΕΒ͢΂ͯͷ஌ࣝͱܦݧΛࣗ෼ʹϑΟʔυόοΫͤ͞Δ ɾࣗ෼͕ӥஐͷΠϯλʔϑΣΠεʹͳΔײ֮ ɾॻ͘ͷ͸ࣗ෼Ͱ͋ͬͯ΋ͦͷ಺༰ͱաఔ͸ʮҰਓʯͰ͸ͳ͍ େ੾ͳͷ͸पΓͱͷ૬ޓͷϑΟʔυόοΫ

  75. mruby΋࠷ॳ͸ྗෆ଍ͰϚʔδ͞Εͳ͍

  76. ϝοηʔδ ͜ΓͣʹૹΓଓ͚ͯϨϏϡʔͯ͠΋Βͬͯ Ϛʔδ͞ΕΔΑ͏ʹͳͬͨ

  77. ϝοηʔδ

  78. Matz͞Μ͕঺հͯ͘͠Εͨ

  79. ͏Ε͍͠

  80. ϝοηʔδ ngx_mruby

  81. ίʔυ΋ॻ͖ଓ͚ΒΕΔ

  82. ϝοηʔδ

  83. GoogleͷεʔύʔΤϯδχΞʹawesome workͱݴͬͯ΋Β͑ͨ ʢ࠷ॳ͸ਓҧ͍͞Ε͍ͯͨʣ

  84. ϝοηʔδ

  85. ϝοηʔδ

  86. ϝοηʔδ

  87. ref: H2O version 1.4.0 released with outstanding support for forward

    secrecy and load balancing (and the experimental mruby handler), http://blog.kazuhooku.com/2015/07/h2o-version-140-released-with.html Developed by Yukihiro Matz (the father of the Ruby programming language) and others, mruby is an implementation of the language for embedded use. Thanks to MATSUMOTO Ryosuke the language runtime can now be used to script how the HTTP requests should be handled within H2O. Please refer to Ryosuke's weblog for more information (in Japanese). In addition to topics related to H2O, you can find excellent entries about how to use a scripting engine within web servers to work against cyber attacks.
  88. kazuho͞ΜͷH2Oʹେ͖ΊͷػೳΛ Ϛʔδͯ͠΋Β͑ͯthanksͱݴΘΕͨ

  89. None
  90. 90 શ͘ৼΔΘͣʹࠃࡍձٞ΋࠷ॳ͸reject We regret to inform you that your paper

    has not been accepted for inclusion in the proceedings. Originality : Neutral Quality : Reject Relevance : Weak Reject Presentation : Reject Recommendation : Reject
  91. 91 ࠶௅ઓ We are happy to inform you that your

    paper has been accepted for inclusion as a full paper in the proceedings by the decision of the Program Committee. Originality : Accept Technical Quality : Accept Relevance : Accept Presentation : Weak Accept Significance : Accept Overall Rating : Accept ͜Γͣʹࠪಡ݁ՌΛड͚ࢭΊ࣍ʹ௅ઓ͢Δͱaccept!
  92. ࠃࡍձٞͷࠪಡ݁ՌΛͯ͘͠Εͨ ݚڀऀୡͷ͓͔͛

  93. ͋ΒΏΔ਎ͷճΓͰ͜͏͍͏͜ͱ͕ ى͖͍ͯΔ

  94. ͦΕΛਂ͘ೝࣝࣗ͠෼ʹϑΟʔυόοΫ

  95. ϝοηʔδ

  96. ͜ͷҰॠͷتͼͱ޿͕Γ

  97. ޿͕Γ͕୭͔ʹྑ͍ӨڹΛ༩͑ΒΕͨͱ͖

  98. @matsumotory ͸ؒҧ͍ແ͘ɺࣗ෼Ͱࣗ෼ͷਓੜͷओਓެΛੜ͖͍ͯΔɻগͳ ͘ͱ΋൴͕ੈքͰҝ͢΂͖࢓ࣄͷͨΊʹɺશྗ౤ٿΛͯ͠ɺͦ͏͍͏෺ޠΛੜ ͖ൈ֮͘ޛΛഎෛ͍ͬͯΔɻ2೥ͱগ͠ɺ͜͜·Ͱ͍ۙڑ཭ͰҰॹʹ࢓ࣄΛ͠ ͖ͯͯɺݟ͑ͨ͜ͱͰ͋Δɻ ๻͸Ͳ͏ͯ͠ιϑτ΢ΣΞΛॻ͍ͯ΋ͷͮ͘ΓΛ͍ͯ͠Δͷ͔ͱ͍͏ͱɺࣗ෼ ʹ͸΋ͷͮ͘ΓͰ͔͜͠ͷੈͷதʹίϛοτ͕Ͱ͖ͳ͍Μ͡Όͳ͍͔ͱࢥͬͯ ͍Δ͔Βͩɻ͚ΕͲɺͦΕ͸Θ͔ͬͨɺͰɺʮੈͷத΁ͷίϛοτʯ͸͍͍͚ ΕͲɺࣗ෼ͱͯ͠͸ԿΛίϛοτ͍ͨ͠ͷʁ ͦ͏͍͏͜ͱΛߟ͑ΔΑ͏ʹͳͬ

    ͨɻ ref: ࣗ෼ͷਓੜͷओਓެʹͳΔ, http://udzura.lolipop.io/2017/12/31/how-to-make-yourself-the-protagonist-of-your-life
  99. ҰํͰদຊ͞Μ͕͍ͨ͜ͷ਺೥ͰϖύϘͷϗεςΟϯάࣄۀͷٕज़͸େ͖͘Ҿ ্͖͛ΒΕͨ͠ɺࠓͰ͸ೖࣾ਺ϲ݄ͷΤϯδχΞ͕ಠࣗͷϛυϧ΢ΣΞΛੜΈ ग़͢Α͏ʹͳΓɺϖύϘͷΤϯδχΞ৬Ґ੍౓ʹ͓͚Δཱީิର৅ͷ࠷ߴ৬Ґ Ͱ͋ΔγχΞɾϓϦϯγύϧ͸෱Ԭʹࡏ੶͢Δ @udzura ͱ๻Ͱ͋Γɺ @udzura΋๻΋দຊ͞Μʹେ͖͘ӨڹΛड͚ͯ͜͜·ͰདྷΔ͜ͱ͕ग़དྷͨɻ ࠓճ͕ͦ͏Ͱ͋ͬͨΑ͏ʹ൴ࣗ਎΋ͳ͔ͳ͔૸Δ͜ͱΛ΍Ίͯ͘Εͳ͍ͷͰ ͙͢ʹ͸௥͍͚ͭͳ͍͔΋͠Εͳ͍ͷ͚ͩͲɺদຊ྄հઈର౗͢ɻ ref:

    MATSUMOTORY͕ϖύϘ͔Β͍ͳ͘ͳͬͨ࿩, https://pyama.fun/archives/2267
  100. ৭ʑ͋ͬͯ΋શ͕ͯใΘΕͨؾ࣋ͪʹͳΔ

  101. ͜ͷҰॠͷԿ΋ͷʹ΋୅͑೉͍تͼͱײಈͷ ͨΊʹ๻͸ίʔυͱ࿦จΛॻ͍͍ͯΔ

  102. ͦͷتͼ΍ײಈ͕ڧ͍ݪಈྗΛੜΈग़͢

  103. ϝοηʔδ

  104. पΓͷڠྗͱڭ͑Λࣗ෼ʹ॓͢ = Matz͞Μͷ͍͏ʮ౿Έ୆ʯ

  105. ݸਓڝٕͰ͋ͬͯ΋νʔϜϓϨΠ

  106. ࠓੜΈग़͞ΕΔίʔυ΍࿦จ͸ ଟ͘ͷਓʑͷӥஐͱ޿͕Γͷ্ʹ੒ཱ͢Δ

  107. ͦͷ্Ͱࣗ෼͕޷͖͔ͩΒίʔυ΍࿦จΛ ॻ͖ଓ͚ΒΕΔ

  108. ͦͷഎޙʹ͸७ਮͳڝ૪৺Λ๨Ε͍ͯͳ͍

  109. Ұॠͷຊ౰ͷײಈ΍تͼΛײ͡ΒΕΔ

  110. ͦͷڧ͍ݪಈྗͷ࿈࠯͕গ͠ͷࠩΛ ੜΈग़͠ଓ͚ɼ͋Δ࣌ੈքΛม͑Δ

  111. ͔ͦ͜Βώʔϩʔ͕ੜ·ΕΔ

  112. ϝοηʔδ ref: 2011 Free Software Awards announced, https://www.fsf.org/news/2011-free-software-awards-announced

  113. ͦͯ࣍͠ͷੈ୅΁Ҿ͖ܧ͕Ε͍ͯ͘
 ͜͏͍͏ൃද΍Ξ΢τϓοτ͕ඇৗʹॏཁͩͱࢥͬͯ΍͍ͬͯΔཧ༝

  114. ࣍ͷੈ୅͕࿈࠯తʹੈքΛલਐͤ͞Δ

  115. ๻΋·ͩ·ͩ͜Ε͔Β

  116. ίʔυͱ࿦จΛॻ͍ͯتͼΛ෼͔ͪ߹͍ ҰॹʹੈքΛม͑·͠ΐ͏ʂ