DSLについて語るときに僕の語ること

 DSLについて語るときに僕の語ること

Rubyが社会に浸透したいまだからこそDSLについてもう一度考えてみた

Fb69c72d5af289d6674d2659246a5291?s=128

Tomohiro Nishimura

June 01, 2014
Tweet

Transcript

  1. %4-ʹ͍ͭͯޠΔͱ͖ ʹ๻ͷޠΔ͜ͱ !4JYFJHIU ୈճ3VCZ3BJMTษڧձ!ؔ੢

  2. ·ͱΊ w ͍·͞Βײ͕͋;ΕΔ࿩ w %4-Ͱޮ཰61 w %4-͸͜Θ͘ͳ͍ w ΍Γ͗͢Δͱବ໨

  3. None
  4. !4JYFJHIU IUUQTHJUIVCDPN4JYFJHIU

  5. !UPNPIJ@SP IUUQTUXJUUFSDPNUPNPIJ@SP

  6. ੢ଜ༑༟ ʹ͠ΉΒͱ΋ͻΖ

  7. ͦͷଞ w )BQQZ&MFNFOUTגࣜձࣾ ژ౎  w 3BJMT 3VCZ 6OJUZ $

     w י઒γϟϘϯۄͷձ w 7JNˠ"UPN w 'SBHNFOU
  8. ͦͷଞ w )BQQZ&MFNFOUTגࣜձࣾ ژ౎  w 3BJMT 3VCZ 6OJUZ $

     w י઒γϟϘϯۄͷձ w 7JNˠ"UPN w 'SBHNFOU
  9. None
  10. *OTUBHSBN .FYUVSFT 5BOHTUFO  'SBHNFOU -PSZ4USJQFT IUUQQJYJUFBQQTDPN

  11. ͖ͭͮ͸ϒϩάͰ IUUQTJYFJHIUIBUFOBCMPHDPN <յ͠·ͨ͠>λάͰ౔೔Ҏ֎ຖ೔ߋ৽

  12. ຊ୊

  13. %4-

  14. %PNBJO 4QFDJpD -BOHVBHF

  15. –΢ΟΩϖσΟΞ lυϝΠϯݻ༗ݴޠʢυϝΠϯ͜Ώ͏͛Μ͝ɺ ӳEPNBJOTQFDJpDMBOHVBHFɺ%4-ʣ ͱ͸ɺಛఆͷλεΫ޲͚ʹઃܭ͞Εͨίϯϐϡʔ λݴޠΛҙຯ͢Δɻz

  16. ྫ͑͹3BLF

  17. EFTD*OTUBMMCJOBSJFT UBTLJOTUBMMEP DQ'JMF-JTU<CJO > VTSMPDBMCJO FOE

  18. ར఺ w ΋ͬͱ΋؆୯ͳํ๏Ͱهड़Ͱ͖Δ w ग़དྷΔ͜ͱ͕ݶఆ͞Ε͍ͯΔ͕Ώ͑ʹ҆શ w ίʔυࣗମ͕υΩϡϝϯτͱͯ͠ͷ໾ׂΛ Ռͨ͢͜ͱ͕ଟ͍ ಛఆͷ໰୊ʹಛԽ͍ͯ͠Δ͔Βɺ w

    w w w w w w w w w w w w w
  19. ܽ఺ w ֶशίετ͕ߴ͍ w Ԡ༻͕ޮ͔ͳ͍ w ໰୊ͷൣғΛܾΊΔͷ͕೉͘͠ɺಛԽͰ͖ ͳ͍͜ͱ͕ଟ͍ ಛఆͷ໰୊ʹಛԽ͍ͯ͠Δ͔Βɺ w

    w w w w w w w w w w w w w
  20. ֎෦ʁ಺෦ʁ

  21. ֎෦%4- ΠϯλϓϦλΛ࡞ΔΑ͏ͳ΋ͷ શ͕ͯࣗ࡞ͷ%*:ਫ਼ਆʹ͋;ΕΔ%4-

  22. ಺෦%4- ผͷݴޠͷߏจΛ࢖ͬͯɺ ͳΜ͔ผͷݴޠͬΆ͍ײ͡ʹ͢Δ

  23. ͨͱ͑͹3VCZͰ ಺෦%4-Λ࡞Ε͹ɺ ΂ΜΓͳߏจ΍ϥΠ ϒϥϦ͕࢖͍์୊

  24. ࣮ྫ

  25. "DUJWF"ENJO ͳΜ͔͍͍ײ͡Ͱ؅ཧը໘࡞ͬͯ͘ΕΔ΍ͭ

  26. ΨνϟΛ࡞Δ%4- ΞϧόΠτͰ΋௥ՃͰ͖ΔΑ͏ʹ࠷௿ݶ͔͠ॻ͚ͳ͍ Ϗδωε΁ͷӨڹ͕େ͖͍ͨΊ಺෦ΛӅณ͢Δͷ͸ॏཁ

  27. "1*Λఆٛ͢Δ%4- αʔόʔ 3VCZ ଆɺΫϥΠΞϯτ $ ଆɺυΩϡϝϯτΛࣗಈੜ ੒͢Δɻ௨৴ෆཁͷϞοΫ΋࡞੒͠ɺόʔδϣϯʹ΋ରԠɻ΂ΜΓɻ

  28. ͡ɺࣗ࡞ʜʁ

  29. ͳͥ࡞Δͷ͔ w %4-ʹ͢Δͱςϯγϣϯ্͕͕Δ͔Β w ษڧձͰࣗຫͰ͖Δ͔Β w ͦ͜ʹ໰୊͕͋Δ SZ

  30. ར఺Λࢥ͍ग़ͦ͏

  31. ར఺ w ΋ͬͱ΋؆୯ͳํ๏Ͱهड़Ͱ͖Δ w ग़དྷΔ͜ͱ͕ݶఆ͞Ε͍ͯΔ͕Ώ͑ʹ҆શ w ίʔυࣗମ͕υΩϡϝϯτͱͯ͠ͷ໾ׂΛ Ռͨ͢͜ͱ͕ଟ͍ ಛఆͷ໰୊ʹಛԽ͍ͯ͠Δ͔Βɺ w

    w w w w w w w w w w w w w
  32. ͳͥ࡞Δͷ͔ w ΊΜͲ͏ͳۀ຿Λ୯७Խ ؆୯  w ୭͕΍ͬͯ΋ಉ݁͡Ռ ҆શ  w

    ಡΈ΍͘͢આ໌͕ෆཁ υΩϡϝϯτ
  33. ΊΜͲ͏ͳۀ຿Λ ୯७Խ ৽͍͠ΨνϟΛ௥Ճ͢Δͷʹ.JHSBUJPOϑΝΠϧΛ࡞ͬͯ σʔλΛ௥Ճͯ͠ɺ$POUSPMMFSͱ7JFXΛίϐϖͯ͠ʜ ઃఆϑΝΠϧ %4- Λهड़ ؆୯

  34. ୭͕΍ͬͯ΋ಉ݁͡Ռ ΞϧόΠτʹΨνϟͷ௥ՃΛཔΜͩΒɺϑολʔͷϦϯΫ͕Ҏલͷ Ψνϟͷ΋ͷʹͳ͍ͬͯͯϨΞͷৄࡉΛݟΔ͜ͱ͕ग़དྷͳ͔ͬͨ ઃఆϑΝΠϧ %4- ͸ຊ౰ʹඞཁͳ͜ͱ͔͠هड़͠ͳ͘ ͯΑ͍ͷͰɺؒҧ͑ʹ͍͘͠ɺؒҧ͍ʹؾ͖ͮ΍͍͢ ҆શ

  35. ୭͕΍ͬͯ΋ಉ݁͡Ռ ΞϧόΠτʹΨνϟͷ௥ՃΛཔΜͩΒɺϑολʔͷϦϯΫ͕Ҏલͷ Ψνϟͷ΋ͷʹͳ͍ͬͯͯϨΞͷৄࡉΛݟΔ͜ͱ͕ग़དྷͳ͔ͬͨ ઃఆϑΝΠϧ %4- ͸ຊ౰ʹඞཁͳ͜ͱ͔͠هड़͠ͳ͘ ͯΑ͍ͷͰɺؒҧ͑ʹ͍͘͠ɺؒҧ͍ʹؾ͖ͮ΍͍͢ ҆શ ϨϏϡʔ͠Α͏ͱ͍ ͏ͷ͸·ͨผͷ໰୊

  36. ಡΈ΍͘͢આ໌͕ෆཁ ৽ਓͷਓʹΨνϟͷ௥Ճํ๏Λઆ໌͍ͯͨ͠Β͓ன͝͸Μͷ࣌ؒ ʹͳ͍ͬͯͯɺ໭͖ͬͯͨΒ΋͏Ұ౓ڭ͑ͯ΄͍͠ͱݴΘΕΔ ઃఆϑΝΠϧ %4- ΛಡΊ͹͍͍ͩͨ෼͔Δ ίϐϖͰ΋0, υΩϡϝϯτ

  37. ͳͥࠓ͞Β ܒ໤͢Δͷ͔

  38. 3VCZ͕࢓ࣄͰ࢖ΘΕΔΑ͏ ʹͳͬͯٱ͍͠ࠓ͔ͩΒͦ͜ %4-Ͱۀ຿Λޮ཰Խ͠Α͏

  39. ࠓ͔ͩΒͦ͜ʜʁ w ࢓ࣄͰ3VCZΛ࢖͏͜ͱ͕ී௨ʹͳͬͨ w ৘ใ΋ࢀߟʹͳΔίʔυ΋͋;Ε͍ͯΔ w ۀքΛϦʔυ স ͢Δ͋ͷ্࢘ʹ΋3VCZ Ͱ%4-Ͱ%0͢Δͱݴ͑͹௨Γ΍ͦ͢͏

  40. ൃද಺༰ʹࠔͬͯओுΛ፻ ଄ͨ͠ɻࠓ͸൓ল͍ͯ͠Δɻ

  41. ·ͱΊ w ͍·͞Βײ͕͋;ΕΔ࿩ w %4-Ͱޮ཰61 w %4-͸͜Θ͘ͳ͍ w ΍Γ͗͢Δͱବ໨

  42. ઌि΋ಉ͡Α͏ͳίʔυ ॻ͖·ͤΜͰ͔ͨ͠

  43. ͦΕ%4-ͰͰ͖ΔΑ

  44. ஫ҙ ྫ͸ΊͬͪΌద౰Ͱ͢

  45. ຖ೔ͷΑ͏ʹࣅͨΑ͏ͳ ϝιουΛॻ͍͍ͯΔ

  46. એݴܥ%4- ͦΜͳ͋ͳͨʹɺ

  47. ͭΒ͍ݱ࣮ ਓؒͷ͢Δ͜ͱ͡Όͳ͍

  48. ΂ΜΓͳਅ࣮ ͦ͏ɺ%4-ͳΒͶ

  49. એݴܥ%4-

  50. ຖ೔ಉ͡खॱΛ ॻ͍͍ͯΔ

  51. ૢ࡞ܥ%4- ͦΜͳ͋ͳͨʹɺ

  52. ͭΒ͍ݱ࣮ Τϥʔ͕ى͖Δ৔ॴ͢΂ͯʹίϐϖ

  53. ΂ΜΓͳਅ࣮ ͦ͏ɺ%4-ͳΒͶ

  54. ૢ࡞ܥ%4-

  55. ΫϥεͷΠϯελϯεΛ૊ ΈཱͯΔͷʹۤ࿑͍ͯ͠Δ

  56. ઃఆܥ%4- ͦΜͳ͋ͳͨʹɺ

  57. ͭΒ͍ݱ࣮ ΊΜͲ͏ͩ͠ಡΈʹ͍͘

  58. ΂ΜΓͳਅ࣮ ͦ͏ɺ%4-ͳΒͶ

  59. ઃఆܥ%4-

  60. SPVUFTSCฤूͯ͠ɺ $POUSPMMFS࡞ͬͯʜ

  61. ఆٛܥ%4- ͦΜͳ͋ͳͨʹɺ

  62. ͭΒ͍ݱ࣮ ͋ΕΛ΍ͬͯ͜ΕΛ΍ͬͯ

  63. ΂ΜΓͳਅ࣮ ͦ͏ɺ%4-ͳΒͶ

  64. ఆٛܥ%4-

  65. ΂ΜΓ

  66. ·ͱΊ w ͍·͞Βײ͕͋;ΕΔ࿩ w %4-Ͱޮ཰61 w %4-͸͜Θ͘ͳ͍ w ΍Γ͗͢Δͱବ໨

  67. Ͱ΋͓ߴ͍ΜͰ͠ΐ ։ൃίετ͕

  68. None
  69. ࡞ͬͯΈ·͠ΐ͏

  70. એݴܥ%4-

  71. એݴܥ%4- ͨͩͷΫϥεϝιου

  72. ΦϨΦϨBUUS@BDDFTTPS ंྠͷ࠶ൃ໌͔ΒಘΒΕΔ஌ݟ΋͋Δ

  73. ΍Γ͍ͨ͜ͱ͸ Πϯελϯεม਺Λ HFUTFU͢ΔϝιουΛ ͍͍ײ͡Ͱఆٛͯ͘͠ΕΔ NZ@BUUS@BDDFTTPS ͱ͍͏ΫϥεϝιουΛ ఆٛ͢Δ͜ͱ

  74. aಥવͷࠇຐज़ ಀ͛ͪΌବ໨ͩɺಀ͛ͪΌବ໨ͩɺಀ͛ͪΌବ໨ͩ

  75. EFpOF@NFUIPE OBNF NFUIPE  EFpOF@NFUIPE OBNF \ʜ^ OBNFͱ͍͏໊લͷϝιουΛఆٛ͢Δ

  76. aಥવͷࠇຐज़ ಀ͛ͪΌବ໨ͩɺಀ͛ͪΌବ໨ͩ

  77. JOTUBODF@WBSJBCMF@HFU WBS  JOTUBODF@WBSJBCMF@TFU WBS WBMVF WBSͱ͍͏໊લͷΠϯελϯεม਺ΛHFUTFU ໊લ͸l!IPHFzͰ͋Δඞཁ͕͋Δ

  78. aಥવͷࠇຐज़ ಀ͛ͪΌବ໨ͩ

  79. એݴܥͰ͸͚ͬ͜͏࢖͏ ΂ΜΓ

  80. ૢ࡞ܥ%4-

  81. ૢ࡞ܥ%4- ϝιου੾Γग़͠

  82. ͳΜ͔;ͭ͏ ͨͩͷϝιουݺͼग़͠ͳͷʹઐ༻ͷ໋ྩʹݟ͑Δ

  83. ໊લॏཁ ݟ͚ͨͩͰ෼͔Δϝιου໊ʹ͠Α͏ ͜ͷ΁Μ

  84. ઃఆܥ%4-

  85. ઃఆܥ%4- ୅ೖ

  86. DPOpHIPHFlQJZPz

  87. Α͘ݟΔ΍ͭ ͍·͔Β͜ͷΫϥεΛઃఆ͢ΔΜͩ ͱ͍͏ͷ͕ྑ͘఻ΘͬͯΑ͍

  88. ͨͿΜ͜Μͳײ͡  ͕͖΋͔Θ͍͍

  89. ఆٛܥ%4-

  90. ఆٛܥ%4- JOTUBODF@FWBM

  91. JOTUBODF@FWBM\cPCKcʜ^ ϒϩοΫ಺ͷTFMGΛϨγʔόʔʹஔ͖׵͑Δ ͬ͘͟Γݴ͏ͱ

  92. Ոʹ͍ΔೣΛ؅ཧ͍ͨ͠ ͍͍ྫ͕ු͔͹ͳ͔ͬͨ

  93. ద౰ͳ࣮૷ Ͱ΋͍͍ͩͨ͜Μͳײ͡Ͱॻ͖·͢

  94. ͜ͷ$BUΫϥεΛ࡞Γ·͢ ϒϩοΫͷதͰݺ΂Δϝιου͸ $BUͷΠϯελϯεϝιου

  95. ͕͜͜ຊମ DBUJOTUBODF@FWBM͕શͯ

  96. ϑΝΠϧ͔ΒಡΈࠐΊ͹ͦΕͬΆ͍ จࣈྻͳͷͰJOTUBODF@FWBM͢Δʜ

  97. ͜͏͍͏ͷ͸Ͳ͏͢Δͷ NFUIPE@NJTTJOHͰʜ ϗϫΠτϦετΛ࡞ͬͯVOEFG@NFUIPE͓ͯ͘͠ͱ௙Δ

  98. None
  99. ๻ͷ৔߹

  100. खॱ w ໰୊ΛΈ͚ͭΔ w ௚ײతʹॻ͚Δ·ͰٖࣅίʔυΛॻ͘ w ٖࣅίʔυ ड͚ೖΕςετ ͕ಈ͘Α͏ʹ ࣮૷͢Δ

    w ϢχοτςετΛॻ͘
  101. ςετ w %4-͕όάͬͯͨΒ໨΋౰ͯΒΕͳ͍ w ࣗ෼͕҆৺͢ΔͨΊʹॻ͘ w ࠇຐज़తͳίʔυΛॻ͘ͷͰ5%%͸଍͔ͤ w ׬શʹಈ࡞͢Δ%4-Λड͚ೖΕςετͱ͢Δ

  102. ·ͱΊ w ͍·͞Βײ͕͋;ΕΔ࿩ w %4-Ͱޮ཰61 w %4-͸͜Θ͘ͳ͍ w ΍Γ͗͢Δͱବ໨

  103. %4-࡞ͬͯΈ͍ͨ ͍·͙͢࡞Ζ͏ʂ

  104. ͪΐͬͱ଴ͬͯ

  105. ܽ఺Λࢥ͍ग़ͦ͏

  106. ܽ఺ w ֶशίετ͕ߴ͍ w Ԡ༻͕ޮ͔ͳ͍ w ໰୊ͷൣғΛܾΊΔͷ͕೉͘͠ɺಛԽͰ͖ ͳ͍͜ͱ͕ଟ͍ ಛఆͷ໰୊ʹಛԽ͍ͯ͠Δ͔Βɺ w

    w w w w w w w w w w w w w
  107. ֶशίετ͕ߴ͍ ϓϩδΣΫτͷ͜͜΋%4-ɺ͋ͬͪ΋%4-ɻ ͜͜͸3BJMTͷ··Ͱॻ͘ɺ͜͜΋%4-ͩͬͨΘɻ ΂ΜΓػೳ͕஌͍ͬͯΔਓʹ͔͠࢖ΘΕͳ͍ɻ Ή͠Ζී௨ʹॻ͘͜ͱ΋ࠔ೉ͰϓϩδΣΫτԌ্ɻ

  108. Ԡ༻͕ޮ͔ͳ͍ ͨ͘͞Μͷࣾ಺%4-ΛϚελʔͯࣾ͠಺Ͱ͸ਆͱݺ͹Ε ͯཔΒΕ͍ͯΔͷͰɺצҧ͍ͯ͠స৬ͯ͠Έͨɻ ࣮͸3BJMT͸ͦΜͳʹॻ͚ͳ͔ͬͨͷͰ ͍͍ͭͯ͜͏ͱඞࢮʹͳΓա࿑ࢮ

  109. ໰୊ͷൣғ͕͍͋·͍ ΂ΜΓͦ͏ͳ%4-Λ࡞ͬͨɻͬͪ͜΋%4-ʹͰ͖ͦ͏ ͳͷͰ࡞ͬͨɻ͋ͬͪ΋ɺͦͬͪ΋ɺ͜͜΋࡞ͬͱ͜͏ɻ ͋ͬͪͱͦͬͪͷ%4-ͷ಺༰͕ඍົʹඃͬͯͯ ͲͪΒʹॻ͚͹ྑ͍ͷ͔෼͔Βͳ͍

  110. Կࣄ΋ ΍Γ͗͢͸Α͘ͳ͍

  111. ·ͱΊ w ͍·͞Βײ͕͋;ΕΔ࿩ w %4-Ͱޮ཰61 w %4-͸͜Θ͘ͳ͍ w ΍Γ͗͢Δͱବ໨

  112. ͳΜͩ͜Ε ͳΜͩ͜ͷΦϓγϣϯ

  113. ஌ݟͷڞ༗ w એݴܥ͸૬౰͕͢͡Α͘ͳ͍ͱഁ୼͢Δ w Α͘Θ͔ΒΜॻ͖ํ͕૿͑ͯࠞཚ͢Δ͚ͩ w ఆٛܥ͸໊લॏཁ w ֶशίετΛԼ͛Δʹ͸ڻ͖࠷খͷ๏ଇ w

    υΩϡϝϯτඞਢ w %4-ͷ࢓༷͸ॻ͍ͨຊਓ͔͠஌Βͳ͍ͱࢥ͑
  114. ·ͱΊ w ͍·͔ͩΒͦ͜࢓ࣄͰ%4- w %4-Ͱۀ຿Λޮ཰Խ w %4-͸؆୯ʹ࡞ΕΔ w ༻๏༻ྔΛΑ͘कΓ͓࢖͍͍ͩ͘͞

  115. l%4-ͱͯ͠੾Γग़ͤΔ໰୊Λݟ͚ͭͨΒউͪz

  116. ͋Γ͕ͱ͏ ͍͟͝·ͨ͠